Deskripsi Dataset

Dataset yang digunakan berisi informasi pendidikan tingkat SMA per provinsi di Indonesia, termasuk: - Jumlah Guru SMA Negeri + Swasta (JGS) - Jumlah Murid SMA Negeri + Swasta (JMS) - Rasio Guru-Murid (RGMPS) - Tingkat Penyelesaian Pendidikan SMA (TPPS)

Tujuan analisis ini adalah memahami faktor-faktor yang memengaruhi TPPS setiap provinsi.

Summary Data

library(readxl)
library(corrplot)
## corrplot 0.95 loaded
library(car)      
## Loading required package: carData
library(broom)    
library(pROC)     
## Warning: package 'pROC' was built under R version 4.5.2
## Type 'citation("pROC")' for a citation.
## 
## Attaching package: 'pROC'
## The following objects are masked from 'package:stats':
## 
##     cov, smooth, var
library(caret)    
## Warning: package 'caret' was built under R version 4.5.2
## Loading required package: ggplot2
## Loading required package: lattice
library(dplyr)
## 
## Attaching package: 'dplyr'
## The following object is masked from 'package:car':
## 
##     recode
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(lmtest)   
## Warning: package 'lmtest' was built under R version 4.5.2
## Loading required package: zoo
## Warning: package 'zoo' was built under R version 4.5.2
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
library(moments)
## Warning: package 'moments' was built under R version 4.5.2
library(readxl)
library(reshape2)
library(ggplot2)

Copy_of_ANALISIS_PENGANTAR_DATA_SAINS_Tugas_2_1_ <- read_excel("Copy of ANALISIS_PENGANTAR_DATA_SAINS_-_Tugas_2(1).xlsx")
View(Copy_of_ANALISIS_PENGANTAR_DATA_SAINS_Tugas_2_1_)

APDS <- Copy_of_ANALISIS_PENGANTAR_DATA_SAINS_Tugas_2_1_


summary(APDS)
##    Provinsi            JGS(S+N)        JMS(N+S)          RGMPS       
##  Length:38          Min.   :  840   Min.   : 12884   Min.   : 9.793  
##  Class :character   1st Qu.: 2794   1st Qu.: 36154   1st Qu.:12.809  
##  Mode  :character   Median : 5768   Median : 80648   Median :14.065  
##                     Mean   : 9346   Mean   :139748   Mean   :14.105  
##                     3rd Qu.:12290   3rd Qu.:172687   3rd Qu.:15.468  
##                     Max.   :43256   Max.   :823771   Max.   :19.044  
##       TPPS       Variabel Biner
##  Min.   : 0.00   Min.   :0.0   
##  1st Qu.:56.35   1st Qu.:0.0   
##  Median :65.64   Median :0.5   
##  Mean   :58.88   Mean   :0.5   
##  3rd Qu.:68.88   3rd Qu.:1.0   
##  Max.   :89.69   Max.   :1.0

Exploratory Data Analysis (EDA)

Bagian ini bertujuan melihat distribusi setiap variabel menggunakan histogram, serta melihat hubungan awal antara jumlah murid dengan tingkat penyelesaian pendidikan.

JGS <- APDS$`JGS(S+N)`
JMS<- APDS$`JMS(N+S)`
RGM<-APDS$`RGMPS`
TPPS<-APDS$`TPPS`

par(mfrow = c(2, 2), mar = c(4, 4, 3, 2)) 

# Histogram Jumlah Guru SMA(Negeri+swasta)
hist(JGS,
     main = "Histogram Jumlah Guru SMA(Negeri Swasta)",
     xlab = "Jumlah Guru SMA(Negeri+swasta)",
     col = "#3C3C3C", border = "#11999E")

# Histogram Jumlah Murid SMA(Negeri+Swasta)
hist(JMS,
     main = "Histogram Jumlah Murid SMA (Negeri+swasta)",
     xlab = "Jumlah Murid SMA(Negeri+swasta)",
     col = "#3C3C3C", border = "#11999E")

# Histogram Rasio Guru dan Murid
hist(RGM,
     main = "Histogram Rasio Guru dan Murid per provinsi SMA",
     xlab = "Rasio Guru dan Murid",
     col = "#3C3C3C", border = "#11999E")

# Histogram
hist(TPPS,
     main = "Histogram Tingkat penyelesaian pendidikan SMA",
     xlab = "Tingkat Penyelesaian Pendidikan",
     col = "#3C3C3C", border = "#11999E")

# Scatter Plot Jumlah murid vs Tingkat Penyelesaian Pendidkan SMa
plot(JMS , TPPS ,
     xlab = "Jumlah Murid SMA",
     ylab = "Tingkat Penyelesaian Pendidikan SMA",
     main = "Hubungan JMS dan TPPS",
     col = "#11999E", pch = 16)
model_eda <- lm(TPPS ~ JMS)
abline(model_eda, col = "red", lwd = 2)

par(mfrow = c(1, 1)) # Kembalikan layout

cor_data <- APDS[c(
  "JGS(S+N)",
  "JMS(N+S)",
  "RGMPS",
  "TPPS"
)]

# Compute Pearson correlation matrix
cor_matrix <- cor(cor_data, method = "pearson")
print(cor_matrix)
##           JGS(S+N)  JMS(N+S)      RGMPS       TPPS
## JGS(S+N) 1.0000000 0.9843282 0.39791227 0.30790168
## JMS(N+S) 0.9843282 1.0000000 0.50448652 0.26972431
## RGMPS    0.3979123 0.5044865 1.00000000 0.04597128
## TPPS     0.3079017 0.2697243 0.04597128 1.00000000
library(reshape2)
library(ggplot2)

melted_cor <- melt(cor_matrix)

ggplot(melted_cor, aes(Var1, Var2, fill = value)) +
  geom_tile(color = "white") +
  scale_fill_gradient2(low = "#6DECB9", high = "#11999E", mid = "#F4F4F4",
                       midpoint = 0, limit = c(-1,1), name="Korelasi") +
  theme_minimal() +
  labs(title = "Heatmap Korelasi antar Variabel") +
  theme(axis.text.x = element_text(angle = 45, vjust = 1, hjust=1))

# Interpretasi Korelasi

Hasil korelasi menunjukkan bahwa:

Tidak ada korelasi ekstrem yang mengindikasikan multikolinearitas berat.

median_jms <- median (APDS$'JMS(N+S)')
median_jms
## [1] 80647.5
# Membuat variabel biner
APDS$Biner_JMS <- ifelse(APDS$`JMS(N+S)` > median_jms, 1, 0)

# Lihat hasil 6 baris pertama
head(APDS[, c("Provinsi", "JMS(N+S)", "Biner_JMS")])
## # A tibble: 6 × 3
##   Provinsi         `JMS(N+S)` Biner_JMS
##   <chr>                 <dbl>     <dbl>
## 1 Aceh                 137657         1
## 2 Sumatera Utara       389899         1
## 3 Sumatera Barat       153535         1
## 4 Riau                 172295         1
## 5 Jambi                 81429         1
## 6 Sumatera Selatan     220114         1

Regresi Logistik

Analisis ini bertujuan memprediksi apakah suatu provinsi memiliki jumlah murid di atas median (Biner_JMS = 1) atau di bawah median (Biner_JMS = 0).

# Model logistik biner
model_logit <- glm(Biner_JMS ~ `JGS(S+N)` + RGMPS + TPPS,
                   data = APDS,
                   family = binomial)
## Warning: glm.fit: algorithm did not converge
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
summary(model_logit)
## 
## Call:
## glm(formula = Biner_JMS ~ `JGS(S+N)` + RGMPS + TPPS, family = binomial, 
##     data = APDS)
## 
## Coefficients:
##               Estimate Std. Error z value Pr(>|z|)
## (Intercept) -1.102e+03  2.162e+05  -0.005    0.996
## `JGS(S+N)`   7.390e-02  1.411e+01   0.005    0.996
## RGMPS        3.590e+01  7.476e+03   0.005    0.996
## TPPS         2.856e+00  6.663e+02   0.004    0.997
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 5.2679e+01  on 37  degrees of freedom
## Residual deviance: 5.9072e-08  on 34  degrees of freedom
## AIC: 8
## 
## Number of Fisher Scoring iterations: 25
# Odds Ratio
odds_ratio <- exp(coef(model_logit))
odds_ratio
##  (Intercept)   `JGS(S+N)`        RGMPS         TPPS 
## 0.000000e+00 1.076695e+00 3.883409e+15 1.739791e+01
# Confidence Interval 95%
conf_int <- exp(confint(model_logit))
## Waiting for profiling to be done...
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
## Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred
conf_int
##                     2.5 %       97.5 %
## (Intercept)  0.000000e+00          Inf
## `JGS(S+N)`   2.564855e-01 5.202715e+03
## RGMPS       2.017958e-188          Inf
## TPPS         7.417857e-33 4.080522e+34
# Prediksi probabilitas
pred_prob <- predict(model_logit, type = "response")

# Klasifikasi: threshold 0.5
pred_class <- ifelse(pred_prob > 0.5, 1, 0)

# Confusion Matrix
table(Prediksi = pred_class, Aktual = APDS$Biner_JMS)
##         Aktual
## Prediksi  0  1
##        0 19  0
##        1  0 19
library(pROC)

roc_obj <- roc(APDS$Biner_JMS, pred_prob)
## Setting levels: control = 0, case = 1
## Setting direction: controls < cases
auc_val <- auc(roc_obj)
auc_val
## Area under the curve: 1
plot(roc_obj, col = "#11999E", lwd = 3,
     main = "ROC Curve – Model Logistik Biner")

#regresi linear berganda
model_final <- lm(TPPS ~ `JMS(N+S)` + RGMPS, data = APDS)
vif(model_final)
## `JMS(N+S)`      RGMPS 
##   1.341394   1.341394
summary(model_final)
## 
## Call:
## lm(formula = TPPS ~ `JMS(N+S)` + RGMPS, data = APDS)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -57.880  -5.184   5.731  10.829  34.319 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)  
## (Intercept)  7.067e+01  2.669e+01   2.648   0.0121 *
## `JMS(N+S)`   4.517e-05  2.560e-05   1.765   0.0864 .
## RGMPS       -1.283e+00  1.990e+00  -0.645   0.5232  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 22.46 on 35 degrees of freedom
## Multiple R-squared:  0.08364,    Adjusted R-squared:  0.03128 
## F-statistic: 1.597 on 2 and 35 DF,  p-value: 0.2168
plot(model_final)

par(mfrow = c(2,2))
plot(model_final)

par(mfrow = c(1,1))

library(car)
vif(model_final)
## `JMS(N+S)`      RGMPS 
##   1.341394   1.341394
library(broom)
tidy(model_final)
## # A tibble: 3 × 5
##   term          estimate  std.error statistic p.value
##   <chr>            <dbl>      <dbl>     <dbl>   <dbl>
## 1 (Intercept) 70.7       26.7           2.65   0.0121
## 2 `JMS(N+S)`   0.0000452  0.0000256     1.76   0.0864
## 3 RGMPS       -1.28       1.99         -0.645  0.523
vif(model_final)
## `JMS(N+S)`      RGMPS 
##   1.341394   1.341394
cat("=== Interpretasi Regresi Linear Berganda ===\n")
## === Interpretasi Regresi Linear Berganda ===
cat("\nModel ini bertujuan untuk melihat pengaruh Jumlah Murid SMA dan Rasio Guru-Murid terhadap Tingkat Penyelesaian Pendidikan SMA (TPPS).\n")
## 
## Model ini bertujuan untuk melihat pengaruh Jumlah Murid SMA dan Rasio Guru-Murid terhadap Tingkat Penyelesaian Pendidikan SMA (TPPS).
cat("\n1. *Koefisien Jumlah Murid (JMS)* =", coef(model_final)["`JMS(N+S)`"], 
    "\n   Artinya: setiap penambahan 1 murid meningkatkan TPPS sebesar nilai tersebut.\n",
    "   Efeknya kecil, tetapi jika murid bertambah 10.000 orang, TPPS naik sekitar ",
    round(coef(model_final)["`JMS(N+S)`"]*10000,3), " poin.\n")
## 
## 1. *Koefisien Jumlah Murid (JMS)* = 4.517414e-05 
##    Artinya: setiap penambahan 1 murid meningkatkan TPPS sebesar nilai tersebut.
##     Efeknya kecil, tetapi jika murid bertambah 10.000 orang, TPPS naik sekitar  0.452  poin.
cat("\n2. *Koefisien Rasio Guru-Murid (RGMPS)* =", coef(model_final)["RGMPS"],
    "\n   Artinya: peningkatan rasio guru-murid cenderung menurunkan TPPS.\n",
    "   Namun variabel ini tidak signifikan secara statistik.\n")
## 
## 2. *Koefisien Rasio Guru-Murid (RGMPS)* = -1.283189 
##    Artinya: peningkatan rasio guru-murid cenderung menurunkan TPPS.
##     Namun variabel ini tidak signifikan secara statistik.
cat("\n3. Nilai Adjusted R-squared =", round(summary(model_final)$adj.r.squared,4),
    "\n   Menunjukkan bahwa model hanya mampu menjelaskan sekitar", 
    round(summary(model_final)$adj.r.squared*100,2), "% variasi TPPS.\n")
## 
## 3. Nilai Adjusted R-squared = 0.0313 
##    Menunjukkan bahwa model hanya mampu menjelaskan sekitar 3.13 % variasi TPPS.
cat("\n4. Hasil Uji F (p-value =", signif(summary(model_final)$fstatistic[3],4), 
    ")\n   -> Model tidak signifikan secara keseluruhan.\n")
## 
## 4. Hasil Uji F (p-value = 35 )
##    -> Model tidak signifikan secara keseluruhan.
cat("\n5. Nilai VIF:\n")
## 
## 5. Nilai VIF:
print(vif(model_final))
## `JMS(N+S)`      RGMPS 
##   1.341394   1.341394
cat("   Semua VIF < 5 → tidak ada multikolinearitas.\n")
##    Semua VIF < 5 → tidak ada multikolinearitas.
cat("\nKesimpulan Umum:\n")
## 
## Kesimpulan Umum:
cat("- Jumlah Murid memiliki pengaruh positif dan marginal signifikan (α = 10%).\n")
## - Jumlah Murid memiliki pengaruh positif dan marginal signifikan (α = 10%).
cat("- Rasio Guru-Murid tidak signifikan.\n")
## - Rasio Guru-Murid tidak signifikan.
cat("- Model belum mampu menjelaskan variasi TPPS dengan baik.\n")
## - Model belum mampu menjelaskan variasi TPPS dengan baik.
cat("- Perlu ditambah variabel lain untuk memperkuat model.\n")
## - Perlu ditambah variabel lain untuk memperkuat model.

Ringkasan Regresi Linear Berganda

Model regresi linear bertujuan melihat pengaruh jumlah murid dan rasio guru-murid terhadap TPPS. Hasil menunjukkan bahwa: - JMS memiliki pengaruh positif namun tidak terlalu signifikan. - RGMPS tidak signifikan dan cenderung berpengaruh negatif. - Adjusted R-squared sangat rendah, sehingga model belum menjelaskan variasi TPPS dengan baik.

Artinya faktor lain di luar model kemungkinan lebih berpengaruh terhadap TPPS.

APDS$Kelompok_Rasio <- cut(APDS$RGMPS,
                           breaks = 3,
                           labels = c("Rendah", "Sedang", "Tinggi"))
table(APDS$Kelompok_Rasio)
## 
## Rendah Sedang Tinggi 
##     10     21      7
anova_model <- aov(TPPS ~ Kelompok_Rasio, data = APDS)
summary(anova_model)
##                Df Sum Sq Mean Sq F value Pr(>F)
## Kelompok_Rasio  2     41    20.4   0.037  0.964
## Residuals      35  19230   549.4
boxplot(TPPS ~ Kelompok_Rasio, data = APDS,
        main = "Boxplot TPPS Berdasarkan Kelompok Rasio Guru-Murid",
        col = c("#6DECB9","#11999E","#3C3C3C"))

# Interpretasi ANOVA

ANOVA dilakukan untuk melihat apakah terdapat perbedaan nilai TPPS berdasarkan kategori Rasio Guru-Murid (Rendah, Sedang, Tinggi).

Berdasarkan output ANOVA:

Dari hasil perhitungan, p-value = 0.9635168.

Kesimpulan: Tidak terdapat perbedaan signifikan TPPS berdasarkan kelompok rasio guru-murid.

Kesimpulan Akhir

Berdasarkan seluruh analisis:

  1. Korelasi antar variabel menunjukkan hubungan yang lemah hingga sedang, dengan JMS menjadi variabel yang paling terkait dengan TPPS.

  2. ANOVA menunjukkan bahwa perbedaan rasio guru-murid tidak menghasilkan perbedaan signifikan dalam TPPS antar provinsi.

  3. Model regresi logistik memiliki performa yang rendah (AUC < 0.7) sehingga belum efektif untuk klasifikasi jumlah murid.

  4. Regresi linear berganda menunjukkan bahwa JMS dan RGMPS tidak memiliki pengaruh signifikan secara statistik terhadap TPPS. Model juga memiliki nilai R-squared rendah, menandakan banyak variabel lain yang memengaruhi TPPS.

Secara keseluruhan, faktor-faktor dalam dataset ini belum cukup kuat untuk menjelaskan variasi tingkat penyelesaian pendidikan SMA di Indonesia. Analisis tambahan dengan variabel lain mungkin diperlukan untuk hasil yang lebih akurat.