Je monte un modèle ARIMA sur une série temporelle quotidienne. Les données sont collectées quotidiennement du 02-01-2010 au 30-07-2011 et concernent les ventes de journaux. Puisqu'une tendance hebdomadaire des ventes peut être trouvée (la quantité moyenne quotidienne d'exemplaires vendus est généralement la même du lundi au vendredi, puis augmente le samedi et le dimanche), j'essaie de saisir cette "saisonnalité". Compte tenu des données de vente "données", je crée la série chronologique comme suit:
salests<-ts(data,start=c(2010,1),frequency=365)
puis j'utilise la fonction auto.arima (.) pour sélectionner le meilleur modèle ARIMA via le critère AIC. Le résultat est toujours un modèle ARIMA non saisonnier, mais si j'essaie un modèle SARIMA avec la syntaxe suivante comme exemple:
sarima1<-arima(salests, order = c(2,1,2), seasonal = list(order = c(1, 0, 1), period = 7))
Je peux obtenir de meilleurs résultats. Y a-t-il quelque chose qui cloche dans la spécification ts command / arima? Le schéma hebdomadaire est très fort, donc je ne m'attendrais pas à autant de difficultés à le capturer. Toute aide serait très utile. Merci, Giulia Deppieri
Mise à jour:
J'ai déjà changé certains arguments. Plus précisément, la procédure sélectionne ARIMA (4,1,3) comme le meilleur modèle lorsque je mets D=7
, mais AIC et les autres bons indices d'ajustement et prévisions) ne s'améliorent pas du tout. Je suppose qu'il y a des erreurs dues à la confusion entre la saisonnalité et la périodicité ..?!
Appel Auto.arima utilisé et sortie obtenue:
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
Je suppose donc que la fonction arima doit être utilisée comme:
bestOrder <- cbind(modArima$arma[1],modArima$arma[5],modArima$arma[2])
sarima1<-arima(salests, order = c(4,1,3))
sans paramètres de composants saisonniers et spécifications de période. Les données et l'analyse exploratoire montrent que le même schéma hebdomadaire peut être considéré approximativement pour chaque semaine, à la seule exception d'août 2010 (où une augmentation constante des ventes est enregistrée). Malheureusement, je n'ai aucune expertise en modélisation de série temporelle, en fait j'essaie cette approche afin de trouver une solution alternative à d'autres modèles paramétriques et non paramétriques que j'ai essayé d'adapter à ces données problématiques. J'ai également de nombreuses variables numériques dépendantes mais elles ont montré une faible puissance pour expliquer la variable de réponse: sans aucun doute, la partie la plus difficile à modéliser est la composante temporelle. De plus, la construction de variables muettes pour représenter les mois et les jours de la semaine s'est avérée ne pas être une solution robuste.