2017-07-22 5 views
1

ich ein HMM Modell auf meine Daten mit hmm.discnp Paket in R eingebaut haben, wie folgt:Vorhersage von zukünftigen Emissionen von Einbau HMM-Modell

library(hmm.discnp) 
zs <- hmm(y=lis,K=5) 

Jetzt möchte ich die Zukunft K Beobachtungen (Emissionen) von diesem Modell zur Vorhersage . Aber ich bin nur in der Lage, die wahrscheinlichste Zustandssequenz für die Beobachtungen zu erhalten, die ich bereits durch Viterbi Algorithmus habe.

Ich habe t Emissionen bereits, d. H. (y(1),...,y(t)).
Ich möchte die wahrscheinlichste Zukunft K Emissionen von der gepassten HMM Objekt, das heißt (y(t+1),...y(t+k)).

Gibt es eine Funktion, um dies zu berechnen? wenn nicht, wie berechne ich es dann manuell?

Antwort

0

Die Erzeugung von Emissionen von einem HMM ist ziemlich einfach manuell durchzuführen. Ich bin nicht wirklich vertraut mit R, aber ich erkläre hier die Schritte, um Daten zu generieren, wie Sie fragen.

Das erste, was zu beachten ist, ist, dass das HMM aufgrund seiner markovschen Natur keinen Speicher hat. Zu jeder Zeit ist nur der aktuelle Zustand bekannt, was vorher passiert ist "vergessen". Dies bedeutet, dass die Erzeugung der Probe zum Zeitpunkt t+1 nur von der Probe zum Zeitpunkt t abhängt.

Wenn Sie eine Sequenz haben, können Sie als Erstes die wahrscheinlichste Zustandssequenz (mit dem Viterbi-Algorithmus) anpassen, wie Sie es getan haben. Jetzt wissen Sie den Zustand, der die letzte Beobachtung, die Sie haben, erzeugt hat (diejenige, die Sie bezeichnen y(t)).

Aus diesem Zustand kennen Sie nun die Wahrscheinlichkeiten, dank der Übergangsmatrix zu jedem anderen Zustand des Modells zu gelangen. Dies ist eine Wahrscheinlichkeits-Massenfunktion (PMF) und Sie können eine Zustandszahl von diesem PMF zeichnen (nicht von Hand! R sollte eine eingebaute Funktion haben, um ein Beispiel von einem PMF zu zeichnen). Die von Ihnen gezeichnete Statusnummer ist der Status, in dem sich Ihr System zur Zeit t+1 befindet.

Mit diesen Informationen können Sie jetzt eine Stichprobenbeobachtung aus der Wahrscheinlichkeitsfunktion zeichnen, die diesem neuen Zustand zugewiesen ist (hier gilt, wenn es sich um eine Gaußverteilung handelt, verwenden Sie einen Gaußschen Zufallsgenerator, der in R existieren sollte).

Von diesem Zustand t+1 können Sie jetzt das gleiche Verfahren anwenden, um einen Zustand zur Zeit t+2 und so weiter zu erreichen.

Beachten Sie, dass wenn Sie diese vollständige Prozedur mehrmals (um Datenproben von Zeit t+1 bis t+k zu generieren), Sie mit unterschiedlichen Ergebnissen enden werden. Dies liegt an dem probabilistischen Charakter des Modells. Ich bin mir nicht sicher, was Sie mit most probable future emissions meinen und ich bin mir nicht sicher, ob es einige Routinen gibt oder nicht. Sie können die Wahrscheinlichkeit der vollständigen Sequenz berechnen, die Sie am Ende erhalten (von 1 bis t+k). Es wird im Allgemeinen größer sein, dass die Wahrscheinlichkeit der Sequenz bis zu t als der letzte Teil wirklich aus dem Modell selbst generiert wurde und somit in gewisser Hinsicht "perfekt" passt.

Verwandte Themen