Estoy ajustando un modelo ARIMA a una serie temporal diaria. Los datos se recogen diariamente desde el 02-01-2010 hasta el 30-07-2011 y se refieren a las ventas de periódicos. Dado que se puede encontrar un patrón semanal en las ventas (la cantidad media diaria de ejemplares vendidos suele ser la misma de lunes a viernes, y luego aumenta el sábado y el domingo), estoy tratando de capturar esta "estacionalidad". Dados los "datos" de ventas, creo las series temporales de la siguiente manera:
salests<-ts(data,start=c(2010,1),frequency=365)
y luego utilizo la función auto.arima(.) para seleccionar el mejor modelo ARIMA mediante el criterio AIC. El resultado es siempre un modelo ARIMA no estacional, pero si pruebo algún modelo SARIMAs con la siguiente sintaxis como ejemplo:
sarima1<-arima(salests, order = c(2,1,2), seasonal = list(order = c(1, 0, 1), period = 7))
Puedo obtener mejores resultados. ¿Hay algún error en el comando ts / especificación arima? El patrón semanal es muy fuerte por lo que no esperaría tantas dificultades para capturarlo. Cualquier ayuda sería muy útil. Muchas gracias, Giulia Deppieri
Actualización:
Ya he cambiado algunos argumentos. Más concretamente, el procedimiento selecciona ARIMA(4,1,3) como el mejor modelo cuando establezco D=7
pero el AIC y los demás índices de bondad de ajuste (y también las previsiones) no mejoran en absoluto. ¡Supongo que hay algún error debido a la confusión entre estacionalidad y periodicidad ?!
Llamada Auto.arima utilizada y salida obtenida:
modArima<-auto.arima(salests,D=7,max.P = 5, max.Q = 5)
ARIMA(2,1,2) with drift : 1e+20
ARIMA(0,1,0) with drift : 5265.543
ARIMA(1,1,0) with drift : 5182.772
ARIMA(0,1,1) with drift : 1e+20
ARIMA(2,1,0) with drift : 5137.279
ARIMA(2,1,1) with drift : 1e+20
ARIMA(3,1,1) with drift : 1e+20
ARIMA(2,1,0) : 5135.382
ARIMA(1,1,0) : 5180.817
ARIMA(3,1,0) : 5117.714
ARIMA(3,1,1) : 1e+20
ARIMA(4,1,1) : 5045.236
ARIMA(4,1,1) with drift : 5040.53
ARIMA(5,1,1) with drift : 1e+20
ARIMA(4,1,0) with drift : 5112.614
ARIMA(4,1,2) with drift : 4953.417
ARIMA(5,1,3) with drift : 1e+20
ARIMA(4,1,2) : 4960.516
ARIMA(3,1,2) with drift : 1e+20
ARIMA(5,1,2) with drift : 1e+20
ARIMA(4,1,3) with drift : 4868.669
ARIMA(5,1,4) with drift : 1e+20
ARIMA(4,1,3) : 4870.92
ARIMA(3,1,3) with drift : 1e+20
ARIMA(4,1,4) with drift : 4874.095
Best model: ARIMA(4,1,3) with drift
Así que supongo que la función arima se debe utilizar como:
bestOrder <- cbind(modArima$arma[1],modArima$arma[5],modArima$arma[2])
sarima1<-arima(salests, order = c(4,1,3))
sin parámetros de componentes estacionales ni especificaciones de periodos. Los datos y el análisis exploratorio muestran que se puede considerar aproximadamente el mismo patrón semanal para cada semana, con la única excepción de agosto de 2010 (cuando se registra un aumento constante de las ventas). Lamentablemente, no tengo ninguna experiencia en la modelización de series temporales, de hecho, estoy probando este enfoque con el fin de encontrar una solución alternativa a otros modelos paramétricos y no paramétricos que he intentado ajustar para estos datos problemáticos. También tengo muchas variables numéricas dependientes, pero han mostrado un bajo poder para explicar la variable de respuesta: sin duda, la parte más difícil de modelar es el componente temporal. Además, la construcción de variables ficticias para representar los meses y los días de la semana resultó no ser una solución sólida.