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)
# 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)
# 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'

# 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
# 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
# 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.

# 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
# --- 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
# 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)")

# 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.