library(pacman)
p_load(readxl, gganimate, transformr, tidyr, gifski, dynlm, fpp2, tidyverse, TSstudio, urca, forecast, zoo, tidyverse, fma, cat, expsmooth, dplyr, ggplot2, gt, fGarch, vars, tsibble, lubridate, ggthemes, forecast, urca, tseries, igraph)

1. Preprocesamiento y descripción de datos

1.1 y 1.2 y 2 Haga una descripción de las variables, ndique la fuente de datos y estacionariedad

PIB

# Leer el nuevo archivo
pib_data <- read_excel("PIB Real USA.xlsx")

# Asegurar que PIB REAL sea numérico
pib_data$`PIB REAL` <- as.numeric(pib_data$`PIB REAL`)

# Crear la serie de tiempo
pib <- ts(log(pib_data$`PIB REAL`), start = c(2002, 1), frequency = 4)

# Graficar
plot(pib, main = "Serie de tiempo: PIB real USA, 2017", col = "black", lwd = 2)

### Vemos que el logaritmo del PIB real de Estados Unidos presenta una tendencia al alza bastante notable con claros indicios de una estacionalidad fuerte, los datos fueron recopilados de la FRED.

# Test ADF sobre log(PIB REAL)
adf.test(pib)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  pib
## Dickey-Fuller = -2.2309, Lag order = 4, p-value = 0.4811
## alternative hypothesis: stationary
# Guardamos el resultado
resultado_adf <- adf.test(pib)

# Si p-value > 0.05, no es estacionaria
if (resultado_adf$p.value > 0.05) {
  cat("La serie NO es estacionaria. p-value =", resultado_adf$p.value, "\n")

  # Diferenciamos la serie
  dpib <- diff(pib)

  # Test ADF sobre la serie diferenciada
  resultado_adf_d <- adf.test(dpib)
  cat("Test ADF sobre la serie diferenciada: p-value =", resultado_adf_d$p.value, "\n")

  # Graficamos la serie original y diferenciada
  par(mfrow = c(2, 1))
  plot(pib, main = "PIB REAL en log (no diferenciada)", col = "black", lwd = 2)
  plot(dpib, main = "PIB REAL en log - Primera diferencia", col = "blue", lwd = 2)
} else {
  cat("La serie es estacionaria. p-value =", resultado_adf$p.value, "\n")
  plot(pib, main = "PIB REAL en log", col = "black", lwd = 2)
}
## La serie NO es estacionaria. p-value = 0.4810987
## Warning in adf.test(dpib): p-value smaller than printed p-value
## Test ADF sobre la serie diferenciada: p-value = 0.01

# Diferenciamos la serie logarítmica del PIB
pib_diff <- diff(pib)

Despues de la realizacion de la diferenciacion realizamos nuevamente el test de Dickey-Fuller en donde observamos que nuestra serie es estacionaria despues de la transformaciacion por lo que podemos proseguir con nuestro modelo

Inflacion

# Cargar el archivo Excel
data_inflacion <- read_excel("Inflacion USA var.xlsx")

# Visualizar los primeros registros
head(data_inflacion)
## # A tibble: 6 × 2
##   fecha               inflacion
##   <dttm>                  <dbl>
## 1 1955-04-01 00:00:00     0    
## 2 1955-07-01 00:00:00     0.499
## 3 1955-10-01 00:00:00     0.124
## 4 1956-01-01 00:00:00    -0.248
## 5 1956-04-01 00:00:00     0.871
## 6 1956-07-01 00:00:00     1.23
# 1. Cargar datos 
inflacion_data <- read_excel("Inflacion USA var.xlsx") 

# 2. Convertir a serie temporal 
# Extraer año y trimestre de la fecha
inflacion_ts <- ts(
  inflacion_data$inflacion,
  start = c(as.numeric(substr(inflacion_data$fecha[1], 1, 4)), 1),
  frequency = 4
)

# 3. Gráfica de la serie 
autoplot(inflacion_ts) +
  labs(
    title = "Inflación Trimestral Estados Unidos",
    subtitle = "Fuente: Federal Reserve Economic Data (FRED)",
    y = "Variación porcentual anual",
    x = "Trimestre"
  ) +
  theme_minimal() +
  scale_x_continuous(breaks = seq(start(inflacion_ts)[1], end(inflacion_ts)[1], by = 5))
## Scale for x is already present.
## Adding another scale for x, which will replace the existing scale.

# Lee los datos
inflacion_data <- read_excel("Inflacion USA var.xlsx")

# Asegúrate de que la columna fecha es tipo Date
inflacion_data <- inflacion_data %>%
  mutate(fecha = as.Date(fecha))

# Gráfica creativa
ggplot(inflacion_data, aes(x = fecha, y = inflacion)) +
  geom_area(fill = "#1f77b4", alpha = 0.2) +
  geom_line(color = "#2ca02c", linewidth = 1) +
  geom_point(color = "#d62728", size = 2) +
  geom_smooth(method = "loess", se = FALSE, color = "#9467bd", linetype = "dashed") +
  theme_economist() +
  labs(
    title = "Inflación Trimestral en Estados Unidos",
    subtitle = "Fuente: FRED",
    x = "Fecha",
    y = "Inflación (%)",
    caption = "Visualización creativa con ggplot2"
  ) +
  theme(
    plot.title = element_text(face = "bold", size = 16),
    axis.title = element_text(size = 12),
    panel.grid.minor = element_blank()
  )
## `geom_smooth()` using formula = 'y ~ x'

La variable de inflación utilizada en este análisis corresponde a la variación porcentual anual del índice de precios al consumidor para todos los bienes y servicios en Estados Unidos, conocida como “Consumer Price Index: All Items: Total for United States” (CPIAUCSL), publicada por el U.S. Bureau of Labor Statistics y disponible en la base de datos FRED. Esta variable mide el cambio en el nivel general de precios de una canasta representativa de bienes y servicios consumidos por los hogares urbanos, incluyendo alimentos, vivienda, transporte, vestimenta y otros rubros, y es el principal indicador para monitorear la inflación en la economía estadounidense. El CPI es ampliamente utilizado tanto en el análisis macroeconómico como en la formulación de política monetaria, y su variación anual refleja el ritmo al que aumentan los precios y, por tanto, el costo de vida para los consumidores.A lo largo del tiempo, la inflación trimestral en Estados Unidos ha mostrado una dinámica marcada por periodos de estabilidad y episodios de alta volatilidad. En la gráfica se observa cómo, desde mediados del siglo XX, la inflación se mantuvo baja y relativamente estable hasta finales de los años sesenta, para luego experimentar fuertes incrementos y picos durante las décadas de 1970 y principios de 1980, asociados principalmente a las crisis del petróleo y la estanflación. Posteriormente, gracias a la aplicación de políticas monetarias más restrictivas, la inflación descendió y se estabilizó en niveles bajos durante los años noventa y dos mil. Sin embargo, eventos como la crisis financiera de 2008-2009 y la pandemia de COVID-19 generaron caídas abruptas e incluso episodios de deflación, seguidos de un repunte y una mayor volatilidad en los años más recientes. La gráfica ilustra claramente estos ciclos: los picos en los años setenta y ochenta, la estabilidad en las décadas posteriores y los repuntes recientes, además de resaltar la tendencia de largo plazo y la variabilidad trimestral de la inflación, lo que refleja tanto los efectos de choques externos como la efectividad de la política monetaria estadounidense en el control de precios.

# Realizar prueba ADF para inflación
adf_result <- adf.test(inflacion_ts)
print(adf_result)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  inflacion_ts
## Dickey-Fuller = -3.244, Lag order = 6, p-value = 0.08094
## alternative hypothesis: stationary
# Si es necesario transformar la serie (si p-value > 0.05)
if (adf_result$p.value > 0.05) {
  # Calcular primera diferencia
  inflacion_diff <- diff(inflacion_ts)
  
  # Visualizar la serie diferenciada
  autoplot(inflacion_diff) +
    labs(title = "Primera diferencia de Inflación",
         y = "Diferencia (%)", 
         x = "Trimestre")
  
  # Volver a realizar prueba ADF para la serie diferenciada
  adf_diff_result <- adf.test(inflacion_diff)
  print(adf_diff_result)
}
## Warning in adf.test(inflacion_diff): p-value smaller than printed p-value
## 
##  Augmented Dickey-Fuller Test
## 
## data:  inflacion_diff
## Dickey-Fuller = -7.7149, Lag order = 6, p-value = 0.01
## alternative hypothesis: stationary

Estos resultados indican que la serie de inflación es integrada de orden 1, I(1), lo que significa que necesita ser diferenciada una vez para alcanzar la estacionariedad. Para el análisis VAR, deberás utilizar la primera diferencia de la inflación en lugar de la serie original, lo que garantizará que estás trabajando con una serie estacionaria y evitará resultados espurios en las estimaciones. Este hallazgo es consistente con la literatura económica, donde generalmente se encuentra que las series de inflación suelen ser I(1).

Tasa de Interes

# Cargar librerías
library(readxl)

# Leer el archivo Excel
datos <- read_excel("FEDFUNDS_quarterly.xlsx")

# Arreglar nombres para evitar espacios/tildes
names(datos) <- make.names(names(datos))

# Intenta detectar automáticamente la columna numérica
columna_num <- sapply(datos, is.numeric)
datos_num <- datos[, columna_num]

# Usar la columna de la tasa de interés (ajusta el nombre si es diferente)
tasa_interes <- datos$FEDFUNDS

# Crear la serie de tiempo (trimestral, desde 1954)
tasa_interes_ts <- ts(tasa_interes, start = c(1954, 1), frequency = 4)

# Graficar la serie de tiempo
plot(tasa_interes_ts, 
     main = "Serie de Tiempo: Tasa de Interés (FEDFUNDS)", 
     col = "black", lwd = 2, ylab = "Tasa de Interés", xlab = "Año")

### La tasa de interés analizada corresponde a la “Federal funds effective rate”, que representa el tipo de interés al cual las instituciones financieras estadounidenses se prestan fondos entre sí, generalmente de un día para otro, en el mercado interbancario. Esta tasa es determinada por el Comité Federal de Mercado Abierto (FOMC) de la Reserva Federal de los Estados Unidos y constituye una de las principales herramientas de política monetaria del país. A través de la manipulación de esta tasa, la Reserva Federal influye en el costo del crédito, la liquidez del sistema financiero y, en general, en la actividad económica, el empleo y la inflación. La serie histórica de la tasa de fondos federales es publicada oficialmente por la Reserva Federal y está disponible en la base de datos FRED bajo el nombre “Federal Funds Effective Rate”.Al analizar la gráfica de la tasa de interés a lo largo del tiempo, se observa una marcada variabilidad asociada a los distintos ciclos económicos y a las decisiones de política monetaria. Desde mediados de la década de 1950 hasta finales de los años setenta, la tasa muestra una tendencia ascendente, alcanzando su punto máximo a principios de la década de 1980, cuando supera el 15%. Este periodo coincide con los esfuerzos de la Reserva Federal por controlar la alta inflación, aplicando políticas monetarias restrictivas bajo la presidencia de Paul Volcker. Posteriormente, la tasa inicia una tendencia descendente, con fases de alzas y bajas que reflejan tanto la respuesta a recesiones como los intentos de estimular la economía. Durante los años noventa y dos mil, la tasa se mantiene en niveles moderados, con descensos pronunciados en respuesta a crisis como la burbuja tecnológica y la crisis financiera global de 2008, cuando se aproxima a cero. En la última década, la tasa permanece en niveles históricamente bajos, con incrementos recientes a partir de 2016 y un repunte más notorio tras la pandemia de COVID-19, en respuesta a las presiones inflacionarias. En conjunto, la gráfica evidencia cómo la tasa de interés ha sido utilizada activamente como instrumento de estabilización macroeconómica, adaptándose a los desafíos y cambios en el entorno económico nacional e internacional.

# Realizar prueba ADF 
adf_result <- adf.test(tasa_interes_ts)
print(adf_result)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  tasa_interes_ts
## Dickey-Fuller = -2.9689, Lag order = 6, p-value = 0.1679
## alternative hypothesis: stationary
  # Calcular primera diferencia
  tasa_interes_diff <- diff(tasa_interes_ts)
  
  # Visualizar la serie diferenciada
  autoplot(tasa_interes_diff) +
    labs(title = "Primera diferencia de tasa de interes",
         y = "Diferencia (%)", 
         x = "Trimestre")

  # Volver a realizar prueba ADF para la serie diferenciada
  adf_diff_result <- adf.test(tasa_interes_diff)
## Warning in adf.test(tasa_interes_diff): p-value smaller than printed p-value
  print(adf_diff_result)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  tasa_interes_diff
## Dickey-Fuller = -7.5027, Lag order = 6, p-value = 0.01
## alternative hypothesis: stationary

Despues de la realizacion de la diferenciacion realizamos nuevamente el test de Dickey-Fuller en donde observamos que nuestra serie es estacionaria despues de la transformaciacion por lo que podemos proseguir con nuestro modelo

Tipo de Cambio

# Leer los datos
data <- read_csv("CCUSSP01EZM650N.csv")
## Rows: 276 Columns: 2
## ── Column specification ────────────────────────────────────────────────────────
## Delimiter: ","
## dbl  (1): TCN
## date (1): Trimestre
## 
## ℹ Use `spec()` to retrieve the full column specification for this data.
## ℹ Specify the column types or set `show_col_types = FALSE` to quiet this message.
# NO USAR View(data) dentro de Rmd: es solo para modo interactivo
# data$Trimestre <- as.Date(data$Trimestre)

# Si ya está como fecha, omite esta línea
data$Trimestre <- as.Date(data$Trimestre)

# Crear columna de trimestre y formatear
data <- data %>%
  mutate(
    trimestre = as.yearqtr(Trimestre),
    trimestre_str = format(trimestre, "%Y Q%q")
  )

# Agrupar por trimestre y calcular promedio de TCN
data_trimestrales <- data %>%
  group_by(trimestre_str) %>%
  summarise(promedio_TCN = mean(TCN, na.rm = TRUE))

# Mostrar tabla
print(data_trimestrales)
## # A tibble: 92 × 2
##    trimestre_str promedio_TCN
##    <chr>                <dbl>
##  1 2002 Q1              0.867
##  2 2002 Q2              0.946
##  3 2002 Q3              0.983
##  4 2002 Q4              1.01 
##  5 2003 Q1              1.08 
##  6 2003 Q2              1.15 
##  7 2003 Q3              1.13 
##  8 2003 Q4              1.21 
##  9 2004 Q1              1.23 
## 10 2004 Q2              1.21 
## # ℹ 82 more rows
# ADF test
adf.test(data_trimestrales$promedio_TCN, alternative = "stationary")
## 
##  Augmented Dickey-Fuller Test
## 
## data:  data_trimestrales$promedio_TCN
## Dickey-Fuller = -2.9474, Lag order = 4, p-value = 0.1857
## alternative hypothesis: stationary
# Convertir a serie de tiempo trimestral
tipo_cambio <- ts(data_trimestrales$promedio_TCN, start = c(2002, 1), frequency = 4)

# Verificar primeros valores
head(tipo_cambio)
##           Qtr1      Qtr2      Qtr3      Qtr4
## 2002 0.8670667 0.9456667 0.9825333 1.0092667
## 2003 1.0831000 1.1460000
# Gráfico de la serie
ggplot(data_trimestrales, aes(x = trimestre_str, y = promedio_TCN, group = 1)) +
  geom_line(color = "steelblue", size = 1) +
  geom_point(color = "darkred", size = 2) +
  labs(
    title = "Serie de tiempo del tipo de cambio nominal (trimestral)",
    x = "Trimestre",
    y = "Tipo de cambio nominal"
  ) +
  theme_minimal() +
  theme(axis.text.x = element_text(angle = 45, hjust = 1)) +
  scale_x_discrete(
    breaks = data_trimestrales$trimestre_str[seq(1, nrow(data_trimestrales), by = 4)]
  )
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once every 8 hours.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.

La tasa de cambio nominal del dolar Estadounidense representado en estos datos muestra el valor de esta moneda frente al euro. Estos datos estan dados trimestralmente desde el 1 de Enero de 2002 hasta el 1 de Diciembre de 2024. Los datos fueron obtenidos de la FRED (Federal Reserve Economic Data).

# Realizar prueba ADF 
adf_result <- adf.test(tipo_cambio)
print(adf_result)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  tipo_cambio
## Dickey-Fuller = -2.9474, Lag order = 4, p-value = 0.1857
## alternative hypothesis: stationary
  # Calcular primera diferencia
 tipo_cambio_diff <- diff(tipo_cambio)
  
  # Visualizar la serie diferenciada
  autoplot( tipo_cambio_diff) +
    labs(title = "Primera diferencia de tipo de cambio",
         y = "Diferencia (%)", 
         x = "Trimestre")

  # Volver a realizar prueba ADF para la serie diferenciada
  adf_diff_result <- adf.test(tipo_cambio_diff)
## Warning in adf.test(tipo_cambio_diff): p-value smaller than printed p-value
  print(adf_diff_result)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  tipo_cambio_diff
## Dickey-Fuller = -5.3731, Lag order = 4, p-value = 0.01
## alternative hypothesis: stationary

Despues de la realizacion de la diferenciacion realizamos nuevamente el test de Dickey-Fuller en donde observamos que nuestra serie es estacionaria despues de la transformaciacion por lo que podemos proseguir con nuestro modelo

3. Estimación del modelo VAR

3.1 ¿Cuántos rezagos seleccionó y por qué?

# --- 3.1 Selección de rezagos para el modelo VAR ---

# Asegúrate de que todas las series diferenciadas tengan la misma longitud
n <- min(length(inflacion_diff), length(pib_diff), length(tasa_interes_diff), length(tipo_cambio_diff))

# Recorta las series para que todas tengan la misma longitud
inflacion_diff <- inflacion_diff[1:n]
pib_diff <- pib_diff[1:n]
tasa_interes_diff <- tasa_interes_diff[1:n]
tipo_cambio_diff <- tipo_cambio_diff[1:n]

# Junta las series diferenciadas en un solo objeto
datos_var_diff <- cbind(
  inflacion = inflacion_diff,
  pib = pib_diff,
  tasa_interes = tasa_interes_diff,
  tipo_cambio = tipo_cambio_diff
)

# Elimina posibles NA (por ejemplo, por la diferenciación)
datos_var_diff <- na.omit(datos_var_diff)

# Selección del número óptimo de rezagos usando criterios de información
criterios_lag <- VARselect(datos_var_diff, lag.max = 8, type = "const")

# Mostrar los resultados de la selección de rezagos
criterios_lag$selection
## AIC(n)  HQ(n)  SC(n) FPE(n) 
##      5      3      1      5
criterios_lag$criteria
##                    1             2             3             4             5
## AIC(n) -1.554948e+01 -1.586977e+01 -1.629130e+01 -1.644794e+01 -1.646946e+01
## HQ(n)  -1.531532e+01 -1.544828e+01 -1.568249e+01 -1.565180e+01 -1.548600e+01
## SC(n)  -1.496663e+01 -1.482063e+01 -1.477589e+01 -1.446624e+01 -1.402148e+01
## FPE(n)  1.766850e-07  1.286277e-07  8.497536e-08  7.361412e-08  7.360633e-08
##                    6             7             8
## AIC(n) -1.644695e+01 -1.634783e+01 -1.625666e+01
## HQ(n)  -1.527616e+01 -1.498971e+01 -1.471122e+01
## SC(n)  -1.353268e+01 -1.296728e+01 -1.240983e+01
## FPE(n)  7.774464e-08  8.986589e-08  1.048104e-07

Para determinar el número de rezagos óptimo en el modelo VAR, se utilizaron varios criterios de información: Akaike (AIC), Hannan-Quinn (HQ), Schwarz (SC) y el Error de Predicción Final (FPE). El criterio de Akaike y el FPE indican que el modelo más adecuado es el que incluye cinco rezagos, ya que en ambos casos se obtiene el valor más bajo en ese punto. Por su parte, el criterio Hannan-Quinn sugiere un modelo con tres rezagos, mientras que el criterio Schwarz recomienda un modelo más parsimonioso, con solo un rezago.Los datos revelan que el mejor ajuste se logra con cinco rezagos. Esto se evidencia en la coincidencia entre los criterios AIC y FPE, lo que indica que un modelo con cinco rezagos logra explicar mejor las variaciones de la serie y reducir los errores de predicción. Esta coherencia entre dos criterios distintos refuerza la decisión, ya que no solo se trata de una convención metodológica, sino de una respuesta concreta de los datos que sugiere que incorporar más rezagos mejora el poder explicativo y predictivo del modelo. En contraste, reducir el número de rezagos, como proponen HQ y SC, simplificaría el modelo, pero a costa de omitir parte importante de la dinámica temporal contenida en las series. Por lo tanto, se justifica optar por un modelo VAR con cinco rezagos, tanto por criterios estadísticos como por la evidencia empírica que muestran los datos.

4. Impulsos y respuestas

4.1 Análisis de funciones de impulso-respuesta (IRF)

# Especifica explícitamente 5 rezagos en vez del criterio óptimo
modelo_var5 <- VAR(datos_var_diff, p = 5, type = "const")

# Resumen del modelo
summary(modelo_var5)
## 
## VAR Estimation Results:
## ========================= 
## Endogenous variables: inflacion, pib, tasa_interes, tipo_cambio 
## Deterministic variables: const 
## Sample size: 86 
## Log Likelihood: 309.82 
## Roots of the characteristic polynomial:
## 0.9627 0.9627 0.9625 0.8689 0.8689 0.8156 0.8156 0.7953 0.7953 0.7925 0.7925 0.7896 0.7896 0.749 0.749 0.6467 0.6467 0.5462 0.5462 0.1586
## Call:
## VAR(y = datos_var_diff, p = 5, type = "const")
## 
## 
## Estimation results for equation inflacion: 
## ========================================== 
## inflacion = inflacion.l1 + pib.l1 + tasa_interes.l1 + tipo_cambio.l1 + inflacion.l2 + pib.l2 + tasa_interes.l2 + tipo_cambio.l2 + inflacion.l3 + pib.l3 + tasa_interes.l3 + tipo_cambio.l3 + inflacion.l4 + pib.l4 + tasa_interes.l4 + tipo_cambio.l4 + inflacion.l5 + pib.l5 + tasa_interes.l5 + tipo_cambio.l5 + const 
## 
##                  Estimate Std. Error t value Pr(>|t|)   
## inflacion.l1    -0.374651   0.117320  -3.193  0.00217 **
## pib.l1          -0.316870   2.865309  -0.111  0.91228   
## tasa_interes.l1  0.036856   0.078356   0.470  0.63967   
## tipo_cambio.l1   0.158220   0.920085   0.172  0.86400   
## inflacion.l2    -0.247944   0.129242  -1.918  0.05945 . 
## pib.l2          -1.865303   2.723730  -0.685  0.49588   
## tasa_interes.l2  0.013670   0.087968   0.155  0.87699   
## tipo_cambio.l2  -0.187690   0.973015  -0.193  0.84764   
## inflacion.l3     0.054939   0.144026   0.381  0.70411   
## pib.l3          -0.481638   2.652081  -0.182  0.85646   
## tasa_interes.l3 -0.068941   0.089908  -0.767  0.44598   
## tipo_cambio.l3  -0.730966   1.026977  -0.712  0.47916   
## inflacion.l4     0.024454   0.144384   0.169  0.86603   
## pib.l4          -5.613409   2.729438  -2.057  0.04374 * 
## tasa_interes.l4 -0.008374   0.082493  -0.102  0.91945   
## tipo_cambio.l4   1.497248   1.092829   1.370  0.17538   
## inflacion.l5    -0.012691   0.137357  -0.092  0.92667   
## pib.l5          -4.850696   2.984796  -1.625  0.10897   
## tasa_interes.l5 -0.081026   0.067223  -1.205  0.23244   
## tipo_cambio.l5  -1.103937   1.023806  -1.078  0.28490   
## const            0.088447   0.064575   1.370  0.17550   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## 
## Residual standard error: 0.3753 on 65 degrees of freedom
## Multiple R-Squared: 0.3946,  Adjusted R-squared: 0.2083 
## F-statistic: 2.119 on 20 and 65 DF,  p-value: 0.01223 
## 
## 
## Estimation results for equation pib: 
## ==================================== 
## pib = inflacion.l1 + pib.l1 + tasa_interes.l1 + tipo_cambio.l1 + inflacion.l2 + pib.l2 + tasa_interes.l2 + tipo_cambio.l2 + inflacion.l3 + pib.l3 + tasa_interes.l3 + tipo_cambio.l3 + inflacion.l4 + pib.l4 + tasa_interes.l4 + tipo_cambio.l4 + inflacion.l5 + pib.l5 + tasa_interes.l5 + tipo_cambio.l5 + const 
## 
##                   Estimate Std. Error t value Pr(>|t|)    
## inflacion.l1    -0.0060411  0.0051921  -1.164 0.248878    
## pib.l1          -0.2551231  0.1268067  -2.012 0.048378 *  
## tasa_interes.l1  0.0074638  0.0034677   2.152 0.035086 *  
## tipo_cambio.l1   0.0245422  0.0407191   0.603 0.548792    
## inflacion.l2    -0.0011259  0.0057197  -0.197 0.844567    
## pib.l2          -0.2723158  0.1205410  -2.259 0.027237 *  
## tasa_interes.l2 -0.0072541  0.0038931  -1.863 0.066935 .  
## tipo_cambio.l2   0.0009748  0.0430616   0.023 0.982008    
## inflacion.l3    -0.0048577  0.0063740  -0.762 0.448748    
## pib.l3          -0.3161226  0.1173701  -2.693 0.008989 ** 
## tasa_interes.l3  0.0142189  0.0039789   3.574 0.000670 ***
## tipo_cambio.l3   0.0301258  0.0454497   0.663 0.509778    
## inflacion.l4    -0.0062235  0.0063898  -0.974 0.333681    
## pib.l4           0.4854044  0.1207936   4.018 0.000155 ***
## tasa_interes.l4 -0.0065567  0.0036508  -1.796 0.077149 .  
## tipo_cambio.l4  -0.0425550  0.0483641  -0.880 0.382162    
## inflacion.l5    -0.0036351  0.0060788  -0.598 0.551927    
## pib.l5          -0.2201973  0.1320947  -1.667 0.100333    
## tasa_interes.l5  0.0011086  0.0029750   0.373 0.710633    
## tipo_cambio.l5   0.0447208  0.0453094   0.987 0.327298    
## const            0.0087080  0.0028578   3.047 0.003338 ** 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## 
## Residual standard error: 0.01661 on 65 degrees of freedom
## Multiple R-Squared: 0.7207,  Adjusted R-squared: 0.6348 
## F-statistic: 8.387 on 20 and 65 DF,  p-value: 2.296e-11 
## 
## 
## Estimation results for equation tasa_interes: 
## ============================================= 
## tasa_interes = inflacion.l1 + pib.l1 + tasa_interes.l1 + tipo_cambio.l1 + inflacion.l2 + pib.l2 + tasa_interes.l2 + tipo_cambio.l2 + inflacion.l3 + pib.l3 + tasa_interes.l3 + tipo_cambio.l3 + inflacion.l4 + pib.l4 + tasa_interes.l4 + tipo_cambio.l4 + inflacion.l5 + pib.l5 + tasa_interes.l5 + tipo_cambio.l5 + const 
## 
##                 Estimate Std. Error t value Pr(>|t|)    
## inflacion.l1     0.49783    0.17633   2.823 0.006303 ** 
## pib.l1          -2.75646    4.30658  -0.640 0.524385    
## tasa_interes.l1  0.41182    0.11777   3.497 0.000854 ***
## tipo_cambio.l1   0.88905    1.38289   0.643 0.522554    
## inflacion.l2     0.72077    0.19425   3.710 0.000431 ***
## pib.l2           4.53369    4.09378   1.107 0.272178    
## tasa_interes.l2 -0.38183    0.13222  -2.888 0.005261 ** 
## tipo_cambio.l2  -1.28112    1.46245  -0.876 0.384249    
## inflacion.l3     0.74608    0.21647   3.447 0.001000 ** 
## pib.l3          -6.40083    3.98609  -1.606 0.113168    
## tasa_interes.l3 -0.07301    0.13513  -0.540 0.590834    
## tipo_cambio.l3   0.33040    1.54355   0.214 0.831178    
## inflacion.l4     0.87087    0.21701   4.013 0.000158 ***
## pib.l4           1.79208    4.10236   0.437 0.663674    
## tasa_interes.l4  0.15831    0.12399   1.277 0.206197    
## tipo_cambio.l4  -1.27219    1.64253  -0.775 0.441425    
## inflacion.l5     0.50503    0.20645   2.446 0.017149 *  
## pib.l5          10.18522    4.48617   2.270 0.026508 *  
## tasa_interes.l5 -0.16485    0.10104  -1.632 0.107608    
## tipo_cambio.l5  -0.26070    1.53879  -0.169 0.865992    
## const           -0.05540    0.09706  -0.571 0.570099    
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## 
## Residual standard error: 0.564 on 65 degrees of freedom
## Multiple R-Squared: 0.6593,  Adjusted R-squared: 0.5545 
## F-statistic:  6.29 on 20 and 65 DF,  p-value: 6.815e-09 
## 
## 
## Estimation results for equation tipo_cambio: 
## ============================================ 
## tipo_cambio = inflacion.l1 + pib.l1 + tasa_interes.l1 + tipo_cambio.l1 + inflacion.l2 + pib.l2 + tasa_interes.l2 + tipo_cambio.l2 + inflacion.l3 + pib.l3 + tasa_interes.l3 + tipo_cambio.l3 + inflacion.l4 + pib.l4 + tasa_interes.l4 + tipo_cambio.l4 + inflacion.l5 + pib.l5 + tasa_interes.l5 + tipo_cambio.l5 + const 
## 
##                  Estimate Std. Error t value Pr(>|t|)   
## inflacion.l1    -0.026760   0.015293  -1.750   0.0849 . 
## pib.l1          -0.443622   0.373496  -1.188   0.2393   
## tasa_interes.l1  0.005603   0.010214   0.549   0.5852   
## tipo_cambio.l1   0.340764   0.119934   2.841   0.0060 **
## inflacion.l2     0.007604   0.016847   0.451   0.6532   
## pib.l2          -0.300763   0.355041  -0.847   0.4000   
## tasa_interes.l2 -0.005367   0.011467  -0.468   0.6413   
## tipo_cambio.l2  -0.153646   0.126834  -1.211   0.2301   
## inflacion.l3     0.014461   0.018774   0.770   0.4439   
## pib.l3          -0.209776   0.345702  -0.607   0.5461   
## tasa_interes.l3  0.017794   0.011720   1.518   0.1338   
## tipo_cambio.l3  -0.088689   0.133868  -0.663   0.5100   
## inflacion.l4    -0.001783   0.018821  -0.095   0.9248   
## pib.l4          -0.138433   0.355785  -0.389   0.6985   
## tasa_interes.l4 -0.010170   0.010753  -0.946   0.3478   
## tipo_cambio.l4  -0.262475   0.142451  -1.843   0.0700 . 
## inflacion.l5    -0.022996   0.017905  -1.284   0.2036   
## pib.l5          -0.316759   0.389071  -0.814   0.4185   
## tasa_interes.l5  0.007563   0.008763   0.863   0.3913   
## tipo_cambio.l5   0.169061   0.133454   1.267   0.2097   
## const            0.005115   0.008417   0.608   0.5455   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## 
## Residual standard error: 0.04892 on 65 degrees of freedom
## Multiple R-Squared: 0.319,   Adjusted R-squared: 0.1094 
## F-statistic: 1.522 on 20 and 65 DF,  p-value: 0.104 
## 
## 
## 
## Covariance matrix of residuals:
##              inflacion        pib tasa_interes tipo_cambio
## inflacion     0.140819 -0.0011564     0.017483   0.0003130
## pib          -0.001156  0.0002758    -0.001524   0.0000398
## tasa_interes  0.017483 -0.0015243     0.318114   0.0046424
## tipo_cambio   0.000313  0.0000398     0.004642   0.0023927
## 
## Correlation matrix of residuals:
##              inflacion     pib tasa_interes tipo_cambio
## inflacion      1.00000 -0.1856       0.0826     0.01705
## pib           -0.18555  1.0000      -0.1627     0.04900
## tasa_interes   0.08260 -0.1627       1.0000     0.16827
## tipo_cambio    0.01705  0.0490       0.1683     1.00000
# Funciones impulso-respuesta con 5 rezagos
irf_pib_tasa <- irf(modelo_var5, impulse = "tasa_interes", response = "pib", 
                   n.ahead = 12, boot = TRUE, ci = 0.95)
irf_pib_inflacion <- irf(modelo_var5, impulse = "inflacion", response = "pib", 
                        n.ahead = 12, boot = TRUE, ci = 0.95)

# Gráficos
par(mfrow = c(2, 1))
plot(irf_pib_tasa, main = "Respuesta del PIB a un shock en la Tasa de Interés (VAR-5)")

plot(irf_pib_inflacion, main = "Respuesta del PIB a un shock en la Inflación (VAR-5)")

¿Cómo reacciona el PIB ante un shock en la tasa de interés?

Al analizar las funciones de impulso-respuesta del modelo VAR con 5 rezagos, se observan patrones dinámicos más complejos que difieren significativamente del modelo con menos rezagos. En la primera gráfica, que muestra la respuesta del PIB ante un shock en la inflación, se aprecia un comportamiento fluctuante que alterna entre valores positivos y negativos a lo largo del horizonte temporal. Inicialmente hay una respuesta negativa en el segundo trimestre, seguida por un repunte positivo en los trimestres 3-4, y posteriormente continúa oscilando. Sin embargo, las bandas de confianza del 95% (líneas rojas punteadas) incluyen el valor cero en todos los periodos, lo que sugiere que estos efectos no son estadísticamente significativos, a pesar de la magnitud aparente de las fluctuaciones.

¿Y ante un shock en la inflación?

En la segunda gráfica, correspondiente a la respuesta del PIB ante un shock en la tasa de interés, se observa un patrón marcadamente cíclico y regular, con oscilaciones que alternan entre efectos positivos (trimestres 2, 4, 8 y 12) y negativos (trimestres 3, 5, 7, 9 y 11). Este comportamiento cíclico es característico de modelos con múltiples rezagos y contrasta con la respuesta más directa y persistente que suelen mostrar los modelos más parsimoniosos. Al igual que en el caso anterior, las bandas de confianza incluyen el cero a lo largo de toda la trayectoria, indicando que estos efectos tampoco son estadísticamente significativos. Estos resultados sugieren que, si bien el modelo VAR(5) captura dinámicas más complejas, la inclusión de tantos rezagos podría estar modelando ruido estadístico más que relaciones económicas fundamentales, lo que explicaría la falta de significancia estadística en las respuestas observadas.

5. Descomposición de varianza

  1. 5.1 ¿Qué variable explica más la variabilidad del PIB en el mediano plazo?
# Descomposición de varianza
fevd_var5 <- fevd(modelo_var5, n.ahead = 12)
plot(fevd_var5, names = "PIB")
## Warning in plot.varfevd(fevd_var5, names = "PIB"): 
## Invalid variable name(s) supplied, using first variable.

### La gráfica de descomposición de varianza del error de pronóstico (FEVD) para el PIB muestra cómo se distribuye la variabilidad del PIB entre las diferentes variables del sistema en un horizonte temporal de 12 trimestres.En el horizonte inmediato (trimestre 1), prácticamente el 100% de la varianza del error de pronóstico del PIB es explicada por sus propios shocks, lo cual es un patrón típico en los modelos VAR. A medida que el horizonte de pronóstico se extiende, la contribución de los shocks propios del PIB disminuye gradualmente, aunque sigue siendo el factor dominante incluso en el trimestre 12, donde explica aproximadamente entre el 60-70% de la variabilidad.La tasa de interés emerge como el segundo factor más importante en la explicación de las fluctuaciones del PIB, llegando a representar entre un 15-20% de la varianza en el horizonte más largo. Esto confirma la relevancia de la política monetaria como mecanismo de transmisión económica. La inflación contribuye en menor medida (aproximadamente 10-15%), mientras que el tipo de cambio muestra la menor influencia relativa sobre la variabilidad del PIB (5-10%).Este resultado sugiere que, si bien la dinámica interna del PIB es el principal determinante de sus fluctuaciones, las decisiones de política monetaria tienen un impacto significativo en el desempeño económico en el mediano plazo, por encima de factores como la inflación o el tipo de cambio.

6. Resultados

¿Qué variables están más relacionadas?

¿Qué implicaciones podrían tener estos hallazgos para la política económica?

El análisis del modelo VAR con cinco rezagos revela importantes relaciones dinámicas entre las variables macroeconómicas estudiadas. Los resultados de la descomposición de varianza muestran que, aunque el PIB explica principalmente su propia variabilidad (aproximadamente un 80% incluso en horizontes de 12 trimestres), existe una notable influencia de la tasa de interés, que emerge como la segunda variable más importante en la determinación de las fluctuaciones del producto. Esto confirma la efectividad de la política monetaria como mecanismo de transmisión económica en Estados Unidos. La inflación y el tipo de cambio, por su parte, juegan roles secundarios en la explicación de la variabilidad del PIB, con contribuciones inferiores pero que aumentan gradualmente a lo largo del horizonte temporal.Las funciones de impulso-respuesta revelan patrones interesantes pero complejos. La respuesta del PIB ante un shock en la tasa de interés muestra un comportamiento cíclico pronunciado, alternando entre efectos positivos y negativos, lo que sugiere que los ajustes de política monetaria generan ondulaciones en la actividad económica más que efectos unidireccionales. Mientras tanto, la respuesta del PIB ante shocks inflacionarios es menos definida, con patrones fluctuantes y menor significancia estadística, lo que indica una relación más ambigua entre inflación y crecimiento. Esta asimetría en las respuestas sugiere que la economía estadounidense es más sensible a las decisiones de política monetaria que a los shocks inflacionarios puros.Estos hallazgos tienen importantes implicaciones para la política económica. Primero, confirman el papel dominante de la política monetaria en la gestión macroeconómica, sugiriendo que la Reserva Federal dispone de herramientas efectivas para influir en la trayectoria del PIB. Sin embargo, el patrón oscilatorio en la respuesta a los shocks de tasa de interés advierte sobre posibles efectos no lineales de los ajustes monetarios, lo que exige prudencia en la magnitud y frecuencia de los cambios de tasas. La relativa independencia del PIB respecto a la inflación en el corto plazo podría proporcionar cierto margen de maniobra para políticas expansivas en contextos de inflación moderada. Por último, la limitada influencia del tipo de cambio refuerza la idea de que la economía estadounidense, debido a su tamaño y orientación interna, mantiene cierta autonomía frente a fluctuaciones cambiarias, permitiendo que la política económica se enfoque principalmente en objetivos domésticos como el crecimiento y la estabilidad de precios.