Penanganan Autokorelasi
Data IPM Provinsi Sumatera Utara Tahun 2010-2021
Data dan Package
Package
library(rmarkdown)
library(dplyr)
library(readxl)
library(forecast)
library(TTR)
library(tseries)
library(lmtest) #uji-Durbin Watson
library(orcutt) #Cochrane-Orcutt
library(HoRM) #Hildreth Lu
library(lawstat)
library(ggplot2)
library(knitr)Data
Data yang digunakan merupakan data IPM di Provinsi Sumatera Utara 2010-2021.
data <- readxl::read_xlsx("D:/MPDW/Tugas Individu MPDW.xlsx", sheet=2)
data## # A tibble: 12 × 2
## Tahun IPM
## <dbl> <dbl>
## 1 2010 67.1
## 2 2011 67.3
## 3 2012 67.7
## 4 2013 68.4
## 5 2014 68.9
## 6 2015 69.5
## 7 2016 70
## 8 2017 70.6
## 9 2018 71.2
## 10 2019 71.7
## 11 2020 71.8
## 12 2021 72
Kolom Tahun disimpan ke peubah x dan kolom IPM disimpan ke peubah y
x <- data$Tahun
y <- data$IPMEksplorasi Data
Mencari Nilai Korelasi
cor(x,y)## [1] 0.9932939
Scatterplot
p <- ggplot(data, aes(x=Tahun, y=IPM)) + geom_line(lwd=1.5,col="green") + geom_point(size=3,col="red")
p +labs(x="Tahun",y = "Indeks Pembangunan Manusia",
title="Time Series Plot Indeks Pembangunan Manusia Di Provinsi Sumatera Utara", subtitle="Tahun 2010-2021") +
theme_bw()+
theme(
plot.title = element_text(size = 14L,
face = "bold",
hjust = 0.5))Dapat dilihat bahwa scatter plot di atas bahwa terdapat hubungan yang positif antara peubah tahun dan IPM dengan nilai korelasi 0.9932939.
Model Regresi
model <- lm(y~x, data = data)
summary(model)##
## Call:
## lm(formula = y ~ x, data = data)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.40333 -0.11958 0.00167 0.13542 0.32667
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -927.99167 36.72254 -25.27 2.16e-10 ***
## x 0.49500 0.01822 27.17 1.06e-10 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.2179 on 10 degrees of freedom
## Multiple R-squared: 0.9866, Adjusted R-squared: 0.9853
## F-statistic: 738.1 on 1 and 10 DF, p-value: 1.056e-10
Berdasarkan hasil diatas, didapat bahwa model regresi linear adalah y = -927.99167 + 0.49500x, yang artinya nilai dugaan rataan y bertambah sebesar 0.49500 apabila x bertambah satu satuan dengan p-value < 0.05 dan R-squared sebesar 0.9866 yang menunjukkan bahwa variabel x dapat menjelaskan keragaman variabel y sebesar 98.66%.
Deteksi Autokorelasi
Grafik
1. Residual Plot
Sisaan dan fitted value
resi1 <- residuals(model)
fit <- predict(model)Diagnostik dengan eksploratif
par(mfrow = c(2,2))
qqnorm(resi1)
qqline(resi1, col = "darkgreen", lwd = 2)
plot(fit, resi1, col = "darkgreen", pch = 20, xlab = "Sisaan",
ylab = "Fitted Values", main = "Sisaan vs Fitted Values")
abline(a = 0, b = 0, lwd = 2)
hist(resi1, col = "darkgreen",main = "Histogram Residual")
plot(seq(1,12,1), resi1, col = "black", pch = 20,
xlab = "Sisaan", ylab = "Order", main = "Sisaan vs Order")
lines(seq(1,12,1), resi1, col = "darkgreen")
abline(a = 0, b = 0, lwd = 2)
Berdasarkan normal Q-Q Plot diatas, terlihat bahwa banyak amatan yang
telah mendekati garis qq-plot berdistribusi normal dan sisaan cukup
menyebar normal. Berdasarkan plot sisaan vs fitted values, kehomogenan
ragam masih terpenuhi. Histogram diatas terlihat bahwa data menjulur ke
kiri. Plot kebebasan sisaan banyak bergerak disekitar titik nol dan
terdapat beberapa titik amatan yang terletak cukup jauh dari titik nol
sehingga belum dapat disimpulkan apakah terdapat autokorelasi atau
tidak.
2.ACF dan PACF Plot
par(mfrow = c(1,2))
acf(resi1)
pacf(resi1)Berdasarkan kedua plot di atas, terlihat bahwa tidak terdapat garis pada plot yang melebihi garis batas biru. Hal ini mengindikasikan tidak adanya autokorelasi.
Uji Statistik
1. Durbin Watson Test
Hipotesis :
H0 = Sisaan Saling Bebas (Tidak Autokorelasi)
H1 = Sisaan Tidak Saling Bebas (Autokorelasi)
lmtest::dwtest(model, alternative = 'two.sided')##
## Durbin-Watson test
##
## data: model
## DW = 0.87521, p-value = 0.007039
## alternative hypothesis: true autocorrelation is not 0
Berdasarkan Durbin-Watson test didapatkan p-value < 0.05 yang artinya Tolak H0, sehingga cukup bukti untuk menyatakan bahwa terdapat autokorelasi atau sisaan tidak saling bebas pada taraf 5%.
2. Run’s Test
Hipotesis
H0 = Sisaan Saling Bebas (Tidak Autokorelasi)
H1 = Sisaan Tidak Saling Bebas (Autokorelasi)
lawstat::runs.test(resid(model), alternative = 'two.sided')##
## Runs Test - Two sided
##
## data: resid(model)
## Standardized Runs Statistic = -1.8166, p-value = 0.06928
Berdasarkan uji Run’s Test, p-value > 0.05 yang artinya Tak Tolak H0. Cukup bukti untuk menyatakan bahwa sisaan saling bebas pada taraf 5% (Tidak adanya autokorelasi)
3. Breusch-Godfrey Test
Hipotesis :
H0 = Sisaan Saling Bebas (Tidak Autokorelasi)
H1 = Sisaan Tidak Saling Bebas (Autokorelasi)
bgtest(y ~ x, data=data, order=1)##
## Breusch-Godfrey test for serial correlation of order up to 1
##
## data: y ~ x
## LM test = 3.1615, df = 1, p-value = 0.07539
Berdasarkan uji Breusch-Godfrey, p-value > 0.05 yang artinya Tak tolak H0. Cukup bukti untuk menyatakan bahwa sisaan saling bebas pada taraf 5% (tidak terdapat autokorelasi).
Penanganan Autokorelasi
Cochrane-Orcutt
modelco <- orcutt::cochrane.orcutt(model,convergence=5,max.iter = 1000)
modelco ## Cochrane-orcutt estimation for first order autocorrelation
##
## Call:
## lm(formula = y ~ x, data = data)
##
## number of interaction: 16
## rho 0.673816
##
## Durbin-Watson statistic
## (original): 0.87521 , p-value: 3.52e-03
## (transformed): 1.01600 , p-value: 1.053e-02
##
## coefficients:
## (Intercept) x
## -880.822949 0.471571
rho <- modelco$rho
rho## [1] 0.6738163
Telah didapat nilai rho optimum sebesar 0.6738163.
(y.trans <- y[-1]-y[-12]*rho)## [1] 22.13366 22.36521 22.71568 22.80792 23.10427 23.16303 23.40286 23.62878
## [9] 23.77775 23.43042 23.64020
(x.trans <- x[-1]-x[-12]*rho)## [1] 656.6292 656.9554 657.2816 657.6078 657.9339 658.2601 658.5863 658.9125
## [9] 659.2387 659.5649 659.8910
Model dengan Peubah Transformasi
modelcorho <- lm(y.trans~x.trans)
summary(modelcorho) ##
## Call:
## lm(formula = y.trans ~ x.trans)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.29120 -0.16472 0.05668 0.14722 0.21480
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -287.31008 37.36252 -7.690 3.03e-05 ***
## x.trans 0.47157 0.05676 8.308 1.63e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.1942 on 9 degrees of freedom
## Multiple R-squared: 0.8847, Adjusted R-squared: 0.8718
## F-statistic: 69.03 on 1 and 9 DF, p-value: 1.634e-05
Berdasarkan hasil diatas, didapat model regresi deret waktu yaitu y = -287.31008 + 0.47157x, yang artinya nilai y akan bertambah sebesar 0.47157 jika x bertambah satu satuan.
Pengecekan Autokorelasi
- Durbin-Watson test
Hipotesis :
H0 = Sisaan Saling Bebas (Tidak Autokorelasi)
H1 = Sisaan Tidak Saling Bebas (Autokorelasi)
lmtest::dwtest(modelcorho,alternative = 'two.sided') ##
## Durbin-Watson test
##
## data: modelcorho
## DW = 1.016, p-value = 0.02106
## alternative hypothesis: true autocorrelation is not 0
Didapatkan P-value < 5%. Tak Tolak H0, sehingga cukup bukti untuk menyatakan bahwa terdapat autokorelasi pada taraf 5%.
- Run’s Test
Hipotesis :
H0 = Sisaan Saling Bebas (Tidak Autokorelasi)
H1 = Sisaan Tidak Saling Bebas (Autokorelasi)
lawstat::runs.test(resid(modelcorho), alternative = 'two.sided')##
## Runs Test - Two sided
##
## data: resid(modelcorho)
## Standardized Runs Statistic = -0.93314, p-value = 0.3507
Didapatkan P-value > 5%. Tak Tolak H0, sehingga belum cukup bukti untuk menyatakan bahwa terdapat autokorelasi pada taraf 5%.
- Breusch-Godfrey test
Hipotesis :
H0 = Sisaan Saling Bebas (Tidak Autokorelasi)
H1 = Sisaan Tidak Saling Bebas (Autokorelasi)
bgtest(modelcorho)##
## Breusch-Godfrey test for serial correlation of order up to 1
##
## data: modelcorho
## LM test = 1.7468, df = 1, p-value = 0.1863
P-value > 0.05. Tak Tolak H0, sehingga belum cukup bukti untuk menyatakan bahwa terdapat autokorelasi pada taraf 5%.
Hildreth-lu
hildreth.lu.func <- function(r, model){
x <- model.matrix(model)[,-1]
y <- model.response(model.frame(model))
n <- length(y)
t <- 2:n
y <- y[t]-r*y[t-1]
x <- x[t]-r*x[t-1]
return(lm(y~x))
}r <- c(seq(0.1,0.9, by= 0.1), seq(0.9,0.99, by= 0.01))
tab <- data.frame("rho" = r, "SSE" = sapply(r, function(i){deviance(hildreth.lu.func(i, model))}))
optrho <- which.min(round(tab, 4)[,2])
round(tab, 4)## rho SSE
## 1 0.10 0.4197
## 2 0.20 0.3941
## 3 0.30 0.3734
## 4 0.40 0.3576
## 5 0.50 0.3467
## 6 0.60 0.3407
## 7 0.70 0.3395
## 8 0.80 0.3432
## 9 0.90 0.3518
## 10 0.90 0.3518
## 11 0.91 0.3530
## 12 0.92 0.3541
## 13 0.93 0.3554
## 14 0.94 0.3566
## 15 0.95 0.3580
## 16 0.96 0.3593
## 17 0.97 0.3607
## 18 0.98 0.3622
## 19 0.99 0.3637
round(tab, 4)[optrho,]## rho SSE
## 7 0.7 0.3395
Grafik rho dan SSE
plot(tab$SSE ~ tab$rho , type = "l")
abline(v = tab[tab$SSE==min(tab$SSE),"rho"], lty = 3)
Terlihat bahwa pada iterasi pertama, rho optimum yang menghasilkan SSE
terkecil berada di sekitar 0.7
r <- seq(0.65,0.72, by= 0.01)
tab <- data.frame("rho" = r, "SSE" = sapply(r, function(i){deviance(hildreth.lu.func(i, model))}))
# grafik rho dan SSE
plot(tab$SSE ~ tab$rho , type = "l")
abline(v = tab[tab$SSE==min(tab$SSE),"rho"], lty = 3)Model dengan Peubah Transformasi
modelhl <- hildreth.lu.func(0.9, model)
summary(modelhl)##
## Call:
## lm(formula = y ~ x)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.33689 -0.14130 0.04764 0.15514 0.19987
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -67.2923 38.1742 -1.763 0.1118
## x 0.3688 0.1885 1.956 0.0821 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.1977 on 9 degrees of freedom
## Multiple R-squared: 0.2984, Adjusted R-squared: 0.2204
## F-statistic: 3.828 on 1 and 9 DF, p-value: 0.08211
Berdasarkan hasil diatas, didapat model regresi hasil transformasi yaitu y = -67.2923 + 0.3688 x
Pengecekan Asumsi Autokorelasi
- Durbin-Watson test
Hipotesis :
H0 = Sisaan Saling Bebas (Tidak Autokorelasi)
H1 = Sisaan Tidak Saling Bebas (Autokorelasi)
lmtest::dwtest(modelhl,alternative = "two.sided")##
## Durbin-Watson test
##
## data: modelhl
## DW = 1.1747, p-value = 0.05107
## alternative hypothesis: true autocorrelation is not 0
Didapat P-value > 5%. Tak Tolak H0, sehingga belum cukup bukti untuk menyatakan bahwa terdapat autokorelasi pada taraf 5%.
- Run’s Test
Hipotesis :
H0 = Sisaan Saling Bebas (Tidak Autokorelasi)
H1 = Sisaan Tidak Saling Bebas (Autokorelasi)
lawstat::runs.test(resid(modelhl), alternative = 'two.sided')##
## Runs Test - Two sided
##
## data: resid(modelhl)
## Standardized Runs Statistic = -0.93314, p-value = 0.3507
Berdasarkan uji Run’s Test, p-value > 0.05 yang artinya Tak Tolak H0. belum cukup bukti untuk menyatakan bahwa terdapat autokorelasi pada taraf 5%.
- Breusch-Godfrey test
Hipotesis :
H0 = Sisaan Saling Bebas (Tidak Autokorelasi)
H1 = Sisaan Tidak Saling Bebas (Autokorelasi)
bgtest(modelhl)##
## Breusch-Godfrey test for serial correlation of order up to 1
##
## data: modelhl
## LM test = 0.99408, df = 1, p-value = 0.3187
P-value > 5%. Tak Tolak H0, sehingga belum cukup bukti untuk menyatakan bahwa terdapat autokorelasi pada taraf 5%.
Transformasi Balik
Persamaan regresi setelah di transformasi ke persamaan awal
cat("IPM = ", coef(modelhl)[1]/(1-0.735), "+", coef(modelhl)[2]," Tahun", sep = "") ## IPM = -253.9333+0.3688182 Tahun
Berdasarkan hasil diatas, model regresi setelah penanganan autokorelasi yaitu y = -253.9333+0.3688182x
Kesimpulan
Terdapat autokorelasi pada deret waktu IPM Provinsi Sumatera Utara
tahun 2010-2021. Hal ini dapat dideteksi setelah melakukan pengujian
dengan Durbin Watson Test. Sehingga dilakukan penanganan dengan metode
Cochrane-Orcutt dan Hildreth-Lu. Kedua metode
tersebut dapat menangani masalah autokorelasi pada data IPM Provinsi
Sumatera Utara tahun 2010-2021.