← Catálogo · Capítulo 7

T07_mST_Script_VAR.R

Ver crudo
# ══════════════════════════════════════════════════
# T07 · Series Temporales — Modelos VAR
# Abre primero mSeriesTemporales.Rproj en RStudio
# ══════════════════════════════════════════════════

library(tidyverse)
library(vars)

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

set.seed(2026)

# ── 1. SIMULAR UN VAR(1) BIVARIANTE CONOCIDO ──────
A <- matrix(c(0.5, 0.3, 0.2, 0.4), nrow = 2, byrow = TRUE)
n <- 300
Sigma <- matrix(c(1, 0.6, 0.6, 1), nrow = 2)
L <- chol(Sigma)
Y <- matrix(0, n, 2)
for (t in 2:n) {
  eps <- as.numeric(t(L) %*% rnorm(2))
  Y[t, ] <- A %*% Y[t - 1, ] + eps
}
colnames(Y) <- c("y1", "y2")
plot.ts(Y, main = "VAR(1) simulado")
pausa()

# ── 2. ESTABILIDAD: RAICES DE LA MATRIZ COMPANION ─
cat("Valores propios de A (deben tener modulo < 1):\n")
print(eigen(A)$values)
pausa()

# ── 3. ESTIMAR EL VAR Y RECUPERAR A ───────────────
m <- VAR(Y, p = 1, type = "none")
cat("Coeficientes estimados (verdadero A = 0.5,0.2 / 0.3,0.4):\n")
print(sapply(m$varresult, coef))
pausa()

# ── 4. CAUSALIDAD DE GRANGER ──────────────────────
print(causality(m, cause = "y1")$Granger)
pausa()

# ── 5. IRF ORTOGONALIZADA (CHOLESKY) ──────────────
ir <- irf(m, impulse = "y1", response = "y2", n.ahead = 10, ortho = TRUE, boot = FALSE)
plot(ir)
cat("El orden de Cholesky (y1 antes que y2) es una hipotesis de identificacion,\n")
cat("no un resultado de los datos: invertirlo cambia las IRF/FEVD.\n")
pausa()

# ── 6. FEVD ────────────────────────────────────────
fv <- fevd(m, n.ahead = 10)
print(round(fv$y1, 3))
print(round(fv$y2, 3))

# === FIN Script T07 — Modelos VAR ===