# Library yang dibutuhkan
library(openxlsx)  # Open Excel File
library(dplyr)     
library(knitr)
library(FSA)       # Head and Tail
library(ggplot2)   # Plotting
library(ggpmisc)
library(ggpubr)
library(lmtest)    # Coef Test and BP-test
library(nortest)   # Normality
library(car)       # VIF

1 Bentuk Model Distributed Lag pada Kasus Konsumsi dan Pendapatan

Pemodelan kasus Angka Konsumsi (CE) terhadap Angka Pendapatan (PDI). Data disajikan dengan deret waktu secara triwulan (Kuartal) dari Tahun 1985 Kuartal 1 hingga tahun Tahun 1994 Kuartal 2.

df <- read.xlsx("cons_usDinamis.xlsx")

df$obs <- df %>%
  pull(obs) %>%
  as.yearqtr()
headtail(df) %>%
  kable(digits = 3,
        align = "c",
        col.names = c("Waktu", "Konsumsi (CE)", "Pendapatan (PDI)"),
        caption = "Dataset Konsumsi dan Pendapatan Tahun 1985-1994")
Dataset Konsumsi dan Pendapatan Tahun 1985-1994
Waktu Konsumsi (CE) Pendapatan (PDI)
1 1985 Q1 72.824 0.818
2 1985 Q2 75.696 0.850
3 1985 Q3 80.031 0.892
36 1993 Q4 110.826 0.974
37 1994 Q1 107.739 0.961
38 1994 Q2 101.736 0.926

plot_PDI <- ggplot(data = df, aes(x = obs, y = PDI)) +
  geom_line(size = 1, color = "dark green") +
  stat_peaks(colour = "dark red") +
  stat_peaks(geom = "text", colour = "dark red", vjust = 1.2,
               span = NULL) +
  labs(title = "Pendapatan", x = "Waktu", y = "PDI")

plot_CE <- ggplot(data = df, aes(x = obs, y = CE)) +
  geom_line(size = 1, color = "dark blue") +
  stat_peaks(colour = "dark red") +
  stat_peaks(geom = "text", colour = "dark red", hjust = -0.1,
               span = NULL) +
  labs(title = "Konsumsi", x = "Waktu", y = "PDI")

ggarrange(plot_PDI, plot_CE,
          nrow = 2,
          align = "hv", 
          labels = c("(1)", "(2)"))

Berdasarkan grafik (1) terlihat bahwa terdapat trend positif dari pendapatan tiap kuartal, dimana nilainya cenderung meningkat seiring bertambahnya waktu hingga tahun 1988. Trend ini juga terlihat pada grafik (2), dimana nilai konsumsi cenderung naik seiring waktu hingga tahun 1992.
Setelah tahun 1988, nilai pendapatan cenderung menurun, begitu pula dengan nilai konsumsi yang menunjukkan trend negatif sejak tahun 1992
Dari kasus tersebut maka dapat diperkirakan adanya suatu efek Pendapatan terhadap Konsumsi namun tidak pada waktu yang sama. Efek dari meningkatnya Pendapatan terhadap Konsumsi akan terasa pada beberapa waktu periode berikutnya. Dengan adanya keadaan tersebut, maka dibutuhkan suatu pemodelan yang melibatkan pengaruh waktu serta efek lag pada veriabel Konsumsi sebagai variabel prediktor.


Distributed Lag Model adalah suatu model Dalam analisis regresi yang melibatkan data deret waktu, dimana model ini memasukan tidak hanya nilai variabel prediktor saat ini \((X_t)\), tetapi juga nilai masa lalu (lag) \((X_{t-p})\). Secara umum bentuk dari Distributed Lag Model adalah sebagai berikut:

\[ Y_t = \alpha + \beta_0X_t + \beta_1X_{t-1} + \dots + \beta_pX_{t-p} \tag{1} \] Pada persamaan \((1)\) memiliki permasalahan adanya hubungan linier pada variabel \(X\) dengan lag \(X\), mengingat adanya asumsi autokorelasi pada model time series. Sehingga, pada model ini terdapat multikolinieritas yang akan mengakibatkan besarnya nilai standar error serta pendugaan parameter menjadi tidak bersifat efisien.
Selain permasalahan asumsi multikolinieritas, terdapat permasalahan lain, yaitu tidak adanya informasi pasti seberapa banyak lag yang dibutuhkan. semakin banyak lag yang digunakan, akan mengurangi data yang berdampak pada berkurangnya informasi.

Untuk mengatasi kedua masalah tersebut, perlu dilakukan suatu metode transformasi, yaitu Koyck Transformation. metode ini memanfaatkan transformasi geometrik, pada setiap penduga parameternya, dengan persamaan sebagai berikut:

\[ \begin{aligned} &\beta_i = \beta_0\lambda^i\\ \textrm{dimana: } &0\leq\lambda\leq1; i=1,2,3,\dots \end{aligned} \tag{2} \]

Sehingga persamaan (1) diubah menjadi:

\[ Y_t = \alpha + (\beta_0)X_t + (\beta_0\lambda^1)X_{t-1} + (\beta_0\lambda^2)X_{t-2} + \dots + u_t \tag{3} \]

Lalu membentuk persamaan baru sebagai berikut:

\[ Y_{t-1} = \alpha + (\beta_0)X_{t-1} + (\beta_0\lambda^1)X_{t-2} + (\beta_0\lambda^2)X_{t-3} + \dots + u_{t-1} \tag{4}\\ \]

\[ \begin{aligned} \lambda Y_{t-1} &= \lambda(\alpha + (\beta_0)X_{t-1} + (\beta_0\lambda^1)X_{t-2} + (\beta_0\lambda^2)X_{t-3} + \dots + u_{t-1})\\ &= \alpha\lambda + (\beta_0\lambda)X_{t-1} + (\beta_0\lambda^2)X_{t-2} + (\beta_0\lambda^3)X_{t-3} + \dots + \lambda u_{t-1} \end{aligned} \tag{5} \]

dengan mengeleminasi suku-suku yang sama dari persamaan (3) dan (5) didapatkan persamaan sebagai berikut:

\[ Y_t = \alpha (1 - \lambda) + \beta_0X_t + \lambda Y_{t-1} + v_t \tag{6} \]


df$CE_1 <- lag(df$CE)
model1 <- lm(CE ~ PDI + CE_1, data = df)
coeftest(model1)

t test of coefficients:

              Estimate Std. Error t value Pr(>|t|)    
(Intercept) -10.741967   9.338104 -1.1503  0.25803    
PDI          27.186180  10.275342  2.6458  0.01225 *  
CE_1          0.849750   0.044501 19.0949  < 2e-16 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
alpha_0 <- coef(model1)[[1]]
beta_0  <- coef(model1)[[2]]
lambda  <- coef(model1)[[3]]

alpha   <- alpha_0/(1-lambda)
beta    <- beta_0/(1-lambda)

GC <- c(alpha,beta,lambda) %>% round(3)
\(\alpha\) \(\beta\) \(\lambda\)
Geometric Coefficients -71.494 180.939 0.85

Berdasarkan output, model yang terbentuk adalah sebagai berikut: \[ \widehat{CE_t} = -\underset{(9.338)}{10.742} + \underset{(10.275)}{27.186}PDI_t + \underset{(0.045)}{0.849}CE_{t-1} \] serta dapat dijabarkan menjadi: \[ \begin{aligned} \widehat{CE_t} &= -71.49 + 27.18PDI_t + 27.18\times0.84PDI_{t-1} + 27.18\times0.84^2PDI_{t-2} + 27.18\times0.84^3PDI_{t-3} + \dots\\ &= -71.49 + 27.18PDI_t + 22.83PDI_{t-1} + 19.18PDI_{t-2} + 16.11PDI_{t-3} + \dots \end{aligned} \]


2 Pengujian Asumsi Model

2.1 Normalitas Galat

Pemeriksaan asumsi normalitas galat dapat dilakukan dengan beberapa cara, yaitu pemeriksaan menggunakan grafik/plot dan pemeriksaan menggunakan uji statistik.

Pengujian normalitas dilakukan dengan hipotesis:

\[ \begin{aligned} H_0: &v_t\sim N(\mu_{v_t}, \sigma^2_{v_t})\\ H_1: &v_t\nsim N(\mu_{v_t}, \sigma^2_{v_t}) \end{aligned} \]

df$res <- c(NA, residuals(model1))
df$CE.fit <- c(NA, fitted(model1))

qq_sisaan <- ggplot(data = df[-1,], aes(sample = res)) +
  labs(title = "Normal Probability Plot", y = "Sisaan", x = "") + 
  stat_qq(data = df, color = "blue") +
  stat_qq_line(color = "red", size = 1, lty = 2, alpha = 0.4)

hist_sisaan <- ggplot(data = df[-1,], aes(x = res)) +
  labs(title = "Density of Redisuals",
       x = "Sisaan",
       y = "Frekuensi") +
  geom_histogram(aes(x = res, y = ..density..), bins = 7,
                 fill = "grey", colour = "black") +
  geom_density(color = "blue", size = 1)

Ch_Sq <- pearson.test(df$res)
AD    <- ad.test(df$res)
KS    <- lillie.test(df$res)

ggarrange(qq_sisaan, hist_sisaan,
          nrow = 2,
          align = "hv", 
          labels = c("(a)", "(b)"))

Pada Grafik (a) menunjukkan bahwa sebagian besar persebaran titik pencar sisaan mengikuti garis refrensinya, maka dapat dikatakan bahwa sisaan berdistribusi normal. Hal ini juga didukung dengan grafik (b) yang menunjukkan histogram sisaan dan garis kurva density (Biru) membentuk kurva normal.

Berdasarkan uji yang dilakukan, didapatkan hasil seagai berikut:

Uji Statistik Uji \(p\)-value
Chi-Square 2.6486486 0.8514747
Andersen Darling 0.4283287 0.2953238
Jarque Bera 0.1069119 0.3534571

Ketiga uji menunjukkan nilai \(p\)-value yang cukup besar, sehingga dapat disimpulkan bahwa sisaan berdistribusi Normal.


2.2 Asumsi Homoskedastisitas

Pemeriksaan asumsi homoskedastisitas dilakukan untuk memastikan apakah ragam memiliki nilai yang sama untuk setiap amatan pada nilai \(X_t\) yang sama. Pengujian dilakukan dengan menggunakan uji Breush-Pagan serta hipotesis sebagai berikut:

\[ \begin{aligned} H_0: &\sigma^2_i = \sigma^2_j, i\neq j\\ H_1: &\sigma^2_i \neq \sigma^2_j, i\neq j \end{aligned} \]

scat_vt_CEt <- ggplot(df, aes(x = CE.fit, y = res^2)) +
  geom_point(shape = 3) +
  geom_smooth(method = "loess", formula = y~x, se = T)
scat_vt_CEt

Uji Statistik Uji \(p\)-value
Breusch-Pagan 1.8505297 0.3964264

Berdasarkan uji Breusch-Pagan, hasil uji menghasilkan \(p\)-value yang cukup besar sehingga dapat disimpulkan bahwa keragaman sisaan adalah sama pada nilai \(X_t\) yang berbeda atau Homogen. Hal ini juga didukung dengan plot kuadrat sisaan dengan nilai \(\widehat{CE}\) membentuk pola datar. Namun pada \(\widehat{CE}\) benilai berkisar 100 - 110, kuadrat sisaan cenderung memiliki nilai yang cukup beragam.


2.3 Non-Multikolinieritas

Pemeriksaan asumsi Non-Multikolinieritas dapat diketahui dengan menggunakan nilai VIF, nilai ini memberikan informasi adanya peubah yang menyebabkan ragam galat menjadi besar. VIF didapatkan dengan memanfaatkan nilai koefisien determinasi \((R^2_j)\) dari masing-masing peubah prediktor pada persamaan (6) yang diregresikan dengan peubah prediktor lainnya (auxiliary regression).

scat_X <- ggplot(df[-1,], aes(x = PDI, y = CE_1)) +
  geom_point(shape = 2) +
  geom_smooth(method = lm, formula = y~x, se = F)
scat_X

Variabel VIF
\(X_t\) 1.1366152
\(Y_{t-1}\) 1.1366152

Berdasarkan nilai VIF yang sangat kecil \((<10)\), maka dapat disimpulkan bahwa tidak terdapat pelanggaran asumsi non-multikolinieritas. Hali ini juga didukung oleh diagram pencar antara variavel \(PDI\) dan variabel lag-\(CE\) dimana diagam pencar antara kedua peubah tersebut menunjukkan tidak adanya hubungan linier sempurna.


2.4 Non-Autokorelasi

Pengujian asumsi non-autokorelasi dapat menggunakan diagram pencar antara sisaan dengan lag-sisaan. Plot ini dapat menggambarkan hubungan sisaan dengan dirinya sendiri pada lag berbeda, sehingga diharapkan dapat mendeteksi adanya autokorelasi yang terjadi pada model.

vt.vt1   <- data.frame(vt = df$res[2:38], vt1 = df$res[1:37])
scat_vt_vt1 <- ggplot(vt.vt1, aes(x = vt, y = vt1)) +
  labs(title = "Scatter Plot Sisaan dan lag-sisaan", xlab = "sisaan",
       ylab = "lag_sisaan") +
  geom_point(shape = 4) +
  geom_vline(aes(xintercept = 0)) +
  geom_hline(aes(yintercept = 0))
scat_vt_vt1

Berdasarkan Plot tersebut, tidak terlihat adanya suatu pola tertentu (hanya ada pola horizontal), sehingga dapat disimpulkan tidak terdapat autokorelasi pada sisaan.


3 Kesimpulan:

3.1 Model

Pendugaan Parameter yang didapatkan adalah sebagai berikut:

\(\alpha\) \(\beta\) \(\lambda\)
Geometric Coefficients -71.494 180.939 0.85

Serta model yang terbentuk adalah sebagai berikut:
\[ \widehat{CE_t} = -\underset{(9.338)}{10.742} + \underset{(10.275)}{27.186}PDI_t + \underset{(0.045)}{0.849}CE_{t-1} \]

3.2 Pengujian Asumsi

Berdasarkan serangkaian uji yang dilakukan tidak terdapat asumsi yang terlanggar.

3.3 Interpretasi

  • Setiap kenaikan Pendapatan sebesar 1 satuan, akan meningkatkan Konsumsi pada periode yang sama sebesar 27.186 satuan.
  • Setiap kenaikan Pendapatan sebesar 1 satuan, akan meningkatkan Konsumsi pada periode berikutnya sebesar 22.83 satuan.
  • Setiap kenaikan Pendapatan sebesar 1 satuan, akan meningkatkan Konsumsi pada 2 periode yang akan datang sebesar 19.18 satuan.
  • Setiap kenaikan pendapatan sebesar 1 satuan, secara jangka panjang /long run akan meningkatkan konsumsi sebesar 180.939 satuan.