Análisis de series temporales con ARIMA

Analisis de series temporales.

No nos han proporcionado una serie temporal de ventas para poder predecir la evolución de mercado, pero dado el número de clientes que maneja la compañia, es muy probable que se mueva paralelamente al mercado nacional de seguros por similitud. LA EPF es un buen recurso para estimar la serie respecto al gasto por persona.

Lo primero, descargarnos los datos de la Encuesta de Presupuestos Familiares del INE. Buscamos ademas los datos desagragados y elegimos los que tienen que ver con seguros, el gasto medio por persona y el porcentual, y todos los años disponibles.

LA EPF es una muestra recogida al azar de 20.000 hogares españoles, asi que es un buen recurso para estimar la serie respecto al gasto por persona. El enlace directo a la encuesta es Enlace a la EPF. Veamos la serie del 2003 al 2023. El gasto está medido por persona:

Encuesta INE Presupuestos Familiares

Importamos la tabla que da origen al gráfico, con el fin de trabajar con ella.

Code

library (readxl)

Code

EPF_seguros <- read_excel("C:/Users/Tester/Desktop/Trabajo fin de grado/Tabla Excel EPF seguros modificada.xls")
New names:
• `` -> `...1`

Code

#cambiar nombre a una variable
names (EPF_seguros)[1] = "Tipo de gasto"

#ajustar a 2 decimales
EPF_seguros [, -1] <- round (EPF_seguros [, -1], 2)

#ver la tabla
kable(view (EPF_seguros)) %>%
    kable_styling (bootstrap_options = "striped", full_width = F)

Kable es una librería de R que realmente da calidad en la visualización de datos, y que desde que aprendí a usarla, no hay código donde no la emplee.

Inicialmente la abrimos con excel, eliminamos las filas y columnas que no nos interesan, para importar una tabla “limpia”. Añadimos ademas un sumatorio del total de gasto medio por persona. El año base es 2006, y el gasto esta medido en precios corrientes respecto al año base. Asi mismo hemos añadido la tasa de variación de un año respecto al anterior.

Podemos obtener estos indices segun la fórmula:

Tabla=((An~oCorrienteAn~oBase)/An~oBase)x100Tabla = ((AñoCorriente-AñoBase) /AñoBase) x 100

Y ahora que tenemos una serie temporal de datos la ordenamos de menor año a mayor y procedemos a un primer análisis sobre el gasto total en seguros del 2006 al 2023:

Code

# Extraer la primera columna (los conceptos de gasto)
titulos <- EPF_seguros[, 1]

# Ordenar las demás columnas (años)
EPF_ordenado <- EPF_seguros[, -1]  # Excluye la primera columna
EPF_ordenado <- EPF_ordenado[, order(as.numeric(colnames(EPF_ordenado)))]

# Volver a unir la primera columna (conceptos) al principio
EPF_ordenado <- cbind(titulos, EPF_ordenado)

Code

serie <- ts(as.numeric (EPF_ordenado[6,-1]), start = 2006, end = 2023, frequency = 1)

# Visualizar la serie temporal
plot(serie, main = "Evolución del gasto en Seguros", ylab = "Euros", xlab = "Año")

Y tambien la evolución del indice de crecimiento en comparación con el año base:

Code

serie2 <- ts(as.numeric (EPF_ordenado[8,-1]), start = 2006, end = 2023, frequency = 1)

# Visualizar la serie temporal
plot(serie2, main = "Crecimiento en % respecto al año base", ylab = "Porcentaje", xlab = "Año")

O el crecimiento respecto del año anterior (año t comparado con t-1):Code

serie3 <- ts(as.numeric (EPF_ordenado[7,-1]), start = 2006, end = 2023, frequency = 1)

# Visualizar la serie temporal
plot(serie3, main = "Crecimiento respecto al año anterior", ylab = "porcentaje", xlab = "Año")

A partir de aqui se ejecuta un modelo automático de predicción (ARIMA). Ejecutamos auto-arima para detectar el tipo de serie:

Partimos de que la serie no tiene estacionalidad (los valores son anuales y las flluctuaciones dentro del año como navidad, verano… están incorporadas al modelo).

Consideramos la serie como una evolucion en el tiempo de variables aleatorias que evolucionan arreglo a las leyes probabilisticas. La función ajustará la serie para ver que procedimiento de prediccion ejecuta, o alisado, autoregresión , diferencia o media movil (o dos de ellos o los tres).

Code

# Cargar librerías necesarias
library(forecast)
library(tseries)

Code

# Ajuste con auto.arima
ajuste_serie <- auto.arima(serie)
summary(ajuste_serie)
Series: serie 
ARIMA(0,1,0) with drift 

Coefficients:
       drift
      7.0006
s.e.  2.2706

sigma^2 = 93.13:  log likelihood = -62.14
AIC=128.29   AICc=129.15   BIC=129.96

Training set error measures:
                     ME     RMSE      MAE         MPE     MAPE      MASE
Training set 0.01862774 9.098288 6.973595 -0.03472841 1.765311 0.6954368
                   ACF1
Training set -0.2859485

Code

# Predicción
prediccion_serie <- forecast (ajuste_serie, h=3)
plot(prediccion_serie)

Code

summary (prediccion_serie)

Forecast method: ARIMA(0,1,0) with drift

Model Information:
Series: serie 
ARIMA(0,1,0) with drift 

Coefficients:
       drift
      7.0006
s.e.  2.2706

sigma^2 = 93.13:  log likelihood = -62.14
AIC=128.29   AICc=129.15   BIC=129.96

Error measures:
                     ME     RMSE      MAE         MPE     MAPE      MASE
Training set 0.01862774 9.098288 6.973595 -0.03472841 1.765311 0.6954368
                   ACF1
Training set -0.2859485

Forecasts:
     Point Forecast    Lo 80    Hi 80    Lo 95    Hi 95
2024       468.3106 455.9434 480.6778 449.3966 487.2246
2025       475.3112 457.8213 492.8011 448.5627 502.0597
2026       482.3118 460.8911 503.7324 449.5517 515.0718

Los valores de error en general son bastante bajos, lo que se traduje en un buen ajuste respecto a los datos históricos. Se ha usado un modelo Arima (0,1,0) lo que significa que no se ha usado la autoregresión ni las medias móviles, y para introducir la estacionalidad se ha aplicado una diferencia para hacer la serie estacionaria.

Las prediciones nos dan un gasto medio para el 2024 de 468,31€, para el 2025 de 475,31€, y para el 2026 de 482,31€, con un nivel de confianza del 80%.. Esto implica un predicción de crecimiento en 2024 sobre el 2023 del gasto medio por persona en el sector seguros (según la EPF facilitada) del 1,52%, un crecimiento en 2025 del 1,49€ y un crecimiento para 2026 del 1.47€%.

Podemos aplicar este futuro crecimiento a nuestra base de datos de clientes ? habría que comprobar la heterogeneidad de la muestra proporcionada y como nos han filtrado los datos. En principio si, ya la que esta compañia cuenta con más de 10 millones de clientes, la muestra es lo suficientemente amplia para replicar los movimientos de la serie. Notar tambien que hablamos de un gasto en seguros de forma global, y que eliminamos la distorsión que puede haber entre una compañia que sea especialista en seguros de salud y otra especializada en automovil, donde aquí si podría haber diferencias importantes en el tipo de clientes.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *