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$IPM

Eksplorasi 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

  1. 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%.

  1. 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%.

  1. 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

  1. 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%.

  1. 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%.

  1. 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.