Sto montando un modello ARIMA su una serie storica giornaliera. I dati vengono raccolti quotidianamente dal 02-01-2010 al 30-07-2011 e riguardano le vendite di giornali. Poiché è possibile trovare un modello settimanale di vendite (la quantità media giornaliera di copie vendute è generalmente la stessa dal lunedì al venerdì, quindi aumenta il sabato e la domenica), sto cercando di catturare questa "stagionalità". Dati i "dati" dei dati di vendita, creo le serie temporali come segue:
salests<-ts(data,start=c(2010,1),frequency=365)
e quindi uso la funzione auto.arima (.) per selezionare il miglior modello ARIMA tramite criterio AIC. Il risultato è sempre un modello ARIMA non stagionale, ma se provo alcuni modelli SARIMA con la seguente sintassi come esempio:
sarima1<-arima(salests, order = c(2,1,2), seasonal = list(order = c(1, 0, 1), period = 7))
Posso ottenere risultati migliori. C'è qualcosa di sbagliato nelle specifiche del comando ts / arima? Il modello settimanale è molto forte, quindi non mi aspetterei così tante difficoltà nel catturarlo. Qualsiasi aiuto sarebbe molto utile. Grazie Giulia Deppieri
Aggiornare:
Ho già cambiato alcuni argomenti. Più precisamente, la procedura seleziona ARIMA (4,1,3) come modello migliore al momento dell'impostazione D=7
, ma AIC e gli altri buoni indici e previsioni in forma) non migliorano affatto. Immagino che ci siano alcuni errori dovuti alla confusione tra stagionalità e periodicità ..?!
Chiamata Auto.arima utilizzata e output ottenuto:
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
Quindi presumo che la funzione arima dovrebbe essere usata come:
bestOrder <- cbind(modArima$arma[1],modArima$arma[5],modArima$arma[2])
sarima1<-arima(salests, order = c(4,1,3))
senza parametri dei componenti stagionali e specifiche del periodo. I dati e le analisi esplorative mostrano che lo stesso modello settimanale può essere approssimativamente considerato per ogni settimana, con la sola eccezione di agosto 2010 (quando si registra un consistente aumento delle vendite). Sfortunatamente non ho alcuna esperienza nella modellistica di timeseries, infatti sto provando questo approccio al fine di trovare una soluzione alternativa ad altri modelli parametrici e non parametrici che ho cercato di adattarmi a questi dati problematici. Ho anche molte variabili numeriche dipendenti ma hanno mostrato una bassa potenza nello spiegare la variabile di risposta: senza dubbio, la parte più difficile da modellare è la componente temporale. Inoltre, la costruzione di variabili fittizie per rappresentare mesi e giorni feriali si è rivelata non una soluzione solida.