Data yang digunakan adalah data Indeks Pembangunan Manusia (IPM) per-provinsi dari tahun 2010-2021. Data bersumber dari BPS. Provinsi yang dipilih untuk diperiksa asumsi Autokorelasinya adalah Provinsi DKI Jakarta, Provinsi Kalimantan Timur, dan Provinsi Maluku. Link sumber data: https://www.bps.go.id/indicator/26/494/1/-metode-baru-indeks-pembangunan-manusia-menurut-provinsi.html
MPDW.idv <- readxl::read_excel("C:/Users/ZHILLAN/Documents/Materi Kuliah/Semester 5/Metode Peramalan Deret Waktu/Tugas Individu MPDW.xlsx", sheet="Sheet1")
MPDW.sct <- MPDW.idv[,c(1,12,24,32)]
knitr::kable(MPDW.sct, caption="IPM Provinsi DKI Jakarta, Kalimantan Timur, dan Maluku 12 Tahun Terkhir")
| Tahun | DKI JAKARTA | KALIMANTAN TIMUR | MALUKU |
|---|---|---|---|
| 2010 | 76.31 | 71.31 | 64.27 |
| 2011 | 76.98 | 72.02 | 64.75 |
| 2012 | 77.53 | 72.62 | 65.43 |
| 2013 | 78.08 | 73.21 | 66.09 |
| 2014 | 78.39 | 73.82 | 66.74 |
| 2015 | 78.99 | 74.17 | 67.05 |
| 2016 | 79.60 | 74.59 | 67.60 |
| 2017 | 80.06 | 75.12 | 68.19 |
| 2018 | 80.47 | 75.83 | 68.87 |
| 2019 | 80.76 | 76.61 | 69.45 |
| 2020 | 80.77 | 76.24 | 69.49 |
| 2021 | 81.11 | 76.88 | 69.71 |
plot(MPDW.sct$Tahun, MPDW.sct$`DKI JAKARTA`, type="b", pch=19, col="red", main="Perkembangan IPM Provinsi DKI Jakarta\n12 Tahun Terakhir")
plot(MPDW.sct$Tahun, MPDW.sct$`KALIMANTAN TIMUR`, type="b", pch=19, col="blue", main="Perkembangan IPM Provinsi Kalimantan Timur\n12 Tahun Terakhir")
plot(MPDW.sct$Tahun, MPDW.sct$`MALUKU`, type="b", pch=19, col="green", main="Perkembangan IPM Provinsi Maluku\n 12 Tahun Terakhir")
Model.Jkt <- lm(`DKI JAKARTA` ~ Tahun, data=MPDW.sct)
summary(Model.Jkt)
##
## Call:
## lm(formula = `DKI JAKARTA` ~ Tahun, data = MPDW.sct)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.42154 -0.16017 0.05061 0.16141 0.30594
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -816.54150 44.39144 -18.39 4.86e-09 ***
## Tahun 0.44437 0.02202 20.18 1.97e-09 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.2634 on 10 degrees of freedom
## Multiple R-squared: 0.976, Adjusted R-squared: 0.9736
## F-statistic: 407.1 on 1 and 10 DF, p-value: 1.97e-09
Model.Kltm <- lm(`KALIMANTAN TIMUR` ~ Tahun, data=MPDW.sct)
summary(Model.Kltm)
##
## Call:
## lm(formula = `KALIMANTAN TIMUR` ~ Tahun, data = MPDW.sct)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.40351 -0.12214 0.00726 0.12866 0.47209
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -944.65719 42.61522 -22.17 7.83e-10 ***
## Tahun 0.50559 0.02114 23.91 3.72e-10 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.2528 on 10 degrees of freedom
## Multiple R-squared: 0.9828, Adjusted R-squared: 0.9811
## F-statistic: 571.8 on 1 and 10 DF, p-value: 3.719e-10
Model.Mlk <- lm(`MALUKU` ~ Tahun, data=MPDW.sct)
summary(Model.Mlk)
##
## Call:
## lm(formula = MALUKU ~ Tahun, data = MPDW.sct)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.46718 -0.16078 0.02167 0.13228 0.31786
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -985.83065 39.58330 -24.91 2.49e-10 ***
## Tahun 0.52252 0.01964 26.61 1.30e-10 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.2349 on 10 degrees of freedom
## Multiple R-squared: 0.9861, Adjusted R-squared: 0.9847
## F-statistic: 707.9 on 1 and 10 DF, p-value: 1.299e-10
Pengujian asumsi Autokorelasi dilakukan secara eksploratif dan formal. Pengujian secara eksploratif menggunakan plot ACF dan PACF. Kemudian, pengujian secara formal menggunakan uji Durbin-Watson (Syntax dwtest(model) dalam library(lmtest) pada RStudio).
#Pengujian asumsi secara eksploratif
par(mfrow = c(2,3))
acf(Model.Jkt$residuals)
acf(Model.Kltm$residuals)
acf(Model.Mlk$residuals)
pacf(Model.Jkt$residuals)
pacf(Model.Kltm$residuals)
pacf(Model.Mlk$residuals)
Hasil pengujian secara eksploratif menunjukkan bahwa secara ACF terdapat masing-masing satu garis hitam yang melewati garis biru. Pengujian secara eksploratif hanya melihat secara sekilas saja apakah terdapat autokorelasi dalam suatu model. Tidak memastikan sepenuhnya keberadaan autokorelasi dalam model. Sehingga diperlukan uji formal untuk mengetahuinya lebih lanjut.
#Pengujian asumsi secara formal
lmtest::dwtest(Model.Jkt)
##
## Durbin-Watson test
##
## data: Model.Jkt
## DW = 0.53015, p-value = 6.42e-05
## alternative hypothesis: true autocorrelation is greater than 0
lmtest::dwtest(Model.Kltm)
##
## Durbin-Watson test
##
## data: Model.Kltm
## DW = 1.5684, p-value = 0.1209
## alternative hypothesis: true autocorrelation is greater than 0
lmtest::dwtest(Model.Mlk)
##
## Durbin-Watson test
##
## data: Model.Mlk
## DW = 0.84248, p-value = 0.002687
## alternative hypothesis: true autocorrelation is greater than 0
Berdasarkan hasil uji Durbin-Watson, didapatkan nilai p-value untuk model DKI Jakarta sebesar 6,42e-05. Nilai tersebut lebih kecil dari alpha 0,05 sehingga H0 ditolak dan belum cukup bukti menyatakan bahwa sisaan data pada model DKI Jakarta tidak saling bebas (Terdapat Autokorelasi). Kemudian, pada model Kalimantan Timur, didapatkan nilai p-value untuk sebesar 0,1209. Nilai tersebut lebih besar dari alpha 0,05 sehingga H0 tak ditolak dan cukup bukti menyatakan bahwa sisaan data pada model Kalimantan Timur saling bebas (Tidak ada Autokorelasi). Lalu, pada model Maluku, didapatkan nilai p-value sebesar 0,002687. Nilai tersebut lebih kecil dari alpha 0,05 sehingga H0 ditolak dan belum cukup bukti menyatakan bahwa sisaan data pada model Maluku tidak saling bebas (Terdapat Autokorelasi).
Kondisi Autokorelasi pada sisaan model dapat diatasi dengan metode Cochrane-Orcutt dan Hildreth-Lu. Model yang akan ditangani adalah model IPM dari Provinsi DKI Jakarta dan Maluku yang sebelumnya pada uji asumsi Durbin-Watson tidak memenuhi.
Penanganan asumsi Autokorelasi yang dilakukan dengan pendekatan secara iterative agar mendapatkan penduga p yang lebih baik. Pada RStudio, dapat menggunakan syntax cochrane.orcutt(model) dalam library(orcutt) atau membuat syntax fungsi tersendiri. Notes: convergence=5 dan max.iter=1000 (Muncul warning message ketika convergence=8. max.iter=100 agar tidak terjadi warning setidaknya harus pada convergence=3).
# Uji Cochrane-Orcutt untuk model DKI Jakarta
cochrane.test <- orcutt::cochrane.orcutt(Model.Jkt, convergence=5, max.iter=1000)
rho.Jkt <- cochrane.test$rho
Tahun.tr <- MPDW.sct$Tahun[-1]-(MPDW.sct$Tahun[-12]*rho.Jkt)
Jkt.tr <- MPDW.sct$`DKI JAKARTA`[-1]-(MPDW.sct$`DKI JAKARTA`[-12]*rho.Jkt)
Model.Jkt.tr <- lm(Jkt.tr ~ Tahun.tr)
# Uji Cochrane-Orcutt untuk model Maluku
cochrane.test <- orcutt::cochrane.orcutt(Model.Mlk, convergence=5, max.iter=1000)
rho.Mlk <- cochrane.test$rho
Tahun.tr <- MPDW.sct$Tahun[-1]-(MPDW.sct$Tahun[-12]*rho.Mlk)
Mlk.tr <- MPDW.sct$`MALUKU`[-1]-(MPDW.sct$`MALUKU`[-12]*rho.Mlk)
Model.Mlk.tr <- lm(Mlk.tr ~ Tahun.tr)
# Pengujian asumsi kembali
lmtest::dwtest(Model.Jkt.tr)
##
## Durbin-Watson test
##
## data: Model.Jkt.tr
## DW = 1.8906, p-value = 0.2796
## alternative hypothesis: true autocorrelation is greater than 0
lmtest::dwtest(Model.Mlk.tr)
##
## Durbin-Watson test
##
## data: Model.Mlk.tr
## DW = 1.5479, p-value = 0.1137
## alternative hypothesis: true autocorrelation is greater than 0
Berdasarkan hasil uji asumsi kembali, didapatkan nilai p-value untuk model DKI Jakarta sebesar 0,2796. Nilai tersebut sudah lebih besar dari alpha 0,05. sehingga H0 tak ditolak dan cukup bukti menyatakan bahwa sisaan data pada model DKI Jakarta sudah dapat dikatakan saling bebas (Tidak ada Autokorelasi). Sementara itu, untuk model Maluku, didapatkan nilai p-value sebesar 0,1137. Nilai tersebut sudah lebih besar dari alpha 0,05. sehingga H0 tak ditolak dan cukup bukti menyatakan bahwa sisaan data pada model Maluku sudah dapat dikatakan saling bebas (Tidak ada Autokorelasi).
Pendekatan yang hampir sama dengan Cochrane-Orcutt, tetapi tidak memerlukan iterasi. Moetode Hildreth-Lu mengambil beberapa nilai rho secara random antara nilai 0 sampai 1. Pada RStudio, Fungsi Hildreth-Lu dibuat dengan format sebagai berikut.
hildreth.lu <- function(rho, model){
x <- model.matrix(model)[,-1]
y <- model.response(model.frame(model))
n <- length(y)
t <- 2:n
y <- y[t]-rho*y[t-1]
x <- x[t]-rho*x[t-1]
return(lm(y~x))
}
# Model Jakarta
rhoh1 <- c(seq(0.01, 0.99, by=0.01))
hltab1 <- data.frame('rho'=rhoh1, 'SSE'=sapply(rhoh1, function(i){deviance(hildreth.lu(i, Model.Jkt))}))
plot(hltab1$SSE ~ hltab1$rho , type = "l")
abline(v = hltab1[hltab1$SSE==min(hltab1$SSE),"rho"], lty = 3)
optrho1 <- which.min(round(hltab1, 4)[,2])
opt.rho.1 <- round(hltab1, 4)[optrho1,]$rho
# Model Maluku
rhoh2 <- c(seq(0.01, 0.99, by=0.01))
hltab2 <- data.frame('rho'=rhoh2, 'SSE'=sapply(rhoh2, function(i){deviance(hildreth.lu(i, Model.Mlk))}))
plot(hltab2$SSE ~ hltab2$rho , type = "l")
abline(v = hltab2[hltab2$SSE==min(hltab2$SSE),"rho"], lty = 3)
optrho2 <- which.min(round(hltab2, 4)[,2])
opt.rho.2 <- round(hltab2, 4)[optrho2,]$rho
Pada model Jakarta, didapatkan rho optimum sebesar 0,9 (Nilai tersebut hampir sama dengan nilai rho pada uji Cochrane-Orcutt-nya yang mana sebesar 0,8987). Sementara itu, pada model Maluku, didapatkan rho optimum sebesar 0,88 (Nilai tersebut juga hampir sama dengan nilai rho pada uji Cochrane-Orcutt-nya yang mana sebesar 0,8858).
Model.Jkt.hl <- hildreth.lu(opt.rho.1, Model.Jkt)
Model.Mlk.hl <- hildreth.lu(opt.rho.2, Model.Mlk)
# Pengujian asumsi kembali
lmtest::dwtest(Model.Jkt.hl)
##
## Durbin-Watson test
##
## data: Model.Jkt.hl
## DW = 1.8932, p-value = 0.2811
## alternative hypothesis: true autocorrelation is greater than 0
lmtest::dwtest(Model.Mlk.hl)
##
## Durbin-Watson test
##
## data: Model.Mlk.hl
## DW = 1.541, p-value = 0.1112
## alternative hypothesis: true autocorrelation is greater than 0
Berdasarkan hasil uji asumsi kembali, didapatkan nilai p-value untuk model DKI Jakarta sebesar 0,2811. Nilai tersebut sudah lebih besar dari alpha 0,05. sehingga H0 tak ditolak dan cukup bukti menyatakan bahwa sisaan data pada model DKI Jakarta sudah dapat dikatakan saling bebas (Tidak ada Autokorelasi). Sementara itu, untuk model Maluku, didapatkan nilai p-value sebesar 0,1112. Nilai tersebut sudah lebih besar dari alpha 0,05. sehingga H0 tak ditolak dan cukup bukti menyatakan bahwa sisaan data pada model Maluku sudah dapat dikatakan saling bebas (Tidak ada Autokorelasi).
df.coef <- cbind(Model=c("DKI Jakarta - Original", "DKI Jakarta - Cochrane-Orcutt", "DKI Jakarta - Hildreth-Lu", "Maluku - Original", "Maluku - Cochrane-Orcutt", "Maluku - Hildreth-Lu"), b0=c(coef(Model.Jkt)[1], coef(Model.Jkt.tr)[1], coef(Model.Jkt.hl)[1], coef(Model.Mlk)[1], coef(Model.Mlk.tr)[1], coef(Model.Mlk.hl)[1]), b1=c(coef(Model.Jkt)[2], coef(Model.Jkt.tr)[2], coef(Model.Jkt.hl)[2], coef(Model.Mlk)[2], coef(Model.Mlk.tr)[2], coef(Model.Mlk.hl)[2]))
knitr::kable(df.coef)
| Model | b0 | b1 | |
|---|---|---|---|
| (Intercept) | DKI Jakarta - Original | -816.541503496541 | 0.444370629370648 |
| (Intercept) | DKI Jakarta - Cochrane-Orcutt | -3.99174714857092 | 0.0605688810872224 |
| (Intercept) | DKI Jakarta - Hildreth-Lu | -2.92122727273392 | 0.0555454545454873 |
| (Intercept) | Maluku - Original | -985.830652680715 | 0.522517482517513 |
| (Intercept) | Maluku - Cochrane-Orcutt | -49.3549827307996 | 0.248776176528792 |
| (Intercept) | Maluku - Hildreth-Lu | -55.3484969696915 | 0.263151515151492 |
Dapat dilihat bahwa hasil koefisien setelah diberi penanganan Cochrane-Orcutt dan Hildreth-Lu memberikan nilai koefisien yang hampir serupa.
Perbandingan hanya dilakukan pada metode DKI Jakarta dan metode Maluku karena pada model Kalimantan Timur tidak dilakukan penanganan autokorelasi.
mse.Jkt.or <- mean(Model.Jkt$residuals^2)
mse.Mlk.or <- mean(Model.Mlk$residuals^2)
mse.Jkt.co <- mean(Model.Jkt.tr$residuals^2)
mse.Mlk.co <- mean(Model.Mlk.tr$residuals^2)
mse.Jkt.hl <- mean(Model.Jkt.hl$residuals^2)
mse.Mlk.hl <- mean(Model.Mlk.hl$residuals^2)
`DKI Jakarta` <- c(mse.Jkt.or, mse.Jkt.co, mse.Jkt.hl)
Maluku <- c(mse.Mlk.or, mse.Mlk.co, mse.Mlk.hl)
df.error <- cbind(Method=c("Original", "Cochrane-Orcutt", "Hildreth-Lu"), `DKI Jakarta`, Maluku)
knitr::kable(df.error)
| Method | DKI Jakarta | Maluku |
|---|---|---|
| Original | 0.0578077797203129 | 0.0459633644133882 |
| Cochrane-Orcutt | 0.0160274249999917 | 0.0295025490228239 |
| Hildreth-Lu | 0.0160271231404965 | 0.0295039106115715 |
Nilai MSE mendapatkan …