Chile está sufriendo la mayor crisis de seguridad, que afecta directamente a Gendarmería de Chile, último eslabón del sistema de justicia penal, encargada de recibir a todas las personas declaradas un peligro para la sociedad o condenadas por la comisión de un delito. El aumento de reclusos es una situación crítica, ya que las plazas disponibles son limitadas y no aumentan al aumentar los encarcelados. Esto genera sobrepoblación y hacinamiento, lo que provoca que las unidades penales superen su capacidad según su diseño.
Este documento explota el conjunto de datos mediante el modelo ARIMA para predecir la población penal futura en Chile.
Los datos corresponden a informes estadísticos mensuales desde enero-2019 a la fecha, obtenidos en https://www.gendarmeria.gob.cl/rep_est_mes.html, los cuales se unificaron obteniendo la población penal por unidad y mes. Esta población penal corresponde a las personas que se encuentran recluidas por medida cautelar de prisión preventiva (imputado) y cumplimiento de pena privativa de libertad (condenado).
Para ello, solo se tuvieron en cuenta centros de detención preventiva (CDP), centros de cumplimiento penitenciario (CCP), centros penitenciarios femeninos (CPF), complejos penitenciarios (CP) y la unidad especial de alta seguridad (UEAS). Finalmente, los datos presenta la siguiente descripción:
VARIABLE | TIPO | OBSERVACIÓN |
---|---|---|
REGION | Categórica | Corresponde a la región geográfica. |
UNIDAD | Categórica | Identifica la unidad penal. |
IMPUTADOS_H | Numérica | Número de imputados hombres en prisión preventiva. |
IMPUTADOS_M | Numérica | Número de imputados mujeres en prisión preventiva. |
IMPUTADOS_TOTAL | Numérica | Total de imputados en prisión preventiva (hombres y mujeres). |
CONDENADOS_H | Numérica | Número de condenados hombres en reclusión. |
CONDENADOS_M | Numérica | Número de condenados mujeres en reclusión. |
CONDENADOS_TOTAL | Numérica | Total de condenados en prisión definitiva (hombres y mujeres). |
TOTAL | Numérica | Total de personas recluidas en la unidad penal. |
FECHA | Fecha | Fecha de captura de los datos. |
AÑO | Numérica | Año en que se registran los datos. |
MES | Numérica | Mes en que se registran los datos. |
El análisis descriptivo es el primer paso de un estudio de datos adecuado. Aunque no permite sacar conclusiones, resulta útil permitiendo caracterizar, sintetizar y visualizar los datos.
Un modelo ARIMA (Autorregresivo Integrado de Media Móvil) es un modelo estadístico diseñado para analizar y predecir series de tiempo que no son estacionarias por naturaleza, pero que pueden transformarse en estacionarias mediante diferenciaciones. Los modelos ARIMA incorporan explícitamente las autocorrelaciones en los datos y modelan tanto los patrones como las dependencias en el componente irregular de la serie temporal, lo que los hace especialmente útiles para capturar relaciones a corto y largo plazo.
Una serie de tiempo puede descomponerse en varios componentes claves, estos son:
Serie observada (observed): Representa la gráfica de la serie original con todos sus elementos combinados.
Tendencia (trend): Refleja la dirección general de la serie a lo largo del tiempo, ya sea creciente, decreciente o estable, y describe patrones persistentes a largo plazo.
Estacionalidad (seasonal): Identifica patrones repetitivos o periódicos asociados a intervalos de tiempo específicos.
Componente aleatorio (random): Representa el ruido o error en los datos, compuesto por variaciones impredecibles que no siguen patrones definidos y no pueden ser explicadas por los demás componentes.
Se utilizó la función auto.arima()
que es parte del paquete
forecast
para automatizar el proceso de selección del mejor
modelo ARIMA sin la necesidad de especificar los parámetros. El
argumento lambda = “auto”
corresponde a la función
automática para determinar el valor de lambda que mejor transforma los
datos de la serie temporal para lograr una varianza constante a lo largo
del tiempo, el parámetro lambda hace referencia a la transformación
Box-Cox.
modelo_auto_arima <- auto.arima(ts.mes, lambda = "auto")
modelo_auto_arima
## Series: ts.mes
## ARIMA(0,2,1)(0,0,2)[12]
## Box Cox transformation: lambda= 0.8840002
##
## Coefficients:
## ma1 sma1 sma2
## -0.8018 0.2432 0.5865
## s.e. 0.0681 0.1070 0.3188
##
## sigma^2 = 27384: log likelihood = -506.65
## AIC=1021.29 AICc=1021.85 BIC=1030.67
Utilizando la función predict()
se obtienen las
predicciones a futuro a partir del modelo ARIMA ajustado previamente con
la función auto.arima()
. Con el argumento
n.ahead=12
el modelo generará predicciones para los
próximos 12 meses.
pred <- predict(modelo_auto_arima, n.ahead = 12)
pred
## $pred
## Jan Feb Mar Apr May Jun Jul Aug
## 2025 19003.67
## 2026 18914.94 18900.41 18778.48 18804.52 18707.35 18709.89 18685.82
## Sep Oct Nov Dec
## 2025 19058.51 18972.82 18995.18 18894.67
## 2026
##
## $se
## Jan Feb Mar Apr May Jun Jul
## 2025
## 2026 626.5042 724.9027 826.8754 932.4101 1041.4628 1153.9738 1269.8759
## Aug Sep Oct Nov Dec
## 2025 166.7851 260.3073 349.3051 439.0512 531.2266
## 2026
Para reconstruir los valores originales de la predicción a partir de la transformación Box-Cox (lambda = 0.8840002), se utiliza la fórmula inversa correspondiente a la transformación Box-Cox.
lambda <- modelo_auto_arima$lambda[1]
pred_transformadas <- pred$pred
pred_originales <- round(((pred_transformadas * lambda) + 1)^(1 / lambda), 0)
pred_originales
## Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
## 2025 60224 60420 60113 60193 59833
## 2026 59906 59854 59417 59510 59163 59172 59086
Utilizando la función plot_ly()
parte del paquete
plotly
se genera el gráfico interactivo, donde la serie
observada se muestran en color negro y
las predicciones en color rojo , para
que se pueda visualizar ambos conjuntos de datos de manera clara y
dinámica.