Problem beim Definieren der ARIMA-Bestellung

16

Dies ist ein langer Beitrag, also hoffe ich, dass Sie ihn mit mir tragen können, und bitte korrigieren Sie mich, wo ich falsch liege.

Mein Ziel ist es, eine tägliche Prognose auf der Grundlage von historischen Daten für 3 oder 4 Wochen zu erstellen.

Die Daten sind 15-Minuten-Daten der lokalen Last einer der Transformatorleitungen. Ich habe Probleme, die Modellreihenfolge eines saisonalen ARIMA-Prozesses zu finden. Betrachten Sie die Zeitreihen des Strombedarfs:

Ursprüngliche Zeitreihe http://i.share.pho.to/80d86574_l.png

Wenn die ersten 3 Wochen als Teilmenge genommen und differenziert werden, werden die folgenden ACF / PACF-Diagramme berechnet:

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

Erster Unterschied http://i.share.pho.to/b7300cc2_l.png

Saisonale und erste Differenz http://i.share.pho.to/570c5397_l.png

Dies sieht aus wie die Serie ist ein bisschen stationär. Die Saisonalität kann aber auch wöchentlich sein (siehe Unterschiede zwischen Saisonalitätswoche und zweiter Ordnung [hier] http://share.pho.to/3owoq , was denkst du?)

Lassen Sie uns also folgern, dass das Modell folgende Form :

EINRichMEIN(p,1,q)(P,1,Q.)96

In der letzten Abbildung weist ein deutlicher Anstieg bei Lag 96 auf eine saisonale MA (1) -Komponente hin (möglicherweise könnte AR (1) ebenso gut sein wie ein deutlicher Anstieg bei PACF). Die Spitzen bei Verzögerung 1: 4 zeigen eine MA (4) -Komponente an, die mit ein wenig Phantasie einem exponentiellen Abfall in der PACF entspricht. Das ursprünglich manuell ausgewählte Modell könnte also sein: mit

EINRichMEIN(0,1,4)(0,1,1)96

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**

Die auto.arima-Funktion berechnet das folgende Modell (mit schrittweiser Annäherung an TRUE, andernfalls dauert die Konvergenz zu lange): with

EINRichMEIN(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**

Dies bedeutet, dass keine saisonalen Unterschiede angewendet werden. Hier sind die Residuen der beiden Modelle. Die Ljung-Box-Statistik gibt einen sehr kleinen p-Wert an, der anzeigt, dass immer noch eine Autokorrelation vorliegt (korrigieren Sie mich, wenn ich falsch liege).

Vorhersage

Um herauszufinden, was besser ist, ist ein Genauigkeitstest außerhalb der Stichprobe am besten. Daher wird für beide Modelle eine Prognose erstellt, die 24 Stunden im Voraus erstellt und miteinander verglichen wird. Die Ergebnisse sind: auto.arima http://i.share.pho.to/5d1dd934_l.png manual model 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

Handbuch

                       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

Fragen

Wie Sie sich vorstellen können, handelt es sich hierbei um eine Analyse der ersten drei Wochen eines Datensatzes. Ich habe mit den folgenden Fragen zu kämpfen:

  1. Wie wähle ich das beste ARIMA-Modell aus (indem ich alle verschiedenen Aufträge ausprobiere und das beste MASE / MAPE / MSE prüfe? Die Auswahl der Leistungsmessung kann eine Diskussion für sich sein.)
  2. Wenn ich (wie bei der Online-Vorhersage) für jede neue Tagesprognose ein neues Modell und eine neue Prognose erstelle, muss ich dann den jährlichen Trend berücksichtigen und wie? (wie bei einer so kleinen Teilmenge würde ich vermuten, dass der Trend vernachlässigbar ist)
  3. Würden Sie erwarten, dass die Modellreihenfolge während des gesamten Datensatzes gleich bleibt, dh wenn Sie eine andere Teilmenge nehmen, erhalte ich dann dasselbe Modell?
  4. Was ist ein guter Weg, um im Rahmen dieser Methode mit Feiertagen umzugehen? Oder wird dafür ARIMAX mit externen Feiertagsdummys benötigt?
  5. Muss ich den Fourier-Reihenansatz verwenden, um Modelle zu seasonality=672testen, die in Lange saisonale Perioden beschrieben wurden ?
  6. Wenn ja, würde dies so aussehen fit<-Arima(timeseries,order=c(0,1,4), xreg=fourier(1:n,4,672)(wobei die Fourier-Funktion wie in Hyndmans Blog-Post definiert ist).
  7. Sind erste P- und Q-Komponenten in der Fourier-Reihe enthalten?

Das meiste theoretische Wissen von FPP , großartiges Zeug!

Bevor auf die Verwendung der exponentiellen Glättung oder der (dynamischen) linearen Regression hingewiesen wird, wird ebenfalls an einem Vergleich gearbeitet.

Daten

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

Code

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

Die wenigen Nullwerte habe ich mit Woche vor Werten entfernt

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))

Es ist auch möglich, ein reproduzierbares Beispiel zu posten, aber dies verlängert den Beitrag, ist jedoch bei Bedarf möglich. Wenn es also etwas gibt, das ich bereitstellen sollte, lassen Sie es mich bitte wissen.

Peter Nijhuis
quelle

Antworten:

8
  1. Wie wähle ich das beste ARIMA-Modell aus (indem ich alle verschiedenen Aufträge ausprobiere und das beste MASE / MAPE / MSE prüfe? Die Auswahl der Leistungsmessung kann eine Diskussion für sich sein.)

Risikoschätzungen außerhalb der Stichprobe sind der Goldstandard für die Leistungsbewertung und damit für die Modellauswahl. Im Idealfall validieren Sie gegenseitig, damit Ihre Risikoschätzungen über mehr Daten gemittelt werden. FPP erläutert eine Kreuzvalidierungsmethode für Zeitreihen. Siehe Tashman für einen Überblick über andere Methoden:

Tashman, LJ (2000). Out-of-Sample-Tests zur Prognosegenauigkeit: Analyse und Überprüfung. International Journal of Forecasting, 16 (4), 437–450. doi: 10.1016 / S0169-2070 (00) 00065-0

Eine Kreuzvalidierung ist natürlich zeitaufwändig und daher wird häufig auf Stichprobenkriterien zurückgegriffen, um ein Modell wie AIC auszuwählen. So wählt auto.arima das beste Modell aus. Dieser Ansatz ist durchaus gültig, wenn auch nicht optimal.

  1. Wenn ich (wie bei der Online-Vorhersage) für jede neue Tagesprognose ein neues Modell und eine neue Prognose erstelle, muss ich dann den jährlichen Trend berücksichtigen und wie? (wie bei einer so kleinen Teilmenge würde ich vermuten, dass der Trend vernachlässigbar ist)

Ich bin mir nicht sicher, was Sie unter jährlichem Trend verstehen. Angenommen, Sie meinen die jährliche Saisonabhängigkeit, gibt es keine Möglichkeit, dies mit Daten von weniger als einem Jahr zu berücksichtigen.

  1. Würden Sie erwarten, dass die Modellreihenfolge während des gesamten Datensatzes gleich bleibt, dh wenn Sie eine andere Teilmenge nehmen, erhalte ich dann dasselbe Modell?

Ich würde davon ausgehen, dass das korrekteste zugrunde liegende Modell im gesamten Datensatz gleich ist, es sei denn, es werden Änderungen an der Generierung der Daten vorgenommen. Dies bedeutet jedoch nicht, dass das von einer Prozedur ausgewählte Modell (z. B. die von auto.arima verwendete Prozedur) identisch ist, wenn diese Prozedur auf verschiedene Teilmengen der Daten angewendet wird. Dies liegt daran, dass die Variabilität aufgrund der Stichprobe zu einer Variabilität der Ergebnisse des Modellauswahlverfahrens führt.

  1. Was ist ein guter Weg, um im Rahmen dieser Methode mit Feiertagen umzugehen? Oder wird dafür ARIMAX mit externen Feiertagsdummys benötigt?

Externe Urlaubspuppen sind der beste Ansatz.

  1. Muss ich den Fourier-Reihenansatz verwenden, um Modelle zu seasonality=672testen, die in Lange saisonale Perioden beschrieben wurden ?

Sie müssen etwas unternehmen, da die Arima-Funktion in R, wie in diesem Artikel erwähnt, keine saisonalen Perioden größer als 350 unterstützt. Ich habe mit dem Fourier-Ansatz vernünftige Erfolge erzielt. Weitere Optionen sind Prognosen nach saisonaler Zersetzung (ebenfalls in FPP enthalten) und Modelle zur exponentiellen Glättung wie Fledermäuse und Fledermäuse.

  1. Wenn ja, würde dies so aussehen fit<-Arima(timeseries,order=c(0,1,4), xreg=fourier(1:n,4,672)(wobei die Fourier-Funktion wie in Hyndmans Blog-Post definiert ist).

Das sieht richtig aus. Sie sollten mit einer unterschiedlichen Anzahl von Begriffen experimentieren. Beachten Sie, dass fourierdas Prognosepaket jetzt eine Funktion mit einer geringfügig anderen Spezifikation enthält, von der ich annehme, dass sie die Funktion in Hyndmans Blog ersetzt. Informationen zur Syntax finden Sie in der Hilfedatei.

  1. Sind erste P- und Q-Komponenten in der Fourier-Reihe enthalten?

Ich bin nicht sicher, was Sie hier fragen. P und Q beziehen sich normalerweise auf die Grade der saisonalen AR- und MA-Komponenten. Bei Verwendung des Fourier-Ansatzes gibt es keine saisonalen Komponenten und stattdessen Kovariaten für saisonabhängige Fourier-Terme. Es ist keine saisonale ARIMA mehr, sondern ARIMAX, bei der die Kovariaten ungefähr der Jahreszeit entsprechen.

Jeremy Coyle
quelle