Penanganan Autokorelasi Data Indeks Pembangunan Manusia (IPM) Provinsi Jawa Barat Tahun 2010-2021 dengan Metode Cochran- Orcutt dan Hildreth-Lu
Pendahuluan
Tujuan
- Mengidentifikasi autokorelasi pada data Indeks Pembangunan Manusia (IPM) Jawa Barat tahun 2010-2021
- Penanganan autokorelasi dengan metode
Cochran- OrcuttdanHildreth-Lu
Tinjauan Pustaka
Menurut Badan Pusat Statistik (BPS), Indeks Pembangunan Manusia (IPM) merupakan pengukuran perbandingan dari harapan hidup, pendidikan, dan standar hidup untuk semua negara. IPM digunakan sebagai indikator untuk menilai aspek kualitas dari pembangunan dan untuk mengklasifikasikan apakah sebuah negara termasuk negara maju, negara berkembang, atau negara terbelakang dan juga untuk mengukur pengaruh dari kebijakan ekonomi terhadap kualitas hidup.
Analisis Regresi Linier adalah metode statistika yang mengkaji hubungan antara satu peubah respon (Y) dengan satu atau lebih peubah penjelas (X). Regresi linier memiliki asumsi klasik yang harus dipenuhi. Salah satu asumsi klasik yang harus dipenuhi adalah tidak adanya autokorelasi. Dalam regresi deret waktu, peristiwa autokorelasi sering terjadi. Namun, autokorelasi dapat membuat estimasi parameter, bukan BLUE (Best, Linear, Unbiased Estimator). Oleh karena itu, penanganan autokorelasi menjadi sangat penting. Uji autokorelasi bertujuan menguji apakah dalam regresi linear ada korelasi antarkesalahan pengganggu (residual) pada periode t dengan kesalahan pada periode t-1 (sebelumnya). Regresi secara klasik mensyaratkan bahwa variable tidak boleh tergejala autokorelasi. Jika terjadi autokorelasi, maka model regresi menjadi buruk karena akan menghasilkan parameter yang tidak logis dan diluar akal sehat. Autokorelasi umumnya terjadi pada data time series, karena data time series terikat dari waktu-waktu, beda halnya dengan data cross section yang tidak terikat oleh waktu.
Pada penelitian ini akan dilakukan pendeteksian autokorelasi pada
data IPM Jawa Barat Tahun 2010-2021 dan jika terdapat autokorelasi, akan
dilakukan penanganan Cochran- Orcutt dan
Hildreth-Lu.
Data Preparation
Library yang Digunakan
tidyverse
TTR
forecast
readxl
tseries
lmtest
orcutt
HoRM
knitr
library(tidyverse)## Warning: package 'tidyverse' was built under R version 4.1.2
## -- Attaching packages --------------------------------------- tidyverse 1.3.1 --
## v ggplot2 3.3.5 v purrr 0.3.4
## v tibble 3.1.6 v dplyr 1.0.7
## v tidyr 1.1.4 v stringr 1.4.0
## v readr 2.1.0 v forcats 0.5.1
## Warning: package 'ggplot2' was built under R version 4.1.2
## Warning: package 'tibble' was built under R version 4.1.2
## Warning: package 'tidyr' was built under R version 4.1.2
## Warning: package 'readr' was built under R version 4.1.2
## Warning: package 'purrr' was built under R version 4.1.2
## Warning: package 'stringr' was built under R version 4.1.2
## Warning: package 'forcats' was built under R version 4.1.2
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
library(TTR)## Warning: package 'TTR' was built under R version 4.1.3
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(readxl)## Warning: package 'readxl' was built under R version 4.1.2
library(tseries)## Warning: package 'tseries' was built under R version 4.1.3
library(lmtest)## 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(orcutt)## Warning: package 'orcutt' was built under R version 4.1.3
library(HoRM)## Warning: package 'HoRM' was built under R version 4.1.3
library(knitr)Data
Data yang digunakan adalah data Indeks Pembangunan Manusia (IPM) Jawa Barat tahun 2010-2021. Data berasalh dari Badan Pusat Statistik (BPS).
library(readxl)
IPM_Jabar <- read_excel("C:/SMT 5/MPDW/3/IPM Jabar.xlsx")
kable(IPM_Jabar, caption="IPM Jawa Barat (2010-2021)", align="c")| Tahun | IPM |
|---|---|
| 2010 | 66.15 |
| 2011 | 66.67 |
| 2012 | 67.32 |
| 2013 | 68.25 |
| 2014 | 68.80 |
| 2015 | 69.50 |
| 2016 | 70.05 |
| 2017 | 70.69 |
| 2018 | 71.30 |
| 2019 | 72.03 |
| 2020 | 72.09 |
| 2021 | 72.45 |
Eksplorasi Data
Akan dilakukan eksplorasi data terhadap data IPM Jabar dengan membuat time series plot, mencari nilai korelasi antara peubah Tahun dan IPM, membuat model regresi, dan membuat scatterplot peubah Tahun dan IPM.
Time Series Plot
p <- ggplot(IPM_Jabar, aes(x=Tahun, y=IPM)) +
geom_line(lwd=1.2,col="blue")
p +labs(x="Tahun",y ="IPM",
title="Time Series Plot Indeks Pembangunan Manusia Jawa Barat Tahun 2010-2021 ",
subtitle = "Periode 2010 - 2021")+
theme_bw()+
theme(
plot.title = element_text(size = 14L,
face = "bold",
hjust = 0.5),
plot.subtitle = element_text(size = 11L,
face = "plain",
hjust = 0.5)
)+geom_point(size=2) +geom_text(aes(label=paste(IPM,"%")),vjust=-0.8,size=3)
Berdasarkan plot time series, indeks pembangunan manusia (IPM) di Jawa
Barat mengalami peningkatan yang konstan setiap tahunnya. IPM di Jawa
Barat pada tahun 2021 naik mencapai 72.45%.
Korelasi Peubah Tahun (X) dan IPM (Y)
cor(IPM_Jabar$Tahun, IPM_Jabar$IPM)## [1] 0.9939809
Scatter Plot Peubah Tahun (X) dan IPM (Y)
plot(IPM_Jabar$Tahun, IPM_Jabar$IPM, pch = 20, col = "blue", main = "Scatter Plot Tahun vs IPM Jabar")
Berdasarkan scatter plot terlihat bahwa hubungan antara Tahun
dengan IPM memiliki hubungan linier positif dengan nilai korelasi
0.99.
Pemodelan Regresi Linier Data Deret Waktu
Formula model regresi linier data deret waktu yaitu y=β0+β1x+ϵ
x <- IPM_Jabar$Tahun
y <- IPM_Jabar$IPM
modelts <- lm(IPM~Tahun, data = IPM_Jabar)
summary(modelts)##
## Call:
## lm(formula = IPM ~ Tahun, data = IPM_Jabar)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.4760 -0.1888 0.1183 0.1785 0.3104
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -1.146e+03 4.237e+01 -27.05 1.10e-10 ***
## Tahun 6.032e-01 2.102e-02 28.69 6.16e-11 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.2514 on 10 degrees of freedom
## Multiple R-squared: 0.988, Adjusted R-squared: 0.9868
## F-statistic: 823.2 on 1 and 10 DF, p-value: 6.159e-11
Berdasarkan output diatas, diperoleh model regresi linier data deret waktu yaitu:
IPM^ = -1146 + 0.6032 (Tahun)
Uji t : Uji t dilakukan untuk menguji signifikansi peubah penjelas terhdap variabel dependent. Berdasarkan output, diperoleh bahwa pada peubah penjelas Tahun memiliki P-Value<0.05 sehingga dapat disimpulkan bahwa peubah penjelas tahun berpengaruh signifikan pada taraf nyata 5%.
Nilai R-Squared pada model regresi linier deret waktu yaitu 98.8%, artinya keragaman Y(IPM) yang mampu dijelaskan oleh peubah penjelas (Tahun) adalah sebesar 98.8%.
Interpretasi Model Regresi
Nilai intersep sebesar -1146 yang artinya jika peubah penjelas tahun bernilai nol, maka dugaan nilai IPM sebesar -1146.
Pengaruh peubah waktu (Tahun) terhadap IPM bernilai positif sebesar 0.603, hal ini menunjukkan bahwa jika waktunya bertambah satu tahun maka dugaan nilai IPM bertambah sebesar 0.603.
Uji Asumsi Autokorelasi
Pendeteksian autokorelasi pada model regresi dilakukan dengan dua cara yaitu :
- Secara eksploratif: Menggunakan plot sisaan vs urutan dan plot
ACF/PACF
- Secara Formal: Menggunakan uji Durbin-Watson dan Runs`s Test
Secara Eksploratif
1. Plot Sisaan
#sisaan dan fitted value
resi1 <- residuals(modelts)
fit <- predict(modelts)
#Diagnostik dengan eksploratif
par(mfrow = c(2,2))
qqnorm(resi1)
qqline(resi1, col = "steelblue", lwd = 2)
plot(fit, resi1, col = "steelblue", pch = 20, xlab = "Sisaan",
ylab = "Fitted Values", main = "Sisaan vs Fitted Values")
abline(a = 0, b = 0, lwd = 2)
hist(resi1, col = "steelblue",main = "Histogram Residual")
plot(seq(1,12,1), resi1, col = "steelblue", pch = 20,
xlab = "Sisaan", ylab = "Order", main = "Sisaan vs Order")
lines(seq(1,12,1), resi1, col = "red")
abline(a = 0, b = 0, lwd = 2)1. Normal QQ-Plot
QQ-Plot diatas menunjukkan bahwa sisaan berada di sepanjang garis normal, sehingga mengindikasikan bahwa sisaan menyebar normal.
2. Residual vs Fitted Values
Berdasarkan plot di atas, diketahui bahwa lebar pita relatif sama sehingga hal ini mengindikasikan ragam sisaan homogen.
3. Histogram
Berdasarkan histogram, sebaran sisaan menjulur ke kiri, yang artinya sisaan banyak tersebar di sebelah kanan atau bernilai besar.
4. Residual vs Urutan
Berdasarkan plot sisaan vs urutan, terlihat bahwa tebaran amatan memiliki pola yang tidak acak. Hal ini karena empat sisaan pertama membentuk garis naik, selanjutnya sisaan keempat sampai kesepuluh cenderung konstan, dan tiga sisaan terakhir membentuk garis turun. Oleh karena itu, diduga terdapat autokorelasi.
2. Plot ACF dan PACF
par(mfrow = c(1,2))
acf(resi1)
pacf(resi1)
Berdasarkan plot ACF dan Partial ACF,
terlihat ada garis vertikal yang melewati garis horizontal yang berwarna
biru sehingga dapat diduga ada autokorelasi.
Uji Formal
Dengan menggunakan α=0.05, akan dilakukan uji formal Durbin Watson, Breusch-Godfrey, Run`s Test dengan hipotesis:
H0 : ρ=0 (Tidak ada autokorelasi)
H1 : ρ≠0 (Ada autokorelasi)
1. Durbin Watson Test
lmtest::dwtest(modelts,alternative = 'two.sided') ##
## Durbin-Watson test
##
## data: modelts
## DW = 0.79521, p-value = 0.003536
## alternative hypothesis: true autocorrelation is not 0
Diperoleh p-value = 0.001768 < 0.05 Tolak H0, artinya cukup bukti untuk menyatakan bahwa ada autokorelasi pada taraf 5%.
2. Run`s Test
lawstat::runs.test(resid(modelts), alternative = 'two.sided')##
## Runs Test - Two sided
##
## data: resid(modelts)
## Standardized Runs Statistic = -1.2111, p-value = 0.2259
Diperoleh p-value =0.2259 > 0.05 Tak Tolak H0, artinya tidak cukup bukti untuk menyatakan bahwa terdapat autokorelasi pada taraf 5%.
Penanganan Autokorelasi
1. Cochran Orcutt
modelco<-cochrane.orcutt(modelts, convergence = 5, max.iter=1000)
modelco## Cochrane-orcutt estimation for first order autocorrelation
##
## Call:
## lm(formula = IPM ~ Tahun, data = IPM_Jabar)
##
## number of interaction: 412
## rho 0.878545
##
## Durbin-Watson statistic
## (original): 0.79521 , p-value: 1.768e-03
## (transformed): 2.07953 , p-value: 4.014e-01
##
## coefficients:
## (Intercept) Tahun
## -638.590309 0.352236
x <- IPM_Jabar$Tahun
y <- IPM_Jabar$IPM
rho<- modelco$rho
rho## [1] 0.8785453
y.trans<- y[-1]-y[-12]*rho
x.trans<- x[-1]-x[-12]*rho
modelcorho<- lm(y.trans~x.trans)
summary(modelcorho)##
## Call:
## lm(formula = y.trans ~ x.trans)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.35835 -0.08547 -0.00451 0.11199 0.26577
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -77.5598 38.7676 -2.001 0.0765 .
## x.trans 0.3522 0.1578 2.233 0.0525 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.201 on 9 degrees of freedom
## Multiple R-squared: 0.3564, Adjusted R-squared: 0.2849
## F-statistic: 4.985 on 1 and 9 DF, p-value: 0.05247
Pengecekan Autokorelasi
1. Uji Durbin Watson
lmtest::dwtest(modelcorho,alternative = 'two.sided') ##
## Durbin-Watson test
##
## data: modelcorho
## DW = 2.0795, p-value = 0.8028
## alternative hypothesis: true autocorrelation is not 0
2. Run`s Test
lawstat::runs.test(resid(modelcorho), alternative = 'two.sided')##
## Runs Test - Two sided
##
## data: resid(modelcorho)
## Standardized Runs Statistic = -0.93314, p-value = 0.3507
Berdasarkan uji formal Durbin Watson dan Run`s test p-value > 0.05 Tak Tolak H0, artinya tidak cukup bukti untuk menyatakan bahwa ada autokorelasi pada taraf 5%.
Transformasi Balik
cat("IPM = ", coef(modelcorho)[1]/(1-rho), "+", coef(modelcorho)[2]," Tahun", sep = "")## IPM = -638.5903+0.3522361 Tahun
Setelah dilakukan transformasi balik, diperoleh model regresi yaitu :
IPM^ = -638.5903 + 0.3522361 (Tahun)
Interpretasi Model Regresi
Nilai intersep sebesar -638.5903 yang artinya jika peubah penjelas tahun bernilai nol, maka dugaan nilai IPM sebesar -638.5903.
Pengaruh peubah waktu (Tahun) terhadap IPM bernilai positif sebesar 0.3522361, hal ini menunjukkan bahwa jika waktunya bertambah satu tahun maka dugaan nilai IPM bertambah sebesar 0.3522361.
2. Hidreth-lu
hildreth.lu.func<- function(r, modelts){
x <- model.matrix(modelts)[,-1]
y <- model.response(model.frame(modelts))
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.8, 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, modelts))}))
optrho <- which.min(round(tab, 4)[,2])
round(tab, 4)## rho SSE
## 1 0.10 0.5525
## 2 0.20 0.5071
## 3 0.30 0.4680
## 4 0.40 0.4350
## 5 0.50 0.4083
## 6 0.60 0.3878
## 7 0.70 0.3735
## 8 0.80 0.3655
## 9 0.90 0.3636
## 10 0.91 0.3638
## 11 0.92 0.3640
## 12 0.93 0.3643
## 13 0.94 0.3646
## 14 0.95 0.3650
## 15 0.96 0.3655
## 16 0.97 0.3660
## 17 0.98 0.3666
## 18 0.99 0.3672
round(tab, 4)[optrho,]## rho SSE
## 9 0.9 0.3636
Dari hasil diatas, diketahui bahwa nilai ρ optimum yang meminimumkan SSE adalah 0.9 .
plot(tab$SSE ~ tab$rho , type = "l")
abline(v = tab[tab$SSE==min(tab$SSE),"rho"], lty = 3)r <- seq(0.2,1.0, by= 0.01)
tab <- data.frame("rho" = r, "SSE" = sapply(r,function(i){deviance(hildreth.lu.func(i, modelts))}))
plot(tab$SSE ~ tab$rho , type = "l")
abline(v = tab[tab$SSE==min(tab$SSE),"rho"], lty = 3)
Terlihat bahwa nilai ρ optimum yang menghasilkan SES terkecil adalah
sebesar 0.9. Dengan demikian, model optimum yang dibuat dengan metode
Hidreth-Lu yaitu:
modelhl <- hildreth.lu.func(0.9, modelts)
summary(modelhl)##
## Call:
## lm(formula = y ~ x)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.36185 -0.07965 -0.00773 0.11035 0.26443
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -51.7880 38.8082 -1.334 0.215
## x 0.2928 0.1916 1.528 0.161
##
## Residual standard error: 0.201 on 9 degrees of freedom
## Multiple R-squared: 0.206, Adjusted R-squared: 0.1177
## F-statistic: 2.335 on 1 and 9 DF, p-value: 0.1609
Pengecekan Asumsi Autokorelasi
1. Uji Durbin Watson
lmtest::dwtest(modelhl,alternative = 'two.sided') ##
## Durbin-Watson test
##
## data: modelhl
## DW = 2.1207, p-value = 0.8594
## alternative hypothesis: true autocorrelation is not 0
2. Run`s Test
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 formal Durbin Watson dan Run`s test p-value > 0.05 Tak Tolak H0, artinya tidak cukup bukti untuk menyatakan bahwa ada autokorelasi pada taraf 5%.
Transformasi Balik
cat("y = ", coef(modelhl)[1]/(1-0.9), "+", coef(modelhl)[2],"Tahun", sep = "") ## y = -517.8795+0.2928182Tahun
Model regresi yang terbentuk setelah dilakukan penanganan autokorelasi
dengan metode Hidreth-Lu yaitu:
IPM^ = -517.8795+0.2928182 (Tahun)
Interpretasi Model Regresi
Nilai intersep sebesar -517.8795 yang artinya jika peubah penjelas tahun bernilai nol, maka dugaan nilai IPM sebesar -517.8795.
Pengaruh peubah waktu (Tahun) terhadap IPM bernilai positif sebesar 0.2928182, hal ini menunjukkan bahwa jika waktunya bertambah satu tahun maka dugaan nilai IPM bertambah sebesar 0.2928182.
Kesimpulan
Model regresi linier data deret waktu IPM Jawa Barat tahun 2010-2021
memiliki masalah autokorelasi. Hal ini teridentifikasi dengan melakukan
pengujian secara eksploratif dengan plot sisaan vs urutan dan secara
formal dengan uji Durbin-Watson. Oleh karena itu, dilakukan
penanganan autokorelasi dengan metode Cochrane-Orcutt dan
Hidreth-Lu. Dengan melakukan penanganan menggunakan kedua
metode tersebut, masalah autokorelasi pada model regresi IPM Jawab Barat
tahun 2010-2021 berhasil ditangani.