Schätzung des gleichen Modells über mehrere Zeitreihen


25

Ich habe einen unerfahrenen Hintergrund in Zeitreihen (einige ARIMA-Schätzungen / Prognosen) und stehe vor einem Problem, das ich nicht vollständig verstehe. Jede Hilfe wäre sehr dankbar.

Ich analysiere mehrere Zeitreihen, alle über das gleiche Zeitintervall und alle mit der gleichen Häufigkeit, und beschreibe alle einen ähnlichen Datentyp. Jede Serie ist nur eine Variable, es gibt keine anderen entsprechenden Prädiktoren, die ich betrachte.

Ich wurde gebeten, ein einzelnes Modell zu schätzen, das ALLE Reihen beschreibt. Stellen Sie sich beispielsweise vor, ich könnte eine ARIMA (p, d, q) mit den gleichen Ordnungen, Koeffizienten usw. finden, die für alle Reihen geeignet sind. Mein Vorgesetzter möchte nicht, dass ich jede Serie separat schätze, und er möchte auch nicht, dass ich eine Art VAR-Modell mit Abhängigkeiten zwischen den Serien mache.

Meine Frage ist: Wie würde ich ein solches Modell überhaupt nennen und wie könnte ich es schätzen / prognostizieren? Wenn es für Sie einfacher ist, Codebeispiele zu verwenden, spreche ich sowohl SAS als auch R.

Antworten:


8

Sie können eine Rastersuche durchführen: Beginnen Sie mit ARIMA (1,0,0) und probieren Sie alle Möglichkeiten bis zu ARIMA (5,2,5) oder so. Passen Sie das Modell an jede Serie an und schätzen Sie eine skalierungsunabhängige Fehlermessung wie MAPE oder MASE (MASE wäre wahrscheinlich besser). Wählen Sie das ARIMA-Modell mit der niedrigsten durchschnittlichen MASE aller Modelle.

Sie können dieses Verfahren verbessern, indem Sie eine Gegenprüfung durchführen Ihrer Fehlermessung für jede Serie, und auch durch Ihre Ergebnisse zu einem Vergleich naiven Prognose .

Es könnte eine gute Idee sein, zu fragen, warum Sie nach einem einzigen Modell suchen, um alle Serien zu beschreiben. Dies scheint keine gute Idee zu sein, es sei denn, sie werden durch denselben Prozess generiert.


2
Danke - ich werde es versuchen. Ich stimme zu, dass dies nicht die beste Idee zu sein scheint. Das Argument, das ich bekam, war, dass jede Reihe nicht genug Beobachtungen (~ 28) für eine gute Schätzung hat und dass es robuster wäre, über alle Reihen hinweg zu schätzen. Ich bin mir nicht sicher, ob ich diesem Argument zustimme.
sparc_spread

21

Eine Möglichkeit, dies zu tun, besteht darin, eine lange Zeitreihe mit all Ihren Daten und Sequenzen fehlender Werte zwischen den Reihen zu erstellen, um sie zu trennen. Zum Beispiel in R, wenn Sie drei Serien haben ( x, yund z) , die jeweils mit einer Länge von 100 und Frequenz 12, können Sie sie kommen wie folgt

combined <- ts(c(x,rep(NA,56),y,rep(NA,56),z,rep(NA,56)),frequency=12)

Beachten Sie, dass die Anzahl der fehlenden Werte ausgewählt wird, um sicherzustellen, dass die Saisonperiode beibehalten wird. Ich habe das letzte Jahr mit 8 fehlenden Werten aufgefüllt und dann vier fehlende Jahre (48 Werte) vor der nächsten Serie hinzugefügt. Dies sollte ausreichen, um sicherzustellen, dass alle seriellen Korrelationen zwischen den Serien verschwinden.

Dann können auto.arima()Sie das beste Modell finden:

library(forecast)
fit <- auto.arima(combined)

Schließlich können Sie das kombinierte Modell für jede Serie separat anwenden, um Vorhersagen zu erhalten:

fit.x <- Arima(x,model=fit)
fit.y <- Arima(y,model=fit)
fit.z <- Arima(z,model=fit)

5
+1, ordentlicher Trick. Nach dem Kommentar des OP zu einer anderen Antwort zu urteilen, wollte ich eine Art Panel-Datenmodell vorschlagen, aber das ist viel besser.
mpiktas

Dies ist eine große Hilfe, die sehr geschätzt wird. Können Sie mehr dazu sagen: Die Anzahl der fehlenden Werte wird so gewählt, dass die Saisonperiode erhalten bleibt ? Tut mir leid, dass ich nicht vollständig gefolgt bin - danke.
sparc_spread

1
Wenn die Daten saisonabhängig sind (wie dies bei monatlichen Beobachtungen häufig der Fall ist), möchten Sie, dass die langen Reihen weiterhin ein Vielfaches von 12 im Januar und ein Vielfaches von 12 im Februar enthalten. Wenn das Modell ausgewählt wird, kann die Saisonalität entsprechend modelliert werden.
Rob Hyndman

3
Um diesen Trick zu ergänzen, können Sie externe Regressoren (xreg) hinzufügen, die die Kategoriemitgliedschaft angeben. Dies würde getrennte Mittel für die verschiedenen Reihen erklären, während andere Koeffizienten weiterhin gemeinsam bleiben.
Jameson Quinn

6

Die Schätzung eines einzelnen Modells für mehrere Zeitreihen ist Teil der Panel- Datenökonometrie. In Ihrem Fall ist @Rob Hyndman jedoch ohne erklärende Variable die wahrscheinlich beste Antwort. Wenn sich jedoch herausstellt, dass die Mittelwerte der Zeitreihen unterschiedlich sind (testen Sie es, da in diesem Fall die Methode von @Rob Hyndman fehlschlagen sollte!), Aber die ARMA-Struktur dieselbe ist, müssen Sie Arellano-Bond verwenden (sorry, Wikipedia hat) Keine Seite darauf, also suchen Sie auf Google) Typ Estimator. Das Modell in diesem Fall wäre:

yicht=αich+ρ1yich,t-1+...+ρpyich,t-p+εicht

ichεichtich


1
Schätzen Sie Ihre und die anderen Lösungen sehr. Sie erwähnen Folgendes : Allerdings, wenn sich herausstellt, dass die Mittelwerte der Zeitreihen unterschiedlich sind (testen Sie es, da in diesem Fall die Methode von @Rob Hyndman fehlschlagen sollte!). Können Sie näher erläutern, warum dies so ist? Vielen Dank.
sparc_spread

2
@sparc_spread, angenommen, es sind nur zwei Serien. Einer ist mit der Varianz 1 bei ungefähr 0 zentriert, und der andere ist mit der Varianz 1 bei 1000 zentriert. Wenn beide Reihen unter Verwendung der gleichen Koeffizienten angepasst werden, bedeutet dies, dass wir alpha_1 = alpha_2 einschränken, sodass die Vorhersagen für beide Reihen ungefähr wären 500, schrecklich weg. Grundsätzlich kann eine erneute Zentrierung / Normalisierung erforderlich sein, bevor alle Serien zum selben Modell gehören, bevor das Gelenkmodell angepasst wird.
Zkurtz

4

Eine Alternative zu Rob Hyndmans Ansatz, eine einzelne Datenreihe zu erstellen, ist das Zusammenführen der Daten. Dies kann sinnvoll sein, wenn Ihre mehreren Zeitreihen verrauschte Messwerte von einer Reihe von Maschinen darstellen, die dasselbe Ereignis aufzeichnen. (Wenn sich jede Zeitreihe in einem anderen Maßstab befindet, müssen Sie zuerst die Daten normalisieren.)

HINWEIS: Sie haben immer noch nur 28 Messwerte, nur weniger Rauschen. Dies ist möglicherweise nicht für Ihre Situation geeignet.

t1=xts(jitter(sin(1:28/10),amount=0.2),as.Date("2012-01-01")+1:28)
t2=xts(jitter(sin(1:28/10),amount=0.2),as.Date("2012-01-01")+1:28)
t3=(t1+t2)/2

Bildbeschreibung hier eingeben


Dies funktioniert nur, wenn alle Signale ähnlicher Art (z. B. periodisch) in Phase sind. In Ihrem Beispiel würden sich zwei der Sinuswellen, die um 180 Grad phasenverschoben sind, vollständig auslöschen!
tdc

3
Ja, die Mittelung Ihrer Daten ist nur dann sinnvoll, wenn jede Datumsreihe dieselben Daten darstellen soll, und (Sie können davon ausgehen, dass dies der Fall ist) sie unterscheiden sich nur darin, dass jede Datenreihe ein anderes Rauschen aufweist.
Darren Cook

1

Ich würde mir versteckte Markov-Modelle und dynamische Bayes'sche Netzwerke ansehen. Sie modellieren Zeitreihendaten. Sie werden auch unter Verwendung mehrerer Zeitreihen-Instanzen, z. B. mehrerer Blutdruck-Zeitreihen von verschiedenen Personen, trainiert. Sie sollten Pakete in Python und R finden, um diese zu erstellen. Möglicherweise müssen Sie für diese Modelle eine Struktur definieren.


0

Ich versuche das Gleiche zu tun. Anscheinend gibt es da draußen ein so genanntes "multivariates AutoRegressiv" -Modell. Ich habe einen Hinweis darauf gefunden, aber nicht, wie man es benutzt. Aufgrund des verlinkten Papiers gehe ich davon aus, dass es in R implementiert wurde.

http://journal.r-project.org/archive/2012-1/RJournal_2012-1_Holmes~et~al.pdf


Der Standardansatz ist die Vektorautoregression, und es gibt ein R-Paket namens var .
Xi'an

Unterscheidet sich eine Vektorautoregession von der Autoregression für Paneldaten? Oder handelt es sich um unterschiedliche Felder, unterschiedliche Namen? Das plm-Paket wurde für Paneldaten vorgeschlagen. cran.r-project.org/web/packages/plm/vignettes/plm.pdf clidyn.ethz.ch/papers/arfit.pdf
Mox
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.