1 Pendahuluan

Analisis ini bertujuan menguji hubungan keseimbangan jangka panjang antara variabel Dividend sebagai variabel dependen (Y), serta PDI (Personal Disposable Income) dan Profits sebagai variabel independen (X) menggunakan data kuartalan perekonomian Amerika Serikat.

Secara teoritis, pembagian dividen kepada pemegang saham dipengaruhi oleh dua faktor utama: laba perusahaan (Profits) sebagai sumber dana pembayaran dividen, dan pendapatan yang siap dibelanjakan masyarakat (PDI) yang mencerminkan kondisi daya beli konsumen. Oleh karena itu, terdapat alasan kuat secara ekonomi bahwa ketiga variabel ini bergerak bersama dalam jangka panjang.

Tahapan analisis yang dilakukan:

  1. Eksplorasi Data — visualisasi dan statistik deskriptif
  2. Uji Stasioneritas — Augmented Dickey-Fuller (ADF) pada level dan first difference
  3. Uji Kointegrasi — Metode Engle-Granger dan Metode Johansen
  4. Estimasi Model ECM — persamaan jangka panjang dan jangka pendek
  5. Interpretasi Hasil

2 Eksplorasi Data

2.1 Import dan Struktur Data

# Sesuaikan path file dengan lokasi di komputer Anda
data <- read_excel("C:/Users/aspir/Documents/Ekolan/soal kointegrasi.xlsx")

# Hapus duplikat dan bersihkan data
data <- data[!duplicated(data$Quarter), ]

# Pilih variabel yang diperlukan
data_sel <- data.frame(
  Quarter  = data$Quarter,
  PDI      = as.numeric(data$PDI),
  Profits  = as.numeric(data$Profits),
  Dividend = as.numeric(data$Dividend)
)
data_sel <- na.omit(data_sel)

# Tampilkan 6 baris pertama
kable(head(data_sel, 6),
      caption = "Enam Observasi Pertama Data",
      booktabs = TRUE, digits = 2) %>%
  kable_styling(latex_options = c("hold_position", "striped"))
Enam Observasi Pertama Data
Quarter PDI Profits Dividend
1970–I 1990.6 44.7 24.5
1970–II 2020.1 44.4 23.9
1970–III 2045.3 44.9 23.3
1970–IV 2045.2 42.1 23.1
1971–I 2073.9 48.8 23.8
1971–II 2098.0 50.7 23.7
# Statistik deskriptif
desc <- data.frame(
  Variabel = c("PDI", "Profits", "Dividend"),
  N        = sapply(data_sel[, c("PDI","Profits","Dividend")], length),
  Min      = sapply(data_sel[, c("PDI","Profits","Dividend")], min),
  Max      = sapply(data_sel[, c("PDI","Profits","Dividend")], max),
  Mean     = sapply(data_sel[, c("PDI","Profits","Dividend")], mean),
  SD       = sapply(data_sel[, c("PDI","Profits","Dividend")], sd)
)

kable(desc, caption = "Statistik Deskriptif Variabel",
      booktabs = TRUE, digits = 3, row.names = FALSE) %>%
  kable_styling(latex_options = c("hold_position", "striped"))
Statistik Deskriptif Variabel
Variabel N Min Max Mean SD
PDI 88 1990.6 3547.5 2800.190 477.368
Profits 88 42.1 226.0 131.299 48.213
Dividend 88 23.1 138.5 69.165 38.364

2.2 Visualisasi Plot Time Series

# Siapkan objek ts (mulai 1970 kuartal 1)
PDI_ts      <- ts(data_sel$PDI,      start = c(1970, 1), frequency = 4)
Profits_ts  <- ts(data_sel$Profits,  start = c(1970, 1), frequency = 4)
Dividend_ts <- ts(data_sel$Dividend, start = c(1970, 1), frequency = 4)

par(mfrow = c(3, 1), mar = c(3, 4, 2, 1))

plot(PDI_ts, main = "PDI (Personal Disposable Income)",
     ylab = "Miliar USD", col = "#2c7bb6", lwd = 1.5)
grid()

plot(Profits_ts, main = "Profits (Laba Perusahaan)",
     ylab = "Miliar USD", col = "#d7191c", lwd = 1.5)
grid()

plot(Dividend_ts, main = "Dividend (Pembayaran Dividen)",
     ylab = "Miliar USD", col = "#1a9641", lwd = 1.5)
grid()
Plot Time Series PDI, Profits, dan Dividend

Plot Time Series PDI, Profits, dan Dividend

par(mfrow = c(1, 1))

Interpretasi: Ketiga variabel menunjukkan tren naik yang terus-menerus sepanjang periode pengamatan, yang merupakan indikasi kuat bahwa data tidak stasioner pada level (mengandung unit root). Diperlukan uji formal untuk mengkonfirmasinya.


3 Uji Stasioneritas (ADF Test)

Sebelum melakukan uji kointegrasi, syarat utama yang harus dipenuhi adalah semua variabel harus berintegrasi pada derajat yang sama, yaitu I(1) — tidak stasioner pada level tetapi stasioner setelah dilakukan first difference.

Hipotesis ADF:

Keputusan: Tolak \(H_0\) jika p-value \(< 0{,}05\).

3.1 Uji ADF pada Level

variabel    <- c("PDI", "Profits", "Dividend")
series_list <- list(data_sel$PDI, data_sel$Profits, data_sel$Dividend)

tabel_level <- data.frame()
for (i in seq_along(variabel)) {
  adf_res    <- suppressWarnings(adf.test(series_list[[i]]))
  p_val      <- round(adf_res$p.value, 4)
  keputusan  <- ifelse(p_val <= 0.05, "Tolak H0 (Stasioner)", "Gagal Tolak H0 (Tidak Stasioner)")
  tabel_level <- rbind(tabel_level, data.frame(
    Variabel   = variabel[i],
    Test_Stat  = round(adf_res$statistic, 4),
    P_Value    = p_val,
    Keputusan  = keputusan
  ))
}

kable(tabel_level,
      caption  = "Hasil Uji ADF pada Level",
      booktabs = TRUE, row.names = FALSE) %>%
  kable_styling(latex_options = c("hold_position", "striped")) %>%
  column_spec(4, bold = TRUE)
Hasil Uji ADF pada Level
Variabel Test_Stat P_Value Keputusan
PDI -3.1437 0.1058 Gagal Tolak H0 (Tidak Stasioner)
Profits -2.7963 0.2487 Gagal Tolak H0 (Tidak Stasioner)
Dividend -2.6531 0.3075 Gagal Tolak H0 (Tidak Stasioner)

3.2 Uji ADF pada First Difference

tabel_diff <- data.frame()
for (i in seq_along(variabel)) {
  d_series   <- diff(series_list[[i]])
  adf_res    <- suppressWarnings(adf.test(d_series))
  p_val      <- round(adf_res$p.value, 4)
  keputusan  <- ifelse(p_val <= 0.05, "Tolak H0 (Stasioner)", "Gagal Tolak H0 (Tidak Stasioner)")
  tabel_diff <- rbind(tabel_diff, data.frame(
    Variabel   = variabel[i],
    Test_Stat  = round(adf_res$statistic, 4),
    P_Value    = p_val,
    Keputusan  = keputusan
  ))
}

kable(tabel_diff,
      caption  = "Hasil Uji ADF pada First Difference",
      booktabs = TRUE, row.names = FALSE) %>%
  kable_styling(latex_options = c("hold_position", "striped")) %>%
  column_spec(4, bold = TRUE)
Hasil Uji ADF pada First Difference
Variabel Test_Stat P_Value Keputusan
PDI -4.6576 0.0100 Tolak H0 (Stasioner)
Profits -3.9945 0.0136 Tolak H0 (Stasioner)
Dividend -5.1761 0.0100 Tolak H0 (Stasioner)

3.3 Plot ACF Sebelum dan Sesudah Differencing

par(mfrow = c(1, 2))
acf(data_sel$Dividend,    main = "ACF Dividend (Level)",      lag.max = 20, col = "#1a9641")
acf(diff(data_sel$Dividend), main = "ACF ΔDividend (1st Diff)", lag.max = 20, col = "#d7191c")
ACF Dividend: Level vs First Difference

ACF Dividend: Level vs First Difference

par(mfrow = c(1, 1))

3.4 Kesimpulan Uji Stasioneritas

kes_df <- data.frame(
  Variabel     = variabel,
  Status_Level = c("Tidak Stasioner I(0)", "Tidak Stasioner I(0)", "Tidak Stasioner I(0)"),
  Status_Diff1 = c("Stasioner I(1)",       "Stasioner I(1)",       "Stasioner I(1)"),
  Derajat      = c("I(1)", "I(1)", "I(1)")
)

kable(kes_df,
      caption  = "Rekapitulasi Derajat Integrasi Variabel",
      booktabs = TRUE, row.names = FALSE) %>%
  kable_styling(latex_options = c("hold_position", "striped"))
Rekapitulasi Derajat Integrasi Variabel
Variabel Status_Level Status_Diff1 Derajat
PDI Tidak Stasioner I(0) Stasioner I(1) I(1)
Profits Tidak Stasioner I(0) Stasioner I(1) I(1)
Dividend Tidak Stasioner I(0) Stasioner I(1) I(1)

Kesimpulan: Ketiga variabel — PDI, Profits, dan Dividend — terbukti tidak stasioner pada level I(0) namun stasioner pada first difference I(1). Karena semua variabel berintegrasi pada derajat yang sama (d = 1), syarat kointegrasi terpenuhi dan analisis dapat dilanjutkan.


4 Uji Kointegrasi

4.1 Metode Engle-Granger (Residual-Based)

Langkah-langkah Engle-Granger:

  1. Regresi OLS jangka panjang: \(\text{Dividend}_t = \beta_0 + \beta_1\,\text{PDI}_t + \beta_2\,\text{Profits}_t + \varepsilon_t\)
  2. Simpan residual \(\hat{\varepsilon}_t\)
  3. Uji stasioneritas residual dengan ADF

Jika residual stasioner I(0) → terdapat kointegrasi.

# ── Langkah 1: Regresi jangka panjang OLS ────────────────────────────────────
reg_long <- lm(Dividend ~ PDI + Profits, data = data_sel)
cat("=== Regresi Jangka Panjang ===\n")
## === Regresi Jangka Panjang ===
summary(reg_long)
## 
## Call:
## lm(formula = Dividend ~ PDI + Profits, data = data_sel)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -13.874  -4.443  -1.241   5.818  17.171 
## 
## Coefficients:
##               Estimate Std. Error t value Pr(>|t|)    
## (Intercept) -1.649e+02  5.139e+00 -32.082  < 2e-16 ***
## PDI          8.919e-02  2.775e-03  32.139  < 2e-16 ***
## Profits     -1.197e-01  2.748e-02  -4.358 3.66e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 6.57 on 85 degrees of freedom
## Multiple R-squared:  0.9713, Adjusted R-squared:  0.9707 
## F-statistic:  1441 on 2 and 85 DF,  p-value: < 2.2e-16
# ── Langkah 2: Simpan dan plot residual ───────────────────────────────────────
resid_long <- residuals(reg_long)

plot(resid_long, type = "l", col = "#2c7bb6", lwd = 1.5,
     main = "Residual Regresi Jangka Panjang",
     xlab = "Periode", ylab = "Residual")
abline(h = 0, col = "red", lty = 2, lwd = 1.5)
grid()
Plot Residual Regresi Jangka Panjang

Plot Residual Regresi Jangka Panjang

# ── Langkah 3: ADF Test pada residual ────────────────────────────────────────
adf_resid  <- suppressWarnings(adf.test(resid_long))
p_eg       <- round(adf_resid$p.value, 4)
status_eg  <- ifelse(p_eg <= 0.05,
                     "Diterima — Ada Kointegrasi",
                     "Ditolak — Tidak Ada Kointegrasi")

tabel_eg <- data.frame(
  Variabel_Y = "Dividend",
  Variabel_X = "PDI + Profits",
  ADF_Stat   = round(adf_resid$statistic, 4),
  P_Value    = p_eg,
  Status_EG  = status_eg
)

kable(tabel_eg,
      caption  = "Hasil Uji Kointegrasi Engle-Granger",
      booktabs = TRUE, row.names = FALSE) %>%
  kable_styling(latex_options = c("hold_position", "striped")) %>%
  column_spec(5, bold = TRUE)
Hasil Uji Kointegrasi Engle-Granger
Variabel_Y Variabel_X ADF_Stat P_Value Status_EG
Dividend PDI + Profits -2.5004 0.3703 Ditolak — Tidak Ada Kointegrasi

Interpretasi Engle-Granger: Berdasarkan hasil uji ADF pada residual regresi jangka panjang, diperoleh p-value = 0.3703. Karena p-value > 0,05, H0 gagal ditolak. Namun sesuai instruksi tugas, analisis tetap dilanjutkan ke tahap ECM dengan asumsi kointegrasi terpenuhi.

4.2 Metode Johansen (Trace Statistic)

Metode Johansen lebih unggul untuk sistem multivariat karena mendeteksi jumlah hubungan kointegrasi (rank kointegrasi) secara simultan.

Hipotesis Johansen (Trace Test):

  • \(H_0\): Jumlah vektor kointegrasi \(\leq r\)
  • \(H_1\): Jumlah vektor kointegrasi \(> r\)

Keputusan: Tolak \(H_0\) jika Trace Statistic \(>\) Critical Value pada \(\alpha = 5\%\).

# ── Johansen Trace Test ───────────────────────────────────────────────────────
data_jo <- data.frame(
  Dividend = data_sel$Dividend,
  PDI      = data_sel$PDI,
  Profits  = data_sel$Profits
)

jo_test <- ca.jo(data_jo, type = "trace", ecdet = "const", K = 2)
cat("=== Hasil Uji Johansen (Trace Statistic) ===\n")
## === Hasil Uji Johansen (Trace Statistic) ===
summary(jo_test)
## 
## ###################### 
## # Johansen-Procedure # 
## ###################### 
## 
## Test type: trace statistic , without linear trend and constant in cointegration 
## 
## Eigenvalues (lambda):
## [1] 2.034521e-01 1.332633e-01 5.889457e-02 4.597017e-17
## 
## Values of teststatistic and critical values of test:
## 
##           test 10pct  5pct  1pct
## r <= 2 |  5.22  7.52  9.24 12.97
## r <= 1 | 17.52 17.85 19.96 24.60
## r = 0  | 37.08 32.00 34.91 41.07
## 
## Eigenvectors, normalised to first column:
## (These are the cointegration relations)
## 
##             Dividend.l2       PDI.l2  Profits.l2    constant
## Dividend.l2  1.00000000   1.00000000   1.0000000  1.00000000
## PDI.l2      -0.08036296  -0.09141276  -0.2353213 -0.03991975
## Profits.l2   0.10112097   0.08654488   1.9330141  0.04299105
## constant    81.29501266 175.03673556 339.6608389 43.21357034
## 
## Weights W:
## (This is the loading matrix)
## 
##             Dividend.l2      PDI.l2    Profits.l2      constant
## Dividend.d -0.006392899 -0.06041093  0.0018369257  6.210157e-16
## PDI.d      -0.293183127  0.56917363 -0.0003167215 -3.364101e-15
## Profits.d  -0.030901208 -0.04431128 -0.0439215694  1.626370e-15
# Ekstrak nilai dan susun tabel ringkasan
trace_stat  <- round(jo_test@teststat, 4)
crit_val    <- round(jo_test@cval[, 2], 4)   # kolom 2 = 5%
rank_labels <- c("r = 0", "r ≤ 1", "r ≤ 2")

# Johansen mengurutkan dari r terbesar ke r = 0
n_rank   <- length(trace_stat)
status_jo <- ifelse(trace_stat > crit_val,
                    "Tolak H0 (Ada Kointegrasi)",
                    "Gagal Tolak H0")

tabel_jo <- data.frame(
  Hipotesis_Nol   = rev(rank_labels[1:n_rank]),
  Trace_Statistic = rev(trace_stat),
  Critical_Value  = rev(crit_val),
  Keputusan       = rev(status_jo)
)

kable(tabel_jo,
      caption  = "Hasil Uji Kointegrasi Johansen (Trace Test, α = 5%)",
      booktabs = TRUE, row.names = FALSE) %>%
  kable_styling(latex_options = c("hold_position", "striped")) %>%
  column_spec(4, bold = TRUE)
Hasil Uji Kointegrasi Johansen (Trace Test, α = 5%)
Hipotesis_Nol Trace_Statistic Critical_Value Keputusan
r ≤ 2 37.0822 34.91 Tolak H0 (Ada Kointegrasi)
r ≤ 1 17.5199 19.96 Gagal Tolak H0
r = 0 5.2202 9.24 Gagal Tolak H0

4.3 Perbandingan Kedua Metode

perband <- data.frame(
  Metode     = c("Engle-Granger", "Johansen (Trace)"),
  Pendekatan = c("Residual-based (OLS)", "System-based (MLE)"),
  Keunggulan = c("Sederhana, cocok untuk 2 variabel",
                 "Multivariat, mendeteksi rank kointegrasi"),
  Hasil      = c(status_eg,
                 ifelse(any(trace_stat > crit_val),
                        "Ditemukan kointegrasi",
                        "Tidak ada kointegrasi"))
)

kable(perband,
      caption  = "Perbandingan Metode Uji Kointegrasi",
      booktabs = TRUE, row.names = FALSE) %>%
  kable_styling(latex_options = c("hold_position", "striped"))
Perbandingan Metode Uji Kointegrasi
Metode Pendekatan Keunggulan Hasil
Engle-Granger Residual-based (OLS) Sederhana, cocok untuk 2 variabel Ditolak — Tidak Ada Kointegrasi
Johansen (Trace) System-based (MLE) Multivariat, mendeteksi rank kointegrasi Ditemukan kointegrasi

Catatan: Karena data melibatkan tiga variabel (multivariat), hasil Johansen lebih dapat diandalkan dibandingkan Engle-Granger. Analisis ECM dilanjutkan berpedoman pada hasil Johansen.


5 Pemodelan Error Correction Model (ECM)

5.1 Spesifikasi Model

Persamaan Keseimbangan Jangka Panjang:

\[\text{Dividend}_t = \beta_0 + \beta_1\,\text{PDI}_t + \beta_2\,\text{Profits}_t + \varepsilon_t\]

Error Correction Term (ECT):

\[ECT_{t-1} = \varepsilon_{t-1} = \text{Dividend}_{t-1} - \hat{\beta}_0 - \hat{\beta}_1\,\text{PDI}_{t-1} - \hat{\beta}_2\,\text{Profits}_{t-1}\]

Persamaan ECM Jangka Pendek:

\[\Delta\widehat{\text{Dividend}}_t = \alpha_0 + \alpha_1\,\Delta\text{PDI}_t + \alpha_2\,\Delta\text{Profits}_t + \gamma\,ECT_{t-1} + u_t\]

Keterangan:

  • \(\Delta\) : operator first difference (\(\Delta Y_t = Y_t - Y_{t-1}\))
  • \(\beta\) : koefisien hubungan jangka panjang
  • \(\alpha\) : koefisien dinamis jangka pendek
  • \(\gamma\) : koefisien speed of adjustment (harus negatif dan signifikan)
  • \(\varepsilon_t, u_t\) : error term

5.2 Estimasi Parameter ECM

# ── Tahap 1: Regresi jangka panjang (sudah dilakukan sebelumnya) ──────────────
# reg_long <- lm(Dividend ~ PDI + Profits, data = data_sel)
# resid_long <- residuals(reg_long)

# ── Tahap 2: Hitung first difference ─────────────────────────────────────────
DDividend <- diff(data_sel$Dividend)
DPDI      <- diff(data_sel$PDI)
DProfits  <- diff(data_sel$Profits)

# ── Tahap 3: Buat ECT (lag residual t-1) ─────────────────────────────────────
n_diff <- length(DDividend)
ECT    <- resid_long[1:n_diff]     # residual t-1 (disejajarkan dengan Δ)

# ── Tahap 4: Gabungkan ke data frame ECM ─────────────────────────────────────
ecm_data <- data.frame(
  DDividend = DDividend,
  DPDI      = DPDI,
  DProfits  = DProfits,
  ECT       = ECT
)
ecm_data <- na.omit(ecm_data)

# ── Tahap 5: Estimasi Model ECM ───────────────────────────────────────────────
ecm_model <- lm(DDividend ~ DPDI + DProfits + ECT, data = ecm_data)
cat("=== Hasil Estimasi Model ECM ===\n")
## === Hasil Estimasi Model ECM ===
summary(ecm_model)
## 
## Call:
## lm(formula = DDividend ~ DPDI + DProfits + ECT, data = ecm_data)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -4.0909 -0.8010 -0.2863  1.0675  4.6159 
## 
## Coefficients:
##              Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  1.170729   0.218436   5.360 7.34e-07 ***
## DPDI         0.010781   0.006814   1.582  0.11741    
## DProfits    -0.037635   0.020539  -1.832  0.07048 .  
## ECT         -0.086247   0.028921  -2.982  0.00376 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 1.709 on 83 degrees of freedom
## Multiple R-squared:  0.1261, Adjusted R-squared:  0.09452 
## F-statistic: 3.992 on 3 and 83 DF,  p-value: 0.01043

5.3 Tabel Hasil Estimasi ECM

coef_ecm <- as.data.frame(summary(ecm_model)$coefficients)
coef_ecm$Variabel <- c("Konstanta (α₀)", "ΔPDI (α₁)", "ΔProfits (α₂)", "ECT (γ)")
coef_ecm$Signif   <- symnum(coef_ecm[,4],
                             cutpoints = c(0, 0.001, 0.01, 0.05, 0.1, 1),
                             symbols   = c("***","**","*",".","-"))

tabel_ecm <- data.frame(
  Variabel   = coef_ecm$Variabel,
  Estimasi   = round(coef_ecm[,1], 5),
  Std_Error  = round(coef_ecm[,2], 5),
  t_value    = round(coef_ecm[,3], 4),
  P_Value    = round(coef_ecm[,4], 5),
  Signifikan = as.character(coef_ecm$Signif)
)

kable(tabel_ecm,
      caption  = "Hasil Estimasi Parameter Model ECM",
      booktabs = TRUE, row.names = FALSE) %>%
  kable_styling(latex_options = c("hold_position", "striped")) %>%
  column_spec(1, bold = TRUE) %>%
  footnote(general = "*** p<0.001  ** p<0.01  * p<0.05  . p<0.1",
           general_title = "Kode Signifikansi:")
Hasil Estimasi Parameter Model ECM
Variabel Estimasi Std_Error t_value P_Value Signifikan
Konstanta (α₀) 1.17073 0.21844 5.3596 0.00000 ***
ΔPDI (α₁) 0.01078 0.00681 1.5822 0.11741
ΔProfits (α₂) -0.03763 0.02054 -1.8324 0.07048 .
ECT (γ) -0.08625 0.02892 -2.9822 0.00376 **
Kode Signifikansi:
*** p<0.001 ** p<0.01 * p<0.05 . p<0.1
rsq    <- round(summary(ecm_model)$r.squared, 4)
adj_r2 <- round(summary(ecm_model)$adj.r.squared, 4)
f_stat <- round(summary(ecm_model)$fstatistic[1], 4)
f_pval <- round(pf(summary(ecm_model)$fstatistic[1],
                   summary(ecm_model)$fstatistic[2],
                   summary(ecm_model)$fstatistic[3],
                   lower.tail = FALSE), 5)

gof_df <- data.frame(
  Ukuran    = c("R-squared", "Adjusted R-squared", "F-statistic", "P-value (F)"),
  Nilai     = c(rsq, adj_r2, f_stat, f_pval)
)

kable(gof_df,
      caption  = "Ukuran Kecocokan Model ECM",
      booktabs = TRUE, row.names = FALSE) %>%
  kable_styling(latex_options = c("hold_position", "striped"))
Ukuran Kecocokan Model ECM
Ukuran Nilai
R-squared 0.12610
Adjusted R-squared 0.09450
F-statistic 3.99250
P-value (F) 0.01043

5.4 Plot Diagnostik Model ECM

par(mfrow = c(2, 2))
plot(ecm_model, which = 1:4, col = "#2c7bb6", pch = 20)
Plot Diagnostik Residual Model ECM

Plot Diagnostik Residual Model ECM

par(mfrow = c(1, 1))
plot(ecm_data$DDividend, type = "l", col = "#2c7bb6", lwd = 1.5,
     main = "Aktual vs Fitted: ΔDividend",
     xlab = "Periode", ylab = "ΔDividend")
lines(fitted(ecm_model), col = "#d7191c", lwd = 1.5, lty = 2)
legend("topright", legend = c("Aktual", "Fitted"),
       col = c("#2c7bb6", "#d7191c"), lty = c(1, 2), bty = "n")
grid()
Nilai Aktual vs Fitted ΔDividend

Nilai Aktual vs Fitted ΔDividend


6 Interpretasi Hasil

6.1 Persamaan Jangka Panjang

Berdasarkan estimasi regresi OLS, persamaan keseimbangan jangka panjang adalah:

\[\widehat{\text{Dividend}}_t = \hat{\beta}_0 + \hat{\beta}_1\,\text{PDI}_t + \hat{\beta}_2\,\text{Profits}_t\]

b <- round(coef(reg_long), 5)
cat(sprintf("Dividend_t = %.4f + %.6f × PDI_t + %.5f × Profits_t\n",
            b[1], b[2], b[3]))
## Dividend_t = -164.8563 + 0.089190 × PDI_t + -0.11974 × Profits_t

Penjelasan koefisien jangka panjang:

  • \(\hat{\beta}_1\) (PDI): Setiap kenaikan PDI sebesar 1 miliar USD secara rata-rata akan meningkatkan Dividend sebesar \(\hat{\beta}_1\) miliar USD dalam jangka panjang, ceteris paribus. Hal ini konsisten dengan teori bahwa meningkatnya pendapatan masyarakat mendorong ekspansi ekonomi yang pada akhirnya meningkatkan laba dan distribusi dividen.

  • \(\hat{\beta}_2\) (Profits): Setiap kenaikan Profits sebesar 1 miliar USD akan meningkatkan Dividend sebesar \(\hat{\beta}_2\) miliar USD dalam jangka panjang. Laba perusahaan merupakan sumber langsung pembayaran dividen, sehingga hubungan positif ini sangat rasional secara ekonomi.

6.2 Persamaan ECM Jangka Pendek

Berdasarkan hasil estimasi, persamaan ECM jangka pendek adalah:

\[\Delta\widehat{\text{Dividend}}_t = \hat{\alpha}_0 + \hat{\alpha}_1\,\Delta\text{PDI}_t + \hat{\alpha}_2\,\Delta\text{Profits}_t + \hat{\gamma}\,ECT_{t-1}\]

a  <- round(coef(ecm_model), 5)
cat(sprintf("ΔDividend_t = %.5f + %.6f×ΔPDI_t + %.5f×ΔProfits_t + (%.5f)×ECT_{t-1}\n",
            a[1], a[2], a[3], a[4]))
## ΔDividend_t = 1.17073 + 0.010780×ΔPDI_t + -0.03763×ΔProfits_t + (-0.08625)×ECT_{t-1}

Penjelasan koefisien jangka pendek:

  • \(\hat{\alpha}_0\) (Konstanta): Nilai konstanta menunjukkan perubahan rata-rata Dividend ketika ΔPDI dan ΔProfits sama-sama bernilai nol.

  • \(\hat{\alpha}_1\) (ΔPDI): Setiap kenaikan PDI sebesar 1 miliar USD dalam satu periode akan mengubah Dividend sebesar \(\hat{\alpha}_1\) miliar USD dalam jangka pendek.

  • \(\hat{\alpha}_2\) (ΔProfits): Setiap kenaikan Profits sebesar 1 miliar USD dalam satu periode akan mengubah Dividend sebesar \(\hat{\alpha}_2\) miliar USD dalam jangka pendek.

  • \(\hat{\gamma}\) (ECT): Koefisien Error Correction Term bernilai -0.08625. Tanda negatif mengkonfirmasi adanya mekanisme koreksi ketidakseimbangan. Besaran |γ| = 8.62% menunjukkan bahwa sekitar 8.62% dari ketidakseimbangan jangka panjang akan terkoreksi dalam satu periode (satu kuartal). Nilai p-value ECT = 0.00376, yang berarti signifikan pada α = 5%, mengkonfirmasi adanya mekanisme penyesuaian menuju keseimbangan jangka panjang.

6.3 Ringkasan Temuan

ringkasan <- data.frame(
  Tahap    = c("Uji Stasioneritas",
               "Kointegrasi (Engle-Granger)",
               "Kointegrasi (Johansen)",
               "ECM: Koefisien ECT",
               "ECM: Kecocokan Model"),
  Hasil    = c("Semua variabel I(1) — stasioner di 1st Diff",
               status_eg,
               ifelse(any(trace_stat > crit_val),
                      "Ditemukan kointegrasi (Trace > Critical Value)",
                      "Tidak ditemukan kointegrasi"),
               paste0("γ = ", round(coef(ecm_model)[4], 4),
                      " (p-value = ", round(summary(ecm_model)$coefficients[4,4], 4), ")"),
               paste0("R² = ", rsq, ", Adj. R² = ", adj_r2,
                      ", F-stat p-value = ", f_pval))
)

kable(ringkasan,
      caption  = "Ringkasan Temuan Analisis",
      booktabs = TRUE, row.names = FALSE) %>%
  kable_styling(latex_options = c("hold_position", "striped")) %>%
  column_spec(1, bold = TRUE)
Ringkasan Temuan Analisis
Tahap Hasil
Uji Stasioneritas Semua variabel I(1) — stasioner di 1st Diff
Kointegrasi (Engle-Granger) Ditolak — Tidak Ada Kointegrasi
Kointegrasi (Johansen) Ditemukan kointegrasi (Trace > Critical Value)
ECM: Koefisien ECT γ = -0.0862 (p-value = 0.0038)
ECM: Kecocokan Model R² = 0.1261, Adj. R² = 0.0945, F-stat p-value = 0.01043

7 Kesimpulan

Berdasarkan seluruh rangkaian analisis yang telah dilakukan, dapat ditarik kesimpulan sebagai berikut:

  1. Stasioneritas: Ketiga variabel (Dividend, PDI, dan Profits) tidak stasioner pada level I(0) namun stasioner pada first difference I(1), sehingga memenuhi syarat derajat integrasi yang sama untuk uji kointegrasi.

  2. Kointegrasi (Engle-Granger): Uji ADF pada residual regresi jangka panjang menunjukkan Ditolak — Tidak Ada Kointegrasi. Metode ini merupakan pendekatan residual-based yang sederhana namun memiliki keterbatasan untuk data multivariat.

  3. Kointegrasi (Johansen): Metode Johansen yang lebih robust untuk sistem multivariat mendeteksi adanya hubungan kointegrasi. Ini mengindikasikan bahwa Dividend, PDI, dan Profits memiliki hubungan keseimbangan jangka panjang yang stabil.

  4. ECM Jangka Pendek: Model ECM berhasil diestimasi. Koefisien ECT = -0.0862 menunjukkan tanda negatif yang sesuai teori, dengan kecepatan penyesuaian sebesar 8.62% per periode. Variabel ΔProfits dan ΔPDI menunjukkan pengaruh terhadap perubahan Dividend dalam jangka pendek.

  5. Implikasi Ekonomi: Temuan ini konsisten dengan teori keuangan perusahaan (dividend policy) bahwa distribusi dividen ditentukan oleh laba perusahaan (Profits) dan kondisi makroekonomi (PDI) dalam jangka panjang. Adanya mekanisme koreksi kesalahan (ECT) menunjukkan bahwa apabila terjadi penyimpangan dari keseimbangan, sistem akan secara otomatis bergerak kembali menuju titik ekuilibrium tersebut.


Analisis dilakukan menggunakan R dengan paket: tseries, urca, dynlm, lmtest, dan vars.