Come interpretare e fare previsioni usando il pacchetto tsoutliers e auto.arima


9

Ho ricevuto dati mensili dal 1993 al 2015 e vorrei fare previsioni su questi dati. Ho usato il pacchetto tsoutliers per rilevare gli outlier, ma non so come posso continuare a fare previsioni con il mio set di dati.

Questo è il mio codice:

product.outlier<-tso(product,types=c("AO","LS","TC"))
plot(product.outlier)

Questo è il mio output dal pacchetto tsoutliers

ARIMA(0,1,0)(0,0,1)[12]                    

Coefficients:
        sma1    LS46    LS51    LS61    TC133   LS181   AO183   AO184   LS185   TC186    TC193    TC200
      0.1700  0.4316  0.6166  0.5793  -0.5127  0.5422  0.5138  0.9264  3.0762  0.5688  -0.4775  -0.4386
s.e.  0.0768  0.1109  0.1105  0.1106   0.1021  0.1120  0.1119  0.1567  0.1918  0.1037   0.1033   0.1040
       LS207    AO237    TC248    AO260    AO266
      0.4228  -0.3815  -0.4082  -0.4830  -0.5183
s.e.  0.1129   0.0782   0.1030   0.0801   0.0805

sigma^2 estimated as 0.01258:  log likelihood=205.91
AIC=-375.83   AICc=-373.08   BIC=-311.19

 Outliers:
    type ind    time coefhat  tstat
1    LS  46 1996:10  0.4316  3.891
2    LS  51 1997:03  0.6166  5.579
3    LS  61 1998:01  0.5793  5.236
4    TC 133 2004:01 -0.5127 -5.019
5    LS 181 2008:01  0.5422  4.841 
6    AO 183 2008:03  0.5138  4.592
7    AO 184 2008:04  0.9264  5.911
8    LS 185 2008:05  3.0762 16.038
9    TC 186 2008:06  0.5688  5.483
10   TC 193 2009:01 -0.4775 -4.624
11   TC 200 2009:08 -0.4386 -4.217
12   LS 207 2010:03  0.4228  3.746
13   AO 237 2012:09 -0.3815 -4.877
14   TC 248 2013:08 -0.4082 -3.965
15   AO 260 2014:08 -0.4830 -6.027
16   AO 266 2015:02 -0.5183 -6.442

Questa è la mia trama

Ho anche questi messaggi di avviso.

Warning messages:
1: In locate.outliers.iloop(resid = resid, pars = pars, cval = cval,  :
  stopped when maxit was reached
2: In locate.outliers.iloop(resid = resid, pars = pars, cval = cval,  :
  stopped when maxit was reached
3: In locate.outliers.oloop(y = y, fit = fit, types = types, cval = cval,  :
  stopped when maxit was reached
4: In arima(x, order = c(1, d, 0), xreg = xreg) :
  possible convergence problem: optim gave code = 1
5: In auto.arima(x = c(5.77, 5.79, 5.79, 5.79, 5.79, 5.79, 5.78, 5.78,  :
  Unable to fit final model using maximum likelihood. AIC value approximated

dubbi:

  1. Se non sbaglio, il pacchetto tsoutliers rimuoverà gli outlier che rileva e attraverso l'uso del set di dati con gli outlier rimossi, ci fornirà il miglior modello arima adatto al set di dati, è corretto?
  2. Il set di dati di regolazione della serie viene spostato molto verso il basso a causa della rimozione del cambio di livello, ecc. Ciò non significa che se la previsione viene eseguita sulle serie rettificate, l'output della previsione sarà molto impreciso, poiché i dati più recenti sono già più di 12, mentre i dati adattati lo spostano a circa 7-8.
  3. Cosa significano i messaggi di avviso 4 e 5? Significa che non può fare auto.arima usando le serie modificate?
  4. Cosa significa il [12] in ARIMA (0,1,0) (0,0,1) [12]? È solo la mia frequenza / periodicità del mio set di dati, che lo imposto su base mensile? E questo significa anche che le mie serie di dati sono anche stagionali?
  5. Come posso rilevare la stagionalità nel mio set di dati? A partire dalla visualizzazione della trama delle serie temporali, non riesco a vedere alcuna tendenza evidente e se uso la funzione di decomposizione, supporrò che ci sia una tendenza stagionale? Quindi credo solo a quello che mi dicono i tsoutlier, dove c'è un trend stagionale, dato che c'è MA dell'ordine 1?
  6. Come posso continuare a fare previsioni con questi dati dopo aver identificato questi valori anomali?
  7. Come incorporare questi valori anomali in altri modelli di previsione: Smoothing esponenziale, ARIMA, Modello Strutural, Random Walk, theta? Sono sicuro di non poter rimuovere gli outlier poiché ci sono cambiamenti di livello e se prendo solo dati di serie regolati, i valori saranno troppo piccoli, quindi cosa devo fare?

Devo aggiungere questi valori anomali come regressore in auto.arima per le previsioni? Come funziona allora?

Risposte:


5

Questi commenti sono troppo lunghi ... quindi una "RISPOSTA"

  1. Sbagli, non si adegua e quindi identifica ARIMA (come fa AUTOBOX). Presumibilmente non assume alcuna regolazione di intervento e quindi si precipita a identificare un modello ARIMA potenzialmente influenzato dal mancato trattamento delle anomalie. Spesso è necessario regolare sia la serie causale specificata dall'utente sia la struttura deterministica non specificata (valori anomali / spostamenti di livello, impulsi stagionali, andamenti dell'ora locale) prima di identificare la struttura ARIMA. Vedi questo esempio di una scarsa dignosi che fa l'errore di differenziare inutilmente le serie originali mentre lo stato di natura vero / corretto non ha bisogno di differenze. La non stazionarietà non implica necessariamente la necessità di differenziazione, ma spesso può suggerire un de-significato per la regolazione di un cambiamento nel livello / media

  2. Le previsioni corrette sono sempre fatte dalle serie originali, quindi le previsioni dovrebbero essere credibili data la storia.

  3. Non ne ho idea in quanto non utilizzo attivamente questa procedura. Te l'ho consigliato perché hai chiesto soluzioni basate su r gratuite NON perché pensavo che fosse buono o sufficiente poiché la modellazione ARIMA è un processo iterativo (a più stadi) di autocontrollo.

  4. il modello suggerisce di pensare che i dati abbiano una componente stagionale (12) MA questo potrebbe riflettere semplicemente la necessità di un impulso stagionale.

  5. il concetto di tendenza stagionale è nella migliore delle ipotesi vago.

  6. La mia risposta sarebbe troppo ovvia e imbarazzante


1
tu molto @ricardo
IrishStat

4

Il pacchetto "tsoutliers" implementa la procedura descritta da Chen e Liu (1993) [1]. Una descrizione del pacchetto e della procedura è riportata anche in questo documento .

In breve, la procedura prevede due fasi principali:

  1. Rilevamento di valori anomali su un modello ARIMA scelto.
  2. Scegliere e / o rimontare il modello ARIMA inclusi gli outlier rilevati nel passaggio precedente e rimuovere quegli outlier che non sono significativi nel nuovo adattamento.

La serie viene quindi regolata per i valori anomali rilevati e gli stadi (1) e (2) vengono ripetuti fino a quando non vengono rilevati più valori anomali o fino al raggiungimento di un numero massimo di iterazioni.


Il primo stadio (rilevamento di valori anomali) è anche un processo iterativo. Alla fine di ogni iterazione i residui del modello ARIMA vengono regolati per i valori anomali rilevati all'interno di questa fase. Il processo viene ripetuto fino a quando non vengono trovati altri valori anomali o fino al raggiungimento di un numero massimo di iterazioni (per impostazione predefinita 4 iterazioni). I primi tre avvisi che ricevi sono correlati a questo loop interno, ovvero lo stage viene chiuso dopo quattro iterazioni.

È possibile aumentare questo numero massimo di iterazioni tramite l'argomento maxit.iloopin funzione tso. È consigliabile non impostare un numero elevato di iterazioni nella prima fase e lasciare che il processo passi alla seconda fase in cui il modello ARIMA viene rimontato o scelto di nuovo.


Le avvertenze 4 e 5 sono correlate al processo di adattamento del modello ARIMA e hanno scelto il modello, rispettivamente per le funzioni stats::arimae forecast:auto.arima. L'algoritmo che massimizza la funzione di probabilità non converge sempre in una soluzione. Puoi trovare alcuni dettagli relativi a questi problemi, ad esempio in questo post e in questo post


[1] Chung Chen e Lon-Mu Liu (1993) "Stima congiunta di parametri modello ed effetti anomali in serie temporali", Journal of American Statistical Association , 88 (421), pp. 284-297. DOI: 10.1080 / 01621459.1993.10594321 .


quanto tempo ci vorrà per eseguire tso ()?
Anoop Toffy,

@AnoopToffy dipende dalla lunghezza dei dati, dalla periodicità, ecc. Per i dati annuali, mensili, trimestrali, una dimensione del campione di circa 120 osservazioni e una dinamica che può essere ragionevolmente catturata da un modello ARIMA, l'algoritmo verrà eseguito al massimo circa 10 secondi (in genere molto meno).
javlacalle,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.