author: “Ricaurte Vicente Patiño Chaves”
datos <- read_excel("D:/CARTER/UNIVERSIDAD DE NARIÑO/SEMESTRES ECONOMIA/6 SEXTO SEMESTRE/ECONOMETRIA II/datos.xlsx")
View(datos)
datosV1 <- as.numeric(as.character(datos$V1))
V1ts <- ts(datosV1, start = c(2009, 1), frequency = 4)
datosV2 <- as.numeric(as.character(datos$V2))
V2ts <- ts(datosV2, start = c(2009, 1), frequency = 4)
datosV3 <- as.numeric(as.character(datos$V3))
V3ts <- ts(datosV3, start = c(2009, 1), frequency = 4)
par(mfrow=c(3,1), mar=c(4,4,3,2))
plot(V1ts, main="Serie V1 (2009-2024)", ylab="V1", xlab="Tiempo", col="blue", lwd=2)
plot(V2ts, main="Serie V2 (2009-2024)", ylab="V2", xlab="Tiempo", col="red", lwd=2)
plot(V3ts, main="Serie V3 (2009-2024)", ylab="V3", xlab="Tiempo", col="green", lwd=2)
df.V1 <- ur.df(V1ts, lags = 0)
summary(df.V1)
##
## ###############################################
## # Augmented Dickey-Fuller Test Unit Root Test #
## ###############################################
##
## Test regression none
##
##
## Call:
## lm(formula = z.diff ~ z.lag.1 - 1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -25189.8 -563.4 -79.9 901.4 10747.5
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## z.lag.1 0.01186 0.00195 6.08 9.51e-08 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 4248 on 59 degrees of freedom
## Multiple R-squared: 0.3852, Adjusted R-squared: 0.3748
## F-statistic: 36.97 on 1 and 59 DF, p-value: 9.507e-08
##
##
## Value of test-statistic is: 6.0804
##
## Critical values for test statistics:
## 1pct 5pct 10pct
## tau1 -2.6 -1.95 -1.61
Interpretación: Si el estadístico tau es mayor a -3.43 (valor crítico 5%), V1 tiene raíz unitaria (no es estacionaria).
dV1 <- diff(V1ts)
df.dV1 <- ur.df(dV1, lags = 0)
summary(df.dV1)
##
## ###############################################
## # Augmented Dickey-Fuller Test Unit Root Test #
## ###############################################
##
## Test regression none
##
##
## Call:
## lm(formula = z.diff ~ z.lag.1 - 1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -16274 1125 1126 1859 22853
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## z.lag.1 -0.4221 0.1084 -3.895 0.000256 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 4472 on 58 degrees of freedom
## Multiple R-squared: 0.2074, Adjusted R-squared: 0.1937
## F-statistic: 15.17 on 1 and 58 DF, p-value: 0.0002563
##
##
## Value of test-statistic is: -3.8954
##
## Critical values for test statistics:
## 1pct 5pct 10pct
## tau1 -2.6 -1.95 -1.61
par(mfrow=c(1,1), mar=c(5,4,4,2))
plot(dV1, main="Primera Diferencia de V1", ylab="ΔV1", xlab="Tiempo", col="blue", lwd=2)
Interpretación: La primera diferencia de V1 es estacionaria I(0) y se usará en el modelo VAR.
df.V2 <- ur.df(V2ts, lags = 0)
summary(df.V2)
##
## ###############################################
## # Augmented Dickey-Fuller Test Unit Root Test #
## ###############################################
##
## Test regression none
##
##
## Call:
## lm(formula = z.diff ~ z.lag.1 - 1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.39683 -0.19478 -0.09444 0.20536 0.70556
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## z.lag.1 -0.002645 0.017388 -0.152 0.88
##
## Residual standard error: 0.2597 on 59 degrees of freedom
## Multiple R-squared: 0.0003921, Adjusted R-squared: -0.01655
## F-statistic: 0.02315 on 1 and 59 DF, p-value: 0.8796
##
##
## Value of test-statistic is: -0.1521
##
## Critical values for test statistics:
## 1pct 5pct 10pct
## tau1 -2.6 -1.95 -1.61
Interpretación: Si el estadístico tau es mayor a -3.43 (valor crítico 5%), V2 tiene raíz unitaria (no es estacionaria).
dV2 <- diff(V2ts)
df.dV2 <- ur.df(dV2, lags = 0)
summary(df.dV2)
##
## ###############################################
## # Augmented Dickey-Fuller Test Unit Root Test #
## ###############################################
##
## Test regression none
##
##
## Call:
## lm(formula = z.diff ~ z.lag.1 - 1)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.45178 -0.04822 -0.04822 0.05000 0.45178
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## z.lag.1 -0.24112 0.08422 -2.863 0.00583 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.1672 on 58 degrees of freedom
## Multiple R-squared: 0.1238, Adjusted R-squared: 0.1087
## F-statistic: 8.196 on 1 and 58 DF, p-value: 0.005832
##
##
## Value of test-statistic is: -2.8629
##
## Critical values for test statistics:
## 1pct 5pct 10pct
## tau1 -2.6 -1.95 -1.61
par(mfrow=c(1,1), mar=c(5,4,4,2))
plot(dV2, main="Primera Diferencia de V2", ylab="ΔV2", xlab="Tiempo", col="red", lwd=2)
Interpretación: La primera diferencia de V2 es estacionaria I(0) y pasa al modelo VAR.
datos <- ts.intersect(dV1, dV2)
print("Datos para el VAR:")
## [1] "Datos para el VAR:"
head(datos)
## dV1 dV2
## 2009 Q2 1667 0.3
## 2009 Q3 2778 0.3
## 2009 Q4 2555 0.3
## 2010 Q1 2667 0.2
## 2010 Q2 2667 0.2
## 2010 Q3 3444 0.2
var_select <- VARselect(datos, lag.max = 12)
print(var_select)
## $selection
## AIC(n) HQ(n) SC(n) FPE(n)
## 2 2 1 2
##
## $criteria
## 1 2 3 4 5
## AIC(n) 13.36558 13.21868 13.26680 13.25852 13.22659
## HQ(n) 13.45398 13.36600 13.47305 13.52370 13.55069
## SC(n) 13.59949 13.60851 13.81257 13.96022 14.08422
## FPE(n) 637883.71409 551390.21393 580119.22043 578100.36527 564196.82584
## 6 7 8 9 10
## AIC(n) 13.25488 13.38090 13.47774 13.53798 13.54822
## HQ(n) 13.63791 13.82286 13.97862 14.09779 14.16696
## SC(n) 14.26845 14.55040 14.80317 15.01935 15.18552
## FPE(n) 586894.11842 676141.16105 760605.49178 830215.18071 868705.51701
## 11 12
## AIC(n) 1.366482e+01 1.373102e+01
## HQ(n) 1.434249e+01 1.446761e+01
## SC(n) 1.545805e+01 1.568019e+01
## FPE(n) 1.020457e+06 1.152700e+06
Interpretación de Criterios de Selección:
AIC: Criterio de Información de Akaike (menor valor es mejor) HQ: Criterio Hannan-Quinn (menor valor es mejor) SC: Criterio de Schwarz/BIC (menor valor es mejor) FPE: Error de predicción final (menor valor es mejor)
var1 <- VAR(datos, p=1)
summary(var1)
##
## VAR Estimation Results:
## =========================
## Endogenous variables: dV1, dV2
## Deterministic variables: const
## Sample size: 59
## Log Likelihood: -548.469
## Roots of the characteristic polynomial:
## 0.737 0.2904
## Call:
## VAR(y = datos, p = 1)
##
##
## Estimation results for equation dV1:
## ====================================
## dV1 = dV1.l1 + dV2.l1 + const
##
## Estimate Std. Error t value Pr(>|t|)
## dV1.l1 0.3156 0.1315 2.401 0.0197 *
## dV2.l1 1080.7898 2206.3438 0.490 0.6261
## const 2225.1855 678.7512 3.278 0.0018 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
##
## Residual standard error: 4168 on 56 degrees of freedom
## Multiple R-Squared: 0.1154, Adjusted R-squared: 0.08376
## F-statistic: 3.651 on 2 and 56 DF, p-value: 0.03232
##
##
## Estimation results for equation dV2:
## ====================================
## dV2 = dV1.l1 + dV2.l1 + const
##
## Estimate Std. Error t value Pr(>|t|)
## dV1.l1 9.846e-06 5.202e-06 1.893 0.0636 .
## dV2.l1 7.117e-01 8.731e-02 8.152 4.36e-11 ***
## const -3.220e-02 2.686e-02 -1.199 0.2357
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
##
## Residual standard error: 0.1649 on 56 degrees of freedom
## Multiple R-Squared: 0.6063, Adjusted R-squared: 0.5923
## F-statistic: 43.13 on 2 and 56 DF, p-value: 4.608e-12
##
##
##
## Covariance matrix of residuals:
## dV1 dV2
## dV1 1.737e+07 144.1853
## dV2 1.442e+02 0.0272
##
## Correlation matrix of residuals:
## dV1 dV2
## dV1 1.0000 0.2098
## dV2 0.2098 1.0000
Interpretación de Resultados: Ecuación para dV1:
Coeficiente de dV1.l1: efecto de V1 rezagada un período sobre V1 actual Coeficiente de dV2.l1: efecto de V2 rezagada un período sobre V1 actual const: término constante
Ecuación para dV2:
Coeficiente de dV1.l1: efecto de V1 rezagada un período sobre V2 actual Coeficiente de dV2.l1: efecto de V2 rezagada un período sobre V2 actual const: término constante
Estadísticas de Bondad de Ajuste:
R-squared: proporción de varianza explicada por el modelo Adj. R-squared: R-squared ajustado por grados de libertad F-statistic: significancia global del modelo
f_var1 <- predict(var1, n.ahead = 8, ci=0.95)
print(f_var1)
## $dV1
## fcst lower upper CI
## [1,] 3692.534 -4476.193 11861.26 8168.727
## [2,] 3258.735 -5336.329 11853.80 8595.064
## [3,] 3164.335 -5493.074 11821.74 8657.410
## [4,] 3160.183 -5512.924 11833.29 8673.107
## [5,] 3176.118 -5503.055 11855.29 8679.173
## [6,] 3193.376 -5488.683 11875.44 8682.060
## [7,] 3207.697 -5475.854 11891.25 8683.551
## [8,] 3218.716 -5465.629 11903.06 8684.345
##
## $dV2
## fcst lower upper CI
## [1,] -0.12202196 -0.4452754 0.2012314 0.3232534
## [2,] -0.08268545 -0.4969963 0.3316254 0.4143109
## [3,] -0.05896018 -0.5196386 0.4017183 0.4606785
## [4,] -0.04300401 -0.5280746 0.4420665 0.4850705
## [5,] -0.03168866 -0.5297420 0.4663647 0.4980533
## [6,] -0.02347846 -0.5284940 0.4815371 0.5050155
## [7,] -0.01746522 -0.5262330 0.4913026 0.5087678
## [8,] -0.01304451 -0.5238410 0.4977520 0.5107965
par(mfrow=c(2,1), mar=c(4,4,2,1), oma=c(1,1,2,1))
plot(f_var1, main="Pronósticos VAR - 8 períodos adelante")
Interpretación de Pronósticos:
fcst: valores pronosticados para cada variable lower/upper: límites inferior y superior del intervalo de confianza al 95% Los pronósticos son para las primeras diferencias Para obtener niveles se debe sumar acumulativamente a los últimos valores observados La precisión decrece con el horizonte temporal
IR_dV1 <- irf(var1, impulse = "dV2", response = "dV1", n.ahead = 16)
print(IR_dV1)
##
## Impulse response coefficients
## $dV2
## dV1
## [1,] 0.000000
## [2,] 174.287201
## [3,] 179.050911
## [4,] 146.649347
## [5,] 112.342786
## [6,] 84.032106
## [7,] 62.288837
## [8,] 46.009434
## [9,] 33.937885
## [10,] 25.019998
## [11,] 18.441536
## [12,] 13.591595
## [13,] 10.016809
## [14,] 7.382147
## [15,] 5.440436
## [16,] 4.009442
## [17,] 2.954838
##
##
## Lower Band, CI= 0.95
## $dV2
## dV1
## [1,] 0.000000
## [2,] -706.607283
## [3,] -604.292606
## [4,] -439.350413
## [5,] -264.158316
## [6,] -183.713189
## [7,] -132.323111
## [8,] -82.530344
## [9,] -61.323471
## [10,] -39.711104
## [11,] -27.627829
## [12,] -19.440713
## [13,] -13.678553
## [14,] -9.568464
## [15,] -6.423195
## [16,] -4.298667
## [17,] -2.870577
##
##
## Upper Band, CI= 0.95
## $dV2
## dV1
## [1,] 0.00000
## [2,] 635.99267
## [3,] 599.40819
## [4,] 509.27289
## [5,] 430.49734
## [6,] 342.40361
## [7,] 267.16856
## [8,] 219.68326
## [9,] 182.47319
## [10,] 152.63560
## [11,] 129.07465
## [12,] 110.14807
## [13,] 94.23375
## [14,] 80.81599
## [15,] 69.47248
## [16,] 60.64048
## [17,] 53.12627
par(mfrow=c(1,1), mar=c(5,4,4,2))
plot(IR_dV1, main="Respuesta de ΔV1 ante choque en ΔV2")
IR_dV2 <- irf(var1, impulse = "dV1", response = "dV2", n.ahead = 16)
print(IR_dV2)
##
## Impulse response coefficients
## $dV1
## dV2
## [1,] 0.034595114
## [2,] 0.065657233
## [3,] 0.060048850
## [4,] 0.047640236
## [5,] 0.036092593
## [6,] 0.026884626
## [7,] 0.019896047
## [8,] 0.014686852
## [9,] 0.010830753
## [10,] 0.007983965
## [11,] 0.005884529
## [12,] 0.004336891
## [13,] 0.003196207
## [14,] 0.002355522
## [15,] 0.001735952
## [16,] 0.001279345
## [17,] 0.000942839
##
##
## Lower Band, CI= 0.95
## $dV1
## dV2
## [1,] 1.526265e-03
## [2,] 6.632601e-03
## [3,] 3.086515e-03
## [4,] 1.635921e-03
## [5,] 8.952217e-04
## [6,] 3.843224e-05
## [7,] -1.905974e-04
## [8,] -6.532065e-04
## [9,] -4.549793e-04
## [10,] -4.081683e-04
## [11,] -3.057497e-04
## [12,] -1.998897e-04
## [13,] -1.805444e-04
## [14,] -1.273080e-04
## [15,] -7.819545e-05
## [16,] -4.322766e-05
## [17,] -3.034039e-05
##
##
## Upper Band, CI= 0.95
## $dV1
## dV2
## [1,] 0.064438291
## [2,] 0.111130873
## [3,] 0.101632560
## [4,] 0.086549774
## [5,] 0.066902856
## [6,] 0.050385739
## [7,] 0.038178094
## [8,] 0.030482698
## [9,] 0.025185861
## [10,] 0.021000643
## [11,] 0.017110139
## [12,] 0.013932366
## [13,] 0.011385329
## [14,] 0.009340091
## [15,] 0.007873598
## [16,] 0.006637586
## [17,] 0.005595803
par(mfrow=c(1,1), mar=c(5,4,4,2))
plot(IR_dV2, main="Respuesta de ΔV2 ante choque en ΔV1")
Interpretación de Funciones Impulso-Respuesta:
Muestra cómo responde cada variable a lo largo del tiempo ante un choque de una desviación estándar en la otra variable irf: función impulso-respuesta puntual Lower/Upper: bandas de confianza al 95% Si la función está por encima de cero: efecto positivo Si la función está por debajo de cero: efecto negativo Si las bandas incluyen el cero: efecto no significativo estadísticamente
serial_test <- serial.test(var1, lags.pt=12, type="PT.asymptotic")
print(serial_test)
##
## Portmanteau Test (asymptotic)
##
## data: Residuals of VAR object var1
## Chi-squared = 50.961, df = 44, p-value = 0.2188
## $serial
##
## Portmanteau Test (asymptotic)
##
## data: Residuals of VAR object var1
## Chi-squared = 50.961, df = 44, p-value = 0.2188
Interpretación:
H₀: No hay autocorrelación serial Si p-value > 0.05: No rechazamos H₀ (no hay autocorrelación)
arch_test <- arch.test(var1, lags.multi=5)
print(arch_test)
##
## ARCH (multivariate)
##
## data: Residuals of VAR object var1
## Chi-squared = 82.812, df = 45, p-value = 0.0005081
## $arch.mul
##
## ARCH (multivariate)
##
## data: Residuals of VAR object var1
## Chi-squared = 82.812, df = 45, p-value = 0.0005081
Interpretación:
H₀: Homocedasticidad (varianza constante) Si p-value > 0.05: No rechazamos H₀ (varianza constante)
norm_test <- normality.test(var1, multivariate.only=TRUE)
print(norm_test)
## $JB
##
## JB-Test (multivariate)
##
## data: Residuals of VAR object var1
## Chi-squared = 508.53, df = 4, p-value < 2.2e-16
##
##
## $Skewness
##
## Skewness only (multivariate)
##
## data: Residuals of VAR object var1
## Chi-squared = 22.921, df = 2, p-value = 1.054e-05
##
##
## $Kurtosis
##
## Kurtosis only (multivariate)
##
## data: Residuals of VAR object var1
## Chi-squared = 485.61, df = 2, p-value < 2.2e-16
## $jb.mul
## $jb.mul$JB
##
## JB-Test (multivariate)
##
## data: Residuals of VAR object var1
## Chi-squared = 508.53, df = 4, p-value < 2.2e-16
##
##
## $jb.mul$Skewness
##
## Skewness only (multivariate)
##
## data: Residuals of VAR object var1
## Chi-squared = 22.921, df = 2, p-value = 1.054e-05
##
##
## $jb.mul$Kurtosis
##
## Kurtosis only (multivariate)
##
## data: Residuals of VAR object var1
## Chi-squared = 485.61, df = 2, p-value < 2.2e-16
Interpretación:
H₀: Los residuos siguen distribución normal multivariada Si p-value > 0.05: No rechazamos H₀ (normalidad)
var_roots <- roots(var1)
print("Raíces características:")
## [1] "Raíces características:"
print(var_roots)
## [1] 0.7369697 0.2903629
if(all(var_roots < 1)) {
print("✓ El sistema VAR es ESTABLE (todas las raíces < 1)")
} else {
print("✗ El sistema VAR es INESTABLE (alguna raíz ≥ 1)")
}
## [1] "✓ El sistema VAR es ESTABLE (todas las raíces < 1)"
Interpretación: Si todas las raíces características están dentro del círculo unitario (< 1), el sistema VAR es estable.
Ambas variables son I(1): integradas de orden 1 Sus primeras diferencias son I(0): estacionarias ,variables macroeconómicas con tendencia
interdependencia dinámica entre V1 y V2 Los coeficientes muestran cómo el pasado de cada variable afecta el presente de ambas R² indica qué tan bien explica el modelo la variabilidad de cada variable
planificación y toma de decisiones Intervalos de confianza reflejan la incertidumbre La precisión decrece con el horizonte temporal
transmisión entre variables Importante para entender efectos de políticas o choques externos La significancia se evalúa mediante las bandas de confianza
Verifican los supuestos del modelo VAR Fundamentales para la validez de las inferencias Problemas detectados requieren respecificación del modelo