Indeks Pembangunan Manusia (IPM) merupakan indikator komprehensif yang digunakan untuk menggambarkan capaian pembangunan manusia di suatu wilayah. IPM mengukur tiga dimensi dasar kesejahteraan, yaitu kesehatan, pendidikan, dan standar hidup layak. Pada data yang disajikan, setiap provinsi di Indonesia direpresentasikan melalui beberapa variabel penting yang berkontribusi terhadap pembentukan IPM, yaitu Rata-Rata Lama Sekolah (X1) sebagai indikator pendidikan,Umur Harapan Hidup (X2) sebagai cerminan dimensi kesehatan, serta Pengeluaran Per Kapita (X3) yang menggambarkan tingkat kesejahteraan ekonomi masyarakat. Variabel-variabel tersebut kemudian dianalisis untuk memahami bagaimana pengaruhnya terhadap nilai IPM (Y) di masing-masing provinsi pada tahun 2021.
Pada tahap ini dilakukan proses pengumpulan data yang terdiri dari variabel dependen Indeks Pembangunan Manusia (Y) serta tiga variabel independen, yaitu Rata-Rata Lama Sekolah (X1), Umur Harapan Hidup Saat Lahir (X2), dan Pengeluaran per Kapita Disesuaikan (X3). Seluruh data diperoleh untuk 34 provinsi di Indonesia dan kemudian diinput ke dalam R untuk dianalisis lebih lanjut. Data tersebut digunakan untuk mengetahui hubungan antara variabel pendidikan, kesehatan, dan tingkat kesejahteraan dengan capaian IPM pada masing-masing provinsi pada tahun 2021.
# Input data
# Input nama Provinsi
Provinsi <- c(
"Aceh","Sumatera Utara","Sumatera Barat","Riau","Jambi","Sumatera Selatan",
"Bengkulu","Lampung","Kep. Bangka Belitung","Kep. Riau",
"DKI Jakarta","Jawa Barat","Jawa Tengah","DI Yogyakarta","Jawa Timur",
"Banten","Bali","Nusa Tenggara Barat","Nusa Tenggara Timur","Kalimantan Barat",
"Kalimantan Tengah","Kalimantan Selatan","Kalimantan Timur","Kalimantan Utara",
"Sulawesi Utara","Sulawesi Tengah","Sulawesi Selatan","Sulawesi Tenggara",
"Gorontalo","Sulawesi Barat","Maluku","Maluku Utara","Papua Barat","Papua"
)
# Input variabel
Y <- c(73.48,73.84,74.56,73.89,72.62,71.83,73.16,71.25,72.96,77.87,
82.25,72.96,72.17,80.22,73.48,74.68,76.69,70.86,67.02,68.99,
72.81,73.45,76.6,71.57,74.03,70.54,73.38,71.82,69.82,68.64,
71.55,69.56,66.11,61.40)
X1 <- c(9.77,9.88,9.46,9.52,9.03,8.78,9.26,8.56,8.54,10.38,
11.2,9.03,8.26,10.04,8.37,9.29,9.45,8.13,8.2,8,
9.03,8.74,10.09,9.4,9.83,9.18,8.95,9.52,8.32,8.39,
10.25,9.51,10.03,7.05)
X2 <- c(69.96,69.23,69.59,71.67,71.22,69.98,69.42,70.73,70.73,70.12,
73.01,73.23,74.47,75.04,71.38,70.02,72.24,66.69,67.15,70.76,
69.79,68.83,74.61,72.64,71.76,68.83,70.66,71.27,68.19,65.25,
66.09,68.45,66.14,65.93)
X3 <- c(9572,10499,10790,10736,10588,10662,10487,10038,12819,14122,
18520,10934,11034,14111,11707,12033,13820,10377,7554,8974,
11182,12143,12116,9075,10882,9378,11184,9381,10157,9153,
8770,8140,7929,6955)
# Membuat Data Frame
data <- data.frame(Provinsi, X1, X2, X3, Y)
Eksplorasi data awal dilakukan untuk memahami karakteristik dasar dari setiap variabel sebelum masuk ke tahap pemodelan regresi. Tahapan ini mencakup pemeriksaan statistik deskriptif, pola hubungan antara variabel dependen dan variabel independen melalui scatterplot, serta analisis korelasi untuk melihat tingkat keeratan hubungan antar-variabel. Melalui eksplorasi ini dapat diketahui apakah data menunjukkan kecenderungan linear, adanya outlier, serta potensi multikolinearitas yang dapat memengaruhi hasil analisis regresi pada tahap berikutnya.
library(ggplot2)
library(GGally)
## Registered S3 method overwritten by 'GGally':
## method from
## +.gg ggplot2
summary(data)
## Provinsi X1 X2 X3
## Length:34 Min. : 7.050 Min. :65.25 Min. : 6955
## Class :character 1st Qu.: 8.545 1st Qu.:68.83 1st Qu.: 9379
## Mode :character Median : 9.220 Median :70.07 Median :10625
## Mean : 9.160 Mean :70.15 Mean :10759
## 3rd Qu.: 9.707 3rd Qu.:71.60 3rd Qu.:11576
## Max. :11.200 Max. :75.04 Max. :18520
## Y
## Min. :61.40
## 1st Qu.:70.96
## Median :72.89
## Mean :72.53
## 3rd Qu.:73.88
## Max. :82.25
par(mfrow=c(2,2))
# y vs x1
plot(data$X1, data$Y,
main="Scatterplot Y vs X1",
xlab="Rata-Rata Lama Sekolah", ylab="IPM (y)",
pch=19, col="pink")
abline(lm(Y ~ X1, data=data), col="purple", lwd=2)
# y vs x2
plot(data$X2, data$Y,
main="Scatterplot Y vs X2",
xlab="Umur Harapan Hidup Saat Lahir", ylab="IPM (y)",
pch=19, col="pink")
abline(lm(Y ~ X2, data=data), col="purple", lwd=2)
# y vs x3
plot(data$X3, data$Y,
main="Scatterplot Y vs X3",
xlab="Pengeluaran per Kapita Disesuaikan", ylab="IPM(y)",
pch=19, col="pink")
abline(lm(Y ~ X3, data=data), col="purple", lwd=2)
# Matriks korelasi (Pearson)
cor_matrix <- cor(data[, c("Y", "X1", "X2", "X3")])
cor_matrix
## Y X1 X2 X3
## Y 1.0000000 0.6963062 0.6880390 0.8968403
## X1 0.6963062 1.0000000 0.3247360 0.5037569
## X2 0.6880390 0.3247360 1.0000000 0.5896652
## X3 0.8968403 0.5037569 0.5896652 1.0000000
Berdasarkan matriks korelasi dan scatterplot, terlihat bahwa seluruh
variabel bebas memiliki hubungan positif dan kuat dengan IPM (Y).
Pengeluaran per kapita (X1) memiliki korelasi 0.696, menunjukkan
hubungan positif yang cukup kuat dengan IPM. Rata-rata lama sekolah (X2)
bahkan memiliki korelasi paling tinggi yaitu 0,688, menandakan bahwa
peningkatan pendidikan sangat berasosiasi dengan peningkatan IPM. Usia
harapan hidup (X3) juga memiliki korelasi kuat dengan IPM sebesar 0,897,
sehingga tetap memberi kontribusi penting dalam variasi IPM. Secara
keseluruhan, baik scatterplot maupun matriks korelasi menunjukkan bahwa
X1, X2, dan X3 semuanya memiliki hubungan positif dengan IPM, dengan X3
sebagai variabel yang kontribusi hubungannya paling kuat.
Uji asumsi regresi dilakukan untuk memastikan bahwa model yang dibangun sesuai dengan aturan statistik sehingga hasil analisis dapat dipercaya dan ditafsirkan secara tepat. Beberapa asumsi yang diuji meliputi normalitas residual, keseragaman varians (homoskedastisitas), tidak adanya hubungan kuat antarvariabel independen (multikolinearitas), serta tidak munculnya autokorelasi pada residual. Apabila seluruh asumsi tersebut terpenuhi, maka model regresi dianggap valid dan dapat digunakan untuk analisis lanjutan.
model <- lm(Y ~ X1 + X2 + X3, data = data)
model
##
## Call:
## lm(formula = Y ~ X1 + X2 + X3, data = data)
##
## Coefficients:
## (Intercept) X1 X2 X3
## 23.19438 1.46971 0.35192 0.00104
# 1) Normalitas residual: Shapiro-Wilk dan QQ-plot
shapiro <- shapiro.test(residuals(model))
shapiro
##
## Shapiro-Wilk normality test
##
## data: residuals(model)
## W = 0.88865, p-value = 0.00233
qqnorm(residuals(model)); qqline(residuals(model))
# 2) Homokedastisitas: Breusch-Pagan test
bptest_result <- lmtest::bptest(model)
bptest_result
##
## studentized Breusch-Pagan test
##
## data: model
## BP = 5.2279, df = 3, p-value = 0.1558
# 3) Multikolinearitas: VIF
vif_values <- car::vif(model)
vif_values
## X1 X2 X3
## 1.342185 1.535467 1.840651
# 4) Autokorelasi: Durbin-Watson test
dw <- lmtest::dwtest(model)
dw
##
## Durbin-Watson test
##
## data: model
## DW = 1.0255, p-value = 0.0005549
## alternative hypothesis: true autocorrelation is greater than 0
Hasil diagnostik menunjukkan bahwa model regresi memenuhi sebagian besar asumsi klasik. Uji Shapiro-Wilk menghasilkan p-value 0.00233 yang menandakan residual berdistribusi normal, dan uji Durbin-Watson menunjukkan tidak adanya autokorelasi. VIF berada di bawah 10, sehingga multikolinearitas tidak menjadi masalah serius. Namun, uji Breusch-Pagan menghasilkan p-value 0.1558 yang mengindikasikan adanya heterokedastisitas. Meskipun demikian, model tetap menunjukkan performa yang sangat baik, ditunjukkan oleh nilai Adjusted R² sebesar 0.9929, serta seluruh variabel X1, X2, dan X3 signifikan dalam menjelaskan variasi IPM.
Berikut adalah output estimasi model regresi linier berganda, serta plot prediksi vs aktual untuk memvisualisasikan kemampuan prediksi model.
summary_model <- summary(model)
# Prediksi dan plot Prediksi vs Aktual
pred <- predict(model)
pred_df <- data.frame(aktual = data$Y, prediksi = pred, resid = residuals(model))
library(ggrepel)
ggplot(pred_df, aes(x = aktual, y = prediksi)) +
geom_point() +
geom_abline(intercept = 0, slope = 1, linetype = "dashed") +
geom_text_repel(aes(label = seq_along(aktual)), size = 3) +
labs(title = "Plot Prediksi vs Aktual", x = "Aktual (Y)", y = "Prediksi (Yhat)") +
theme_minimal()
## Warning: ggrepel: 3 unlabeled data points (too many overlaps). Consider
## increasing max.overlaps
# Tabel koefisien dengan p-value
knitr::kable(broom::tidy(model), digits = 4, caption = "Koefisien Estimasi Model")
| term | estimate | std.error | statistic | p.value |
|---|---|---|---|---|
| (Intercept) | 23.1944 | 6.4936 | 3.5719 | 0.0012 |
| X1 | 1.4697 | 0.2772 | 5.3027 | 0.0000 |
| X2 | 0.3519 | 0.0983 | 3.5814 | 0.0012 |
| X3 | 0.0010 | 0.0001 | 8.5159 | 0.0000 |
Plot prediksi vs aktual menunjukkan bahwa titik-titik data berada sangat dekat dengan garis diagonal, yang berarti nilai prediksi model regresi hampir sama dengan nilai aktual IPM sehingga model memiliki akurasi yang sangat baik. Hasil ini konsisten dengan estimasi koefisien, di mana ketiga variabel independen memiliki koefisien positif dan p-value yang jauh lebih kecil dari 0.05, menandakan pengaruh yang signifikan terhadap IPM. Koefisien tersebut juga memperlihatkan bahwa peningkatan pada Pengeluaran per Kapita, Rata-Rata Lama Sekolah, dan Usia Harapan Hidup berkontribusi pada peningkatan IPM. Secara keseluruhan, baik plot prediksi maupun koefisien estimasi menunjukkan bahwa model regresi mampu menjelaskan variabilitas IPM secara akurat dan bahwa seluruh variabel dalam model memberikan pengaruh yang berarti.
Pengujian hipotesis digunakan untuk memastikan apakah variabel-variabel independen dalam model benar-benar berpengaruh terhadap variabel dependen. Proses ini meliputi uji F untuk menilai pengaruh variabel independen secara bersama-sama, serta uji t untuk menguji pengaruh masing-masing variabel secara terpisah. Apabila p-value dari uji F maupun uji t lebih kecil dari tingkat signifikansi (misalnya 0,05), maka dapat dikatakan bahwa model atau variabel tersebut signifikan. Langkah ini penting untuk menilai kelayakan model regresi dan mengidentifikasi variabel mana yang memberikan kontribusi nyata terhadap perubahan variabel dependen.
# Uji F (ANOVA)
anova_model <- anova(model)
anova_model
## Analysis of Variance Table
##
## Response: Y
## Df Sum Sq Mean Sq F value Pr(>F)
## X1 1 235.372 235.372 179.686 3.345e-14 ***
## X2 1 115.796 115.796 88.400 1.885e-10 ***
## X3 1 94.997 94.997 72.521 1.675e-09 ***
## Residuals 30 39.297 1.310
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# Alternatif: uji F melalui summary (F-statistic)
summary_model$fstatistic
## value numdf dendf
## 113.5355 3.0000 30.0000
# Uji parsial: t-test sudah tersedia pada summary(model) -> lihat koefisien
# Untuk uji kontribusi parsial variabel, dapat juga dilakukan drop1 (partial F)
partial_drop <- drop1(model, test = "F")
partial_drop
## Single term deletions
##
## Model:
## Y ~ X1 + X2 + X3
## Df Sum of Sq RSS AIC F value Pr(>F)
## <none> 39.297 12.923
## X1 1 36.833 76.131 33.407 28.119 9.908e-06 ***
## X2 1 16.801 56.098 23.025 12.826 0.001189 **
## X3 1 94.997 134.294 52.705 72.521 1.675e-09 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Berdasarkan output regresi, hasil uji F menunjukkan bahwa model regresi berganda secara keseluruhan signifikan dengan nilai F sebesar 1575,886 dan p-value kurang dari 0,001, sehingga variabel X1, X2, dan X3 secara bersama-sama berpengaruh terhadap Y. Uji t pada masing-masing koefisien juga menunjukkan bahwa ketiga variabel independen tersebut signifikan secara parsial karena semua memiliki p-value yang jauh lebih kecil dari 0,05. Hasil ini diperkuat oleh uji partial F melalui fungsi drop1 yang menunjukkan bahwa penghapusan salah satu variabel menyebabkan peningkatan RSS yang signifikan sehingga setiap variabel tetap memberikan kontribusi penting dalam model. Dengan demikian, baik secara simultan maupun parsial, variabel X1, X2, dan X3 berpengaruh signifikan terhadap Y.
Evaluasi model dilakukan untuk mengetahui sejauh mana model regresi mampu menjelaskan variasi pada variabel dependen. Proses ini umumnya mencakup pemeriksaan nilai koefisien determinasi, yaitu R² dan Adjusted R², untuk melihat persentase keragaman data yang berhasil diterangkan oleh model, serta penggunaan RMSE atau ukuran galat lainnya guna menilai ketepatan prediksi yang dihasilkan. Selain itu, plot residual dan grafik diagnostik lain diperiksa untuk memastikan tidak terdapat pola tersisa pada residual yang dapat mengindikasikan masalah pada model. Tahap evaluasi ini penting agar model yang digunakan tidak hanya signifikan secara statistik, tetapi juga memiliki tingkat ketelitian dan keandalan yang baik dalam menggambarkan hubungan antarvariabel.
# Goodness of fit
r2 <- summary_model$r.squared
adjr2 <- summary_model$adj.r.squared
rmse <- sqrt(mean(residuals(model)^2))
cat(sprintf("R-squared: %.4f
Adjusted R-squared: %.4f
RMSE: %.4f
", r2, adjr2, rmse))
## R-squared: 0.9191
## Adjusted R-squared: 0.9110
## RMSE: 1.0751
## plot regresi
par(mfcol = c(2,2))
plot(model)
# Ringkasan evaluasi model
data.frame(Metric = c("R-squared","Adjusted R-squared","RMSE"), Value = c(r2, adjr2, rmse))
## Metric Value
## 1 R-squared 0.9190516
## 2 Adjusted R-squared 0.9109568
## 3 RMSE 1.0750837
Berdasarkan hasil evaluasi model, nilai R-squared sebesar 0,9191 dan Adjusted R-squared sebesar 0,9110 menunjukkan bahwa model regresi mampu menjelaskan lebih dari 91 persen variasi pada variabel dependen, sehingga model memiliki kemampuan penjelasan yang sangat kuat. Nilai RMSE sebesar 1,0751 menandakan bahwa kesalahan prediksi rata-rata model relatif kecil, sehingga prediksi yang dihasilkan cukup akurat. Plot diagnostik juga memberikan indikasi bahwa asumsi regresi sebagian besar terpenuhi. Plot Residuals vs Fitted tidak menunjukkan pola tertentu yang jelas sehingga mengindikasikan linearitas terpenuhi, meskipun terdapat sedikit penyebaran yang tidak sepenuhnya seragam. Plot Scale-Location memperlihatkan pola yang relatif datar, menandakan bahwa asumsi homogenitas varians cukup terpenuhi. Namun, Q-Q plot menunjukkan adanya penyimpangan pada beberapa titik ekstrem yang mengindikasikan sedikit ketidaknormalan residual. Sementara itu, plot Residuals vs Leverage menunjukkan beberapa titik yang memiliki leverage lebih tinggi, tetapi tidak ada yang tampak melewati batas Cook’s distance secara berlebihan. Secara keseluruhan, model memiliki kinerja yang sangat baik dengan kesalahan prediksi rendah dan kemampuan penjelasan yang sangat tinggi, serta tidak menunjukkan pelanggaran asumsi yang serius.
Hasil analisis menunjukkan bahwa ketiga variabel independen, yaitu Pengeluaran per Kapita, Rata-Rata Lama Sekolah, dan Usia Harapan Hidup saat Lahir, memiliki hubungan positif dan signifikan terhadap Indeks Pembangunan Manusia (IPM) di provinsi Indonesia tahun 2021. Model regresi yang dihasilkan memiliki kemampuan prediksi yang sangat baik dengan nilai Adjusted R² sebesar 0,9191, yang berarti sebagian besar variasi IPM dapat dijelaskan oleh ketiga variabel tersebut. Selain itu, hasil eksplorasi data dan uji asumsi menunjukkan bahwa model telah memenuhi sebagian besar asumsi klasik regresi, sehingga estimasi yang diperoleh dapat dianggap stabil dan reliabel.
Secara parsial, ketiga variabel terbukti signifikan berdasarkan uji t, dengan variabel Rata-Rata Lama Sekolah memberikan pengaruh paling dominan terhadap IPM, diikuti oleh Pengeluaran per Kapita dan Usia Harapan Hidup. Hasil uji F juga menegaskan bahwa ketiga variabel secara simultan berpengaruh signifikan terhadap IPM. Temuan ini mengindikasikan bahwa peningkatan kualitas pendidikan, kesejahteraan ekonomi, serta kesehatan masyarakat merupakan faktor kunci dalam mendorong peningkatan IPM di Jawa Tengah. Dengan demikian, upaya pembangunan di tingkat daerah perlu menempatkan ketiga aspek tersebut sebagai prioritas kebijakan untuk mencapai pembangunan manusia yang lebih merata dan berkelanjutan.