Pendahuluan

Model Autoregressive Distributed Lag (ARDL) merupakan salah satu metode ekonometrika yang digunakan untuk menganalisis hubungan dinamis antara variabel dependen dengan variabel independen dalam data runtun waktu. Model ini mampu menangkap pengaruh variabel masa lalu (lag) terhadap variabel saat ini.

Import Data

data("EuStockMarkets")
start(EuStockMarkets)
## [1] 1991  130
end(EuStockMarkets)
## [1] 1998  169
frequency(EuStockMarkets)
## [1] 260
data_ts <- as.data.frame(EuStockMarkets)
head(data_ts)
##       DAX    SMI    CAC   FTSE
## 1 1628.75 1678.1 1772.8 2443.6
## 2 1613.63 1688.5 1750.5 2460.2
## 3 1606.51 1678.6 1718.0 2448.2
## 4 1621.04 1684.1 1708.1 2470.4
## 5 1618.16 1686.6 1723.1 2484.7
## 6 1610.61 1671.6 1714.3 2466.8

Statistik Deskriptif

summary(data_ts)
##       DAX            SMI            CAC            FTSE     
##  Min.   :1402   Min.   :1587   Min.   :1611   Min.   :2281  
##  1st Qu.:1744   1st Qu.:2166   1st Qu.:1875   1st Qu.:2843  
##  Median :2141   Median :2796   Median :1992   Median :3247  
##  Mean   :2531   Mean   :3376   Mean   :2228   Mean   :3566  
##  3rd Qu.:2722   3rd Qu.:3812   3rd Qu.:2274   3rd Qu.:3994  
##  Max.   :6186   Max.   :8412   Max.   :4388   Max.   :6179

Plot Time Series

library(ggplot2)
## Warning: package 'ggplot2' was built under R version 4.4.3
plot(EuStockMarkets[,1:3],
     main="Pergerakan Indeks Saham Eropa",
     xlab="Waktu",
     ylab="Indeks")

Uji Stasioneritas

library(tseries)
## Warning: package 'tseries' was built under R version 4.4.3
## Registered S3 method overwritten by 'quantmod':
##   method            from
##   as.zoo.data.frame zoo
adf.test(data_ts$DAX)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  data_ts$DAX
## Dickey-Fuller = -0.82073, Lag order = 12, p-value = 0.9598
## alternative hypothesis: stationary
adf.test(data_ts$SMI)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  data_ts$SMI
## Dickey-Fuller = -0.522, Lag order = 12, p-value = 0.9808
## alternative hypothesis: stationary
adf.test(data_ts$CAC)
## Warning in adf.test(data_ts$CAC): p-value greater than printed p-value
## 
##  Augmented Dickey-Fuller Test
## 
## data:  data_ts$CAC
## Dickey-Fuller = -0.24897, Lag order = 12, p-value = 0.99
## alternative hypothesis: stationary
adf.test(data_ts$FTSE)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  data_ts$FTSE
## Dickey-Fuller = -1.9736, Lag order = 12, p-value = 0.5895
## alternative hypothesis: stationary

Differencing

data_diff <- data.frame(
  DAX  = diff(data_ts$DAX),
  SMI  = diff(data_ts$SMI),
  CAC  = diff(data_ts$CAC),
  FTSE = diff(data_ts$FTSE)
)

adf.test(data_diff$DAX)
## Warning in adf.test(data_diff$DAX): p-value smaller than printed p-value
## 
##  Augmented Dickey-Fuller Test
## 
## data:  data_diff$DAX
## Dickey-Fuller = -9.9997, Lag order = 12, p-value = 0.01
## alternative hypothesis: stationary
adf.test(data_diff$SMI)
## Warning in adf.test(data_diff$SMI): p-value smaller than printed p-value
## 
##  Augmented Dickey-Fuller Test
## 
## data:  data_diff$SMI
## Dickey-Fuller = -10.769, Lag order = 12, p-value = 0.01
## alternative hypothesis: stationary
adf.test(data_diff$CAC)
## Warning in adf.test(data_diff$CAC): p-value smaller than printed p-value
## 
##  Augmented Dickey-Fuller Test
## 
## data:  data_diff$CAC
## Dickey-Fuller = -11.447, Lag order = 12, p-value = 0.01
## alternative hypothesis: stationary
adf.test(data_diff$FTSE)
## Warning in adf.test(data_diff$FTSE): p-value smaller than printed p-value
## 
##  Augmented Dickey-Fuller Test
## 
## data:  data_diff$FTSE
## Dickey-Fuller = -10.838, Lag order = 12, p-value = 0.01
## alternative hypothesis: stationary

Pemilihan Lag Optimal

library(ARDL)
## Warning: package 'ARDL' was built under R version 4.4.3
## To cite the ARDL package in publications:
## 
## Use this reference to refer to the validity of the ARDL package.
## 
##   Natsiopoulos, Kleanthis, and Tzeremes, Nickolaos G. (2022). ARDL
##   bounds test for cointegration: Replicating the Pesaran et al. (2001)
##   results for the UK earnings equation using R. Journal of Applied
##   Econometrics, 37(5), 1079-1090. https://doi.org/10.1002/jae.2919
## 
## Use this reference to cite this specific version of the ARDL package.
## 
##   Kleanthis Natsiopoulos and Nickolaos Tzeremes (2023). ARDL: ARDL, ECM
##   and Bounds-Test for Cointegration. R package version 0.2.4.
##   https://CRAN.R-project.org/package=ARDL
lag_model <- auto_ardl(DAX ~ SMI + CAC + FTSE,
                       data = data_ts,
                       max_order = c(4,4,4,4))

lag_model$best_order
##  DAX  SMI  CAC FTSE 
##    1    4    1    2

Model ARDL

Model Autoregressive Distributed Lag (ARDL) secara umum dapat dituliskan sebagai berikut: \[ Y_t = \alpha_0 + \sum_{i=1}^{p} \alpha_i Y_{t-i} + \sum_{j=0}^{q_1} \beta_{1j} X_{1,t-j} + \sum_{j=0}^{q_2} \beta_{2j} X_{2,t-j} + ... + \sum_{j=0}^{q_k} \beta_{kj} X_{k,t-j} + \varepsilon_t \]

Estimasi Model ARDL

library(ARDL)

model_ardl <- ardl(DAX ~ SMI + CAC + FTSE,
                   data = data_ts,
                   order = lag_model$best_order)

summary(model_ardl)
## 
## Time series regression with "ts" data:
## Start = 5, End = 1860
## 
## Call:
## dynlm::dynlm(formula = full_formula, data = data, start = start, 
##     end = end)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -93.356  -7.930   0.152   8.435 108.192 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -10.755254   7.422959  -1.449    0.148    
## L(DAX, 1)     0.982780   0.003808 258.055  < 2e-16 ***
## SMI           0.329637   0.014402  22.888  < 2e-16 ***
## L(SMI, 1)    -0.361925   0.020192 -17.925  < 2e-16 ***
## L(SMI, 2)     0.020519   0.017430   1.177    0.239    
## L(SMI, 3)     0.021827   0.015181   1.438    0.151    
## L(SMI, 4)    -0.003261   0.010486  -0.311    0.756    
## CAC           0.436693   0.023167  18.850  < 2e-16 ***
## L(CAC, 1)    -0.424879   0.023385 -18.169  < 2e-16 ***
## FTSE          0.204024   0.019462  10.483  < 2e-16 ***
## L(FTSE, 1)   -0.227677   0.027491  -8.282  2.3e-16 ***
## L(FTSE, 2)    0.025173   0.017539   1.435    0.151    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 17.76 on 1844 degrees of freedom
## Multiple R-squared:  0.9997, Adjusted R-squared:  0.9997 
## F-statistic: 6.293e+05 on 11 and 1844 DF,  p-value: < 2.2e-16

Model Akhir: \[ DAX = -10.7553 + 0.9828 DAX(t-1) + 0.3296 SMI + -0.3619 SMI(t-1) + 0.0205 SMI(t-2) + 0.0218 SMI(t-3) + -0.0033 SMI(t-4) + 0.4367 CAC + -0.4249 CAC(t-1) + 0.204 FTSE + -0.2277 FTSE(t-1) + 0.0252 FTSE(t-2) \]

Bounds Test

library(ARDL)

bounds_f_test(model_ardl, case=3)
## 
##  Bounds F-test (Wald) for no cointegration
## 
## data:  d(DAX) ~ L(DAX, 1) + L(SMI, 1) + L(CAC, 1) + L(FTSE, 1) + d(SMI) +     d(L(SMI, 1)) + d(L(SMI, 2)) + d(L(SMI, 3)) + d(CAC) + d(FTSE) +     d(L(FTSE, 1))
## F = 6.2796, p-value = 0.003788
## alternative hypothesis: Possible cointegration
## null values:
##    k    T 
##    3 1000

Model ARDL-ECM

Model Error Correction dari pendekatan ARDL secara umum dapat dituliskan sebagai berikut: \[ \Delta Y_t = \alpha_0 + \sum_{i=1}^{p-1} \alpha_i \Delta Y_{t-i} + \sum_{j=0}^{q_1-1} \beta_{1j} \Delta X_{1,t-j} + \sum_{j=0}^{q_2-1} \beta_{2j} \Delta X_{2,t-j} + \cdots + \sum_{j=0}^{q_k-1} \beta_{kj} \Delta X_{k,t-j} + \lambda ECT_{t-1} + \varepsilon_t \]

Estimasi Model ARDL-ECM

library(ecm)
## Warning: package 'ecm' was built under R version 4.4.3
model_ecm <- recm(model_ardl, case=3)
summary(model_ecm)
## 
## Time series regression with "zooreg" data:
## Start = 5, End = 1860
## 
## Call:
## dynlm::dynlm(formula = full_formula, data = data, start = start, 
##     end = end)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -93.356  -7.930   0.152   8.435 108.192 
## 
## Coefficients:
##                 Estimate Std. Error t value Pr(>|t|)    
## (Intercept)   -10.755254   2.245349  -4.790 1.80e-06 ***
## d(SMI)          0.329637   0.014310  23.035  < 2e-16 ***
## d(L(SMI, 1))   -0.039085   0.013280  -2.943  0.00329 ** 
## d(L(SMI, 2))   -0.018566   0.010440  -1.778  0.07552 .  
## d(L(SMI, 3))    0.003261   0.010462   0.312  0.75532    
## d(CAC)          0.436693   0.023121  18.888  < 2e-16 ***
## d(FTSE)         0.204024   0.019350  10.544  < 2e-16 ***
## d(L(FTSE, 1))  -0.025173   0.017330  -1.453  0.14651    
## ect            -0.017220   0.003433  -5.016 5.78e-07 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 17.75 on 1847 degrees of freedom
##   (0 observations deleted due to missingness)
## Multiple R-squared:  0.7035, Adjusted R-squared:  0.7022 
## F-statistic: 547.7 on 8 and 1847 DF,  p-value: < 2.2e-16

Model Jangka Pendek \[ ΔDAX = -10.7553 + 0.3296 ΔSMI + -0.0391 ΔSMI(t-1) + -0.0186 ΔSMI(t-2) + 0.0033 ΔSMI(t-3) + 0.4367 ΔCAC + 0.204 ΔFTSE + -0.0252 ΔFTSE(t-1) + -0.0172 ECT(t-1) \]

Diagnostic Test

Autokorelasi

library(lmtest)
## Warning: package 'lmtest' was built under R version 4.4.3
## Loading required package: zoo
## Warning: package 'zoo' was built under R version 4.4.3
## 
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
## 
##     as.Date, as.Date.numeric
bgtest(model_ecm)
## 
##  Breusch-Godfrey test for serial correlation of order up to 1
## 
## data:  model_ecm
## LM test = 0.017983, df = 1, p-value = 0.8933

Normalitas

library(tseries)
jarque.bera.test(residuals(model_ecm))
## 
##  Jarque Bera Test
## 
## data:  residuals(model_ecm)
## X-squared = 2854.4, df = 2, p-value < 2.2e-16

Hasil uji normalitas menunjukkan bahwa residual tidak berdistribusi normal. Namun, hal ini tidak menjadi masalah yang serius karena jumlah sampel yang digunakan relatif besar sehingga berdasarkan Central Limit Theorem, estimasi parameter tetap bersifat konsisten dan dapat digunakan untuk analisis lebih lanjut.

Multikolinearitas

library(car)
## Warning: package 'car' was built under R version 4.4.3
## Loading required package: carData
## Warning: package 'carData' was built under R version 4.4.3
vif(lm(DAX ~ SMI + CAC, data=data_ts))
##      SMI      CAC 
## 9.657789 9.657789

Heteroskedastisitas

library(lmtest)
bptest(model_ecm)
## 
##  studentized Breusch-Pagan test
## 
## data:  model_ecm
## BP = 37.734, df = 8, p-value = 8.43e-06
library(sandwich)
## Warning: package 'sandwich' was built under R version 4.4.3
coeftest(model_ecm, vcov = NeweyWest(model_ecm))
## 
## t test of coefficients:
## 
##                  Estimate  Std. Error t value  Pr(>|t|)    
## (Intercept)   -10.7552536   2.5656062 -4.1921 2.895e-05 ***
## d(SMI)          0.3296369   0.0218850 15.0623 < 2.2e-16 ***
## d(L(SMI, 1))   -0.0390851   0.0250426 -1.5607    0.1188    
## d(L(SMI, 2))   -0.0185661   0.0169641 -1.0944    0.2739    
## d(L(SMI, 3))    0.0032608   0.0185141  0.1761    0.8602    
## d(CAC)          0.4366925   0.0404960 10.7836 < 2.2e-16 ***
## d(FTSE)         0.2040243   0.0275582  7.4034 2.007e-13 ***
## d(L(FTSE, 1))  -0.0251726   0.0262638 -0.9585    0.3380    
## ect            -0.0172199   0.0042033 -4.0968 4.371e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Hasil uji heteroskedastisitas menunjukkan adanya heteroskedastisitas pada model. Oleh karena itu, dilakukan estimasi menggunakan HAC (Newey–West) standard error sehingga standar error yang dihasilkan bersifat robust terhadap heteroskedastisitas sehingga hasil estimasi parameter dan pengujian statistik tetap dapat diinterpretasikan secara valid.

Plot Diagnostic Model

par(mfrow=c(2,2))
plot(model_ecm)

Plot Fitted vs Actual

plot(fitted(model_ecm),
     type="l",
     col="blue",
     main="Fitted vs Actual")

lines(data_ts$DAX, col="red")

legend("topleft",
       legend=c("Fitted","Actual"),
       col=c("blue","red"),
       lty=1)

# Akurasi Peramalan

actual <- model.response(model.frame(model_ecm))
pred <- fitted(model_ecm)
mae <- mean(abs(actual - pred))
mae
## [1] 12.04177

Kesimpulan

Berdasarkan hasil perhitungan Mean Absolute Error (MAE), diperoleh nilai sebesar 12. Nilai MAE tersebut menunjukkan bahwa rata-rata selisih absolut antara nilai aktual dan nilai prediksi yang dihasilkan oleh model adalah sebesar 12 poin indeks. Nilai kesalahan yang relatif kecil ini menunjukkan bahwa model yang diestimasi memiliki kemampuan yang cukup baik dalam memprediksi perubahan variabel dependen.