Könnte mir jemand ein Beispiel zur Verwendung der DLM-Kalman-Filterung in R für eine Zeitreihe zeigen? Angenommen, ich habe diese Werte (vierteljährliche Werte mit jährlicher Saisonabhängigkeit). Wie würden Sie DLM verwenden, um die nächsten Werte vorherzusagen? Und übrigens, habe ich genug historische Daten (was ist das Minimum)?
89 2009Q1
82 2009Q2
89 2009Q3
131 2009Q4
97 2010Q1
94 2010Q2
101 2010Q3
151 2010Q4
100 2011Q1
? 2011Q2
Ich bin auf der Suche nach einer Art R-Code-Kochbuch, wie man Schritt für Schritt antwortet. Die Genauigkeit der Vorhersage ist nicht mein Hauptziel, ich möchte nur die Sequenz des Codes kennen lernen, die mir eine Nummer für 2011Q2 gibt, auch wenn ich nicht genügend Daten habe.
r
time-series
forecasting
datayoda
quelle
quelle
dlm
Paket macht dies so einfach wie möglich.dlm
Paket angesehen? Wie ich in meiner Antwort sagte, ähneln DLMs viel eher dem Erstellen eines Programms als dem Einfügen einiger Variablen in einen Funktionsaufruf. datayoda hat keine Antwort akzeptiert, daher bin ich mir nicht sicher, ob sie diese Beobachtung überstanden haben.Antworten:
Der Artikel in JSS 39-02 vergleicht 5 verschiedene Kalman-Filter-R-Pakete und gibt einen Beispielcode.
quelle
DLMs sind cool, aber nicht so einfach wie beispielsweise ARIMA oder andere Methoden. Bei anderen Methoden fügen Sie Ihre Daten ein und optimieren dann einige Parameter des Algorithmus, wobei Sie sich möglicherweise auf verschiedene Diagnosen beziehen, um Ihre Einstellungen zu steuern.
Mit einem DLM erstellen Sie eine State-Space-Maschine, die aus mehreren Matrizen besteht, die im Grunde so etwas wie ein Hidden-Markov-Modell implementieren. Einige Pakete (
sspir
ich denke unter anderem) setzen voraus, dass Sie das Konzept verstehen und wissen, was die Matrizen tun. Ich würde Ihnendlm
wärmstens empfehlen, mit dem Paket zu beginnen und, wie von @RockScience empfohlen, durch die Vignette zu gehen.Mit werden
dlm
Sie im Grunde genommen mehrere Schritte unternehmen:Welche Komponenten beschreiben meine Serie? Ein Trend? Saisonalität? Exogene Variablen? Sie werden
dlm
Tools verwendendlmModPoly
, um diese Komponenten zu implementieren, und den+
Operator verwenden, um sie zu einem Modell zusammenzufügen.Erstellen Sie eine R-Unterroutine, die so viele Parameter verwendet, wie für dieses Modell erforderlich sind, erstellen Sie die Komponenten mit diesen Parametern, addieren Sie sie und geben Sie das resultierende Modell zurück.
Verwenden Sie
dlmMLE
diese Option , um eine Suche / Optimierung durchzuführen, um die entsprechenden Parameter zu finden (mithilfe von MLE, im Grunde genommen Optimierung, mit den Fallstricken, die bei der Optimierung auftreten können).dlmMLE
Ruft Ihr R-Unterprogramm wiederholt mit Kandidatenparametern auf, um Modelle zu erstellen, und testet sie dann.Erstellen Sie Ihr endgültiges Modell mit der von Ihnen erstellten R-Unterroutine und den Parametern, die Sie in Schritt 3 gefunden haben.
Filtern Sie Ihre Daten mit
dlmFilter
, dann vielleicht glatt mitdlmSmooth
.Wenn Sie etwas verwenden
dlmModReg
oder ausführen, das dazu führt, dass das Modell zeitvariable Parameter aufweist, können SiedlmForecast
Ihre Reihen nicht damit prognostizieren. Wenn Sie am Ende ein zeitvariantes Modell haben, möchten Sie Ihre Eingabedaten mit NAsdlmFilter
ausfüllen und die NAs für Sie ausfüllen lassen (Prognose eines armen Mannes), dadlmForecast
dies nicht mit zeitvariablen Parametern funktioniert.Wenn Sie die Komponenten einzeln untersuchen möchten (sagen Sie den Trend, getrennt von der Saison), müssen Sie die Matrizen und die einzelnen Spalten sowie deren Zusammenstellung verstehen
dlm
(Reihenfolge ist wichtig!).Es gibt ein anderes Paket, dessen Name mir entgeht, das versucht, ein Front-End zu erstellen, das mehrere dieser Pakete verwenden kann (auch
dlm
als Back-End). Leider habe ich es nie geschafft, gut zu funktionieren, aber das könnte nur ich sein.Ich würde wirklich empfehlen, ein Buch über DLMs zu bekommen. Ich habe ein paar von ihnen und habe viel damit gespielt,
dlm
um dorthin zu gelangen, wo ich bin, und ich bin keineswegs der Experte.quelle
dlm
die Vignette des Pakets. Sie werden lernen, was Sie wissen müssen. Deshalb empfehle ichdlm
, weil Sie FF usw. nicht selbst erstellen.Ich schlage vor, Sie lesen die dlm-Vignette http://cran.r-project.org/web/packages/dlm/vignettes/dlm.pdf, insbesondere das Kapitel 3.3
quelle