← Catálogo · Capítulo 8

T08_mST_CP_Macro.R

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

library(tidyverse)
library(urca)
library(tsDyn)
library(tseries)

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
lpib <- log(pib$pib_indice)
lcon <- log(con$consumo_indice)
pausa("\n  [Datos cargados. Pulsa ENTER...]")

# ── 2. REGRESION DE LARGO PLAZO Y ENGLE-GRANGER ───
reg_lp <- lm(lcon ~ lpib)
cat(sprintf("Elasticidad consumo-renta estimada: %.3f\n", coef(reg_lp)["lpib"]))
po <- po.test(cbind(lcon, lpib))
cat(sprintf("Phillips-Ouliaris: stat=%.3f  p=%.3f -> %s\n", po$statistic, po$p.value,
            ifelse(po$p.value < 0.05, "se rechaza H0 (cointegrados)", "NO se rechaza H0 (sin evidencia)")))
pausa()

# ── 3. CONTRASTE DE JOHANSEN ──────────────────────
Y <- cbind(lpib = lpib, lcon = lcon)
jo_trace <- ca.jo(Y, type = "trace", ecdet = "const", K = 2, spec = "transitory")
print(summary(jo_trace))
pausa()

# ── 4. SENSIBILIDAD: ecdet = "none" ───────────────
jo_none <- ca.jo(Y, type = "trace", ecdet = "none", K = 2, spec = "transitory")
cat(sprintf("Traza r=0 con ecdet='const': %.2f (cv 5%%=%.2f)\n",
            jo_trace@teststat[2], jo_trace@cval[2, "5pct"]))
cat(sprintf("Traza r=0 con ecdet='none' : %.2f (cv 5%%=%.2f)\n",
            jo_none@teststat[2], jo_none@cval[2, "5pct"]))
cat("La conclusion sobre el rango de cointegracion depende de la especificacion determinista.\n")
pausa()

# ── 5. VECM (r=1) Y SIGNO DE LOS COEFICIENTES ─────
m_vecm <- VECM(Y, lag = 1, r = 1, estim = "ML", LRinclude = "const")
s <- summary(m_vecm)
cat("Vector de cointegracion (beta):\n")
print(m_vecm$model.specific$beta)
cat("\nCoeficientes de ajuste (ECT):\n")
print(s$coefficients[, "ECT"])
cat("\nAmbos positivos -> mecanismo NO estabilizador: evidencia fragil de cointegracion.\n")

# === FIN Caso Práctico Macro — Tema 08 (sistema PIB-Consumo, cointegración) ===