Pendeteksian dan Penanganan Autokorelasi Data IPM Kepulauan Riau Tahun 2010-2021

Pendahuluan

Indeks Pembangunan Manusia (IPM) merupakan indikator komposit untuk mengukur capaian pembangunan kualitas hidup manusia. Indeks ini terbentuk dari rata-rata ukur capaian tiga dimensi utama pembangunan manusia, yaitu umur panjang dan hidup sehat, pengetahuan, dan standar hidup layak (BPS, 2020).

Uji autokorelasi bertujuan untuk menguji apakah suatu model regresi linear terdapat korelasi antar kesalahan pengganggu (residual) pada periode t dengan kesalahan pada periode t – 1 (sebelumnya). Dikatakan terdapat permasalahan autokorelasi jika terjadi korelasi. Autokorelasi muncul karena observasi yang berurutan sepanjang waktu berkaitan satu sama lain (Nugroho, 2016).

Ada beberapa cara yang dapat digunakan untuk mendeteksi autokorelasi diantaranya, metode grafik yaitu plot residual vs fitted value dan plot ACF PACF, serta menggunakan uji formal, yaitu uji Durbin-Watson, Breusch-Godfrey Test, dan Run's Test. Selanjutnya, penanganan autokorelasi dapat dilakukan dengan metode Cochrane-Orcutt dan Hildreth-lu.

Library yang Digunakan

Beberapa package yang diperlukan dalam analisis ini adalah sebagai berikut.

library(dplyr)
## 
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
## 
##     filter, lag
## The following objects are masked from 'package:base':
## 
##     intersect, setdiff, setequal, union
library(forecast)
## Warning: package 'forecast' was built under R version 4.1.3
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
library(TTR)
## Warning: package 'TTR' was built under R version 4.1.3
library(tseries)
## Warning: package 'tseries' was built under R version 4.1.3
library(readxl)
## Warning: package 'readxl' was built under R version 4.1.2
library(lmtest) # Uji Durbin Watson
## Warning: package 'lmtest' was built under R version 4.1.3
## Loading required package: zoo
## Warning: package 'zoo' was built under R version 4.1.2
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
library(lawstat)
## Warning: package 'lawstat' was built under R version 4.1.3
## 
## Attaching package: 'lawstat'
## The following object is masked from 'package:tseries':
## 
##     runs.test
library(orcutt) # Cochrane-Orcutt
## Warning: package 'orcutt' was built under R version 4.1.3
library(HoRM) # Hildreth Lu
## Warning: package 'HoRM' was built under R version 4.1.3
library(knitr)
## Warning: package 'knitr' was built under R version 4.1.3

Input Data

Data yang digunakan berasal dari Badan Pusat Statistika (BPS) yaitu data Indeks Pembangunan Manusia (IPM) setiap provinsi tahun 2010-2021. Data Provinsi Kepulauan Riau dipilih untuk dianalisis lebih lanjut terkait asumsi autokorelasi serta penanganannya pada regresi deret waktu.

dtreg <- read_excel("Data Regresi Tugas Individu 1 MPDW.xlsx", sheet=2)
kable(dtreg, caption="IPM Kepulauan Riau Tahun 2010-2021", align="c")
IPM Kepulauan Riau Tahun 2010-2021
Tahun IPM
2010 71.13
2011 71.61
2012 72.36
2013 73.02
2014 73.40
2015 73.75
2016 73.99
2017 74.45
2018 74.84
2019 75.48
2020 75.59
2021 75.79

Eksplorasi Data

Data pada penelitian ini terdiri atas satu peubah respon (y) yaitu IPM dan satu peubah penjelas (x) yaitu Tahun.

x <- dtreg$Tahun
y <- dtreg$IPM

1. Membuat Scatterplot

plot(x,y,pch = 20, col = "#008B8B", main = "Scatter Plot Tahun vs Nilai IPM", ylab = "Nilai IPM", xlab = "Tahun")

2. Mencari Korelasi

round(cor(x,y), 2)
## [1] 0.99

Berdasarkan scatterplot di atas, terlihat bahwa terdapat hubungan linier positif yang kuat antara peubah tahun dan IPM. Nilai korelasi antara kedua peubah tersebut yaitu sebesar 0.99.

3. Membuat Model Regresi Linier Sederhana

Formula model regresi linier yang digunakan yaitu Y = β0 + β1x + ϵ

model <- lm(y~x, data = dtreg)
summary(model)
## 
## Call:
## lm(formula = y ~ x, data = dtreg)
## 
## Residuals:
##      Min       1Q   Median       3Q      Max 
## -0.32897 -0.14432  0.01181  0.18608  0.29711 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -781.81672   38.55893  -20.28 1.88e-09 ***
## x              0.42451    0.01913   22.19 7.76e-10 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.2288 on 10 degrees of freedom
## Multiple R-squared:  0.9801, Adjusted R-squared:  0.9781 
## F-statistic: 492.4 on 1 and 10 DF,  p-value: 7.755e-10

Berdasarkan hasil di atas, diperoleh model regresi linear yaitu y = −781.81672 + 0.42451x, artinya nilai dugaan rataan y bertambah sebesar 0.42451 jika x bertambah satu satuan. Berdasarkan hasil uji F yang dilakukan didapat bahwa p−value < 0.05, dapat disimpulkan bahwa minimal ada 1 peubah yang berpengaruh nyata secara signifikan pada taraf 5%. Berdasarkan uji-t parsial juga terlihat bahwa kedua parameter (intersep dan koefisien x) berpengaruh nyata pada taraf 5%. Nilai R-squared = 0.9801 menujukkan bahwa peubah x (tahun) dapat menjelaskan keragaman peubah y (IPM) sebesar 98.01%.

Deteksi Autokorelasi

1. Residual Plot

#sisaan dan fitted value
sisaan <- residuals(model)
fit <- predict(model)

#diagnostik dengan eksploratif
par(mfrow = c(2,2))

qqnorm(sisaan)
qqline(sisaan, col = "#008B8B", lwd = 2)

plot(fit, sisaan, col = "#008B8B", pch = 20, xlab = "Residual", 
     ylab = "Fitted Values", main = "Residual vs Fitted Values")
abline(a = 0, b = 0, lwd = 2)

hist(sisaan, col = "#008B8B")

plot(seq(1,12,1),sisaan, col = "#008B8B", pch = 20, 
     xlab = "Residual", ylab = "Order", main = "Residual vs Order")
lines(seq(1,12,1),sisaan, col = "green")
abline(a = 0, b = 0, lwd = 2)

  1. Normal Q-Q Plot dan Histogram of Residuals Plot Berdasarkan hasil eksplorasi di atas, terlihat bahwa banyak amatan yang mendekati garis tren dan bentuk histogram cukup simetris sehingga dapat dikatakan bahwa sisaan cukup menyebar normal.

  2. Residuals vs Fitted Plot Berdasarkan hasil di atas, data sisaan cukup menyebar disekitar sumbu 0 sehingga dapat dikatakan bahwa ragam sisaan homogen. Histogram dari sisaan juga menunjukkan bahwa sisaan cenderung menyebar normal.

  3. Residuals vs Order Plot Berdasarkan hasil di atas, tebaran amatan bergerak disekitar sumbu 0. Terlihat juga adanya pola yang terbentuk, hal tersebut dapat menjadi indikasi awal adanya autokorelasi.

2. Plot ACF PACF

#ACF dan PACF identifikasi autokorelasi
par(mfrow = c(2,1))
acf(sisaan)
pacf(sisaan)

Berdasarkan plot ACF dan Partial ACF di atas, terlihat bahwa plot ACF tidak ada garis vertikal yang melewati garis horizontal yang berwarna biru sehingga dapat diduga tidak ada autokorelasi. Namun, uji formal perlu dilakukan untuk analisis lebih lanjut.

Uji Statistik

1. Durbin Watson Test

Hipotesis

H0: tidak ada autokorelasi atau sisaan saling bebas

H1: ada autokorelasi atau sisaan tidak saling bebas

lmtest::dwtest(model, alternative = 'two.sided')
## 
##  Durbin-Watson test
## 
## data:  model
## DW = 0.7724, p-value = 0.002851
## alternative hypothesis: true autocorrelation is not 0

Berdasarkan hasil uji di atas, didapat nilai p−value=0.002851 maka TOLAK H0. Artinya, pada taraf nyata 5%, cukup bukti untuk menyatakan bahwa terdapat autokorelasi pada data.

2. Breusch-Godfrey Test

Hipotesis

H0: tidak ada autokorelasi atau sisaan saling bebas

H1: ada autokorelasi atau sisaan tidak saling bebas

lmtest::bgtest(y ~ x, data=dtreg, order=1)
## 
##  Breusch-Godfrey test for serial correlation of order up to 1
## 
## data:  y ~ x
## LM test = 2.8628, df = 1, p-value = 0.09065

Berdasarkan hasil uji di atas, didapat nilai p−value=0.09065 maka TOLAK H0. Artinya, pada taraf nyata 5%, cukup bukti untuk menyatakan bahwa terdapat autokorelasi pada data.

3. Run’s Test

Hipotesis

H0: tidak ada autokorelasi atau sisaan saling bebas

H1: ada autokorelasi atau sisaan tidak saling bebas

lawstat::runs.test(resid(model), alternative = 'two.sided')
## 
##  Runs Test - Two sided
## 
## data:  resid(model)
## Standardized Runs Statistic = 0, p-value = 1

Berdasarkan hasil uji di atas, didapat nilai p−value = 1 maka TAK TOLAK H0. Artinya, pada taraf nyata 5%, tidak cukup bukti untuk menyatakan bahwa terdapat autokorelasi pada data (tidak ada autokorelasi).

Penanganan Autokorelasi

1. Cochrane-Orcutt

modelorcutt<-cochrane.orcutt(model)
modelorcutt
## Cochrane-orcutt estimation for first order autocorrelation 
##  
## Call:
## lm(formula = y ~ x, data = dtreg)
## 
##  number of interaction: 76
##  rho 0.651462
## 
## Durbin-Watson statistic 
## (original):    0.77240 , p-value: 1.426e-03
## (transformed): 1.94827 , p-value: 3.15e-01
##  
##  coefficients: 
## (Intercept)           x 
## -613.259516    0.340992
#rho optimum
rho <- modelorcutt$rho
rho
## [1] 0.6514619

Berdasakan hasil di atas, telah diperoleh nilai rho optimum sebesar 0.6514619. Selanjutnya akan dilakukan transformasi peubah x dan y menggunakan nilai rho.

#transformasi terhadap y dan x
(y.trans <- y[-1]-y[-12]*rho)
##  [1] 25.27151 25.70881 25.88022 25.83025 25.93270 25.94468 26.24833 26.33866
##  [9] 26.72459 26.41766 26.54599
(x.trans <- x[-1]-x[-12]*rho)
##  [1] 701.5616 701.9101 702.2586 702.6072 702.9557 703.3043 703.6528 704.0013
##  [9] 704.3499 704.6984 705.0470
#model baru
modelcoch <- lm(y.trans~x.trans)
summary(modelcoch) 
## 
## Call:
## lm(formula = y.trans ~ x.trans)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.210916 -0.128456 -0.008725  0.080172  0.291371 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -213.74430   30.20039  -7.078 5.81e-05 ***
## x.trans        0.34099    0.04294   7.941 2.35e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.157 on 9 degrees of freedom
## Multiple R-squared:  0.8751, Adjusted R-squared:  0.8612 
## F-statistic: 63.06 on 1 and 9 DF,  p-value: 2.348e-05

Didapat model transformasi dengan intersep sebesar −213.74430 dan koefisien x.trans sebesar 0.34099.

lmtest::dwtest(modelcoch,alternative = 'two.sided')
## 
##  Durbin-Watson test
## 
## data:  modelcoch
## DW = 1.9483, p-value = 0.6301
## alternative hypothesis: true autocorrelation is not 0

Berdasarkan hasil di atas, didapat nilai p−value=0.6301. Artinya pada taraf nyata 5%, cukup bukti untuk menyatakan bahwa tidak ada autokorelasi atau terbukti bahwa autokorelasi telah berhasil ditangani menggunakan metode Cochrane-Orcutt. Selanjutnya akan dilakukan transformasi untuk mendapatkan model regresi deret waktu terbaru.

#transformasi balik
cat("y = ", coef(modelcoch)[1]/(1-rho), "+", coef(modelcoch)[2]," x", sep = "")
## y = -613.2595+0.3409918 x

Setelah dilakukan transformasi balik, diperoleh model regresi baru yaitu y = -613.2595 + 0.3409918x. Artinya nilai dugaan rataan y bertambah sebesar 0.3409918 jika x bertambah satu satuan.

2. Hildreth-lu

hildrethlu.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))
}
#mencari rho yang meminimumkan SSE
r <- c(seq(0.1,0.999, by= 0.001))
tab <- data.frame("rho" = r, "SSE" = sapply(r, function(i){deviance(hildrethlu.func(i, model))}))
tab$rho[which.min(tab$SSE)]#rho optimal
## [1] 0.651
#grafik rho dan SSE
plot(tab$SSE ~ tab$rho , type = "l")
abline(v = tab[tab$SSE==min(tab$SSE),"rho"], lty = 3)

Berdasarkan hasil di atas, dilihat bahwa nilai rho optimum yang menghasilkan SSE terkecil adalah sebesar 0.651. Sehingga model optimum yang dapat dibuat dengan metode Hildreth-Lu adalah sebagai berikut:

#model Hildreth-lu
modelhil <- hildrethlu.func(0.651, model)
dwtest(modelhil)
## 
##  Durbin-Watson test
## 
## data:  modelhil
## DW = 1.9477, p-value = 0.3147
## alternative hypothesis: true autocorrelation is greater than 0

Pada uji Durbin-Watson, dapat dilihat bahwa nilai p−value=0.3147 > 0.05 maka tak tolak H0. Artinya, belum cukup bukti untuk menyatakan bahwa terdapat autokorelasi pada taraf nyata 5% (tidak ada autokorelasi).Selanjutnya akan dilakukan transformasi balik untuk mendapatkan model regresi deret waktu terbaru.

#transformasi balik
cat("y = ", coef(modelhil)[1]/(1-0.74), "+", coef(modelhil)[2],"x", sep = "")
## y = -823.5471+0.3411261x

Model regresi setelah melakukan penanganan autokorelasi dengan metode Hildreth-Lu: y = −823.5471 + 0.3411261x. Artinya nilai dugaan rataan y bertambah sebesar 0.3411261 jika x bertambah satu satuan.

Kesimpulan

Setelah dilakukan pendeteksian autokorelasi pada regresi linier IPM Provinsi Kepulauan Riau terhadap Tahun (2010-2021), uji Durbin-Watson dan Breusch-Godfrey Test menyatakan bahwa terdapat autokorelasi pada galat model. Oleh karena itu, dilakukan penanganan autokorelasi terhadap data IPM dengan metode Cochrane-Orcutt dan Hildreth-Lu sehingga masalah autokorelasi pada data IPM Kepulauan Riau tahun 2010-2021 dapat dihilangkan.