Verwenden Sie eine Markov-Kette mit zwei Zuständen.
Wenn die Zustände 0 und 1 heißen, kann die Kette durch eine 2 × 2-Matrix , die die Übergangswahrscheinlichkeiten zwischen Zuständen angibt, wobei die Wahrscheinlichkeit ist, von Zustand zu Zustand . In dieser Matrix sollte jede Zeile 1,0 ergeben.P i j i jPPich jichj
Aus Aussage 2 ergibt sich , und bei einfacher Erhaltung ergibt sich dann .P 10 = 0,7P11= 0,3P10= 0,7
Ab Aussage 1 soll die Langzeitwahrscheinlichkeit (auch Gleichgewicht oder Steady-State genannt) . Dies besagt Das Lösen ergibt und eine ÜbergangsmatrixP 1 = 0,05 = 0,3 P 1 + P 01 ( 1 - P 1 ) P 01 = 0,0368421 P = ( 0,963158 0,0368421 0,7 0,3 )P1= 0,05
P1= 0,05 = 0,3 P1+ P01( 1 - P1)
P01= 0,0368421
P= ( 0,9631580,70,03684210,3)
(Sie können die Richtigkeit Ihrer Transtionsmatrix überprüfen, indem Sie sie auf eine hohe Leistung erhöhen. In diesem Fall erledigt 14 die Aufgabe. Jede Zeile des Ergebnisses ergibt die identischen Wahrscheinlichkeiten für den stationären Zustand.)
Beginnen Sie nun in Ihrem Zufallszahlenprogramm mit der zufälligen Auswahl von Zustand 0 oder 1; Dadurch wird ausgewählt, welche Reihe von Sie verwenden. Verwenden Sie dann eine einheitliche Zufallszahl, um den nächsten Zustand zu bestimmen. Diese Nummer ausspucken, ausspülen und nach Bedarf wiederholen.P
Ich habe einen Riss beim Codieren der Antwort von @Mike Anderson in R gemacht. Ich konnte nicht herausfinden, wie es mit sapply gemacht wird, also habe ich eine Schleife verwendet. Ich habe die Probs leicht verändert, um ein interessanteres Ergebnis zu erzielen, und ich habe 'A' und 'B' verwendet, um die Zustände darzustellen. Lass mich wissen was du denkst.
/ edit: Als Antwort auf Pauls Kommentar hier eine elegantere Formulierung
Ich habe den Originalcode geschrieben, als ich gerade R gelernt habe. ;-)
So würden Sie die Übergangsmatrix unter Berücksichtigung der Reihe schätzen:
Die Reihenfolge wird gegen meine ursprüngliche Übergangsmatrix ausgetauscht, es werden jedoch die richtigen Wahrscheinlichkeiten ermittelt.
quelle
for
Schleife wäre hier etwas sauberer, man kennt die Länge vonSeries
, also einfach benutzenfor(i in 2:length(Series))
. Dadurch entfällt die Notwendigkeit füri = i + 1
. Warum also zuerst probierenA
und dann konvertieren0,1
? Sie könnten direkt Probe0
‚s und1
‘ s.createAutocorBinSeries = function(n=100,mean=0.5,corr=0) { p01=corr*(1-mean)/mean createSeries(n,matrix(c(1-p01,p01,corr,1-corr),nrow=2,byrow=T)) };createAutocorBinSeries(n=100,mean=0.5,corr=0.9);createAutocorBinSeries(n=100,mean=0.5,corr=0.1);
Hier ist eine Antwort basierend auf dem
markovchain
Paket, das auf komplexere Abhängigkeitsstrukturen verallgemeinert werden kann.Dies gibt Ihnen:
quelle
Ich habe den Überblick über das Papier verloren, in dem dieser Ansatz beschrieben wurde, aber hier ist es.
Zerlegen Sie die Übergangsmatrix in
Eines der nützlichen Merkmale dieser Zerlegung ist, dass sie sich ziemlich einfach auf die Klasse von korrelierten Markov-Modellen in höherdimensionalen Problemen verallgemeinert.
quelle