## 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