So testen Sie, ob sich der Prozess, der eine Zeitreihe generiert hat, im Laufe der Zeit geändert hat


7

Problem

Ich habe Zeitreihendaten, die von einer Maschine über zwei nicht zusammenhängende Zeiträume generiert wurden - ungefähr einen Monat im Jahr 2016 und einen weiteren Monat im Jahr 2018.

Von Domänenexperten wird angenommen, dass zu jedem Zeitpunkt Schritt eine beobachtete Variable Y ^ t durch einen anderen Satz beobachteter Variablen, X_1 ^ t, \ ldots, X_d ^ t, erklärt werden kann .tYtX1t,,Xdt

Wie kann ich testen, ob sich dieser Prozess im Laufe der Zeit geändert hat? Beachten Sie, dass ich nicht versuche zu testen, ob sich die Verteilung für die Variable Y im Laufe der Zeit geändert hat. Ich möchte testen, ob sich die Beziehung zwischen Xi s und Y im Laufe der Zeit geändert hat.

Aktueller Ansatz

Angenommen, ich passe ein Zeitreihenmodell (z. B. einen Gaußschen Prozess) an die Daten von 2016 an, um Yt mit X1t,,Xdt , um den zugrunde liegenden Prozess zu modellieren, der Yt .

Die Domain-Experten haben vorgeschlagen, dass wir vielleicht versuchen können, dieses Modell zu verwenden, um die Variablen Yt mit den Xt von 2018 vorherzusagen, und die Residuen irgendwie zu verwenden, um zu schließen, dass das Modell (das den Prozess im Jahr 2016 darstellt) ist oder ist 2018 nicht mehr dasselbe. Ich bin mir nicht sicher, wie ich nach diesem Punkt weitermachen soll.

Was ich überlege

  1. Sollte ich testen, ob die Rückstände aus den Jahren 2016 und 2018 aus derselben Verteilung stammen, oder einen Anpassungstest mit einem Kolmogorov-Smirnov-Test durchführen? Mein Anliegen bei diesem Ansatz ist, dass die Out-of-Sample-Daten von 2018 wahrscheinlich größere Fehler aufweisen als die In-Sample-Trainingsdaten von 2016, sodass dieser Test wahrscheinlich zu falsch positiven Ergebnissen führen wird. Gibt es eine Möglichkeit, diesen Effekt anzupassen / zu berücksichtigen?

  2. Sollte ich zwei Modelle einbauen, eines für 2016 und eines für 2018, und auf irgendeine Weise testen, ob diese beiden Modelle "gleich" oder "unterschiedlich" sind? Eine Möglichkeit besteht beispielsweise darin, die KL-Divergenz zwischen den beiden Gaußschen Prozessen zu berechnen, die jeweils an die Daten für 2016 und 2018 angepasst sind. Gibt es andere Vorschläge oder Probleme mit diesem Ansatz?

  3. Ich habe einige Beiträge zur Integration gesehen. Aber ich verstehe dieses Konzept nicht ganz. Ist das relevant?

Wie könnte man sich dieser Art von Problem im Allgemeinen nähern? Ich habe versucht, online danach zu suchen, aber möglicherweise erhalte ich aufgrund mangelnder Genauigkeit meiner Abfrage (ich bin in diesem Bereich nicht vertraut) nicht viele relevante Ergebnisse. Ich schätze sogar einfache Hinweise / Kommentare zu den Themen / Stichwörtern, die gesucht werden sollen, oder Bücher / Papiere, die ich durchsehen muss.

Bitte beachten Sie, dass ich nach prinzipiellen (vorzugsweise statistischen) Ansätzen suche und nicht nach heuristischen Methoden. Gute Beispiele sind die Antworten, die den folgenden Chow-Test und seine Varianten vorschlagen.


3
Möglicherweise möchten Sie sich mit der Änderungspunkterkennung befassen (siehe auch diese aktuelle Überprüfung ).
Qeschaton

@qeschaton Danke. Ein schneller Scan des Dokuments und das Nachschlagen des Begriffs bei Google legen nahe, dass Änderungspunkterkennungsalgorithmen erkennen, wenn sich eine Sequenz geändert hat. Ich hoffe tatsächlich, einen Weg zu finden, um festzustellen, wann sich die Beziehung zwischen den Ein- und Ausgängen, die die Ausgänge erzeugt haben, geändert hat. Ich werde mir das Papier genauer ansehen und hoffe, dass es Variationen gibt, die zu meinem aktuellen Problem passen. Vielen Dank.
Lichtchemiker

Antworten:


2

Strukturelle Veränderungen können nicht nur mit dem von @John Stax Jakobsen erwähnten Chow-Test getestet werden.

Es gibt viele andere Tests, insbesondere die Familie der Fluktuationstests funktioniert normalerweise gut.

Hier haben Sie eine schöne Einführung in das RPaket strucchange, das sie berechnet. Wenn Sie kein RBenutzer sind, lesen Sie nur die Theorie, die dort gut beschrieben ist.


Vielen Dank! Die Referenz und die Schlüsselwörter "Fluktuationstests" sind sehr hilfreich. Jetzt muss ich bei meiner Literaturrecherche auf einen genaueren Namen achten.
Lichtchemiker

1

Wenn es sinnvoll ist, die Beziehung mit einer linearen Regression zu modellieren, ist der Chow-Test ein einfacher Weg, um auf einen Strukturbruch zu testen.

Siehe den Wiki-Artikel hier


1

Eine der Funktionen, die ich in mein bevorzugtes Prognosepaket aufgenommen habe, war der CHOW-Test, um den wichtigsten Haltepunkt bei Parametern zu untersuchen. Vorher musste ich Impulse / saisonale Impulse behandeln / anpassen.

Wenn es Ebenenverschiebungen oder Zeittrends gibt, wird dieser Test natürlich umgangen.

Der CHOW-Test setzt unabhängige Fehler in jeder Gruppe voraus, wie dies für den von ihm verwendeten F-Test erforderlich ist.

Meine Implementierung beinhaltet die Möglichkeit zeitgemäßer und / oder verzögerter benutzerspezifischer Kausale innerhalb des GLM.


0

Zunächst würde ich nur einige Black-Box-Modelle (z. B. GBM oder Random Forest) die direkt die Zeitvariable berücksichtigen , z. B. . Es kann hilfreich sein, verschiedene Granularitäten von zu testen , z. B. gemessen in Kalenderjahren (2016, 2018), seit 2016 verstrichenen Monaten usw. Um die Wichtigkeit von zu beurteilen, kann man sich entweder Diagramme mit variabler Wichtigkeit ansehen (siehe zB Abschnitt „15.3.2 Bedeutung von Variablen“ in Elemente des statistischen Lernens ) oder lassen Sie einfach die Variable fallen, passen Sie das Modell an und vergleichen Sie die Modellleistung.TYt=F(Xt1,,Xdt;T)TTT

Alternativ können Sie sich an Ihr Modell halten (Gaußscher Prozess) und die Residuen 2016 und 2018 vergleichen. Ich stimme Ihrer Intuition zu, dass der Vergleich der Verteilung der Residuen innerhalb der Stichprobe (2016) und außerhalb der Stichprobe (2018) zu irreführenden Ergebnissen führen würde. Dies kann jedoch schnell behoben werden, indem Sie Ihre Daten wie folgt partitionieren: Teilen Sie die Daten für 2016 in eine Trainingsuntermenge (zur Anpassung an das Modell) und eine Validierungsuntermenge (zur Bewertung der Qualität Ihres Modells) auf. Definieren Sie auch den zweiten Validierungsdatensatz mithilfe der Teilmenge von Daten für 2018. Passen Sie dann einfach Ihr Modell mithilfe der Trainingsuntermenge an und testen Sie die Leistung (Residuen, MSE usw. berechnen) an zwei Validierungsuntermengen (2016 und 2018). Um einen Zufall auszuschließen (Ihr Ergebnis kann nur aufgrund von Pech abweichen), möchten Sie möglicherweise die gesamte Übung wiederholen (Daten aufteilen, Modell anpassen,

Wie Sie bereits erwähnt haben, können Sie auch zwei verschiedene Modelle anpassen (eines basierend auf Daten für 2016, eines nur basierend auf Daten für 2018). In diesem Fall würde ich auch die Daten für jedes Jahr in Schulungs- und Validierungsuntergruppen aufteilen und die Modellleistung basierend auf den Validierungsuntergruppen bewerten. Als Maß für die Ähnlichkeit können Sie Folgendes verwenden: RMSE, QQ-Diagramme, statistische Tests, die Sie erwähnt haben, oder Berechnung der Konfidenzintervalle für Vorhersagen aus beiden Modellen und Überprüfung, ob sich die Konfidenzintervalle überschneiden.

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.