Ist es möglich, die Vorhersage von Zeitreihen zu automatisieren?

18

Ich möchte einen Algorithmus entwickeln, der in der Lage ist, beliebige Zeitreihen zu analysieren und "automatisch" die beste traditionelle / statistische Prognosemethode (und ihre Parameter) für die analysierten Zeitreihendaten auszuwählen.

Wäre es möglich so etwas zu machen? Wenn ja, können Sie mir einige Tipps geben, wie dies angegangen werden kann?

StatsNewbie123
quelle
3
Nein, das kann vernünftigerweise nicht erreicht werden. Häufig gibt es nicht genügend Daten, um zwischen zwei vernünftigen Modellen zu unterscheiden, egal welche Modelle möglich sind. Um ein bestes Modell zu erhalten, muss die Physik absolut bekannt sein, und sehr häufig sind die Modellierungsannahmen nicht einmal bekannt und / oder nicht getestet / nicht testbar.
Carl
3
Nein, es gibt keine Möglichkeit, das beste Modell zu bestimmen. Python ist in dieser Diskussion nicht relevant. Trotzdem gibt es Versuche mit guten Ergebnissen. Zum Beispiel github.com/facebook/prophet project. Es hat auch Python-Bindung.
Cagdas Ozgenc
3
Ich stimme offen zu lassen, weil ich denke, dass es eine vernünftige Frage ist - auch wenn die Antwort "nein" ist. Ich würde vorschlagen, Python aus dem Titel zu entfernen, da es hier nicht relevant oder besonders thematisch ist.
mkt - Setzen Sie Monica
1
Ich habe Python wie vorgeschlagen aus dem Titel entfernt. Danke für deine Antworten.
StatsNewbie123
2
Siehe "kein freies Mittagessen" -Satz.
AdamO

Antworten:

20

Zunächst müssen Sie beachten, dass der von IrishStat beschriebene Ansatz für ARIMA-Modelle und nicht für generische Modellgruppen spezifisch ist.

So beantworten Sie Ihre Hauptfrage "Ist es möglich, die Vorhersage von Zeitreihen zu automatisieren?":

Ja ist es. In meinem Bereich der Nachfrageprognose tun dies die meisten kommerziellen Prognosepakete. Dies gilt auch für mehrere Open-Source-Pakete, insbesondere für Rob Hyndmans Funktionen auto.arima () (automatisierte ARIMA-Prognose) und ETS () (automatisierte Prognose mit exponentieller Glättung) aus dem Open-Source-Prognose-Paket in R. Einzelheiten zu diesen beiden Funktionen finden Sie hier . Es gibt auch eine Python-Implementierung von auto.arima namens Pyramid , obwohl sie meiner Erfahrung nach nicht so ausgereift ist wie die R-Pakete.

Sowohl die von mir erwähnten kommerziellen Produkte als auch die von mir erwähnten Open-Source-Pakete basieren auf der Idee, anhand von Informationskriterien die beste Vorhersage zu treffen: Sie passen eine Reihe von Modellen an und wählen dann das Modell mit dem niedrigsten AIC, BIC, AICc, etc .... (in der Regel wird dies anstelle der Validierung der Stichprobe durchgeführt).

Es gibt jedoch eine wichtige Einschränkung: Alle diese Methoden funktionieren in einer einzigen Modellfamilie. Sie wählen das bestmögliche Modell aus einer Reihe von ARIMA-Modellen oder das bestmögliche Modell aus einer Reihe von exponentiellen Glättungsmodellen.

Dies ist viel schwieriger, wenn Sie aus verschiedenen Modellfamilien auswählen möchten, z. B. wenn Sie das beste Modell aus ARIMA, Exponential Smoothing und der Theta-Methode auswählen möchten. Theoretisch können Sie dies auf dieselbe Weise tun wie innerhalb einer einzelnen Modellfamilie, dh unter Verwendung von Informationskriterien. In der Praxis müssen Sie jedoch den AIC oder BIC für alle betrachteten Modelle genau gleich berechnen. Dies ist eine erhebliche Herausforderung. Es ist möglicherweise besser, eine zeitreihenübergreifende Validierung oder eine Out-of-Sample-Validierung anstelle von Informationskriterien zu verwenden, dies ist jedoch rechenintensiver (und für den Code langwierig).

Das Prophet-Paket von Facebook automatisiert auch die Erstellung von Vorhersagen basierend auf allgemeinen additiven Modellen. Weitere Informationen finden Sie hier . Prophet passt jedoch nur zu einem einzigen Modell, obwohl es ein sehr flexibles Modell mit vielen Parametern ist. Die implizite Annahme des Propheten ist, dass ein GAM "das einzige Modell ist, das sie alle regiert", was zwar theoretisch nicht gerechtfertigt ist, aber für reale Szenarien sehr pragmatisch und nützlich ist.

Eine weitere Einschränkung, die für alle oben genannten Methoden gilt: Möglicherweise möchten Sie eine automatische Zeitreihenvorhersage durchführen, da Sie mehrere Zeitreihen prognostizieren möchten, zu viele, um sie manuell zu analysieren. Ansonsten könnten Sie einfach Ihre eigenen Experimente durchführen und das beste Modell selbst finden. Sie müssen bedenken, dass ein automatisierter Prognoseansatz niemals für jede Zeitreihe das beste Modell finden wird - es wird im Durchschnitt über alle Zeitreihen hinweg ein einigermaßen gutes Modell liefern, aber es ist immer noch möglich, dass einige Von diesen Zeitreihen werden bessere Modelle als die durch die automatisierte Methode ausgewählten vorliegen. Siehe diesen Beitragfür ein Beispiel dafür. Um es einfach auszudrücken: Wenn Sie mit automatisierten Prognosen arbeiten, müssen Sie "gut genug" Prognosen tolerieren, anstatt die bestmöglichen Prognosen für jede Zeitreihe.

Skander H. - Setzen Sie Monica wieder ein
quelle
Vielen Dank für eine so aufschlussreiche Antwort. Ehrlich gesagt war meine anfängliche Idee, bei der Beantwortung dieser Frage aus verschiedenen Modellfamilien auswählen zu können.
StatsNewbie123
Was ist, wenn der Algorithmus auf eine spezifischere Domäne angewendet werden soll, z. B. auf die Geschäftsprognose (z. B. für die Produktionsplanung und die Bestandsverwaltung)? Denken Sie, dass es bessere Ergebnisse erzielen könnte?
StatsNewbie123
2
@JoanaClaudino Ja, das wäre einfacher - das ist der Kern dessen, was Pakete für kommerzielle Nachfrageprognosen leisten. Dies ist jedoch einfacher, da Sie sich in der Regel auf eine bestimmte Geschäftsdomäne beschränken können (Zeitreihen, die aus derselben Geschäftsdomäne stammen, weisen ähnliche Merkmale in Bezug auf Saisonalität, Datendichte usw. auf). Dann kann man davon ausgehen, dass eine Familie für alle geeignet ist.)
Skander H. - Monica
Okay, ich verstehe es jetzt. Nochmals vielen Dank für diese großartige Hilfe.
StatsNewbie123
11

Mein vorgeschlagener Ansatz umfasst Modelle, die viel allgemeiner sind als ARIMA, da sie das Potenzial für saisonale Dummies enthalten, die sich im Laufe der Zeit ändern können, mehrere Ebenen, mehrere Trends, Parameter, die sich im Laufe der Zeit ändern können, und sogar Fehlervarianzen, die sich im Laufe der Zeit ändern können. Diese Familie wird genauer als ARMAX-Modelle bezeichnet, schließt jedoch aus Gründen der vollständigen Transparenz eine (seltene) Variante mit multiplikativer Struktur aus.

Sie haben um Tipps gebeten, und ich bin der Meinung, dass dies eine gute Lösung sein könnte, um Ihnen den Einstieg zu erleichtern.

Ich würde vorschlagen, dass Sie Code schreiben, um diesem Flussdiagramm / Workflow zu folgen / zu emulieren. Das "beste Modell" kann durch Auswertung des von Ihnen angegebenen Kriteriums ermittelt werden. Dies kann die MSE / AIC der angepassten Daten oder die MAPE / SMAPE der zurückgehaltenen Daten oder ein beliebiges Kriterium Ihrer Wahl sein.

Seien Sie sich bewusst, dass die Detaillierung jedes dieser Schritte recht einfach sein kann, wenn Sie einige der spezifischen Anforderungen / Ziele / Einschränkungen der Zeitreihenanalyse nicht kennen, ABER es kann (sollte!) Komplexer sein, wenn Sie ein tieferes Verständnis haben / Lernen / Erkennen der Komplexität / Chancen einer gründlichen Zeitreihenanalyse.

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben

Ich wurde gebeten, weitere Anweisungen für die Automatisierung der Zeitreihenmodellierung (oder der Modellierung im Allgemeinen) zu geben. Https://stats.stackexchange.com/search?q=peeling+an+onion enthält einige meiner Anleitungen zu "Zwiebeln schälen" und damit verbundene Aufgaben.

AUTOBOX beschreibt und zeigt die Zwischenschritte, da es ein nützliches Modell darstellt und in dieser Hinsicht ein nützlicher Lehrer sein könnte. Die ganze wissenschaftliche Idee besteht darin, "das hinzuzufügen, was als notwendig erscheint" und "das zu löschen, was als weniger nützlich erscheint". Dies ist der iterative Prozess, den Box und Bacon in früheren Zeiten vorgeschlagen haben.

Modelle müssen komplex genug (ausgefallen), aber nicht zu komplex (ausgefallen) sein. Die Annahme, dass einfache Methoden mit komplexen Problemen funktionieren, steht nicht im Einklang mit der wissenschaftlichen Methode nach Roger Bacon und Tonnen von Anhängern von Bacon. Wie Roger Bacon einmal sagte und ich oft umschrieb: Wissenschaft zu betreiben bedeutet, nach wiederholten Mustern zu suchen. Anomalien zu erkennen bedeutet, Werte zu identifizieren, die nicht wiederholten Mustern folgen. Denn wer die Wege der Natur kennt, wird ihre Abweichungen leichter bemerken, und wer sie kennt, wird ihre Wege genauer beschreiben. Man lernt die Regeln, indem man beobachtet, wann die aktuellen Regeln versagen. Wenn man erkennt, wann das aktuell identifizierte "beste Modell / Theorie" unzureichend ist, kann man zu einer "besseren Darstellung" iterieren.

In meinen Worten "schlug Tukey Exploratory Data Analysis (EDA) vor, die Schemata der Modellverfeinerung vorschlug, die auf offensichtlichen Modellmängeln beruhten, die von den Daten vorgeschlagen wurden". Dies ist das Herz von AUTOBOX und der Wissenschaft. EDA dient dazu zu sehen, was uns die Daten über die formale Modellierungs- oder Hypothesentestaufgabe hinaus sagen können.

Der Lackmustest eines automatischen Modellierungsprogramms ist recht einfach. Trennt es Signal und Rauschen ohne Überanpassung? Empirische Beweise legen nahe, dass dies möglich und möglich ist. Prognosegenauigkeiten sind oft irreführend, da die Zukunft nicht für die Vergangenheit verantwortlich ist und je nach Herkunft die Ergebnisse variieren können.

IrishStat
quelle
Ich danke dir sehr. Ihre Antwort ist äußerst hilfreich!
StatsNewbie123
Vielen Dank, IrishStat. Das ist aufschlussreich. Sind wir jemals berechtigt, einen Parameter im Gegensatz zu "Parameter löschen" beizubehalten, obwohl der Parameter statistisch nicht signifikant ist?
ColorStatistics
1
Ja. wenn es Ihnen eine "angenehmere Antwort" gibt. Ein Steigungskoeffizient, der sich nicht von 0,0 unterscheidet, kann eine realistischere (wenn nicht statistisch signifikante) Prognose liefern. Andernfalls ist das Tragen von Überschusskoeffizienten unlogisch und führt zu einer erhöhten Unsicherheit bei der Varianzprognose. Einige Autoren, die nicht in der Lage sind, sich blind / naiv mit Notwendigkeits- und Hinlänglichkeitstests zu befassen, gehen davon aus, dass die Modellidentifizierung ein einstufiger Prozess ist, während Box und Jenkins (und alle anderen!) Sich darum bemühen, das Modell so komplex wie nötig, aber nicht übermäßig komplex zu machen Albert E., JW Tukey et al.
IrishStat
3
"Dieser vorgeschlagene automatisierte Prognoseansatz wird das beste Modell für jede Zeitreihe finden, indem die Form des Modells angepasst wird, dh wie bei einem Maßanzug angepasst wird." Das ist eine ziemlich starke Aussage - wenn genau, bedeutet dies, dass dieser Ansatz die M3, M4-Wettbewerbe zweifellos gewinnen würde. Hat es?
Skander H. - Wiedereinsetzung von Monica
1
@ joana-claudino Ich interessiere mich besonders für Ihr ISEG-Projekt, da ich auch daran interessiert bin, eine Python-Version meiner vorgeschlagenen Verfahren zu entwickeln. Dies wäre natürlich außerhalb von SE.
IrishStat