Hasil Pemodelan
Data dan statistik deskriptif
d <- read_excel(data_file); d$tanggal <- as.Date(d$tanggal); d <- d[order(d$tanggal), ]
d$inflasi_yoy <- as.numeric(100 * (exp(stats::filter(log(1 + d$inflasi/100), rep(1, 12), sides = 1)) - 1))
d$bunga <- ifelse(d$tanggal < as.Date("2016-08-01"), d$suku_bunga - 1.25, d$suku_bunga)
d$kurs100 <- 100 * log(d$kurs)
x <- na.omit(d[, c("tanggal", "inflasi_yoy", "bunga", "kurs100", "inflasi", "suku_bunga", "kurs")])
Y <- as.matrix(x[, c("inflasi_yoy", "bunga", "kurs100")]); colnames(Y) <- c("inflasi", "bunga", "kurs")
tg <- x$tanggal; n <- nrow(Y)
cat("Data awal:", nrow(d), "bulan | sampel analisis:", n, "bulan (", format(min(tg)), "s.d.", format(max(tg)), ") | missing:", sum(is.na(d[, 2:4])), "\n")
## Data awal: 180 bulan | sampel analisis: 169 bulan ( 2011-12-01 s.d. 2025-12-01 ) | missing: 0
desk <- data.frame(Variabel = c("Inflasi y-o-y (%)", "Suku bunga acuan, disambung (%)", "Kurs (Rp/USD)"),
Rata_rata = c(fmt(mean(Y[,1])), fmt(mean(Y[,2])), rb(mean(x$kurs))), SD = c(fmt(sd(Y[,1])), fmt(sd(Y[,2])), rb(sd(x$kurs))),
Min = c(fmt(min(Y[,1])), fmt(min(Y[,2])), rb(min(x$kurs))), Max = c(fmt(max(Y[,1])), fmt(max(Y[,2])), rb(max(x$kurs))))
knitr::kable(desk, align = "lcccc", col.names = c("Variabel", "Rata-rata", "Simpangan baku", "Minimum", "Maksimum"),
caption = "Tabel 1. Statistik deskriptif")
Tabel 1. Statistik deskriptif
| Inflasi y-o-y (%) |
3,81 |
1,91 |
-0,10 |
8,79 |
| Suku bunga acuan, disambung (%) |
5,13 |
0,93 |
3,50 |
6,50 |
| Kurs (Rp/USD) |
13.650 |
1.973 |
9.026 |
16.820 |
par(mfrow = c(3, 1), mar = c(3, 4.5, 2.2, 1))
plot(tg, Y[,1], type = "l", lwd = 1.6, col = "firebrick", xlab = "", ylab = "%", main = "Inflasi Tahunan (y-o-y)")
plot(d$tanggal, d$suku_bunga, type = "l", col = "grey65", lwd = 1.4, xlab = "", ylab = "%",
main = "Suku Bunga Acuan BI (abu-abu: data asli, biru: disambung ke skala BI7DRR)")
lines(tg, Y[,2], col = "navy", lwd = 1.6); abline(v = as.Date("2016-08-01"), lty = 2, col = "grey40")
plot(tg, x$kurs, type = "l", lwd = 1.6, col = "darkgreen", xlab = "", ylab = "Rp/USD", main = "Kurs Rupiah terhadap USD")
Uji stasioneritas
uji <- function(z, nm, tahap) { a <- ur.df(z, type = "drift", selectlags = "AIC", lags = 12)
data.frame(Variabel = nm, Tahap = tahap, ADF = a@teststat[1], PP_p = suppressWarnings(pp.test(z)$p.value),
KPSS_p = suppressWarnings(kpss.test(z)$p.value)) }
ur <- rbind(uji(Y[,1], "Inflasi", "Level"), uji(diff(Y[,1]), "Inflasi", "Diff 1"), uji(Y[,2], "Suku bunga", "Level"),
uji(diff(Y[,2]), "Suku bunga", "Diff 1"), uji(Y[,3], "Kurs", "Level"), uji(diff(Y[,3]), "Kurs", "Diff 1"))
ur_mom <- uji(x$inflasi, "Inflasi m-o-m (asli)", "Level")
pfmt <- function(p, lo = 0.01, hi = 0.1) ifelse(p <= lo, "< 0,01", ifelse(p >= hi, "> 0,10", fmt(p, 3)))
knitr::kable(data.frame(ur[, 1:2], ADF = fmt(ur$ADF, 3), PP = pfmt(ur$PP_p), KPSS = pfmt(ur$KPSS_p)), align = "llccc",
col.names = c("Variabel", "Tahap", "ADF (nilai kritis 5% = −2,88)", "PP (p-value)", "KPSS (p-value)"),
caption = "Tabel 2. Hasil uji akar unit")
Tabel 2. Hasil uji akar unit
| Inflasi |
Level |
-1,165 |
> 0,10 |
< 0,01 |
| Inflasi |
Diff 1 |
-5,804 |
< 0,01 |
> 0,10 |
| Suku bunga |
Level |
-2,495 |
> 0,10 |
> 0,10 |
| Suku bunga |
Diff 1 |
-5,475 |
< 0,01 |
> 0,10 |
| Kurs |
Level |
-2,734 |
> 0,10 |
< 0,01 |
| Kurs |
Diff 1 |
-10,454 |
< 0,01 |
> 0,10 |
Panjang lag
vs <- VARselect(Y, lag.max = 12, type = "const")
lagdg <- do.call(rbind, lapply(2:4, function(K) { v <- VAR(Y, p = K, type = "const")
data.frame(Lag = K, PT = serial.test(v, lags.pt = 12, type = "PT.adjusted")$serial$p.value,
BG = serial.test(v, lags.bg = 6, type = "BG")$serial$p.value) }))
cr <- as.data.frame(t(vs$criteria[, 1:5])); cr$Lag <- 1:5; cr <- merge(cr, lagdg, all.x = TRUE)
knitr::kable(data.frame(Lag = cr$Lag, AIC = fmt(cr$`AIC(n)`, 3), HQ = fmt(cr$`HQ(n)`, 3), SC = fmt(cr$`SC(n)`, 3),
Portmanteau = ifelse(is.na(cr$PT), "–", fmt(cr$PT, 3)), BG = ifelse(is.na(cr$BG), "–", fmt(cr$BG, 3))),
align = "cccccc", col.names = c("Lag", "AIC", "HQ", "SC", "Portmanteau (p)", "BG LM (p)"),
caption = "Tabel 3. Kriteria pemilihan lag VAR level dan uji autokorelasi residual")
Tabel 3. Kriteria pemilihan lag VAR level dan uji autokorelasi
residual
| 1 |
-3,755 |
-3,660 |
-3,521 |
– |
– |
| 2 |
-4,084 |
-3,918 |
-3,675 |
0,014 |
0,006 |
| 3 |
-4,161 |
-3,923 |
-3,577 |
0,058 |
0,562 |
| 4 |
-4,097 |
-3,789 |
-3,338 |
0,023 |
0,322 |
| 5 |
-4,046 |
-3,667 |
-3,112 |
– |
– |
vs$selection
## AIC(n) HQ(n) SC(n) FPE(n)
## 3 3 2 3
K <- 3
Uji kointegrasi Johansen
jt <- ca.jo(Y, type = "trace", ecdet = "none", K = K, spec = "transitory")
je <- ca.jo(Y, type = "eigen", ecdet = "none", K = K, spec = "transitory")
Teff <- n - K; adj <- (Teff - 3 * K) / Teff
joh <- data.frame(H0 = c("r = 0", "r ≤ 1", "r ≤ 2"), Trace = rev(jt@teststat), Trace_adj = rev(jt@teststat) * adj,
cv5 = rev(jt@cval[, 2]), cv1 = rev(jt@cval[, 3]), Eigen = rev(je@teststat), ecv5 = rev(je@cval[, 2]))
knitr::kable(data.frame(joh[1], lapply(joh[-1], fmt)), align = "lcccccc",
col.names = c("H0", "Trace", "Trace terkoreksi*", "Nilai kritis 5%", "Nilai kritis 1%", "Max-eigen", "Nilai kritis 5%"),
caption = "Tabel 4. Uji kointegrasi Johansen (lag 3, konstanta tidak dibatasi). *Koreksi sampel kecil Reinsel-Ahn")
Tabel 4. Uji kointegrasi Johansen (lag 3, konstanta tidak
dibatasi). *Koreksi sampel kecil Reinsel-Ahn
| r = 0 | |
r = 0 |
32,02 |
30,28 |
31,52 |
37,22 |
15,99 |
21,07 |
| r <= 1 | |
r ≤ 1 |
16,03 |
15,16 |
17,95 |
23,52 |
10,41 |
14,90 |
| r <= 2 | |
r ≤ 2 |
5,62 |
5,31 |
8,18 |
11,65 |
5,62 |
8,18 |
Yasli <- Y; Yasli[, "bunga"] <- x$suku_bunga
D <- matrix(as.numeric(tg == as.Date("2016-08-01")), ncol = 1, dimnames = list(NULL, "d1608"))
Ymom <- Y; Ymom[, "inflasi"] <- x$inflasi
spek <- list(list("Utama: y-o-y, bunga disambung", Y, 2, NULL), list("Utama: y-o-y, bunga disambung", Y, 3, NULL),
list("Utama: y-o-y, bunga disambung", Y, 4, NULL), list("Bunga asli + dummy Agu 2016", Yasli, 3, D),
list("Inflasi m-o-m (tanpa transformasi)", Ymom, 3, NULL))
jr <- do.call(rbind, lapply(spek, function(s) {
a <- ca.jo(s[[2]], type = "trace", ecdet = "none", K = s[[3]], spec = "transitory", dumvar = s[[4]])
b <- ca.jo(s[[2]], type = "eigen", ecdet = "none", K = s[[3]], spec = "transitory", dumvar = s[[4]])
tr <- rev(a@teststat); ei <- rev(b@teststat)
data.frame(Spesifikasi = s[[1]], Lag = s[[3]], Trace = fmt(tr[1]), Eigen = fmt(ei[1]),
r_trace = sum(cumprod(tr > rev(a@cval[, 2]))), r_eigen = sum(cumprod(ei > rev(b@cval[, 2])))) }))
knitr::kable(jr, align = "lcccc", col.names = c("Spesifikasi", "Lag", "Trace (r = 0)", "Max-eigen (r = 0)", "r (trace)", "r (max-eigen)"),
caption = "Tabel 5. Ketahanan hasil uji Johansen")
Tabel 5. Ketahanan hasil uji Johansen
| Utama: y-o-y, bunga disambung |
2 |
33,97 |
21,23 |
1 |
1 |
| Utama: y-o-y, bunga disambung |
3 |
32,02 |
15,99 |
1 |
0 |
| Utama: y-o-y, bunga disambung |
4 |
30,90 |
13,97 |
0 |
0 |
| Bunga asli + dummy Agu 2016 |
3 |
33,08 |
15,92 |
1 |
0 |
| Inflasi m-o-m (tanpa transformasi) |
3 |
85,64 |
73,03 |
1 |
1 |
crj <- cajorls(jt, r = 1); beta <- crj$beta[, 1]
al <- do.call(rbind, lapply(summary(crj$rlm), function(s) s$coefficients["ect1", ]))
knitr::kable(data.frame(Variabel = nmv, Beta = fmt(beta, 4), Alpha = fmt(al[, 1], 4), p = pv(al[, 4])), row.names = FALSE, align = "lccc",
col.names = c("Variabel", "β (dinormalisasi ke inflasi)", "α (penyesuaian)", "p-value α"),
caption = "Tabel 6. Vektor kointegrasi dan koefisien penyesuaian jika r = 1 dipaksakan")
Tabel 6. Vektor kointegrasi dan koefisien penyesuaian jika r =
1 dipaksakan
| Inflasi |
1,0000 |
-0,1072 |
< 0,001 |
| Suku bunga |
-0,1974 |
0,0044 |
0,552 |
| Kurs |
0,0843 |
0,0064 |
0,949 |
Estimasi VAR(2) dalam first difference
dY <- diff(Y); VARselect(dY, lag.max = 12, type = "const")$selection
## AIC(n) HQ(n) SC(n) FPE(n)
## 2 2 1 2
p <- 2; var_d <- VAR(dY, p = p, type = "const")
koef <- do.call(rbind, lapply(names(var_d$varresult), function(eq) { co <- summary(var_d$varresult[[eq]])$coefficients
data.frame(Persamaan = paste0("Δ", nmv[eq]), Regresor = rownames(co), Koef = fmt(co[, 1], 4), SE = fmt(co[, 2], 4),
t = fmt(co[, 3], 3), p = pv(co[, 4])) }))
knitr::kable(koef, row.names = FALSE, align = "llcccc", col.names = c("Persamaan", "Regresor", "Koefisien", "Std. Error", "t-hitung", "p-value"),
caption = "Tabel 7. Koefisien VAR(2) dalam first difference")
Tabel 7. Koefisien VAR(2) dalam first difference
| ΔInflasi |
inflasi.l1 |
0,2645 |
0,0776 |
3,409 |
< 0,001 |
| ΔInflasi |
bunga.l1 |
0,6363 |
0,3188 |
1,996 |
0,048 |
| ΔInflasi |
kurs.l1 |
-0,0095 |
0,0224 |
-0,423 |
0,673 |
| ΔInflasi |
inflasi.l2 |
-0,2080 |
0,0784 |
-2,655 |
0,009 |
| ΔInflasi |
bunga.l2 |
-0,5284 |
0,3116 |
-1,696 |
0,092 |
| ΔInflasi |
kurs.l2 |
0,0128 |
0,0225 |
0,567 |
0,571 |
| ΔInflasi |
const |
-0,0046 |
0,0417 |
-0,111 |
0,912 |
| ΔSuku bunga |
inflasi.l1 |
0,0219 |
0,0194 |
1,130 |
0,260 |
| ΔSuku bunga |
bunga.l1 |
0,4914 |
0,0796 |
6,174 |
< 0,001 |
| ΔSuku bunga |
kurs.l1 |
0,0088 |
0,0056 |
1,578 |
0,117 |
| ΔSuku bunga |
inflasi.l2 |
0,0061 |
0,0196 |
0,312 |
0,755 |
| ΔSuku bunga |
bunga.l2 |
0,0456 |
0,0778 |
0,586 |
0,558 |
| ΔSuku bunga |
kurs.l2 |
0,0017 |
0,0056 |
0,294 |
0,769 |
| ΔSuku bunga |
const |
-0,0022 |
0,0104 |
-0,208 |
0,835 |
| ΔKurs |
inflasi.l1 |
0,3225 |
0,2629 |
1,227 |
0,222 |
| ΔKurs |
bunga.l1 |
0,5349 |
1,0800 |
0,495 |
0,621 |
| ΔKurs |
kurs.l1 |
0,2339 |
0,0760 |
3,077 |
0,002 |
| ΔKurs |
inflasi.l2 |
0,3256 |
0,2655 |
1,227 |
0,222 |
| ΔKurs |
bunga.l2 |
1,3887 |
1,0557 |
1,315 |
0,190 |
| ΔKurs |
kurs.l2 |
-0,3314 |
0,0763 |
-4,342 |
< 0,001 |
| ΔKurs |
const |
0,4091 |
0,1412 |
2,897 |
0,004 |
r2 <- sapply(var_d$varresult, function(m) summary(m)$adj.r.squared)
kb <- function(eq, rg, k = 1) summary(var_d$varresult[[eq]])$coefficients[rg, k]
Diagnostik model
dg <- c(serial.test(var_d, lags.pt = 12, type = "PT.adjusted")$serial$p.value, serial.test(var_d, lags.bg = 6, type = "BG")$serial$p.value,
arch.test(var_d, lags.multi = 5)$arch.mul$p.value, normality.test(var_d)$jb.mul$JB$p.value, max(roots(var_d)))
knitr::kable(data.frame(Uji = c("Portmanteau (adjusted), lag 12", "Breusch-Godfrey LM, lag 6", "ARCH-LM multivariat, lag 5",
"Jarque-Bera multivariat", "Modulus akar karakteristik terbesar"),
Nilai = c(fmt(dg[1:3], 3), pv(dg[4]), fmt(dg[5], 3))), align = "lc",
col.names = c("Uji", "p-value / nilai"), caption = "Tabel 8. Uji diagnostik VAR(2)")
Tabel 8. Uji diagnostik VAR(2)
| Portmanteau (adjusted), lag 12 |
0,176 |
| Breusch-Godfrey LM, lag 6 |
0,726 |
| ARCH-LM multivariat, lag 5 |
0,077 |
| Jarque-Bera multivariat |
< 0,001 |
| Modulus akar karakteristik terbesar |
0,613 |
ak <- roots(var_d, modulus = FALSE); th <- seq(0, 2*pi, length.out = 300)
plot(Re(ak), Im(ak), xlim = c(-1.1, 1.1), ylim = c(-1.1, 1.1), asp = 1, pch = 19, col = "navy", xlab = "Real", ylab = "Imajiner",
main = "Akar Karakteristik VAR"); lines(cos(th), sin(th), col = "grey50")
Uji kausalitas Granger
pw <- NULL
for (ca in colnames(dY)) for (ef in setdiff(colnames(dY), ca)) {
m <- var_d$varresult[[ef]]; b <- coef(m); V <- vcov(m); idx <- grep(paste0("^", ca, "\\.l"), names(b))
Fs <- as.numeric(t(b[idx]) %*% solve(V[idx, idx]) %*% b[idx]) / length(idx)
pw <- rbind(pw, data.frame(Arah = paste(nmv[ca], "→", nmv[ef]), F = Fs, p = pf(Fs, length(idx), m$df.residual, lower.tail = FALSE))) }
gb <- sapply(colnames(dY), function(v) causality(var_d, cause = v)$Granger$p.value)
knitr::kable(data.frame(Arah = pw$Arah, F = fmt(pw$F, 3), p = fmt(pw$p, 3), Keputusan = ifelse(pw$p < 0.05, "Signifikan", "Tidak signifikan")),
align = "lccc", col.names = c("Arah kausalitas", "F-hitung", "p-value", "Keputusan (5%)"), caption = "Tabel 9. Uji kausalitas Granger")
Tabel 9. Uji kausalitas Granger
| Inflasi → Suku bunga |
0,787 |
0,457 |
Tidak signifikan |
| Inflasi → Kurs |
1,874 |
0,157 |
Tidak signifikan |
| Suku bunga → Inflasi |
2,285 |
0,105 |
Tidak signifikan |
| Suku bunga → Kurs |
1,829 |
0,164 |
Tidak signifikan |
| Kurs → Inflasi |
0,216 |
0,806 |
Tidak signifikan |
| Kurs → Suku bunga |
1,405 |
0,248 |
Tidak signifikan |
Impulse Response Function (IRF)
H <- 24
sdres <- apply(residuals(var_d), 2, sd)
ir <- irf(var_d, n.ahead = H, ortho = TRUE, cumulative = TRUE, boot = TRUE, ci = 0.95, runs = RUNS)
irv <- function(g, r, b) ir$irf[[g]][b + 1, r]
sig_bulan <- function(g, r) { b <- which(ir$Lower[[g]][, r] > 0 | ir$Upper[[g]][, r] < 0) - 1
if (length(b) == 0) "tidak ada" else if (length(b) == 1) as.character(b) else if (length(b) == max(b) - min(b) + 1) paste0(min(b), "-", max(b)) else paste(b, collapse = ",") }
lab <- c(inflasi = "Inflasi (poin %)", bunga = "Suku bunga (poin %)", kurs = "Kurs (%)")
par(mfrow = c(3, 3), mar = c(4.2, 4.2, 2.6, 0.8), mgp = c(2.4, 0.8, 0))
for (re in colnames(dY)) for (im in colnames(dY)) {
lo <- ir$Lower[[im]][, re]; up <- ir$Upper[[im]][, re]; md <- ir$irf[[im]][, re]; hh <- 0:H
plot(hh, md, type = "n", ylim = range(c(lo, up, 0)), xlab = "Bulan", ylab = lab[re], main = paste(nmv[im], "→", nmv[re]))
polygon(c(hh, rev(hh)), c(lo, rev(up)), col = adjustcolor("steelblue", 0.25), border = NA)
lines(hh, md, lwd = 2, col = "navy"); abline(h = 0, col = "red", lty = 2) }
pairs <- list(c("inflasi", "bunga"), c("inflasi", "kurs"), c("bunga", "inflasi"), c("bunga", "kurs"), c("kurs", "inflasi"), c("kurs", "bunga"))
knitr::kable(do.call(rbind, lapply(pairs, function(k) data.frame(Pasangan = paste(nmv[k[1]], "→", nmv[k[2]]),
B0 = fmt(irv(k[1], k[2], 0), 3), B3 = fmt(irv(k[1], k[2], 3), 3), B6 = fmt(irv(k[1], k[2], 6), 3), B12 = fmt(irv(k[1], k[2], 12), 3),
B24 = fmt(irv(k[1], k[2], 24), 3), Sig = sig_bulan(k[1], k[2])))), row.names = FALSE, align = "lcccccc",
col.names = c("Guncangan → Respons", "Bulan 0", "Bulan 3", "Bulan 6", "Bulan 12", "Bulan 24", "Bulan signifikan (CI 95%)"),
caption = "Tabel 10. Ringkasan IRF kumulatif (poin persen untuk inflasi dan suku bunga, persen untuk kurs)")
Tabel 10. Ringkasan IRF kumulatif (poin persen untuk inflasi
dan suku bunga, persen untuk kurs)
| Inflasi → Suku bunga |
0,014 |
0,067 |
0,078 |
0,081 |
0,081 |
tidak ada |
| Inflasi → Kurs |
0,287 |
0,770 |
0,719 |
0,735 |
0,735 |
0-24 |
| Suku bunga → Inflasi |
0,000 |
0,051 |
0,040 |
0,037 |
0,037 |
1 |
| Suku bunga → Kurs |
0,276 |
0,726 |
0,765 |
0,797 |
0,797 |
2-24 |
| Kurs → Inflasi |
0,000 |
0,027 |
0,006 |
0,010 |
0,010 |
tidak ada |
| Kurs → Suku bunga |
0,000 |
0,033 |
0,036 |
0,038 |
0,038 |
tidak ada |
Forecast Error Variance Decomposition (FEVD)
fe <- fevd(var_d, n.ahead = H)
fev <- do.call(rbind, lapply(names(fe), function(v) data.frame(Variabel = nmv[v], Bulan = c(1, 6, 12, 24),
Inflasi = fmt(100 * fe[[v]][c(1, 6, 12, 24), "inflasi"]), Bunga = fmt(100 * fe[[v]][c(1, 6, 12, 24), "bunga"]),
Kurs = fmt(100 * fe[[v]][c(1, 6, 12, 24), "kurs"]))))
knitr::kable(fev, row.names = FALSE, align = "lcccc", col.names = c("Variabel", "Bulan", "Kontribusi inflasi", "Kontribusi suku bunga", "Kontribusi kurs"),
caption = "Tabel 11. Dekomposisi varians galat peramalan (%)")
Tabel 11. Dekomposisi varians galat peramalan (%)
| Inflasi |
1 |
100,00 |
0,00 |
0,00 |
| Inflasi |
6 |
97,21 |
2,33 |
0,46 |
| Inflasi |
12 |
97,20 |
2,33 |
0,47 |
| Inflasi |
24 |
97,20 |
2,33 |
0,47 |
| Suku bunga |
1 |
1,16 |
98,84 |
0,00 |
| Suku bunga |
6 |
4,81 |
93,48 |
1,70 |
| Suku bunga |
12 |
4,82 |
93,46 |
1,71 |
| Suku bunga |
24 |
4,82 |
93,46 |
1,71 |
| Kurs |
1 |
2,65 |
2,46 |
94,88 |
| Kurs |
6 |
5,06 |
3,91 |
91,02 |
| Kurs |
12 |
5,09 |
3,92 |
90,98 |
| Kurs |
24 |
5,09 |
3,92 |
90,98 |
own24 <- sapply(names(fe), function(v) 100 * unname(fe[[v]][24, v]))
Uji ketahanan
var_alt <- VAR(dY[, c("kurs", "inflasi", "bunga")], p = p, type = "const")
ir_alt <- irf(var_alt, n.ahead = H, ortho = TRUE, cumulative = TRUE, boot = TRUE, ci = 0.95, runs = RUNS)
vv <- vec2var(jt, r = 1); ir_vec <- irf(vv, n.ahead = H, ortho = TRUE, boot = FALSE)
sg <- function(o, g, r, b) (o$Lower[[g]][b + 1, r] > 0) | (o$Upper[[g]][b + 1, r] < 0)
tb <- do.call(rbind, lapply(list(c("kurs","inflasi"), c("kurs","bunga"), c("bunga","kurs"), c("bunga","inflasi"), c("inflasi","bunga")),
function(k) do.call(rbind, lapply(c(0, 3, 12, 24), function(b) data.frame(Pasangan = paste(nmv[k[1]], "→", nmv[k[2]]), Bulan = b,
Utama = paste0(fmt(ir$irf[[k[1]]][b + 1, k[2]], 3), ifelse(sg(ir, k[1], k[2], b), " *", "")),
Alternatif = paste0(fmt(ir_alt$irf[[k[1]]][b + 1, k[2]], 3), ifelse(sg(ir_alt, k[1], k[2], b), " *", "")),
VECM = fmt(ir_vec$irf[[k[1]]][b + 1, k[2]], 3))))))
knitr::kable(tb, row.names = FALSE, align = "lcccc", col.names = c("Guncangan → Respons", "Bulan", "Utama (inflasi → bunga → kurs)", "Alternatif (kurs → inflasi → bunga)", "VECM r = 1"),
caption = "Tabel 12. Perbandingan IRF kumulatif (* signifikan, CI bootstrap 95%)")
Tabel 12. Perbandingan IRF kumulatif (* signifikan, CI
bootstrap 95%)
| Kurs → Inflasi |
0 |
0,000 |
0,085 * |
0,000 |
| Kurs → Inflasi |
3 |
0,027 |
0,125 |
0,025 |
| Kurs → Inflasi |
12 |
0,010 |
0,107 |
-0,082 |
| Kurs → Inflasi |
24 |
0,010 |
0,107 |
-0,114 |
| Kurs → Suku bunga |
0 |
0,000 |
0,023 |
0,000 |
| Kurs → Suku bunga |
3 |
0,033 |
0,084 * |
0,032 |
| Kurs → Suku bunga |
12 |
0,038 |
0,097 * |
0,038 |
| Kurs → Suku bunga |
24 |
0,038 |
0,097 * |
0,038 |
| Suku bunga → Kurs |
0 |
0,276 |
0,000 |
0,263 |
| Suku bunga → Kurs |
3 |
0,726 * |
0,489 |
0,722 |
| Suku bunga → Kurs |
12 |
0,797 * |
0,527 |
0,781 |
| Suku bunga → Kurs |
24 |
0,797 * |
0,527 |
0,757 |
| Suku bunga → Inflasi |
0 |
0,000 |
0,000 |
0,000 |
| Suku bunga → Inflasi |
3 |
0,051 |
0,046 |
0,126 |
| Suku bunga → Inflasi |
12 |
0,037 |
0,035 |
0,045 |
| Suku bunga → Inflasi |
24 |
0,037 |
0,035 |
0,004 |
| Inflasi → Suku bunga |
0 |
0,014 |
0,010 |
0,016 |
| Inflasi → Suku bunga |
3 |
0,067 |
0,054 |
0,073 |
| Inflasi → Suku bunga |
12 |
0,081 |
0,066 |
0,089 |
| Inflasi → Suku bunga |
24 |
0,081 |
0,066 |
0,089 |
kor <- cor(residuals(var_d))["bunga", "kurs"]