## 1. Library
library(readxl)
## Warning: package 'readxl' was built under R version 4.5.3
library(urca)
## Warning: package 'urca' was built under R version 4.5.3
library(lmtest)
## Warning: package 'lmtest' was built under R version 4.5.3
## Loading required package: zoo
## Warning: package 'zoo' was built under R version 4.5.2
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
library(sandwich)
## Warning: package 'sandwich' was built under R version 4.5.3
library(tseries)
## Warning: package 'tseries' was built under R version 4.5.3
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
## 2. Import data
data_pdb <- read_excel("C:/ARW/UAS_ARW/Data_PDB_Soal Nomor 3.xlsx", sheet = "PDB")
## New names:
## • `` -> `...1`
data_pdb <- data.frame(data_pdb)
colnames(data_pdb) <- c("triwulan", "konsumsi", "pdb")

## 3. Pembersihan data
data_pdb <- data_pdb[data_pdb$konsumsi != "-" & data_pdb$pdb != "-", ]
data_pdb$konsumsi <- as.numeric(gsub(",", ".", data_pdb$konsumsi))
data_pdb$pdb <- as.numeric(gsub(",", ".", data_pdb$pdb))

## 4. Set variabel sebagai objek time series
tsdata <- ts(data_pdb[, c("konsumsi", "pdb")], start = c(2010, 1), frequency = 4)

plot(tsdata, main = "Konsumsi Rumah Tangga dan PDB Indonesia (ADHK 2010)")

ts.plot(log(tsdata), col = c("blue", "red"), lty = 1:2,
        main = "ln Konsumsi RT dan ln PDB", ylab = "ln (miliar Rupiah)")
legend("topleft", legend = c("ln Konsumsi", "ln PDB"), col = c("blue", "red"), lty = 1:2)

triwulan <- factor(cycle(tsdata[, "pdb"]))

## 5. Transformasi logaritma natural
tsdata <- data.frame(tsdata)
lnc <- log(tsdata$konsumsi)
lny <- log(tsdata$pdb)

## 6. Uji stasioneritas data level (ADF)
adf_lnc_none <- ur.df(lnc, type = "none", lags = 4, selectlags = "AIC")
summary(adf_lnc_none)
## 
## ############################################### 
## # Augmented Dickey-Fuller Test Unit Root Test # 
## ############################################### 
## 
## Test regression none 
## 
## 
## Call:
## lm(formula = z.diff ~ z.lag.1 - 1 + z.diff.lag)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.084556 -0.003408  0.000170  0.005644  0.037645 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)   
## z.lag.1      0.0008557  0.0002884   2.967  0.00441 **
## z.diff.lag1 -0.1805845  0.1220172  -1.480  0.14448   
## z.diff.lag2 -0.1618662  0.1218592  -1.328  0.18947   
## z.diff.lag3 -0.1935966  0.1212667  -1.596  0.11602   
## z.diff.lag4  0.4199095  0.1222311   3.435  0.00112 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.01514 on 56 degrees of freedom
## Multiple R-squared:   0.51,  Adjusted R-squared:  0.4663 
## F-statistic: 11.66 on 5 and 56 DF,  p-value: 9.618e-08
## 
## 
## Value of test-statistic is: 2.9674 
## 
## Critical values for test statistics: 
##      1pct  5pct 10pct
## tau1 -2.6 -1.95 -1.61
adf_lnc_drift <- ur.df(lnc, type = "drift", lags = 4, selectlags = "AIC")
summary(adf_lnc_drift)
## 
## ############################################### 
## # Augmented Dickey-Fuller Test Unit Root Test # 
## ############################################### 
## 
## Test regression drift 
## 
## 
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + z.diff.lag)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.083688 -0.003798  0.000738  0.008188  0.037427 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)   
## (Intercept)  0.150780   0.158490   0.951  0.34559   
## z.lag.1     -0.009779   0.011183  -0.875  0.38564   
## z.diff.lag1 -0.190545   0.122569  -1.555  0.12578   
## z.diff.lag2 -0.172348   0.122459  -1.407  0.16494   
## z.diff.lag3 -0.208848   0.122424  -1.706  0.09366 . 
## z.diff.lag4  0.404852   0.123354   3.282  0.00179 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.01515 on 55 degrees of freedom
## Multiple R-squared:  0.3282, Adjusted R-squared:  0.2672 
## F-statistic: 5.375 on 5 and 55 DF,  p-value: 0.0004293
## 
## 
## Value of test-statistic is: -0.8745 4.8479 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau2 -3.51 -2.89 -2.58
## phi1  6.70  4.71  3.86
adf_lnc_trend <- ur.df(lnc, type = "trend", lags = 4, selectlags = "AIC")
summary(adf_lnc_trend)
## 
## ############################################### 
## # Augmented Dickey-Fuller Test Unit Root Test # 
## ############################################### 
## 
## Test regression trend 
## 
## 
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + tt + z.diff.lag)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.077224 -0.004365  0.000352  0.007161  0.033905 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  2.2596799  0.9942685   2.273 0.027048 *  
## z.lag.1     -0.1631387  0.0722528  -2.258 0.028017 *  
## tt           0.0015559  0.0007247   2.147 0.036317 *  
## z.diff.lag1 -0.0874201  0.1280841  -0.683 0.497827    
## z.diff.lag2 -0.0924439  0.1243311  -0.744 0.460384    
## z.diff.lag3 -0.1556746  0.1211537  -1.285 0.204299    
## z.diff.lag4  0.4325309  0.1201899   3.599 0.000695 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.01468 on 54 degrees of freedom
## Multiple R-squared:  0.3811, Adjusted R-squared:  0.3123 
## F-statistic: 5.541 on 6 and 54 DF,  p-value: 0.0001567
## 
## 
## Value of test-statistic is: -2.2579 4.9802 2.7119 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau3 -4.04 -3.45 -3.15
## phi2  6.50  4.88  4.16
## phi3  8.73  6.49  5.47
adf_lny_none <- ur.df(lny, type = "none", lags = 4, selectlags = "AIC")
summary(adf_lny_none)
## 
## ############################################### 
## # Augmented Dickey-Fuller Test Unit Root Test # 
## ############################################### 
## 
## Test regression none 
## 
## 
## Call:
## lm(formula = z.diff ~ z.lag.1 - 1 + z.diff.lag)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.081254 -0.003342  0.002081  0.005750  0.047604 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## z.lag.1      0.0008604  0.0002949   2.918  0.00506 ** 
## z.diff.lag1 -0.1490176  0.1142392  -1.304  0.19742    
## z.diff.lag2 -0.3246568  0.1144741  -2.836  0.00635 ** 
## z.diff.lag3 -0.1678033  0.1116412  -1.503  0.13844    
## z.diff.lag4  0.5205687  0.1121034   4.644 2.11e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.01438 on 56 degrees of freedom
## Multiple R-squared:  0.7212, Adjusted R-squared:  0.6964 
## F-statistic: 28.98 on 5 and 56 DF,  p-value: 2.175e-14
## 
## 
## Value of test-statistic is: 2.918 
## 
## Critical values for test statistics: 
##      1pct  5pct 10pct
## tau1 -2.6 -1.95 -1.61
adf_lny_drift <- ur.df(lny, type = "drift", lags = 4, selectlags = "AIC")
summary(adf_lny_drift)
## 
## ############################################### 
## # Augmented Dickey-Fuller Test Unit Root Test # 
## ############################################### 
## 
## Test regression drift 
## 
## 
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + z.diff.lag)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.080819 -0.003269  0.001678  0.004769  0.047322 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  0.105827   0.149499   0.708  0.48201    
## z.lag.1     -0.006278   0.010088  -0.622  0.53633    
## z.diff.lag1 -0.160861   0.115965  -1.387  0.17099    
## z.diff.lag2 -0.333810   0.115712  -2.885  0.00558 ** 
## z.diff.lag3 -0.181098   0.113704  -1.593  0.11695    
## z.diff.lag4  0.505976   0.114477   4.420 4.69e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.01445 on 55 degrees of freedom
## Multiple R-squared:  0.6539, Adjusted R-squared:  0.6224 
## F-statistic: 20.78 on 5 and 55 DF,  p-value: 1.346e-11
## 
## 
## Value of test-statistic is: -0.6223 4.4699 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau2 -3.51 -2.89 -2.58
## phi1  6.70  4.71  3.86
adf_lny_trend <- ur.df(lny, type = "trend", lags = 4, selectlags = "AIC")
summary(adf_lny_trend)
## 
## ############################################### 
## # Augmented Dickey-Fuller Test Unit Root Test # 
## ############################################### 
## 
## Test regression trend 
## 
## 
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + tt + z.diff.lag)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.074425 -0.004037  0.001757  0.005589  0.041148 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  2.8766752  1.1879729   2.421   0.0188 *  
## z.lag.1     -0.1993352  0.0827339  -2.409   0.0194 *  
## tt           0.0020722  0.0008819   2.350   0.0225 *  
## z.diff.lag1 -0.0333879  0.1239741  -0.269   0.7887    
## z.diff.lag2 -0.2267166  0.1202067  -1.886   0.0647 .  
## z.diff.lag3 -0.1369267  0.1109050  -1.235   0.2223    
## z.diff.lag4  0.5211164  0.1102325   4.727 1.67e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.01389 on 54 degrees of freedom
## Multiple R-squared:  0.686,  Adjusted R-squared:  0.6511 
## F-statistic: 19.66 on 6 and 54 DF,  p-value: 5.172e-12
## 
## 
## Value of test-statistic is: -2.4094 5.0652 2.97 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau3 -4.04 -3.45 -3.15
## phi2  6.50  4.88  4.16
## phi3  8.73  6.49  5.47
## 7. Uji stasioneritas data first difference (ADF)
dlnc <- diff(lnc)
dlny <- diff(lny)

adf_dlnc_none <- ur.df(dlnc, type = "none", lags = 4, selectlags = "AIC")
summary(adf_dlnc_none)
## 
## ############################################### 
## # Augmented Dickey-Fuller Test Unit Root Test # 
## ############################################### 
## 
## Test regression none 
## 
## 
## Call:
## lm(formula = z.diff ~ z.lag.1 - 1 + z.diff.lag)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.080975 -0.004050  0.003044  0.008567  0.058658 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## z.lag.1      -0.1783     0.1734  -1.028   0.3082    
## z.diff.lag1  -0.9332     0.1969  -4.739 1.56e-05 ***
## z.diff.lag2  -0.8833     0.1835  -4.814 1.20e-05 ***
## z.diff.lag3  -0.8726     0.1613  -5.410 1.41e-06 ***
## z.diff.lag4  -0.2461     0.1324  -1.859   0.0684 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.01591 on 55 degrees of freedom
## Multiple R-squared:  0.6884, Adjusted R-squared:  0.6601 
## F-statistic:  24.3 on 5 and 55 DF,  p-value: 8.034e-13
## 
## 
## Value of test-statistic is: -1.0284 
## 
## Critical values for test statistics: 
##      1pct  5pct 10pct
## tau1 -2.6 -1.95 -1.61
adf_dlnc_drift <- ur.df(dlnc, type = "drift", lags = 4, selectlags = "AIC")
summary(adf_dlnc_drift)
## 
## ############################################### 
## # Augmented Dickey-Fuller Test Unit Root Test # 
## ############################################### 
## 
## Test regression drift 
## 
## 
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + z.diff.lag)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.084317 -0.003480  0.000083  0.006309  0.037708 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)   
## (Intercept)  0.012133   0.004126   2.940  0.00479 **
## z.lag.1     -1.125610   0.340744  -3.303  0.00168 **
## z.diff.lag1 -0.055204   0.270303  -0.204  0.83893   
## z.diff.lag2 -0.217912   0.198835  -1.096  0.27788   
## z.diff.lag3 -0.416973   0.123315  -3.381  0.00133 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.01524 on 55 degrees of freedom
## Multiple R-squared:  0.7138, Adjusted R-squared:  0.693 
## F-statistic:  34.3 on 4 and 55 DF,  p-value: 2.357e-14
## 
## 
## Value of test-statistic is: -3.3034 5.4592 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau2 -3.51 -2.89 -2.58
## phi1  6.70  4.71  3.86
adf_dlnc_trend <- ur.df(dlnc, type = "trend", lags = 4, selectlags = "AIC")
summary(adf_dlnc_trend)
## 
## ############################################### 
## # Augmented Dickey-Fuller Test Unit Root Test # 
## ############################################### 
## 
## Test regression trend 
## 
## 
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + tt + z.diff.lag)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.084148 -0.003855  0.000980  0.007323  0.037719 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)   
## (Intercept)  1.446e-02  6.308e-03   2.292  0.02584 * 
## z.lag.1     -1.159e+00  3.498e-01  -3.313  0.00165 **
## tt          -5.711e-05  1.167e-04  -0.490  0.62638   
## z.diff.lag1 -3.096e-02  2.767e-01  -0.112  0.91132   
## z.diff.lag2 -2.018e-01  2.029e-01  -0.995  0.32438   
## z.diff.lag3 -4.090e-01  1.252e-01  -3.265  0.00190 **
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.01535 on 54 degrees of freedom
## Multiple R-squared:  0.7151, Adjusted R-squared:  0.6887 
## F-statistic: 27.11 on 5 and 54 DF,  p-value: 1.322e-13
## 
## 
## Value of test-statistic is: -3.3132 3.6691 5.5006 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau3 -4.04 -3.45 -3.15
## phi2  6.50  4.88  4.16
## phi3  8.73  6.49  5.47
adf_dlny_none <- ur.df(dlny, type = "none", lags = 4, selectlags = "AIC")
summary(adf_dlny_none)
## 
## ############################################### 
## # Augmented Dickey-Fuller Test Unit Root Test # 
## ############################################### 
## 
## Test regression none 
## 
## 
## Call:
## lm(formula = z.diff ~ z.lag.1 - 1 + z.diff.lag)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.074800 -0.001923  0.003311  0.006379  0.062285 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## z.lag.1     -0.21299    0.15905  -1.339    0.186    
## z.diff.lag1 -0.70819    0.14195  -4.989 6.23e-06 ***
## z.diff.lag2 -0.79964    0.10315  -7.752 1.98e-10 ***
## z.diff.lag3 -0.74752    0.08633  -8.659 6.45e-12 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.01543 on 56 degrees of freedom
## Multiple R-squared:  0.8063, Adjusted R-squared:  0.7925 
## F-statistic: 58.28 on 4 and 56 DF,  p-value: < 2.2e-16
## 
## 
## Value of test-statistic is: -1.3391 
## 
## Critical values for test statistics: 
##      1pct  5pct 10pct
## tau1 -2.6 -1.95 -1.61
adf_dlny_drift <- ur.df(dlny, type = "drift", lags = 4, selectlags = "AIC")
summary(adf_dlny_drift)
## 
## ############################################### 
## # Augmented Dickey-Fuller Test Unit Root Test # 
## ############################################### 
## 
## Test regression drift 
## 
## 
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + z.diff.lag)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.081012 -0.003520  0.001841  0.006108  0.047578 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  0.012894   0.004403   2.928  0.00495 ** 
## z.lag.1     -1.144984   0.351522  -3.257  0.00193 ** 
## z.diff.lag1 -0.011030   0.272806  -0.040  0.96789    
## z.diff.lag2 -0.336189   0.185519  -1.812  0.07542 .  
## z.diff.lag3 -0.513857   0.113715  -4.519 3.34e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.01448 on 55 degrees of freedom
## Multiple R-squared:  0.8324, Adjusted R-squared:  0.8202 
## F-statistic:  68.3 on 4 and 55 DF,  p-value: < 2.2e-16
## 
## 
## Value of test-statistic is: -3.2572 5.3059 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau2 -3.51 -2.89 -2.58
## phi1  6.70  4.71  3.86
adf_dlny_trend <- ur.df(dlny, type = "trend", lags = 4, selectlags = "AIC")
summary(adf_dlny_trend)
## 
## ############################################### 
## # Augmented Dickey-Fuller Test Unit Root Test # 
## ############################################### 
## 
## Test regression trend 
## 
## 
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + tt + z.diff.lag)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.080951 -0.003409  0.001737  0.005585  0.047582 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  1.421e-02  6.408e-03   2.217  0.03084 *  
## z.lag.1     -1.165e+00  3.613e-01  -3.224  0.00215 ** 
## tt          -3.159e-05  1.110e-04  -0.285  0.77711    
## z.diff.lag1  3.340e-03  2.797e-01   0.012  0.99052    
## z.diff.lag2 -3.269e-01  1.899e-01  -1.721  0.09094 .  
## z.diff.lag3 -5.089e-01  1.160e-01  -4.387 5.37e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.0146 on 54 degrees of freedom
## Multiple R-squared:  0.8327, Adjusted R-squared:  0.8172 
## F-statistic: 53.75 on 5 and 54 DF,  p-value: < 2.2e-16
## 
## 
## Value of test-statistic is: -3.2242 3.5051 5.2566 
## 
## Critical values for test statistics: 
##       1pct  5pct 10pct
## tau3 -4.04 -3.45 -3.15
## phi2  6.50  4.88  4.16
## phi3  8.73  6.49  5.47
## Pada uji level: lnc dan lny tidak stasioner pada level
## Pada uji first difference: dlnc dan dlny stasioner setelah diferensiasi

## 8. Regresi jangka panjang (data level)
reg_lp <- lm(lnc ~ lny)
summary(reg_lp)
## 
## Call:
## lm(formula = lnc ~ lny)
## 
## Residuals:
##        Min         1Q     Median         3Q        Max 
## -0.0253778 -0.0083044  0.0005706  0.0081781  0.0245470 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept) 0.335770   0.110837   3.029  0.00353 ** 
## lny         0.935151   0.007525 124.265  < 2e-16 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.01268 on 64 degrees of freedom
## Multiple R-squared:  0.9959, Adjusted R-squared:  0.9958 
## F-statistic: 1.544e+04 on 1 and 64 DF,  p-value: < 2.2e-16
## 9. Uji kointegrasi Engle-Granger (stasioneritas residual)
resid <- reg_lp$residuals
adf_resid_none <- ur.df(resid, type = "none", lags = 4, selectlags = "AIC")
summary(adf_resid_none)
## 
## ############################################### 
## # Augmented Dickey-Fuller Test Unit Root Test # 
## ############################################### 
## 
## Test regression none 
## 
## 
## Call:
## lm(formula = z.diff ~ z.lag.1 - 1 + z.diff.lag)
## 
## Residuals:
##        Min         1Q     Median         3Q        Max 
## -0.0168819 -0.0007834  0.0007054  0.0024155  0.0092118 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## z.lag.1     -0.14121    0.06870  -2.055  0.04452 *  
## z.diff.lag1 -0.13445    0.10704  -1.256  0.21431    
## z.diff.lag2 -0.29630    0.10001  -2.963  0.00447 ** 
## z.diff.lag3 -0.24479    0.09186  -2.665  0.01004 *  
## z.diff.lag4  0.59985    0.08944   6.707 1.05e-08 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.003729 on 56 degrees of freedom
## Multiple R-squared:  0.9401, Adjusted R-squared:  0.9347 
## F-statistic: 175.7 on 5 and 56 DF,  p-value: < 2.2e-16
## 
## 
## Value of test-statistic is: -2.0553 
## 
## Critical values for test statistics: 
##      1pct  5pct 10pct
## tau1 -2.6 -1.95 -1.61
adf_resid_lag2 <- ur.df(resid, type = "none", lags = 2)
summary(adf_resid_lag2)
## 
## ############################################### 
## # Augmented Dickey-Fuller Test Unit Root Test # 
## ############################################### 
## 
## Test regression none 
## 
## 
## Call:
## lm(formula = z.diff ~ z.lag.1 - 1 + z.diff.lag)
## 
## Residuals:
##        Min         1Q     Median         3Q        Max 
## -0.0152367 -0.0041123  0.0006176  0.0050079  0.0115165 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## z.lag.1     -0.23495    0.11936  -1.968   0.0537 .  
## z.diff.lag1  0.05503    0.08405   0.655   0.5152    
## z.diff.lag2 -0.75953    0.08072  -9.410 2.03e-13 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.006738 on 60 degrees of freedom
## Multiple R-squared:  0.7994, Adjusted R-squared:  0.7893 
## F-statistic: 79.68 on 3 and 60 DF,  p-value: < 2.2e-16
## 
## 
## Value of test-statistic is: -1.9684 
## 
## Critical values for test statistics: 
##      1pct  5pct 10pct
## tau1 -2.6 -1.95 -1.61
## 10. Nilai kritis Engle-Granger (MacKinnon 2010, 2 variabel, konstanta)
n_obs <- length(resid)
cv_eg <- c(
  "1pct"  = -3.89644 - 10.9519 / n_obs - 22.527 / n_obs^2,
  "5pct"  = -3.33613 - 6.1101 / n_obs - 6.823 / n_obs^2,
  "10pct" = -3.04445 - 4.2412 / n_obs - 2.720 / n_obs^2
)
round(cv_eg, 3)
##   1pct   5pct  10pct 
## -4.068 -3.430 -3.109
adf_resid_none@teststat
##                tau1
## statistic -2.055307
adf_resid_lag2@teststat
##                tau1
## statistic -1.968372
## 11. Model ECM tanpa lag
resid1 <- resid[1:(length(resid) - 1)]

length(resid1)
## [1] 65
length(dlnc)
## [1] 65
length(dlny)
## [1] 65
regECM1 <- lm(dlnc ~ dlny + resid1)
summary(regECM1)
## 
## Call:
## lm(formula = dlnc ~ dlny + resid1)
## 
## Residuals:
##        Min         1Q     Median         3Q        Max 
## -0.0309941 -0.0028987  0.0009909  0.0062773  0.0113343 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  0.003928   0.001221   3.216  0.00207 ** 
## dlny         0.583923   0.046710  12.501  < 2e-16 ***
## resid1      -0.628375   0.087135  -7.212 9.25e-10 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.008752 on 62 degrees of freedom
## Multiple R-squared:  0.7514, Adjusted R-squared:  0.7434 
## F-statistic: 93.72 on 2 and 62 DF,  p-value: < 2.2e-16
## 12. Model ECM dengan lag 1
dlnct <- dlnc[2:length(dlnc)]
dlnyt <- dlny[2:length(dlny)]
resid1t <- resid1[2:length(resid1)]
dlnct1 <- dlnc[1:(length(dlnc) - 1)]
dlnyt1 <- dlny[1:(length(dlny) - 1)]

regECM2 <- lm(dlnct ~ dlnyt + dlnct1 + dlnyt1 + resid1t)
summary(regECM2)
## 
## Call:
## lm(formula = dlnct ~ dlnyt + dlnct1 + dlnyt1 + resid1t)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.026729 -0.003588  0.000021  0.005581  0.014156 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  0.003813   0.001590   2.399   0.0196 *  
## dlnyt        0.626569   0.058051  10.793 1.36e-15 ***
## dlnct1       0.143366   0.122209   1.173   0.2455    
## dlnyt1      -0.165420   0.101922  -1.623   0.1099    
## resid1t     -0.769922   0.126742  -6.075 9.72e-08 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.008765 on 59 degrees of freedom
## Multiple R-squared:  0.7628, Adjusted R-squared:  0.7467 
## F-statistic: 47.43 on 4 and 59 DF,  p-value: < 2.2e-16
## 13. Model ECM dengan dummy musiman triwulan
trw <- triwulan[2:length(triwulan)]

regECM3 <- lm(dlnc ~ dlny + resid1 + trw)
summary(regECM3)
## 
## Call:
## lm(formula = dlnc ~ dlny + resid1 + trw)
## 
## Residuals:
##       Min        1Q    Median        3Q       Max 
## -0.014881 -0.005049  0.001773  0.004981  0.011163 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  0.007550   0.001883   4.010 0.000173 ***
## dlny         0.937146   0.071766  13.058  < 2e-16 ***
## resid1      -0.385198   0.109320  -3.524 0.000829 ***
## trw2        -0.020944   0.003904  -5.364 1.43e-06 ***
## trw3        -0.014557   0.003435  -4.238 8.03e-05 ***
## trw4         0.004974   0.003227   1.541 0.128588    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 0.00714 on 59 degrees of freedom
## Multiple R-squared:  0.8426, Adjusted R-squared:  0.8292 
## F-statistic: 63.15 on 5 and 59 DF,  p-value: < 2.2e-16
## 14. Pemilihan model
AIC(regECM1, regECM3)
##         df       AIC
## regECM1  4 -426.6103
## regECM3  7 -450.2937
BIC(regECM1, regECM3)
##         df       BIC
## regECM1  4 -417.9127
## regECM3  7 -435.0730
## 15. Uji asumsi klasik
bptest(regECM1)
## 
##  studentized Breusch-Pagan test
## 
## data:  regECM1
## BP = 5.1638, df = 2, p-value = 0.07563
bgtest(regECM1, order = 4)
## 
##  Breusch-Godfrey test for serial correlation of order up to 4
## 
## data:  regECM1
## LM test = 26.991, df = 4, p-value = 1.996e-05
jarque.bera.test(residuals(regECM1))
## 
##  Jarque Bera Test
## 
## data:  residuals(regECM1)
## X-squared = 28.842, df = 2, p-value = 5.458e-07
bptest(regECM2)
## 
##  studentized Breusch-Pagan test
## 
## data:  regECM2
## BP = 23.455, df = 4, p-value = 0.0001027
bgtest(regECM2, order = 4)
## 
##  Breusch-Godfrey test for serial correlation of order up to 4
## 
## data:  regECM2
## LM test = 47.055, df = 4, p-value = 1.485e-09
jarque.bera.test(residuals(regECM2))
## 
##  Jarque Bera Test
## 
## data:  residuals(regECM2)
## X-squared = 9.3874, df = 2, p-value = 0.009153
bptest(regECM3)
## 
##  studentized Breusch-Pagan test
## 
## data:  regECM3
## BP = 16.23, df = 5, p-value = 0.006217
bgtest(regECM3, order = 4)
## 
##  Breusch-Godfrey test for serial correlation of order up to 4
## 
## data:  regECM3
## LM test = 45.371, df = 4, p-value = 3.329e-09
jarque.bera.test(residuals(regECM3))
## 
##  Jarque Bera Test
## 
## data:  residuals(regECM3)
## X-squared = 3.0726, df = 2, p-value = 0.2152
## 16. Robust standard error (Newey-West HAC)
coeftest(regECM1, vcov = vcovHAC(regECM1))
## 
## t test of coefficients:
## 
##               Estimate Std. Error t value  Pr(>|t|)    
## (Intercept)  0.0039281  0.0015087  2.6036   0.01153 *  
## dlny         0.5839226  0.0675693  8.6418 3.069e-12 ***
## resid1      -0.6283754  0.1032702 -6.0848 7.999e-08 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
coeftest(regECM2, vcov = vcovHAC(regECM2))
## 
## t test of coefficients:
## 
##               Estimate Std. Error t value  Pr(>|t|)    
## (Intercept)  0.0038134  0.0022278  1.7117 0.0922033 .  
## dlnyt        0.6265686  0.1008337  6.2139 5.695e-08 ***
## dlnct1       0.1433660  0.1773643  0.8083 0.4221574    
## dlnyt1      -0.1654205  0.1465205 -1.1290 0.2634708    
## resid1t     -0.7699217  0.1859571 -4.1403 0.0001119 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
coeftest(regECM3, vcov = vcovHAC(regECM3))
## 
## t test of coefficients:
## 
##               Estimate Std. Error t value  Pr(>|t|)    
## (Intercept)  0.0075504  0.0015279  4.9418 6.730e-06 ***
## dlny         0.9371462  0.0614730 15.2449 < 2.2e-16 ***
## resid1      -0.3851984  0.0831862 -4.6306 2.053e-05 ***
## trw2        -0.0209438  0.0035613 -5.8809 2.037e-07 ***
## trw3        -0.0145574  0.0041219 -3.5317 0.0008087 ***
## trw4         0.0049736  0.0024183  2.0566 0.0441520 *  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 17. Kecepatan penyesuaian dan half-life
alpha1 <- coef(regECM1)["resid1"]
alpha3 <- coef(regECM3)["resid1"]

round(abs(c(ECM1 = alpha1, ECM3 = alpha3)) * 100, 2)
## ECM1.resid1 ECM3.resid1 
##       62.84       38.52
round(c(ECM1 = log(0.5) / log(1 + alpha1), 
        ECM3 = log(0.5) / log(1 + alpha3)), 2)
## ECM1.resid1 ECM3.resid1 
##        0.70        1.42
## 18. Peramalan konsumsi triwulan berikutnya dengan ECM
b0 <- coef(regECM3)["(Intercept)"]
b1 <- coef(regECM3)["dlny"]
alpha <- coef(regECM3)["resid1"]
b_q3 <- coef(regECM3)["trw3"]

u_t <- tail(resid, 1)

n <- length(tsdata$pdb)
pdb_t <- tsdata$pdb[n]
pdb_t1 <- pdb_t * (tsdata$pdb[n - 3] / tsdata$pdb[n - 4])

dlny_t1 <- log(pdb_t1) - log(pdb_t)

dlnc_t1_hat <- b0 + (b1 * dlny_t1) + (alpha * u_t) + b_q3

konsumsi_t <- tsdata$konsumsi[n]
konsumsi_t1_hat <- konsumsi_t * exp(dlnc_t1_hat)

round(pdb_t1, 2)
## [1] 3627088
round(dlnc_t1_hat, 4)
## (Intercept) 
##      0.0048
round(konsumsi_t1_hat, 2)
## (Intercept) 
##     1896683