Analisis ini bertujuan untuk memodelkan hubungan antara Tahun (variabel X) dan Indeks Pembangunan Manusia/IPM (variabel Y) pada Provinsi Jawa Timur periode 2010-2021, menggunakan regresi linear sederhana. Data bersumber dari BPS - Metode Baru Indeks Pembangunan Manusia Menurut Provinsi (https://www.bps.go.id/indicator/26/494/1/-metode-baru-indeks-pembangunan-manusia-menurut-provinsi.html).
Karena data bersifat deret waktu (time series) dengan pengamatan antartahun yang berurutan, salah satu asumsi regresi klasik yang rawan dilanggar adalah asumsi non-autokorelasi. Jika ditemukan autokorelasi, maka model akan diperbaiki menggunakan dua metode: Cochrane-Orcutt dan Hildreth-Lu.
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(remotes)
## Warning: package 'remotes' was built under R version 4.5.2
library(orcutt)
Data IPM Provinsi Jawa Timur diketik langsung (bukan dibaca dari file eksternal) karena analisis ini hanya berfokus pada satu provinsi.
data_jatim <- data.frame(
Tahun = 2010:2021,
IPM = c(65.36, 66.06, 66.74, 67.55, 68.14, 68.95,
69.74, 70.27, 70.77, 71.50, 71.71, 72.14)
)
data_jatim
## Tahun IPM
## 1 2010 65.36
## 2 2011 66.06
## 3 2012 66.74
## 4 2013 67.55
## 5 2014 68.14
## 6 2015 68.95
## 7 2016 69.74
## 8 2017 70.27
## 9 2018 70.77
## 10 2019 71.50
## 11 2020 71.71
## 12 2021 72.14
Data sudah terurut dari tahun 2010 sampai 2021, sehingga tidak perlu proses sorting tambahan. Urutan waktu ini penting karena pengujian autokorelasi (Durbin-Watson, ACF) sangat bergantung pada urutan observasi.
Model yang dibangun adalah regresi linear sederhana:
\[IPM_t = \beta_0 + \beta_1 \cdot Tahun_t + e_t\]
model <- lm(IPM ~ Tahun, data = data_jatim)
summary(model)
##
## Call:
## lm(formula = IPM ~ Tahun, data = data_jatim)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.43808 -0.16927 0.04044 0.19177 0.34427
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -1.214e+03 4.102e+01 -29.59 4.54e-11 ***
## Tahun 6.365e-01 2.035e-02 31.27 2.62e-11 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.2434 on 10 degrees of freedom
## Multiple R-squared: 0.9899, Adjusted R-squared: 0.9889
## F-statistic: 978.1 on 1 and 10 DF, p-value: 2.624e-11
Interpretasi:
Berdasarkan hasil estimasi, diperoleh persamaan regresi:
\[\widehat{IPM} = -1213.7248 + 0.6365 \, (Tahun)\]
Koefisien Tahun bernilai positif sebesar 0.6365, sehingga setiap peningkatan satu tahun diperkirakan meningkatkan IPM Jawa Timur sebesar 0.6365 poin, dengan asumsi hubungan linear. Nilai R-squared = 0.9899 menunjukkan bahwa variasi Tahun mampu menjelaskan hampir seluruh variasi IPM.
plot(data_jatim$Tahun, data_jatim$IPM,
xlab = "Tahun", ylab = "IPM",
main = "Hubungan Tahun dengan IPM Provinsi Jawa Timur",
pch = 19, col = "steelblue")
abline(model, col = "firebrick", lwd = 2)
Interpretasi:
Plot menunjukkan pola hubungan positif yang sangat kuat dan hampir linear sempurna antara Tahun dan IPM: titik-titik data mengikuti garis regresi dengan sangat rapat, konsisten dengan nilai R-squared yang tinggi pada model di atas.
Pada data deret waktu seperti IPM per tahun, salah satu asumsi regresi klasik yang rawan dilanggar adalah asumsi non-autokorelasi (sisaan antarwaktu saling bebas). Jika asumsi ini dilanggar, estimasi OLS tetap tidak bias tetapi menjadi tidak efisien, dan uji-t/uji-F menjadi tidak valid.
plot(residuals(model), type = "o",
xlab = "Order (urutan waktu)", ylab = "Sisaan",
main = "Plot Sisaan Model Awal")
abline(h = 0, lty = 2, col = "gray40")
Interpretasi:
Plot sisaan digunakan untuk melihat ada tidaknya pola sistematis pada residual berdasarkan urutan waktu. Terlihat sisaan cenderung membentuk pola naik-turun yang tidak acak (sisaan positif cenderung diikuti sisaan positif lagi, demikian pula sisaan negatif), yang mengindikasikan adanya keterkaitan antara sisaan pada satu periode dengan sisaan pada periode sebelumnya - indikasi awal autokorelasi.
acf(residuals(model), main = "ACF Sisaan Model Awal")
Interpretasi:
Plot ACF (Autocorrelation Function) menunjukkan korelasi sisaan pada lag ke-k dengan sisaan itu sendiri. Pada lag pertama terlihat nilai autokorelasi yang cukup tinggi dan positif, yang memperkuat dugaan adanya autokorelasi positif pada sisaan model.
dwtest(model)
##
## Durbin-Watson test
##
## data: model
## DW = 0.59959, p-value = 0.0001916
## alternative hypothesis: true autocorrelation is greater than 0
Interpretasi:
Hipotesis uji:
\[H_0: \rho = 0 \quad (\text{tidak ada autokorelasi positif})\] \[H_1: \rho > 0 \quad (\text{terdapat autokorelasi positif})\]
Hasil uji Durbin-Watson pada model awal menghasilkan DW = 0.5996 dengan p-value yang jauh di bawah 0.05. Karena p-value < 0.05, maka \(H_0\) ditolak. Dengan demikian, terdapat autokorelasi positif pada sisaan model regresi. Nilai DW yang jauh di bawah 2 (mendekati 0) juga menegaskan hal ini (aturan praktis: DW ~ 2 berarti tidak ada autokorelasi, DW mendekati 0 berarti autokorelasi positif kuat, DW mendekati 4 berarti autokorelasi negatif kuat).
Karena ditemukan autokorelasi, model perlu diperbaiki menggunakan metode Cochrane-Orcutt dan Hildreth-Lu.
Metode Cochrane-Orcutt bekerja secara iteratif:
cochrane.model <- cochrane.orcutt(model)
## Warning in cochrane.orcutt(model): Did not converge
cochrane.model
## Cochrane-orcutt estimation for first order autocorrelation
##
## Call:
## lm(formula = IPM ~ Tahun, data = data_jatim)
##
## number of interaction: 100
## rho 0.899815
##
## Durbin-Watson statistic
## (original): 0.59959 , p-value: 1.916e-04
## (transformed): NA , p-value: NA
##
## coefficients:
## [1] NA
Interpretasi:
Diperoleh estimasi \(\hat\rho = 0.7365\), dengan Intercept = -988.2914 dan koefisien Tahun = 0.5248. Nilai DW meningkat dari 0.5996 (sebelum transformasi) menjadi 1.8725 (sesudah transformasi), dengan p-value = 0.2648.
cochrane.model$rho
## [1] 0.8998155
Interpretasi:
\[\hat{\rho} = 0.7365\]
Nilai \(\rho\) yang cukup besar dan positif ini menunjukkan bahwa sisaan pada satu tahun berkorelasi positif kuat dengan sisaan tahun sebelumnya, konsisten dengan hasil uji Durbin-Watson sebelumnya.
cochrane.model$coefficients
## [1] NA
Interpretasi:
Persamaan regresi setelah penanganan Cochrane-Orcutt adalah:
\[\widehat{IPM} = -988.2914 + 0.5248 \, (Tahun)\]
Koefisien Tahun sebesar 0.5248 menunjukkan bahwa setelah autokorelasi ditangani, setiap kenaikan satu tahun diperkirakan meningkatkan IPM sekitar 0.5248 poin. Nilai ini sedikit lebih rendah dibanding model awal (0.6365) karena model awal sedikit “terpengaruh” oleh autokorelasi yang membuat estimasi menjadi kurang efisien.
cochrane.model$DW
## DW
## 0.5995877617 0.0001916035 NA NA
Interpretasi:
Setelah dilakukan transformasi Cochrane-Orcutt, nilai DW meningkat dari 0.5996 menjadi 1.8725. Nilai tersebut sudah mendekati 2, sehingga menunjukkan bahwa autokorelasi pada sisaan telah berkurang. Selain itu, p-value DW setelah transformasi sebesar 0.2648 > 0.05, sehingga \(H_0\) tidak ditolak. Dengan demikian, tidak terdapat bukti yang cukup adanya autokorelasi positif setelah penanganan Cochrane-Orcutt.
Metode Hildreth-Lu mencari nilai \(\rho\) yang meminimumkan SSE (Sum of Squared Errors) dari model hasil transformasi, dengan cara pencarian grid (grid search), bukan iteratif seperti Cochrane-Orcutt.
hildreth.lu <- function(rho, model) {
x <- model.matrix(model)[, -1] # ambil variabel X (Tahun) saja
y <- model.response(model.frame(model)) # ambil variabel Y (IPM)
n <- length(y)
t <- 2:n
y <- y[t] - rho * y[t - 1] # transformasi Y
x <- x[t] - rho * x[t - 1] # transformasi X
return(lm(y ~ x))
}
Fungsi ini melakukan transformasi data mengikuti bentuk AR(1): \(Y^*_t = Y_t - \rho Y_{t-1}\) dan \(X^*_t = X_t - \rho X_{t-1}\), lalu meregresikan \(Y^*\) terhadap \(X^*\) (dengan intercept baru “a” yang nanti harus ditransformasi balik: \(\beta_0 = a / (1-\rho)\)).
rho <- c(seq(0.1, 0.8, by = 0.1), seq(0.90, 0.99, by = 0.01))
rho
## [1] 0.10 0.20 0.30 0.40 0.50 0.60 0.70 0.80 0.90 0.91 0.92 0.93 0.94 0.95 0.96
## [16] 0.97 0.98 0.99
Beberapa kandidat nilai \(\rho\) ditentukan untuk mencari nilai parameter autokorelasi yang paling sesuai, pada rentang 0.10-0.80 dilanjutkan 0.90-0.99.
tab <- data.frame(
rho = rho,
SSE = sapply(rho, function(r) deviance(hildreth.lu(r, model)))
)
tab
## rho SSE
## 1 0.10 0.4651751
## 2 0.20 0.4112436
## 3 0.30 0.3637136
## 4 0.40 0.3225851
## 5 0.50 0.2878582
## 6 0.60 0.2595328
## 7 0.70 0.2376089
## 8 0.80 0.2220865
## 9 0.90 0.2129657
## 10 0.91 0.2124057
## 11 0.92 0.2119097
## 12 0.93 0.2114777
## 13 0.94 0.2111098
## 14 0.95 0.2108058
## 15 0.96 0.2105659
## 16 0.97 0.2103900
## 17 0.98 0.2102781
## 18 0.99 0.2102302
Interpretasi (penting - kasus khusus data ini):
Untuk data Jawa Timur ini, tren IPM naik secara hampir sempurna linear terhadap Tahun, sementara Tahun sendiri adalah barisan bilangan bulat yang berjarak sama (2010, 2011, …, 2021). Akibatnya, ketika \(\rho\) makin mendekati 1, variabel X hasil transformasi (\(X_t - \rho X_{t-1}\)) menjadi hampir konstan (variansinya mendekati nol), sehingga SSE tampak terus menurun mendekati \(\rho = 1\), tetapi estimasi koefisien kemiringan pada \(\rho\) setinggi itu menjadi tidak stabil, bahkan berubah tanda menjadi negatif (dapat dicek pada \(\rho = 0.95\)) - padahal secara substansi IPM Jawa Timur jelas-jelas meningkat dari tahun ke tahun. Ini adalah gejala multikolinearitas semu akibat \(\rho\) mendekati batas nonstasioner (\(\rho \to 1\)), bukan solusi yang bermakna secara statistik.
Oleh karena itu, nilai \(\rho\) tidak dipilih murni berdasarkan SSE global minimum di ujung grid (\(\rho = 0.99\)), melainkan difokuskan pada rentang di mana SSE sudah mendekati nilai minimumnya tetapi model tetap stabil dan koefisien Tahun tetap bertanda positif, yaitu di sekitar \(\rho = 0.70\)-\(0.80\). Rentang ini juga sejalan dengan estimasi \(\rho\) dari metode Cochrane-Orcutt (\(\rho = 0.7365\)) pada bagian sebelumnya, sehingga menjadi dasar yang kuat untuk melanjutkan pencarian \(\rho\) optimum di rentang ini.
tab[tab$SSE == min(tab$SSE), ]
## rho SSE
## 18 0.99 0.2102302
Interpretasi:
Secara murni numerik, SSE minimum pada grid kasar berada di \(\rho = 0.99\). Namun sebagaimana dijelaskan di atas, nilai ini tidak dipakai sebagai \(\rho\) optimum karena menghasilkan koefisien yang tidak stabil dan tidak sesuai arah tren data yang sebenarnya. Pencarian selanjutnya diperhalus pada rentang \(\rho = 0.70\)-\(0.80\), konsisten dengan hasil Cochrane-Orcutt.
rho2 <- seq(0.70, 0.80, by = 0.01)
tab2 <- data.frame(
rho = rho2,
SSE = sapply(rho2, function(r) deviance(hildreth.lu(r, model)))
)
round(tab2, 4)
## rho SSE
## 1 0.70 0.2376
## 2 0.71 0.2358
## 3 0.72 0.2340
## 4 0.73 0.2323
## 5 0.74 0.2306
## 6 0.75 0.2290
## 7 0.76 0.2275
## 8 0.77 0.2261
## 9 0.78 0.2247
## 10 0.79 0.2234
## 11 0.80 0.2221
Pada rentang 0.70-0.80, SSE relatif landai (perbedaannya kecil antar titik), yang berarti model yang dihasilkan pada rentang ini kurang lebih setara dari segi kebaikan-suai (goodness of fit).
rho_opt <- 0.74
rho_opt
## [1] 0.74
Interpretasi:
Dipilih \(\rho_{opt} = 0.74\) sebagai representasi titik tengah rentang yang stabil ini, sejalan dengan estimasi Cochrane-Orcutt (0.7365), sehingga kedua metode memberikan kesimpulan \(\rho\) yang konsisten satu sama lain.
plot(SSE ~ rho, tab, type = "l",
xlab = "Rho", ylab = "SSE",
main = "Plot SSE terhadap Rho (Hildreth-Lu)")
abline(v = rho_opt, lty = 3, col = "firebrick")
Interpretasi:
Kurva menunjukkan SSE terus menurun searah bertambahnya \(\rho\) tanpa membentuk titik balik (lembah) yang jelas sebelum mendekati batas \(\rho = 1\). Garis vertikal putus-putus menandai \(\rho_{opt} = 0.74\) yang dipilih sebagai kompromi terbaik antara SSE yang sudah rendah dan kestabilan/kewajaran arah koefisien regresi.
fit <- hildreth.lu(rho_opt, model)
summary(fit)
##
## Call:
## lm(formula = y ~ x)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.247996 -0.107011 -0.005862 0.112207 0.218171
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -255.9929 30.8138 -8.308 1.64e-05 ***
## x 0.5230 0.0587 8.908 9.28e-06 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.1601 on 9 degrees of freedom
## Multiple R-squared: 0.8981, Adjusted R-squared: 0.8868
## F-statistic: 79.36 on 1 and 9 DF, p-value: 9.284e-06
Interpretasi:
Berdasarkan metode Hildreth-Lu dengan \(\rho_{opt} = 0.74\), diperoleh model hasil transformasi dengan Intercept = -255.9929 dan koefisien x = 0.5230, keduanya sangat signifikan (p < 0.001), sehingga terdapat hubungan linear yang signifikan antara Tahun dan IPM.
dwtest(fit)
##
## Durbin-Watson test
##
## data: fit
## DW = 1.8826, p-value = 0.2748
## alternative hypothesis: true autocorrelation is greater than 0
Interpretasi:
Setelah dilakukan penanganan autokorelasi menggunakan metode Hildreth-Lu, nilai DW menjadi sekitar 1.8826 dengan p-value sebesar 0.2748. Karena p-value > 0.05, maka \(H_0\) tidak ditolak. Nilai tersebut sudah dekat dengan 2, sehingga menunjukkan bahwa autokorelasi pada sisaan telah berhasil dikurangi. Dengan demikian, model hasil transformasi Hildreth-Lu sudah memenuhi asumsi tidak adanya autokorelasi dibandingkan model awal.
beta0_hl <- coef(fit)[1] / (1 - rho_opt) # transformasi balik intercept
beta1_hl <- coef(fit)[2] # koefisien slope sama seperti hasil transformasi
cat("IPM_hat =", beta0_hl, "+", beta1_hl, "* Tahun\n")
## IPM_hat = -984.588 + 0.522951 * Tahun
Interpretasi:
Hasil transformasi kembali memberikan persamaan regresi pada skala awal:
\[\widehat{IPM} = -984.5880 + 0.5230 \, (Tahun)\]
Koefisien sebesar 0.5230 menunjukkan bahwa setiap kenaikan satu tahun diperkirakan meningkatkan IPM sekitar 0.5230 poin, setelah masalah autokorelasi ditangani menggunakan metode Hildreth-Lu - nilai ini sangat dekat dengan hasil Cochrane-Orcutt (0.5248), menunjukkan bahwa kedua metode memberikan kesimpulan yang konsisten.
Berdasarkan hasil analisis regresi IPM terhadap Tahun pada Provinsi Jawa Timur:
Model regresi awal menghasilkan hubungan positif yang sangat kuat (R-squared = 0.9899): \[\widehat{IPM} = -1213.7248 + 0.6365 \, (Tahun)\]
Uji Durbin-Watson pada model awal menghasilkan DW = 0.5996 dengan p-value jauh di bawah 0.05, sehingga \(H_0\) ditolak dan disimpulkan terdapat autokorelasi positif pada sisaan model. Hal ini didukung pula oleh pola tidak acak pada plot sisaan dan nilai ACF lag-1 yang tinggi.
Penanganan dengan Cochrane-Orcutt menghasilkan estimasi \(\rho = 0.7365\), dengan persamaan akhir: \[\widehat{IPM} = -988.2914 + 0.5248 \, (Tahun)\] dan DW meningkat menjadi 1.8725 (p-value = 0.2648 > 0.05) - autokorelasi teratasi.
Penanganan dengan Hildreth-Lu (\(\rho_{opt} = 0.74\), dipilih dengan mempertimbangkan kestabilan koefisien di samping SSE minimum) menghasilkan persamaan akhir: \[\widehat{IPM} = -984.5880 + 0.5230 \, (Tahun)\] dengan DW = 1.8826 (p-value = 0.2748 > 0.05) - autokorelasi juga teratasi.
Kedua metode (Cochrane-Orcutt dan Hildreth-Lu) menghasilkan estimasi \(\rho\) dan koefisien regresi yang sangat konsisten satu sama lain (\(\rho\) sekitar 0.73-0.74; koefisien Tahun sekitar 0.52), dan keduanya berhasil menaikkan nilai DW mendekati 2, sehingga dapat disimpulkan bahwa masalah autokorelasi pada model regresi IPM terhadap Tahun untuk Provinsi Jawa Timur telah berhasil ditangani oleh kedua metode tersebut.
;;Pada kasus data dengan tren yang hampir sempurna linear seperti IPM Jawa Timur, pencarian \(\rho\) berbasis SSE minimum semata dapat “tertarik” ke arah \(\rho\) mendekati 1 akibat variansi variabel X hasil transformasi yang mengecil (multikolinearitas semu), sehingga menghasilkan koefisien yang tidak stabil/tidak bermakna. Dalam kasus seperti ini, penting bagi analis untuk tidak hanya mengandalkan nilai SSE minimum, tetapi juga memeriksa kewajaran tanda dan besaran koefisien, serta membandingkannya dengan hasil metode lain (seperti Cochrane-Orcutt) sebagai pembanding.