# ══════════════════════════════════════════════════ # 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) ===