Zufällige Waldregression und Trendzeitreihen

7

Ich vergleiche ein zufälliges Waldmodell mit einem GLS-Modell unter Verwendung einer univariaten Zeitreihe, die einen deterministischen linearen Trend aufweist. Ich werde dem GLS-Modell eine lineare Zeittrend-Kovariate (unter anderen Prädiktoren) hinzufügen, um den sich ändernden Trend zu berücksichtigen. Um in meinem Vergleich konsistent zu sein, hatte ich gehofft, diesen Prädiktor auch dem zufälligen Waldregressionsmodell hinzuzufügen. Ich habe nach Literatur zu diesem Thema gesucht und kann nicht viel finden.

Weiß jemand, ob das Hinzufügen dieser Art von Prädiktor in einer zufälligen Waldregression aus irgendeinem Grund unangemessen ist? Die zufällige Waldregression enthält bereits zeitverzögerte Variablen, um die Autokorrelation zu berücksichtigen.

Hannah
quelle

Antworten:

9

RFs können natürlich einen langfristigen Trend in den Daten identifizieren und modellieren. Das Problem wird jedoch komplizierter, wenn Sie versuchen, nie zuvor gesehene Werte vorherzusagen, wie Sie es häufig mit Zeitreihendaten tun. Wenn Sie beispielsweise feststellen, dass die Aktivität in einem Zeitraum zwischen 1915 und 2015 linear zunimmt, können Sie davon ausgehen, dass dies auch in Zukunft so bleibt. RF würde diese Prognose jedoch nicht abgeben. Es würde prognostizieren, dass alle zukünftigen Variablen dieselbe Aktivität wie 2015 haben werden.

from sklearn import ensemble
import numpy as np
years = np.arange(1916, 2016)
#the final year in the training data set is 2015
years = [[x] for x in years]
print 'Final year is %s ' %years[-1][0]
#say your ts goes up by 1 each year - a perfect linear trend
ts = np.arange(1,101)
est = ensemble.RandomForestClassifier().fit(years,ts)
print est.predict([[2013], [2014], [2015], [2016] , [2017], [2018]])

Das obige Skript druckt 2013, 2014, 2015, 2015, 2015, 2015. Das Hinzufügen von Verzögerungsvariablen zur RF hilft in dieser Hinsicht nicht. So vorsichtig. Ich bin mir nicht sicher, ob das Hinzufügen von Trenddaten zu Ihrer RF das tun wird, was Sie denken.

Captain_ahab
quelle
6
Dies ist ein ausgezeichneter Punkt, danke, dass Sie darauf hingewiesen haben! Das Problem ist , dass der RF wird aufgeteilt auf die Trend-, aber natürlich alle zukünftigen Trendwerte werden einfach als letzte geteilte Eimer behandelt werden, nicht hochgerechnet werden. Die Lösung wäre, den Trendprädiktor in einer einfachen linearen Regression in den Blättern der Bäume zu verwenden. Leider scheint es randomForest()in R nicht möglich zu sein, dies anzugeben. Ist numpy? Wenn nicht, müßte der OP ihr eigenes RF implementieren, basierend auf Baum - Implementierungen , die tun Regressionen in den Blättern zu ermöglichen.
Stephan Kolassa
3
Es scheint, als ob das cubistPaket für R Regressionen in den Baumblättern zulässt, so dass man eine RF um dieses herum implementieren könnte.
Stephan Kolassa
Interessant! Daran hatte ich nicht gedacht. Cubist scheint ein großartiges Paket zu sein. Leider kann ich keinen Python-Proxy finden und wenn andere interessiert sind, funktioniert Cubist nicht auf Macs.
Captain_ahab
Alles tolle Informationen! Vielen Dank für die Diskussion. Ich konzentriere mich eigentlich nicht auf die Prognosefähigkeiten für dieses spezielle Projekt, sondern ein Vergleich verschiedener Modelle passt zu vielen verschiedenen simulierten Datensätzen (einer mit linearem Trend). Ich möchte der RF wirklich nur den linearen Zeittrend hinzufügen, um mit den Trendvariablen übereinzustimmen, die ich in den anderen Regressionsmodellen verwende. Aber ich habe eine Frage zu den Prognosefähigkeiten. Sind RFs im Allgemeinen schlechte Prognostiker für Daten mit Trends? Auch mit oder ohne Hinzufügen einer Zeittrendvariablen?
Hannah
Ich denke , dass MDEs , die tatsächlich Regress auf den Trend durchaus konkurrenzfähig sein würde. (Wie hier erläutert, wird eine einfache Aufteilung des Trends nicht in die Zukunft extrapoliert.) Wie bereits erwähnt, würden RFs einen solchen rückläufigen Trend automatisch dämpfen, was sehr sinnvoll wäre. Ich persönlich bin jedoch nicht auf eine überzeugende Studie zur Vorhersage von Trenddaten mit RFs in der Literatur gestoßen.
Stephan Kolassa
5

Ändern Sie einfach die Variable, die Sie vorhersagen möchten, in den Unterschied in der abhängigen Variablen.

Wie die anderen Beiträge hervorheben, weiß die zufällige Gesamtstruktur nicht, wie Zeitvariablen zu behandeln sind, die nach dem Trainingssatz auftreten. Angenommen, Ihr Trainingssatz enthält Daten von Minute 1 bis Minute 60. Die zufällige Gesamtstruktur kann die Regel festlegen, dass die abhängige Variable nach vierzig Minuten 100 ist. Selbst wenn es einen Trend gibt, wenn Sie in den Testdaten Minute 10000 erreichen, Die gleiche Regel wird angewendet. Wenn Sie den Unterschied jedoch vorhersagen, kann dies den gleichen Effekt haben, wenn Sie einen Trend einbeziehen.

In Bezug darauf, ob RFs anständige Prognostiker sind, hatte ich viel mehr Glück mit RFs als mit anderen ökonometrischen Modellen wie VAR, VECM usw., insbesondere aber für kurzfristige Prognosen. Einige andere Modelle scheinen jedoch bei den meisten Daten besser zu funktionieren, z. B. gut abgestimmte GBM-Modelle.

Anders Christiansen
quelle