Problema nella definizione dell'ordine ARIMA


16

Questo è un post lungo, quindi spero che tu possa sopportare con me, e per favore correggimi dove sbaglio.

Il mio obiettivo è produrre una previsione giornaliera basata su 3 o 4 settimane di dati storici.

I dati sono dati di 15 minuti del carico locale di una delle linee di un trasformatore. Ho problemi a trovare l'ordine del modello di un processo ARIMA stagionale. Considera le serie temporali della domanda di elettricità:

Serie storiche originali http://i.share.pho.to/80d86574_l.png

Quando le prime 3 settimane vengono prese come sottoinsieme e differenziate, vengono calcolati i seguenti diagrammi ACF / PACF:

Sottoinsieme http://i.share.pho.to/5c165aef_l.png

Prima differenza http://i.share.pho.to/b7300cc2_l.png

Differenza stagionale e prima http://i.share.pho.to/570c5397_l.png

Sembra che la serie sia un po 'stazionaria. Ma la stagionalità potrebbe anche essere settimanale (vedi Settimana differenza stagionale e differenze secondo ordine [qui] http://share.pho.to/3owoq , cosa ne pensi?)

Quindi concludiamo che il modello prende forma di:

UNRioMUN(p,1,q)(P,1,Q)96

Nell'ultima figura un picco distinto al ritardo 96 indica un componente stagionale MA (1) (forse AR (1) potrebbe anche essere presente in quanto vi è un picco distinto anche in PACF). I picchi al ritardo 1: 4 indicano un componente MA (4) che corrisponde al decadimento esponenziale nel PACF con un po 'di immaginazione. Pertanto, il modello iniziale selezionato manualmente potrebbe essere:

UNRioMUN(0,1,4)(0,1,1)96
con

Series: x 
ARIMA(0,1,4)(0,1,1)[96] 

    Coefficients:
    ma1      ma2      ma3      ma4     sma1
    -0.2187  -0.2233  -0.0996  -0.0983  -0.9796
    s.e.   0.0231   0.0234   0.0257   0.0251   0.0804

    sigma^2 estimated as 364612:  log likelihood=-15138.91
    **AIC=30289.82   AICc=30289.87   BIC=30323.18**

La funzione auto.arima calcola il seguente modello (con stepwise e approssimazione su TRUE, altrimenti ci vuole troppo tempo per convergere):

UNRioMUN(1,1,1)(2,0,2)96

Series: x 
ARIMA(1,1,1)(2,0,2)[96] 

    Coefficients:
    ar1      ma1    sar1    sar2     sma1     sma2
    0.7607  -1.0010  0.4834  0.4979  -0.3369  -0.4168
    s.e.  0.0163   0.0001  0.0033  0.0116   0.0216   0.0255

    sigma^2 estimated as 406766:  log likelihood=-15872.02
    **AIC=31744.99   AICc=31745.05   BIC=31784.25**

Ciò significa che non viene applicata alcuna differenziazione stagionale. Ecco i residui di entrambi i modelli. La statistica di Ljung Box fornisce un valore p molto piccolo, indicando che è ancora presente un'autocorrelazione (? Correggimi se sbaglio).

previsione

Pertanto, per determinare quale sia il migliore, un test di precisione fuori campione è quindi il migliore. Quindi per entrambi i modelli viene fatta una previsione con 24 ore di anticipo che viene confrontata tra loro. I risultati sono: auto.arima http://i.share.pho.to/5d1dd934_l.png modello manuale http://i.share.pho.to/7ca69c97_l.png

Auto:

                      ME     RMSE      MAE       MPE      MAPE      MASE        ACF1 Theil's U
Training set   -2.586653 606.3188 439.1367 -1.284165  7.599403 0.4914563 -0.01219792        NA
Test set     -330.144797 896.6998 754.0080 -7.749675 13.268985 0.8438420  0.70219229  1.617834

Manuale

                       ME     RMSE      MAE        MPE      MAPE      MASE         ACF1 Theil's U
Training set 2.456596e-03 589.1267 435.6571 -0.7815229  7.509774 0.4875621 -0.002034122        NA
Test set     2.878919e+02 919.7398 696.0593  3.4756363 10.317420 0.7789892  0.731013599  1.281764

Domande

Come puoi pensare, questa è un'analisi delle prime tre settimane di un set di dati. Sto lottando nella mia mente con le seguenti domande:

  1. Come faccio a selezionare il miglior modello ARIMA (provando tutti i diversi ordini e controllando il miglior MASE / MAPE / MSE? In cui la selezione della misurazione delle prestazioni può essere una discussione a sé stante ..)
  2. Se generi un nuovo modello e previsioni per ogni nuova previsione giornaliera (come nelle previsioni online), devo tenere conto dell'andamento annuale e come? (come in un sottoinsieme così piccolo, la mia ipotesi sarebbe che la tendenza è neglible)
  3. Ti aspetteresti che l'ordine del modello rimanga lo stesso per tutto il set di dati, vale a dire quando prendere un altro sottoinsieme mi darà lo stesso modello?
  4. Qual è un buon modo, all'interno di questo metodo, per far fronte alle vacanze? O è necessario ARIMAX con manichini natalizi esterni per questo?
  5. Devo usare l'approccio della serie di Fourier per provare i modelli seasonality=672come discusso in Lunghi periodi stagionali ?
  6. In tal caso sarebbe come fit<-Arima(timeseries,order=c(0,1,4), xreg=fourier(1:n,4,672)(dove la funzione fourier è come definita nel post del blog di Hyndman)
  7. I componenti P e Q iniziali sono inclusi con la serie Fourier?

La maggior parte delle conoscenze teoriche ottenute da FPP , grandi cose!

Prima di consigliare sull'uso del livellamento esponenziale o della regressione lineare (dinamica) si sta lavorando anche a questo confronto.

Dati

https://www.dropbox.com/sh/mzx61sskya5ze6x/Zq3A7Q6htH/trafo.txt

Codice

data<-read.csv("file", sep=";")
load<-data[,3]

Ho rimosso i pochi valori zero con i valori della settimana precedente

stepback<-672
load[is.na(load)] <- 0 # Assumed no 0's in first 672 values!
idx <- which(load == 0)
idx <- idx[which(idx>stepback)] 
load[idx] <- load[idx-stepback] 

ED<-ts(load,start=0, end=c(760,96),frequency=96)
x<-window(ED,start=0, end=c(20,96))

È anche possibile pubblicare un esempio riproducibile, ma ciò renderà il post ancora più lungo, ma possibile se necessario. Quindi, se c'è qualcosa che dovrei fornire, per favore fatemelo sapere.

Risposte:


9
  1. Come faccio a selezionare il miglior modello ARIMA (provando tutti i diversi ordini e controllando il miglior MASE / MAPE / MSE? In cui la selezione della misurazione delle prestazioni può essere una discussione a sé stante ..)

Le stime del rischio fuori campione sono il gold standard per la valutazione delle prestazioni e quindi per la selezione del modello. Idealmente, dovresti convalidare in modo incrociato in modo che le tue stime di rischio siano calcolate in media su più dati. FPP spiega un metodo di convalida incrociata per le serie storiche. Vedi Tashman per una revisione di altri metodi:

Tashman, LJ (2000). Test fuori campione di accuratezza delle previsioni: analisi e revisione. International Journal of Forecasting, 16 (4), 437–450. DOI: 10.1016 / S0169-2070 (00) 00.065-0

Naturalmente, la convalida incrociata richiede molto tempo e quindi le persone ricorrono spesso all'utilizzo di criteri nel campione per selezionare un modello, come AIC, che è il modo in cui auto.arima seleziona il modello migliore. Questo approccio è perfettamente valido, se non forse altrettanto ottimale.

  1. Se generi un nuovo modello e previsioni per ogni nuova previsione giornaliera (come nelle previsioni online), devo tenere conto dell'andamento annuale e come? (come in un sottoinsieme così piccolo, la mia ipotesi sarebbe che la tendenza è neglible)

Non sono sicuro di cosa intendi per tendenza annuale. Supponendo che tu significhi stagionalità annuale, non c'è davvero alcun modo di tenerne conto con meno di un anno di dati.

  1. Ti aspetteresti che l'ordine del modello rimanga lo stesso per tutto il set di dati, vale a dire quando prendere un altro sottoinsieme mi darà lo stesso modello?

Mi aspetto che, salvo alcune modifiche al modo in cui i dati vengono generati, il modello sottostante più corretto sarà lo stesso per tutto il set di dati. Tuttavia, ciò non equivale a dire che il modello selezionato da qualsiasi procedura (come la procedura utilizzata da auto.arima) sarà lo stesso se tale procedura viene applicata a diversi sottoinsiemi di dati. Questo perché la variabilità dovuta al campionamento comporterà una variabilità nei risultati della procedura di selezione del modello.

  1. Qual è un buon modo, all'interno di questo metodo, per far fronte alle vacanze? O è necessario ARIMAX con manichini natalizi esterni per questo?

I manichini delle vacanze esterne sono l'approccio migliore.

  1. Devo usare l'approccio della serie di Fourier per provare i modelli seasonality=672come discusso in Periodi stagionali lunghi ?

Devi fare qualcosa, perché come menzionato in quell'articolo, la funzione arima in R non supporta periodi stagionali superiori a 350. Ho avuto un ragionevole successo con l'approccio di Fourier. Altre opzioni includono la previsione dopo la decomposizione stagionale (anche coperta in FPP) e modelli di livellamento esponenziale come pipistrelli e pipistrelli.

  1. In tal caso sarebbe come fit<-Arima(timeseries,order=c(0,1,4), xreg=fourier(1:n,4,672)(dove la funzione fourier è come definita nel post del blog di Hyndman)

Sembra corretto. Dovresti sperimentare diversi numeri di termini. Si noti che ora esiste una fourierfunzione nel pacchetto di previsione con una specifica leggermente diversa che presumo sostituisca quella sul blog di Hyndman. Vedere il file della guida per la sintassi.

  1. I componenti P e Q iniziali sono inclusi con la serie Fourier?

Non sono sicuro di quello che stai chiedendo qui. P e Q di solito si riferiscono ai gradi dei componenti stagionali AR e MA. Usando l'approccio di Fourier, non ci sono componenti stagionali e invece ci sono covariate per termini di Fourier relativi alla stagione. Non è più ARIMA stagionale, è ARIMAX dove le covariate si avvicinano alla stagione.

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.