2016-06-29 7 views
1

Ich versuche mpow(P, 18) in Vektorform & Matrixform zu schreiben. Kann mir jemand dabei helfen?Wie kann ich die stationäre Verteilung einer Markov-Kette mit einer Übergangswahrscheinlichkeitsmatrix erhalten

Auch ich versuche, die stationäre Verteilung jedes Staates zu finden.

Pi_0 = ? 
Pi_1 = ? 
Pi_2 = ? 
... 
Pi_5 = ? 

Hier ist der Code ich geschrieben habe:

P <- matrix(c(0, 0, 0, 0.5, 0, 0.5, 0.1, 0.1, 0, 0.4, 0, 0.4, 0, 0.2, 0.2, 0.3, 0, 0.3, 0, 0, 0.3, 0.5, 0, 0.2, 0, 0, 0, 0.4, 0.6, 0, 0, 0, 0, 0, 0.4, 0.6), nrow = 6, ncol = 6, byrow = TRUE) 

mpow <- function(P, n) { 
if (n == 0) diag(nrow(P)) 
else if (n == 1) P 
else P %*% mpow(P, n - 1) 
} 

mpow(P, 18) 
+0

Die stationäre Verteilung ist der Zeilenvektor in Ihrem Fall, die Wahrscheinlichkeit, die Sie in jedem der Staaten landen. Überprüfen Sie die Summen der Zeilen nach 'rowSums (mpow (P, 18))' und sie summieren sich auf 1. – toni057

+0

das ist Ihre stationäre Verteilung. – toni057

+0

Ich glaube nicht, dass das die richtige Antwort ist. Pi_0 ..... Pi_5 sollte wahrscheinlich ein Bruchteil sein, der kleiner als eins ist. – PeterNiklas

Antwort

3

In Ihrer Frage, die Matrix P ist die Übergangswahrscheinlichkeit. Die Wahrscheinlichkeit, dass der aktuelle Zustand i während der nächste Zustand j ist:

P[i, j] = Pr(k = j | k = i) 

mpow(P, n) berechnet die n-te Potenz der Übergangsmatrix. Zum Beispiel

> mpow(P, 3) 
     [,1] [,2] [,3] [,4] [,5] [,6] 
[1,] 0.000 0.030 0.105 0.250 0.280 0.335 
[2,] 0.001 0.025 0.111 0.254 0.260 0.349 
[3,] 0.006 0.032 0.113 0.266 0.224 0.359 
[4,] 0.006 0.048 0.144 0.289 0.172 0.341 
[5,] 0.000 0.024 0.156 0.400 0.248 0.172 
[6,] 0.000 0.000 0.048 0.272 0.432 0.248 

> mpow(P, 10) 
      [,1]  [,2]  [,3]  [,4]  [,5]  [,6] 
[1,] 0.002603379 0.02615891 0.1174816 0.3118660 0.2703684 0.2715217 
[2,] 0.002591038 0.02612154 0.1175283 0.3121341 0.2705060 0.2711190 
[3,] 0.002565915 0.02600925 0.1174628 0.3124644 0.2710401 0.2704575 
[4,] 0.002523007 0.02573033 0.1169686 0.3125272 0.2725643 0.2696866 
[5,] 0.002560361 0.02545419 0.1150961 0.3094197 0.2749053 0.2725643 
[6,] 0.002708774 0.02649409 0.1171436 0.3096530 0.2690952 0.2749053 

> mpow(P,50) 
      [,1]  [,2]  [,3]  [,4]  [,5]  [,6] 
[1,] 0.002590674 0.02590674 0.1165803 0.3108808 0.2720207 0.2720207 
[2,] 0.002590674 0.02590674 0.1165803 0.3108808 0.2720207 0.2720207 
[3,] 0.002590674 0.02590674 0.1165803 0.3108808 0.2720207 0.2720207 
[4,] 0.002590674 0.02590674 0.1165803 0.3108808 0.2720207 0.2720207 
[5,] 0.002590674 0.02590674 0.1165803 0.3108808 0.2720207 0.2720207 
[6,] 0.002590674 0.02590674 0.1165803 0.3108808 0.2720207 0.2720207 

Wie Sie sehen können, wenn n groß ist, erreicht man eine stationäre Verteilung, in dem alle Reihen gleich sind. Mit anderen Worten, unabhängig vom Ausgangszustand ist die Wahrscheinlichkeit, mit einem bestimmten Zustand zu enden, gleich.

Sobald eine solche Konvergenz erreicht ist, ist jede Zeile dieser Matrix die stationäre Verteilung. Beispielsweise können Sie die erste Zeile extrahieren:

> mpow(P,50)[1, ] 
[1] 0.002590674 0.025906736 0.116580311 0.310880829 0.272020725 0.272020725 
+0

Ich verstehe, warum alle Zeilen gleich 1 sind. Okej danke für Ihre Antwort. Also, mit anderen Worten: Pi_0 = 0,02589806 Pi_1 = 0,02590271 und so weiter? – PeterNiklas

+0

Danke, ich verstehe es jetzt :) – PeterNiklas

Verwandte Themen