← Catálogo · Capítulo 7

T07_mST_CP_Macro.R

Ver crudo
# ══════════════════════════════════════════════════
# T07 · Caso práctico Macro — Sistema PIB-Consumo (INE)
# Abre primero mSeriesTemporales.Rproj en RStudio
# Datos: data/pib_trimestral_espana.RData, data/consumo_trimestral_espana.RData
# ══════════════════════════════════════════════════

library(tidyverse)
library(vars)

pausa <- function(msg = "\n  [Pulsa ENTER para continuar...]") {
  if (interactive()) { cat(msg); invisible(readline()) }
}

# ── 1. CARGA Y PREPARACION ────────────────────────
load("data/pib_trimestral_espana.RData")
load("data/consumo_trimestral_espana.RData")
pib <- pib_trimestral_espana
con <- consumo_trimestral_espana

dlpib <- diff(log(pib$pib_indice))
dlcon <- diff(log(con$consumo_indice))
Y_ts <- ts(cbind(dlpib = dlpib, dlcon = dlcon), start = c(1995, 2), frequency = 4)

cat(sprintf("Correlacion contemporanea PIB-Consumo (tasas de crecimiento): %.3f\n", cor(dlpib, dlcon)))
pausa()

# ── 2. SELECCION DEL ORDEN ────────────────────────
vs <- VARselect(Y_ts, lag.max = 8, type = "const")
print(vs$selection)
pausa()

# ── 3. ESTIMACION DEL VAR(1) ──────────────────────
m1 <- VAR(Y_ts, p = 1, type = "const")
print(summary(m1))
cat("Raices (estabilidad):\n")
print(roots(m1))
pausa()

# ── 4. CAUSALIDAD DE GRANGER ──────────────────────
print(causality(m1, cause = "dlpib")$Granger)
print(causality(m1, cause = "dlcon")$Granger)
cat("Con p=1, ninguna direccion es significativa: compatible con la hipotesis\n")
cat("de la renta permanente (el consumo no deberia ser predecible).\n")
pausa()

# ── 5. IRF ORTOGONALIZADA (PIB PRIMERO) ───────────
set.seed(2026)
ir <- irf(m1, impulse = "dlpib", response = "dlcon", n.ahead = 8, ortho = TRUE, boot = TRUE, runs = 500)
plot(ir)
pausa()

# ── 6. FEVD ────────────────────────────────────────
fv <- fevd(m1, n.ahead = 8)
cat("FEVD del PIB:\n"); print(round(fv$dlpib, 3))
cat("FEVD del Consumo:\n"); print(round(fv$dlcon, 3))
pausa()

# ── 7. PREDICCION A 4 TRIMESTRES (NIVEL) ──────────
fc <- predict(m1, n.ahead = 4, ci = 0.95)
ult_pib <- tail(pib$pib_indice, 1); ult_con <- tail(con$consumo_indice, 1)
pib_fc <- ult_pib * cumprod(1 + fc$fcst$dlpib[, "fcst"])
con_fc <- ult_con * cumprod(1 + fc$fcst$dlcon[, "fcst"])
cat(sprintf("PIB:     %.1f -> %.1f (%+.2f%%)\n", ult_pib, tail(pib_fc, 1), (tail(pib_fc,1)/ult_pib-1)*100))
cat(sprintf("Consumo: %.1f -> %.1f (%+.2f%%)\n", ult_con, tail(con_fc, 1), (tail(con_fc,1)/ult_con-1)*100))

# === FIN Caso Práctico Macro — Tema 07 (sistema PIB-Consumo, VAR) ===