library(vars)
## Warning: package 'vars' was built under R version 4.3.3
## Loading required package: MASS
## Loading required package: strucchange
## Warning: package 'strucchange' was built under R version 4.3.3
## Loading required package: zoo
## Warning: package 'zoo' was built under R version 4.3.3
##
## Attaching package: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
## Loading required package: sandwich
## Warning: package 'sandwich' was built under R version 4.3.3
## Loading required package: urca
## Warning: package 'urca' was built under R version 4.3.3
## Loading required package: lmtest
## Warning: package 'lmtest' was built under R version 4.3.3
library(readxl)
library(forecast)
## Warning: package 'forecast' was built under R version 4.3.3
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
#Cargar datos
df <- read.csv2("C:/Users/karsu/OneDrive - dane.gov.co/Desktop/LUIS CARLOS/PROYECTO DE GRADO/DATOS/DATA_SERIE2.csv")
head(df)
## AÑO MES SECUESTRO EXTORSION
## 1 2015 1 20 652
## 2 2015 2 15 650
## 3 2015 3 18 574
## 4 2015 4 9 595
## 5 2015 5 14 609
## 6 2015 6 17 549
class(df)
## [1] "data.frame"
dim(df)
## [1] 120 4
###Gráfico
par(mfrow=c(2,1))
plot.ts(df$SECUESTRO, main="Secuestro", ylab="",xlab="") ###Secuestro
plot.ts(df$EXTORSION, main="Extorsión", ylab="",xlab="") ##Extorsión
par(mfrow=c(1,1))
### Dar formato de serie de tiempo
##Para secuestro
sec <- ts(df$SECUESTRO, start = 2015, freq= 12)
##Para Extorsión
ext <- ts(df$EXTORSION, start = 2015, freq= 12)
class(sec)
## [1] "ts"
class(ext)
## [1] "ts"
##Convertimos a logaritmos para poder comparar entre unidades
#para secuestro
lsec <- log(sec)
#para extorsión
lext <- log(ext)
##Se gráfican
ts.plot(lsec, lext, col=c("blue","red"))
### las graficas no tiene un componente de estacionaridad.
################Pruebas#############################################
#prueba de raiz unitaria para empleo
#aplicar ADF sin constante ni tendencia
adf_1lsec <- summary(ur.df(lsec,lags = 1))
adf_1lsec ####rechazo H0: por lo tanto la serie es estacionaria
##
## ###############################################
## # Augmented Dickey-Fuller Test Unit Root Test #
## ###############################################
##
## Test regression none
##
##
## Call:
## lm(formula = z.diff ~ z.lag.1 - 1 + z.diff.lag)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.89944 -0.24807 0.07132 0.32047 1.41516
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## z.lag.1 -0.006028 0.015347 -0.393 0.695
## z.diff.lag -0.444259 0.083579 -5.315 5.22e-07 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.4384 on 116 degrees of freedom
## Multiple R-squared: 0.2011, Adjusted R-squared: 0.1873
## F-statistic: 14.6 on 2 and 116 DF, p-value: 2.219e-06
##
##
## Value of test-statistic is: -0.3928
##
## Critical values for test statistics:
## 1pct 5pct 10pct
## tau1 -2.58 -1.95 -1.62
#Para aplicar la prueba ADF con constante o deriva
adf_2lsec <- summary(ur.df(lsec,type = "drift",lags = 1))
adf_2lsec
##
## ###############################################
## # Augmented Dickey-Fuller Test Unit Root Test #
## ###############################################
##
## Test regression drift
##
##
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + z.diff.lag)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.92622 -0.20452 0.01719 0.28550 0.83209
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.08036 0.25701 4.204 5.22e-05 ***
## z.lag.1 -0.41240 0.09773 -4.220 4.91e-05 ***
## z.diff.lag -0.23416 0.09277 -2.524 0.013 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.4099 on 115 degrees of freedom
## Multiple R-squared: 0.3074, Adjusted R-squared: 0.2953
## F-statistic: 25.52 on 2 and 115 DF, p-value: 6.734e-10
##
##
## Value of test-statistic is: -4.2196 8.9229
##
## Critical values for test statistics:
## 1pct 5pct 10pct
## tau2 -3.46 -2.88 -2.57
## phi1 6.52 4.63 3.81
#Para aplicar la prueba ADF con tendencia
adf_3lsec <- summary(ur.df(lsec,type = "trend",lags = 1))
adf_3lsec
##
## ###############################################
## # Augmented Dickey-Fuller Test Unit Root Test #
## ###############################################
##
## Test regression trend
##
##
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + tt + z.diff.lag)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.93041 -0.22209 0.01455 0.28165 0.76139
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.084890 0.254538 4.262 4.19e-05 ***
## z.lag.1 -0.462067 0.100621 -4.592 1.14e-05 ***
## tt 0.002061 0.001142 1.806 0.0736 .
## z.diff.lag -0.214880 0.092488 -2.323 0.0219 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.406 on 114 degrees of freedom
## Multiple R-squared: 0.3266, Adjusted R-squared: 0.3089
## F-statistic: 18.43 on 3 and 114 DF, p-value: 8.089e-10
##
##
## Value of test-statistic is: -4.5922 7.1521 10.7075
##
## Critical values for test statistics:
## 1pct 5pct 10pct
## tau3 -3.99 -3.43 -3.13
## phi2 6.22 4.75 4.07
## phi3 8.43 6.49 5.47
#prueba de raiz unitaria para extorsión
#aplicar ADF sin constante ni tendencia
adf_1lext <- summary(ur.df(lext,lags = 1))
adf_1lext #### rechazo H0: por lo tanto la serie es estacionaria
##
## ###############################################
## # Augmented Dickey-Fuller Test Unit Root Test #
## ###############################################
##
## Test regression none
##
##
## Call:
## lm(formula = z.diff ~ z.lag.1 - 1 + z.diff.lag)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.84626 -0.10710 0.01548 0.10592 1.82748
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## z.lag.1 0.0002137 0.0041312 0.052 0.959
## z.diff.lag -0.1520081 0.0918887 -1.654 0.101
##
## Residual standard error: 0.2894 on 116 degrees of freedom
## Multiple R-squared: 0.02305, Adjusted R-squared: 0.006208
## F-statistic: 1.369 on 2 and 116 DF, p-value: 0.2586
##
##
## Value of test-statistic is: 0.0517
##
## Critical values for test statistics:
## 1pct 5pct 10pct
## tau1 -2.58 -1.95 -1.62
#Para aplicar la prueba ADF con constante o deriva
adf_2lext <- summary(ur.df(lext,type = "drift",lags = 1))
adf_2lext
##
## ###############################################
## # Augmented Dickey-Fuller Test Unit Root Test #
## ###############################################
##
## Test regression drift
##
##
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + z.diff.lag)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.05301 -0.09054 0.01701 0.11895 1.53445
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 1.22212 0.39505 3.094 0.00248 **
## z.lag.1 -0.18887 0.06125 -3.084 0.00256 **
## z.diff.lag -0.05215 0.09436 -0.553 0.58158
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.2792 on 115 degrees of freedom
## Multiple R-squared: 0.09777, Adjusted R-squared: 0.08208
## F-statistic: 6.231 on 2 and 115 DF, p-value: 0.002696
##
##
## Value of test-statistic is: -3.0835 4.7865
##
## Critical values for test statistics:
## 1pct 5pct 10pct
## tau2 -3.46 -2.88 -2.57
## phi1 6.52 4.63 3.81
#tau2 serie sin rezago
#phi1 serie con rezago
#Para aplicar la prueba ADF con tendencia
adf_3lext <- summary(ur.df(lext,type = "trend",lags = 1))
adf_3lext
##
## ###############################################
## # Augmented Dickey-Fuller Test Unit Root Test #
## ###############################################
##
## Test regression trend
##
##
## Call:
## lm(formula = z.diff ~ z.lag.1 + 1 + tt + z.diff.lag)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.13665 -0.09117 0.01782 0.10652 1.28830
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 2.904771 0.508801 5.709 9.16e-08 ***
## z.lag.1 -0.497490 0.086280 -5.766 7.06e-08 ***
## tt 0.005020 0.001064 4.719 6.80e-06 ***
## z.diff.lag 0.087038 0.091570 0.951 0.344
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.2565 on 114 degrees of freedom
## Multiple R-squared: 0.2452, Adjusted R-squared: 0.2253
## F-statistic: 12.34 on 3 and 114 DF, p-value: 4.742e-07
##
##
## Value of test-statistic is: -5.766 11.2026 16.7654
##
## Critical values for test statistics:
## 1pct 5pct 10pct
## tau3 -3.99 -3.43 -3.13
## phi2 6.22 4.75 4.07
## phi3 8.43 6.49 5.47
##Cuantas diferencias
ndiffs(lsec )
## [1] 1
ndiffs(lext)
## [1] 1
#para que las variables sean estacionarias se procede a generar las
#primera diferencias en las variables.
#para generar la primera diferencia del logaritmo de secuestro
dlsec <- diff(lsec)
#generar la primera diferencia del logaritmo de extorsión
dlext <- diff(lext)
### graficamos las variables en diferencias
ts.plot(dlsec,dlext,col=c("blue","red"))
###Causalidad de granger
## la cusalidad del empleo hacia el desempelo
grangertest(dlext~dlsec, order=1) #
## Granger causality test
##
## Model 1: dlext ~ Lags(dlext, 1:1) + Lags(dlsec, 1:1)
## Model 2: dlext ~ Lags(dlext, 1:1)
## Res.Df Df F Pr(>F)
## 1 115
## 2 116 -1 0.0576 0.8108
#P-valor=0.8108,Acepto Ho, por lo tanto no existe causalidad la extorsión no afecta el secuestro
grangertest(dlsec~dlext, order=1)
## Granger causality test
##
## Model 1: dlsec ~ Lags(dlsec, 1:1) + Lags(dlext, 1:1)
## Model 2: dlsec ~ Lags(dlsec, 1:1)
## Res.Df Df F Pr(>F)
## 1 115
## 2 116 -1 0.2182 0.6413
#P-valor=0.6413,Acepto Ho, por lo tanto no existe causalidad.
#para la creacion del var se procede a crear un nuevo objeto con las
#variables estacionarias y transformadas en series de tiempo.
can_var1 <- data.frame(dlsec,dlext)
VARselect(can_var1,lag.max = 12)
## $selection
## AIC(n) HQ(n) SC(n) FPE(n)
## 9 2 2 9
##
## $criteria
## 1 2 3 4 5
## AIC(n) -4.60968058 -4.747417545 -4.733014570 -4.807272226 -4.794972322
## HQ(n) -4.54892193 -4.646153127 -4.591244385 -4.624996274 -4.572190603
## SC(n) -4.45980233 -4.497620457 -4.383298648 -4.357637469 -4.245418730
## FPE(n) 0.00995529 0.008675248 0.008803197 0.008176628 0.008283295
## 6 7 8 9 10
## AIC(n) -4.79740758 -4.795273119 -4.887507863 -4.954224904 -4.923406150
## HQ(n) -4.53412009 -4.491479866 -4.543208843 -4.569420117 -4.498095596
## SC(n) -4.14793515 -4.045881857 -4.038197766 -4.004995972 -3.874258384
## FPE(n) 0.00827104 0.008299535 0.007581243 0.007107426 0.007349765
## 11 12
## AIC(n) -4.94472758 -4.909759315
## HQ(n) -4.47891125 -4.403437227
## SC(n) -3.79566097 -3.660773878
## FPE(n) 0.00721852 0.007505093
#se deben usar 2 o 9 rezagos
#p=2 o 9
#estimar ambos modelos y luego comparar:
var2 <- VAR(can_var1, p = 2)
var9 <- VAR(can_var1, p = 9)
summary(var2)
##
## VAR Estimation Results:
## =========================
## Endogenous variables: dlsec, dlext
## Deterministic variables: const
## Sample size: 117
## Log Likelihood: -76.404
## Roots of the characteristic polynomial:
## 0.6307 0.6307 0.1865 0.1865
## Call:
## VAR(y = can_var1, p = 2)
##
##
## Estimation results for equation dlsec:
## ======================================
## dlsec = dlsec.l1 + dlext.l1 + dlsec.l2 + dlext.l2 + const
##
## Estimate Std. Error t value Pr(>|t|)
## dlsec.l1 -0.609218 0.088623 -6.874 3.72e-10 ***
## dlext.l1 0.147852 0.133907 1.104 0.271897
## dlsec.l2 -0.343508 0.088514 -3.881 0.000176 ***
## dlext.l2 0.322175 0.133761 2.409 0.017646 *
## const 0.007476 0.038196 0.196 0.845177
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
##
## Residual standard error: 0.4128 on 112 degrees of freedom
## Multiple R-Squared: 0.3151, Adjusted R-squared: 0.2906
## F-statistic: 12.88 on 4 and 112 DF, p-value: 1.166e-08
##
##
## Estimation results for equation dlext:
## ======================================
## dlext = dlsec.l1 + dlext.l1 + dlsec.l2 + dlext.l2 + const
##
## Estimate Std. Error t value Pr(>|t|)
## dlsec.l1 0.044008 0.062518 0.704 0.4829
## dlext.l1 -0.177592 0.094463 -1.880 0.0627 .
## dlsec.l2 0.069862 0.062441 1.119 0.2656
## dlext.l2 -0.105804 0.094361 -1.121 0.2646
## const 0.007746 0.026945 0.287 0.7743
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
##
## Residual standard error: 0.2912 on 112 degrees of freedom
## Multiple R-Squared: 0.04254, Adjusted R-squared: 0.008349
## F-statistic: 1.244 on 4 and 112 DF, p-value: 0.2964
##
##
##
## Covariance matrix of residuals:
## dlsec dlext
## dlsec 0.17043 0.02539
## dlext 0.02539 0.08481
##
## Correlation matrix of residuals:
## dlsec dlext
## dlsec 1.0000 0.2112
## dlext 0.2112 1.0000
summary(var9)
##
## VAR Estimation Results:
## =========================
## Endogenous variables: dlsec, dlext
## Deterministic variables: const
## Sample size: 110
## Log Likelihood: -40.035
## Roots of the characteristic polynomial:
## 0.9056 0.9056 0.8796 0.8796 0.8483 0.8483 0.8455 0.8455 0.8416 0.8416 0.8402 0.8369 0.8369 0.7772 0.7772 0.7432 0.7432 0.4554
## Call:
## VAR(y = can_var1, p = 9)
##
##
## Estimation results for equation dlsec:
## ======================================
## dlsec = dlsec.l1 + dlext.l1 + dlsec.l2 + dlext.l2 + dlsec.l3 + dlext.l3 + dlsec.l4 + dlext.l4 + dlsec.l5 + dlext.l5 + dlsec.l6 + dlext.l6 + dlsec.l7 + dlext.l7 + dlsec.l8 + dlext.l8 + dlsec.l9 + dlext.l9 + const
##
## Estimate Std. Error t value Pr(>|t|)
## dlsec.l1 -0.76636 0.10613 -7.221 1.52e-10 ***
## dlext.l1 0.09692 0.14506 0.668 0.50573
## dlsec.l2 -0.67108 0.13654 -4.915 3.91e-06 ***
## dlext.l2 0.44793 0.14980 2.990 0.00358 **
## dlsec.l3 -0.49016 0.15769 -3.108 0.00251 **
## dlext.l3 0.21880 0.15968 1.370 0.17398
## dlsec.l4 -0.54415 0.16164 -3.366 0.00112 **
## dlext.l4 -0.04441 0.16551 -0.268 0.78904
## dlsec.l5 -0.34213 0.16709 -2.048 0.04348 *
## dlext.l5 -0.08644 0.16866 -0.513 0.60952
## dlsec.l6 -0.32883 0.15926 -2.065 0.04179 *
## dlext.l6 0.14401 0.16248 0.886 0.37778
## dlsec.l7 -0.16684 0.15317 -1.089 0.27891
## dlext.l7 0.02763 0.15807 0.175 0.86164
## dlsec.l8 -0.08945 0.13288 -0.673 0.50255
## dlext.l8 -0.20473 0.15181 -1.349 0.18081
## dlsec.l9 0.10953 0.10372 1.056 0.29378
## dlext.l9 0.01294 0.14410 0.090 0.92866
## const 0.01924 0.03738 0.515 0.60791
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
##
## Residual standard error: 0.3878 on 91 degrees of freedom
## Multiple R-Squared: 0.4781, Adjusted R-squared: 0.3749
## F-statistic: 4.631 on 18 and 91 DF, p-value: 4.532e-07
##
##
## Estimation results for equation dlext:
## ======================================
## dlext = dlsec.l1 + dlext.l1 + dlsec.l2 + dlext.l2 + dlsec.l3 + dlext.l3 + dlsec.l4 + dlext.l4 + dlsec.l5 + dlext.l5 + dlsec.l6 + dlext.l6 + dlsec.l7 + dlext.l7 + dlsec.l8 + dlext.l8 + dlsec.l9 + dlext.l9 + const
##
## Estimate Std. Error t value Pr(>|t|)
## dlsec.l1 0.04963 0.07410 0.670 0.504643
## dlext.l1 -0.35538 0.10128 -3.509 0.000701 ***
## dlsec.l2 0.09160 0.09533 0.961 0.339136
## dlext.l2 -0.31247 0.10459 -2.988 0.003613 **
## dlsec.l3 -0.04179 0.11010 -0.380 0.705174
## dlext.l3 -0.30930 0.11148 -2.774 0.006711 **
## dlsec.l4 0.02228 0.11285 0.197 0.843942
## dlext.l4 -0.41793 0.11556 -3.617 0.000489 ***
## dlsec.l5 -0.01166 0.11666 -0.100 0.920627
## dlext.l5 -0.30221 0.11775 -2.566 0.011907 *
## dlsec.l6 -0.01725 0.11119 -0.155 0.877050
## dlext.l6 -0.14687 0.11344 -1.295 0.198692
## dlsec.l7 -0.11499 0.10694 -1.075 0.285079
## dlext.l7 -0.22449 0.11036 -2.034 0.044845 *
## dlsec.l8 -0.13604 0.09277 -1.466 0.145997
## dlext.l8 -0.15029 0.10599 -1.418 0.159606
## dlsec.l9 -0.09499 0.07242 -1.312 0.192939
## dlext.l9 -0.19996 0.10061 -1.988 0.049863 *
## const 0.03403 0.02610 1.304 0.195573
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
##
## Residual standard error: 0.2708 on 91 degrees of freedom
## Multiple R-Squared: 0.3059, Adjusted R-squared: 0.1686
## F-statistic: 2.228 on 18 and 91 DF, p-value: 0.007038
##
##
##
## Covariance matrix of residuals:
## dlsec dlext
## dlsec 0.15043 0.02565
## dlext 0.02565 0.07333
##
## Correlation matrix of residuals:
## dlsec dlext
## dlsec 1.0000 0.2442
## dlext 0.2442 1.0000
#para obtener el gráfico de la variable observado vs la estimada del modelo VAR 9 se utiliza la siguiente funcion
plot(var9)
#Para realizar la prueba de autocorrelacion se utiliza el siguiente comando
seriala <- serial.test(var9, lags.pt = 9, type = "PT.asymptotic")
seriala$serial
##
## Portmanteau Test (asymptotic)
##
## data: Residuals of VAR object var9
## Chi-squared = 11.203, df = 0, p-value < 2.2e-16
###Rechazo H0: por lo tanto hay problemas de autocorrelacion
#para la prueba de normalidad
normalidad <- normality.test(var9)
normalidad$jb.mul
## $JB
##
## JB-Test (multivariate)
##
## data: Residuals of VAR object var9
## Chi-squared = 286.89, df = 4, p-value < 2.2e-16
##
##
## $Skewness
##
## Skewness only (multivariate)
##
## data: Residuals of VAR object var9
## Chi-squared = 11.753, df = 2, p-value = 0.002805
##
##
## $Kurtosis
##
## Kurtosis only (multivariate)
##
## data: Residuals of VAR object var9
## Chi-squared = 275.13, df = 2, p-value < 2.2e-16
#Para todas las pruebas Rechazo Ho: por lo tanto no hay normalidad
###Prueba de heterocedasticidad
arch9 <- arch.test(var9,lags.multi = 11)
arch9$arch.mul
##
## ARCH (multivariate)
##
## data: Residuals of VAR object var9
## Chi-squared = 88.568, df = 99, p-value = 0.7646
#Se acepta Ho: por lo tanto hay heterocedasticidad, entonces la varianza de los residuos no es constante
#Para analizar el impulso respuesta de la variable estudiada y observar su trayectoria
#para el impulso respuesta de secuestro
var1_irflsec <- irf(var9, response = "dlsec", n.ahead = 8, boot = TRUE)
var1_irflsec
##
## Impulse response coefficients
## $dlsec
## dlsec
## [1,] 0.387846661
## [2,] -0.290820528
## [3,] -0.008189985
## [4,] 0.024085820
## [5,] -0.090572851
## [6,] 0.051083993
## [7,] -0.011998880
## [8,] 0.039488253
## [9,] -0.003647520
##
## $dlext
## dlsec
## [1,] 0.0000000000
## [2,] 0.0254504828
## [3,] 0.0890740482
## [4,] -0.0743048999
## [5,] -0.0714698037
## [6,] 0.0003498942
## [7,] 0.0440810481
## [8,] -0.0112935622
## [9,] -0.0356404841
##
##
## Lower Band, CI= 0.95
## $dlsec
## dlsec
## [1,] 0.27310663
## [2,] -0.35131904
## [3,] -0.08178435
## [4,] -0.06502246
## [5,] -0.15534550
## [6,] -0.03694238
## [7,] -0.08792675
## [8,] -0.04904606
## [9,] -0.08463397
##
## $dlext
## dlsec
## [1,] 0.00000000
## [2,] -0.05124209
## [3,] 0.01346800
## [4,] -0.16780563
## [5,] -0.17228083
## [6,] -0.07971799
## [7,] -0.06391385
## [8,] -0.09721355
## [9,] -0.11775738
##
##
## Upper Band, CI= 0.95
## $dlsec
## dlsec
## [1,] 0.439682790
## [2,] -0.184591868
## [3,] 0.077683614
## [4,] 0.108061802
## [5,] 0.003750505
## [6,] 0.121636541
## [7,] 0.088099741
## [8,] 0.117858301
## [9,] 0.084439800
##
## $dlext
## dlsec
## [1,] 0.00000000
## [2,] 0.08001517
## [3,] 0.17815828
## [4,] 0.02503072
## [5,] 0.01627507
## [6,] 0.11419743
## [7,] 0.11584587
## [8,] 0.07938576
## [9,] 0.06256992
#Para el impulso respuesta de extorsión
var1_irflext <- irf(var9, response = "dlext", n.ahead = 8, boot = TRUE)
var1_irflext
##
## Impulse response coefficients
## $dlsec
## dlext
## [1,] 0.066136091
## [2,] -0.004253434
## [3,] 0.001939821
## [4,] -0.063069693
## [5,] 0.016721601
## [6,] -0.017991880
## [7,] 0.001186548
## [8,] -0.019503961
## [9,] -0.007823986
##
## $dlext
## dlext
## [1,] 0.26259033
## [2,] -0.09332042
## [3,] -0.04762357
## [4,] -0.02838191
## [5,] -0.05250569
## [6,] -0.01160735
## [7,] 0.03711171
## [8,] -0.01023717
## [9,] 0.01290506
##
##
## Lower Band, CI= 0.95
## $dlsec
## dlext
## [1,] 0.008611562
## [2,] -0.069707841
## [3,] -0.048500864
## [4,] -0.103022532
## [5,] -0.034878292
## [6,] -0.064689316
## [7,] -0.055199020
## [8,] -0.054967187
## [9,] -0.046408018
##
## $dlext
## dlext
## [1,] 0.162507889
## [2,] -0.129406335
## [3,] -0.099851505
## [4,] -0.090128522
## [5,] -0.093822231
## [6,] -0.049025078
## [7,] -0.007889611
## [8,] -0.051031856
## [9,] -0.041846124
##
##
## Upper Band, CI= 0.95
## $dlsec
## dlext
## [1,] 0.128411353
## [2,] 0.048741251
## [3,] 0.047332127
## [4,] 0.007057092
## [5,] 0.061325115
## [6,] 0.028021193
## [7,] 0.056531858
## [8,] 0.031847938
## [9,] 0.035306585
##
## $dlext
## dlext
## [1,] 0.304869128
## [2,] -0.040662176
## [3,] 0.006291310
## [4,] 0.021926509
## [5,] 0.004083389
## [6,] 0.046724472
## [7,] 0.091712138
## [8,] 0.043932053
## [9,] 0.051040666
#Para graficar el impulso respuesta de secuestro
plot(var1_irflsec)
#Para graficar el impulso respuesta de la extosión
plot(var1_irflext)
### Pronóstico
var1.prd <- predict(var9,n.ahead = 12, ci=0.95) #predicción para los 5 periodos siguientes
var1.prd
## $dlsec
## fcst lower upper CI
## [1,] -0.007431257 -0.7675967 0.7527342 0.7601655
## [2,] -0.062089645 -1.0135292 0.8893499 0.9514396
## [3,] -0.010486757 -0.9779441 0.9569706 0.9674574
## [4,] 0.128682366 -0.8508133 1.1081781 0.9794957
## [5,] -0.034205878 -1.0394655 0.9710537 1.0052596
## [6,] 0.020390595 -0.9898430 1.0306242 1.0102336
## [7,] 0.149461073 -0.8647329 1.1636551 1.0141940
## [8,] -0.089344895 -1.1067286 0.9280388 1.0173837
## [9,] -0.070210054 -1.0900141 0.9495940 1.0198040
## [10,] 0.086830041 -0.9443245 1.1179846 1.0311545
## [11,] -0.011345184 -1.0500146 1.0273243 1.0386694
## [12,] -0.020046918 -1.0601990 1.0201051 1.0401520
##
## $dlext
## fcst lower upper CI
## [1,] -0.0203255115 -0.5510657 0.5104147 0.5307402
## [2,] -0.0637930017 -0.6252276 0.4976416 0.5614346
## [3,] 0.0202265700 -0.5489269 0.5893801 0.5691535
## [4,] 0.0199803259 -0.5650929 0.6050535 0.5850732
## [5,] 0.0422130118 -0.5527450 0.6371710 0.5949580
## [6,] -0.0174896421 -0.6139258 0.5789466 0.5964362
## [7,] 0.0003119787 -0.6005477 0.6011716 0.6008596
## [8,] 0.0956269092 -0.5067818 0.6980356 0.6024087
## [9,] 0.0622747161 -0.5408597 0.6654091 0.6031344
## [10,] -0.0262752165 -0.6335336 0.5809831 0.6072584
## [11,] -0.0036647204 -0.6214753 0.6141459 0.6178106
## [12,] -0.0360731226 -0.6567399 0.5845936 0.6206667
fanchart(var1.prd)
fanchart(var1.prd, names = "dlsec",
main = "Fanchart para la var dlsec",
xlab="horizonte", ylab = "d3im",
xlim=c(40,100))
fanchart(var1.prd, names = "dlext",
main = "Fanchart para la var dlext",
xlab="horizonte", ylab = "d3im",
xlim=c(40,100))
# Script para el modelo VAR(9): Pronósticos en valores reales e Intervalos de Confianza
# Paso 1: Obtener los últimos valores conocidos de las series transformadas en logaritmo
last_lsec <- as.numeric(tail(lsec, 1)) # Convertir a numérico: último valor de log(sec)
last_lext <- as.numeric(tail(lext, 1)) # Convertir a numérico: último valor de log(ext)
# Paso 2: Extraer los pronósticos de dlsec y dlext del modelo VAR(9)
pred_var9 <- predict(var9, n.ahead = 12, ci = 0.95)
dlsec_pred_var9 <- pred_var9$fcst$dlsec[, "fcst"]
dlext_pred_var9 <- pred_var9$fcst$dlext[, "fcst"]
dlsec_lower_var9 <- pred_var9$fcst$dlsec[, "lower"]
dlsec_upper_var9 <- pred_var9$fcst$dlsec[, "upper"]
dlext_lower_var9 <- pred_var9$fcst$dlext[, "lower"]
dlext_upper_var9 <- pred_var9$fcst$dlext[, "upper"]
# Paso 3: Revertir la diferenciación para obtener lsec y lext pronosticados
lsec_pred_var9 <- numeric(12)
lext_pred_var9 <- numeric(12)
lsec_lower_var9 <- numeric(12)
lsec_upper_var9 <- numeric(12)
lext_lower_var9 <- numeric(12)
lext_upper_var9 <- numeric(12)
# Primer período
lsec_pred_var9[1] <- last_lsec + dlsec_pred_var9[1]
lext_pred_var9[1] <- last_lext + dlext_pred_var9[1]
lsec_lower_var9[1] <- last_lsec + dlsec_lower_var9[1]
lsec_upper_var9[1] <- last_lsec + dlsec_upper_var9[1]
lext_lower_var9[1] <- last_lext + dlext_lower_var9[1]
lext_upper_var9[1] <- last_lext + dlext_upper_var9[1]
# Acumulación para los períodos siguientes
for (i in 2:12) {
lsec_pred_var9[i] <- lsec_pred_var9[i-1] + dlsec_pred_var9[i]
lext_pred_var9[i] <- lext_pred_var9[i-1] + dlext_pred_var9[i]
lsec_lower_var9[i] <- lsec_lower_var9[i-1] + dlsec_lower_var9[i]
lsec_upper_var9[i] <- lsec_upper_var9[i-1] + dlsec_upper_var9[i]
lext_lower_var9[i] <- lext_lower_var9[i-1] + dlext_lower_var9[i]
lext_upper_var9[i] <- lext_upper_var9[i-1] + dlext_upper_var9[i]
}
# Paso 4: Revertir la transformación logarítmica para obtener sec y ext
sec_pred_var9 <- exp(lsec_pred_var9)
ext_pred_var9 <- exp(lext_pred_var9)
sec_lower_var9 <- exp(lsec_lower_var9)
sec_upper_var9 <- exp(lsec_upper_var9)
ext_lower_var9 <- exp(lext_lower_var9)
ext_upper_var9 <- exp(lext_upper_var9)
# Paso 5: Crear un data frame con los resultados (solo valores reales)
forecast_results_var9 <- data.frame(
Periodo = 1:12,
Sec_Pronostico_VAR9 = sec_pred_var9,
Sec_Limite_Inferior_VAR9 = sec_lower_var9,
Sec_Limite_Superior_VAR9 = sec_upper_var9,
Ext_Pronostico_VAR9 = ext_pred_var9,
Ext_Limite_Inferior_VAR9 = ext_lower_var9,
Ext_Limite_Superior_VAR9 = ext_upper_var9
)
# Paso 6: Imprimir resultados
cat("Pronósticos para VAR(9) en valores reales con Intervalos de Confianza:\n")
## Pronósticos para VAR(9) en valores reales con Intervalos de Confianza:
print(forecast_results_var9)
## Periodo Sec_Pronostico_VAR9 Sec_Limite_Inferior_VAR9
## 1 1 26.80010 1.253143e+01
## 2 2 25.18670 4.548106e+00
## 3 3 24.92395 1.710468e+00
## 4 4 28.34673 7.304850e-01
## 5 5 27.39350 2.583314e-01
## 6 6 27.95780 9.600500e-02
## 7 7 32.46483 4.043385e-02
## 8 8 29.69006 1.336900e-02
## 9 9 27.67702 4.494816e-03
## 10 10 30.18764 1.748224e-03
## 11 11 29.84709 6.117605e-04
## 12 12 29.25470 2.119058e-04
## Sec_Limite_Superior_VAR9 Ext_Pronostico_VAR9 Ext_Limite_Inferior_VAR9
## 1 57.3155 1234.648 726.182422
## 2 139.4800 1158.346 388.608982
## 3 363.1775 1182.014 224.448598
## 4 1100.0046 1205.869 127.555792
## 5 2904.8105 1257.862 73.391552
## 6 8141.6458 1236.053 39.721118
## 7 26066.4082 1236.439 21.787476
## 8 65936.1085 1360.514 13.125456
## 9 170422.4210 1447.933 7.642264
## 10 521268.2314 1410.384 4.055850
## 11 1456204.9837 1405.225 2.178606
## 12 4038764.5666 1355.437 1.129692
## Ext_Limite_Superior_VAR9
## 1 2099.137
## 2 3452.740
## 3 6224.842
## 4 11399.866
## 5 21558.554
## 6 38463.865
## 7 70167.894
## 8 141023.485
## 9 274331.041
## 10 490447.722
## 11 906385.367
## 12 1626292.531
Ahora realizamos los pronosticos para el modelo VAR 2
#para obtener el gráfico de la variable observado vs la estimada del modelo VAR 2 se utiliza la siguiente funcion
plot(var2)
#Para realizar la prueba de autocorrelacion se utiliza el siguiente comando
seriala <- serial.test(var2, lags.pt = 2, type = "PT.asymptotic")
seriala$serial
##
## Portmanteau Test (asymptotic)
##
## data: Residuals of VAR object var2
## Chi-squared = 2.8135, df = 0, p-value < 2.2e-16
###Rechazo H0: por lo tanto hay problemas de autocorrelacion
#para la prueba de normalidad
normalidad <- normality.test(var2)
normalidad$jb.mul
## $JB
##
## JB-Test (multivariate)
##
## data: Residuals of VAR object var2
## Chi-squared = 733.63, df = 4, p-value < 2.2e-16
##
##
## $Skewness
##
## Skewness only (multivariate)
##
## data: Residuals of VAR object var2
## Chi-squared = 83.882, df = 2, p-value < 2.2e-16
##
##
## $Kurtosis
##
## Kurtosis only (multivariate)
##
## data: Residuals of VAR object var2
## Chi-squared = 649.75, df = 2, p-value < 2.2e-16
#Para todas las pruebas Rechazo Ho: por lo tanto no hay normalidad
###Prueba de heterocedasticidad
arch2 <- arch.test(var2,lags.multi = 11)
arch2$arch.mul
##
## ARCH (multivariate)
##
## data: Residuals of VAR object var2
## Chi-squared = 98.405, df = 99, p-value = 0.498
#Se acepta Ho: por lo tanto hay heterocedasticidad, entonces la varianza de los residuos no es constante
#Para analizar el impulso respuesta de la variable estudiada y observar su trayectoria
#para el impulso respuesta de secuestro
var1_irflsec <- irf(var2, response = "dlsec", n.ahead = 8, boot = TRUE)
var1_irflsec
##
## Impulse response coefficients
## $dlsec
## dlsec
## [1,] 0.4128321710
## [2,] -0.2424108783
## [3,] 0.0267567980
## [4,] 0.0708379765
## [5,] -0.0517187716
## [6,] 0.0023142774
## [7,] 0.0191543704
## [8,] -0.0121049375
## [9,] -0.0005477376
##
## $dlext
## dlsec
## [1,] 0.000000000
## [2,] 0.042087608
## [3,] 0.058595248
## [4,] -0.069293506
## [5,] 0.017986027
## [6,] 0.017531151
## [7,] -0.017519217
## [8,] 0.003267705
## [9,] 0.005063262
##
##
## Lower Band, CI= 0.95
## $dlsec
## dlsec
## [1,] 0.348313806
## [2,] -0.295158611
## [3,] -0.057791278
## [4,] -0.003032406
## [5,] -0.094987596
## [6,] -0.030514810
## [7,] -0.003567377
## [8,] -0.034364419
## [9,] -0.018029357
##
## $dlext
## dlsec
## [1,] 0.000000000
## [2,] -0.009331157
## [3,] -0.026994121
## [4,] -0.121936733
## [5,] -0.006352337
## [6,] -0.007476225
## [7,] -0.040257795
## [8,] -0.010228309
## [9,] -0.001820637
##
##
## Upper Band, CI= 0.95
## $dlsec
## dlsec
## [1,] 4.692090e-01
## [2,] -1.435833e-01
## [3,] 1.042369e-01
## [4,] 1.424173e-01
## [5,] -6.793743e-03
## [6,] 3.115384e-02
## [7,] 5.595407e-02
## [8,] -6.616617e-05
## [9,] 1.161184e-02
##
## $dlext
## dlsec
## [1,] 0.0000000000
## [2,] 0.1159087148
## [3,] 0.1246677514
## [4,] -0.0035156096
## [5,] 0.0505351149
## [6,] 0.0440309434
## [7,] 0.0005592739
## [8,] 0.0172465720
## [9,] 0.0164505272
#Para el impulso respuesta de extorsión
var1_irflext <- irf(var2, response = "dlext", n.ahead = 8, boot = TRUE)
var1_irflext
##
## Impulse response coefficients
## $dlsec
## dlext
## [1,] 0.061505924
## [2,] 0.007244918
## [3,] 0.010378900
## [4,] -0.018367471
## [5,] 0.007150496
## [6,] 0.003346308
## [7,] -0.004862145
## [8,] 0.001514049
## [9,] 0.001050995
##
## $dlext
## dlext
## [1,] 0.2846596317
## [2,] -0.0505533520
## [3,] -0.0192881569
## [4,] 0.0142931594
## [5,] 0.0005465130
## [6,] -0.0056587664
## [7,] 0.0029751734
## [8,] 0.0005241249
## [9,] -0.0014879835
##
##
## Lower Band, CI= 0.95
## $dlsec
## dlext
## [1,] -0.002693123
## [2,] -0.031876169
## [3,] -0.049144301
## [4,] -0.055844365
## [5,] -0.006585070
## [6,] -0.012144077
## [7,] -0.016441780
## [8,] -0.006206665
## [9,] -0.002972845
##
## $dlext
## dlext
## [1,] 0.188213965
## [2,] -0.098535147
## [3,] -0.067704058
## [4,] -0.007487232
## [5,] -0.010020413
## [6,] -0.030001100
## [7,] -0.002025475
## [8,] -0.003832258
## [9,] -0.009833309
##
##
## Upper Band, CI= 0.95
## $dlsec
## dlext
## [1,] 0.149676237
## [2,] 0.048061941
## [3,] 0.060320732
## [4,] 0.016845991
## [5,] 0.027027609
## [6,] 0.020102172
## [7,] 0.005026258
## [8,] 0.006201661
## [9,] 0.008789562
##
## $dlext
## dlext
## [1,] 0.348809863
## [2,] -0.009028190
## [3,] 0.031836505
## [4,] 0.048118097
## [5,] 0.015978971
## [6,] 0.004408882
## [7,] 0.013878364
## [8,] 0.010450443
## [9,] 0.001686238
#Para graficar el impulso respuesta de secuestro
plot(var1_irflsec)
#Para graficar el impulso respuesta de la extosión
plot(var1_irflext)
### Pronóstico
var1.prd <- predict(var2,n.ahead = 12, ci=0.95) #predicción para los 5 periodos siguientes
var1.prd
## $dlsec
## fcst lower upper CI
## [1,] 0.2138176776 -0.5953185 1.0229539 0.8091362
## [2,] -0.0098801423 -0.9518153 0.9320550 0.9419351
## [3,] -0.0582027649 -1.0085613 0.8921557 0.9503585
## [4,] 0.0483267969 -0.9216747 1.0183283 0.9700015
## [5,] 0.0053201967 -0.9706003 0.9812407 0.9759205
## [6,] -0.0115656419 -0.9881014 0.9649701 0.9765357
## [7,] 0.0153308193 -0.9625293 0.9931910 0.9778601
## [8,] 0.0063401515 -0.9718287 0.9845090 0.9781689
## [9,] 0.0008939933 -0.9773258 0.9791138 0.9782198
## [10,] 0.0076512461 -0.9706559 0.9859584 0.9783072
## [11,] 0.0058708790 -0.9724519 0.9841937 0.9783228
## [12,] 0.0042226771 -0.9741044 0.9825498 0.9783271
##
## $dlext
## fcst lower upper CI
## [1,] 0.0072579169 -0.5635396 0.5780554 0.5707975
## [2,] -0.0039787454 -0.5834862 0.5755287 0.5795074
## [3,] 0.0221878865 -0.5589075 0.6032832 0.5810953
## [4,] 0.0009753024 -0.5819077 0.5838583 0.5828830
## [5,] 0.0032861980 -0.5797662 0.5863386 0.5830524
## [6,] 0.0106698847 -0.5725249 0.5938647 0.5831948
## [7,] 0.0053664726 -0.5779353 0.5886682 0.5833018
## [8,] 0.0055310766 -0.5777791 0.5888413 0.5833102
## [9,] 0.0075463390 -0.5757748 0.5908675 0.5833212
## [10,] 0.0063032509 -0.5770242 0.5896307 0.5833275
## [11,] 0.0062276854 -0.5771002 0.5895556 0.5833279
## [12,] 0.0067663520 -0.5765623 0.5900950 0.5833287
fanchart(var1.prd)
fanchart(var1.prd, names = "dlsec",
main = "Fanchart para la var dlsec",
xlab="horizonte", ylab = "d3im",
xlim=c(40,100))
fanchart(var1.prd, names = "dlext",
main = "Fanchart para la var dlext",
xlab="horizonte", ylab = "d3im",
xlim=c(40,100))
# Script para el modelo VAR(2): Pronósticos en valores reales e Intervalos de Confianza
# Paso 1: Obtener los últimos valores conocidos de las series transformadas en logaritmo
last_lsec <- as.numeric(tail(lsec, 1)) # Convertir a numérico: último valor de log(sec)
last_lext <- as.numeric(tail(lext, 1)) # Convertir a numérico: último valor de log(ext)
# Paso 2: Extraer los pronósticos de dlsec y dlext del modelo VAR(2)
pred_var2 <- predict(var2, n.ahead = 12, ci = 0.95)
dlsec_pred_var2 <- pred_var2$fcst$dlsec[, "fcst"]
dlext_pred_var2 <- pred_var2$fcst$dlext[, "fcst"]
dlsec_lower_var2 <- pred_var2$fcst$dlsec[, "lower"]
dlsec_upper_var2 <- pred_var2$fcst$dlsec[, "upper"]
dlext_lower_var2 <- pred_var2$fcst$dlext[, "lower"]
dlext_upper_var2 <- pred_var2$fcst$dlext[, "upper"]
# Paso 3: Revertir la diferenciación para obtener lsec y lext pronosticados
lsec_pred_var2 <- numeric(12)
lext_pred_var2 <- numeric(12)
lsec_lower_var2 <- numeric(12)
lsec_upper_var2 <- numeric(12)
lext_lower_var2 <- numeric(12)
lext_upper_var2 <- numeric(12)
# Primer período
lsec_pred_var2[1] <- last_lsec + dlsec_pred_var2[1]
lext_pred_var2[1] <- last_lext + dlext_pred_var2[1]
lsec_lower_var2[1] <- last_lsec + dlsec_lower_var2[1]
lsec_upper_var2[1] <- last_lsec + dlsec_upper_var2[1]
lext_lower_var2[1] <- last_lext + dlext_lower_var2[1]
lext_upper_var2[1] <- last_lext + dlext_upper_var2[1]
# Acumulación para los períodos siguientes
for (i in 2:12) {
lsec_pred_var2[i] <- lsec_pred_var2[i-1] + dlsec_pred_var2[i]
lext_pred_var2[i] <- lext_pred_var2[i-1] + dlext_pred_var2[i]
lsec_lower_var2[i] <- lsec_lower_var2[i-1] + dlsec_lower_var2[i]
lsec_upper_var2[i] <- lsec_upper_var2[i-1] + dlsec_upper_var2[i]
lext_lower_var2[i] <- lext_lower_var2[i-1] + dlext_lower_var2[i]
lext_upper_var2[i] <- lext_upper_var2[i-1] + dlext_upper_var2[i]
}
# Paso 4: Revertir la transformación logarítmica para obtener sec y ext
sec_pred_var2 <- exp(lsec_pred_var2)
ext_pred_var2 <- exp(lext_pred_var2)
sec_lower_var2 <- exp(lsec_lower_var2)
sec_upper_var2 <- exp(lsec_upper_var2)
ext_lower_var2 <- exp(lext_lower_var2)
ext_upper_var2 <- exp(lext_upper_var2)
# Paso 5: Crear un data frame con los resultados (solo valores reales)
forecast_results_var2 <- data.frame(
Periodo = 1:12,
Sec_Pronostico_VAR2 = sec_pred_var2,
Sec_Limite_Inferior_VAR2 = sec_lower_var2,
Sec_Limite_Superior_VAR2 = sec_upper_var2,
Ext_Pronostico_VAR2 = ext_pred_var2,
Ext_Limite_Inferior_VAR2 = ext_lower_var2,
Ext_Limite_Superior_VAR2 = ext_upper_var2
)
# Paso 6: Imprimir resultados
cat("Pronósticos para VAR(2) en valores reales con Intervalos de Confianza:\n")
## Pronósticos para VAR(2) en valores reales con Intervalos de Confianza:
print(forecast_results_var2)
## Periodo Sec_Pronostico_VAR2 Sec_Limite_Inferior_VAR2
## 1 1 33.43671 1.488745e+01
## 2 2 33.10798 5.747144e+00
## 3 3 31.23601 2.096233e+00
## 4 4 32.78262 8.339909e-01
## 5 5 32.95749 3.159621e-01
## 6 6 32.57851 1.176273e-01
## 7 7 33.08182 4.492486e-02
## 8 8 33.29223 1.699914e-02
## 9 9 33.32200 6.397049e-03
## 10 10 33.57794 2.423423e-03
## 11 11 33.77565 9.164287e-04
## 12 12 33.91857 3.459796e-04
## Sec_Limite_Superior_VAR2 Ext_Pronostico_VAR2 Ext_Limite_Inferior_VAR2
## 1 7.509776e+01 1269.178 717.180386
## 2 1.907275e+02 1264.139 400.150705
## 3 4.654485e+02 1292.501 228.819569
## 4 1.288623e+03 1293.762 127.871534
## 5 3.437743e+03 1298.020 71.611803
## 6 9.023075e+03 1311.944 40.396172
## 7 2.436082e+04 1319.004 22.664498
## 8 6.520168e+04 1326.319 12.718029
## 9 1.735731e+05 1336.366 7.150954
## 10 4.652419e+05 1344.816 4.015740
## 11 1.244826e+06 1353.217 2.254935
## 12 3.325253e+06 1362.405 1.266882
## Ext_Limite_Superior_VAR2
## 1 2246.037
## 2 3993.611
## 3 7300.764
## 4 13089.853
## 5 23527.641
## 6 42607.939
## 7 76761.931
## 8 138317.274
## 9 249739.312
## 10 450360.481
## 11 812084.094
## 12 1465129.538
Conclusiones
Las series de secuestros y extorsiones, en logaritmos, requirieron una diferencia para volverse estacionarias, permitiendo el uso de modelos VAR.
Las pruebas de Granger indican que los secuestros no influyen significativamente en las extorsiones, ni viceversa.
Ambos modelos (VAR(2) y VAR(9)) tienen autocorrelación, no normalidad y varianza no constante en los residuos, lo que limita su precisión.
Se usaron modelos con 2 y 9 rezagos, el VAR(9) capturó mejor las dinámicas, pero ambos tienen limitaciones.
Los pronósticos para 2025 muestran secuestros (25,34) y extorsiones (1158-1448), pero con intervalos de confianza muy amplios.