Użyj dwustanowego łańcucha Markowa.
Jeśli stany są nazywane 0 i 1, łańcuch może być reprezentowany przez macierz 2x2 dającą prawdopodobieństwo przejścia między stanami, gdzie P i j jest prawdopodobieństwem przejścia ze stanu i do stanu j . W tej macierzy każdy wiersz powinien sumować się do 1,0.P.P.I jjajot
Z oświadczenia 2 mamy , a prosta konserwacja mówi wtedy P 10 = 0,7 .P.11= 0,3P.10= 0,7
Z wyrażenia 1 wynika, że prawdopodobieństwo długoterminowe (zwane także równowagą lub stanem ustalonym) wynosi . Oznacza to, że P 1 = 0,05 = 0,3 P 1 + P 01 ( 1 - P 1 ) Rozwiązanie daje P 01 = 0,0368421, a macierz przejściowa P = ( 0,963158 0,0368421 0,7 0,3 )P.1= 0,05
P.1= 0,05 = 0,3 P.1+ P01( 1−P1)
P.01= 0,0368421
P.= ( 0,9631580,70,03684210,3)
(Możesz sprawdzić swoją matrycę transtionową pod kątem poprawności, podnosząc ją do wysokiej mocy - w tym przypadku 14 wykonuje zadanie - każdy wiersz wyniku daje identyczne prawdopodobieństwo stanu ustalonego)
P.
Zaryzykowałem przy kodowaniu odpowiedzi @Mike Anderson w R. Nie mogłem wymyślić, jak to zrobić za pomocą sapply, więc użyłem pętli. Lekko zmieniłem sondy, aby uzyskać bardziej interesujący wynik, i użyłem „A” i „B” do przedstawienia stanów. Powiedz mi co myślisz.
/ edit: W odpowiedzi na komentarz Paula, oto bardziej eleganckie sformułowanie
Napisałem oryginalny kod, kiedy dopiero uczyłem się języka R, więc zmniejsz mi trochę luzu. ;-)
Oto jak oszacowałbyś macierz przejścia, biorąc pod uwagę serię:
Kolejność jest zamieniana względem mojej pierwotnej macierzy przejścia, ale dostaje odpowiednie prawdopodobieństwa.
źródło
for
Pętla byłaby tutaj nieco czystsza, znasz długośćSeries
, więc po prostu użyjfor(i in 2:length(Series))
. Eliminuje to potrzebęi = i + 1
. Ponadto, dlaczego najpierw próbkaA
, a następnie konwersja0,1
? Możesz bezpośrednio próbkować0
i próbkować1
.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);
aby umożliwić dowolną, wcześniej określoną autokorelację opóźnienia 1Oto odpowiedź oparta na
markovchain
pakiecie, który można uogólnić na bardziej złożone struktury zależności.To daje ci:
źródło
Zgubiłem dokument, w którym opisano to podejście, ale proszę bardzo.
Rozłóż macierz przejścia na
Pamiętaj, że z danych, które określiłeś, musisz rozwiązaćpt od określonego T.11 przez T.11= ( 1 - pt) + pt( 1 - p0) .
Jedną z przydatnych cech tego rozkładu jest to, że dość prosto uogólnia on na klasę skorelowanych modeli Markowa w problemach wyższych wymiarów.
źródło