Zagadnienia

7. Symulowanie procesów stochastycznych II. Procesy Markowa

7.1. Czas dyskretny, przestrzeń dyskretna

Zacznijmy od najprostszej sytuacji. Rozważmy skończony zbiór X, który będziemy nazywali przestrzenią stanów. Czasem wygodnie przyjąć, że X=1,2,,d. Jest to tylko umowne ponumerowanie stanów.

Definicja 7.1

(i) Ciąg X0,X1,,Xn, zmiennych losowych o wartościach w X nazywamy łańcuchem Markowa, jeśli dla każdego n=1,2, i dla każdego ciągu x0,x1,,xn,xn+1 punktów przestrzeni X,

P(Xn+1=xn+1|Xn=xn,Xn-1=xn-1,,X1=x1,X0=x0)=P(Xn+1=xn+1|Xn=xn),

(o ile tylko PXn=xn,Xn-1=xn-1,,X1=x1,X0=x0>0, czyli prawdopodobieństwo warunkowe w tym wzorze ma sens).

(ii) Łańcuch Markowa nazywamy jednorodnym, jeśli dla dowolnych stanów x i y i każdego n możemy napisać

P(Xn+1=y|Xn=x)=P(x,y),

to znaczy prawdopodobieństwo warunkowe w powyższym wzorze zależy tylko od x i y, ale nie zależy od n.

Jeśli Xn=x, to mówimy, że łańcuch w chwili n znajduje się w stanie xX. Warunek (i) w Definicji 7.1 znaczy tyle, że przyszła ewolucja łańcucha zależy od stanu obecnego, ale nie zależy od przeszłości. Łańcuch jest jednorodny, jeśli prawo ewolucji łańcucha nie zmienia się w czasie. W dalszym ciągu rozpatrywać będziemy głównie łańcuchy jednorodne. Macierz

P=Px,yx,yX=P1,1P1,yP1,dPx,1Px,yPx,dPd,1Pd,yPd,d

nazywamy macierzą (prawdopodobieństw) przejścia łańcucha. Jest to macierz stochastyczna, to znaczy Px,y0 dla dowolnych stanów x,yX oraz yPx,y=1 dla każdego xX. Jeśli qx=PX0=x, to wektor wierszowy

q=q1,,qx,,qd

nazywamy rozkładem początkowym łańcucha (oczywiście, xqx=1). Jest jasne, że

P(X0=x0,X1=x1,,Xn-1=xn-1,Xn=xn)=q(x0)P(x0,x1)P(xn-1,xn). (7.1)

Ten wzór określa jednoznacznie łączny rozkład prawdopodobieństwa zmiennych X0,X1,,Xn, i może być przyjęty za definicję jednorodnego łańcucha Markowa. W tym sensie możemy utożsamić łańcuch z parą q,P: łączny rozkład prawdopodobieństwa jest wyznaczony przez podanie rozkładu początkowego i macierzy przejścia.

Opiszemy teraz bardzo ogólną konstrukcję, która jest podstawą algorytmów generujących łańcuchy Markowa. Wyobraźmy sobie, jak zwykle, że mamy do dyspozycji ciąg U=U0,U1,,Un, ,,liczb losowych”, produkowanych przez komputerowy generator, czyli z teoretycznego punktu widzenia ciąg niezależnych zmiennych losowych o jednakowym rozkładzie, U0,1. Niech ϕ:0,1X i ψ:X×0,1X będą takimi funkcjami, że

PψU=x=qxdla każdego xX,Pϕx,U=y=Px,ydla dowolnych x,yX. (7.2)

Jeśli określimy X0,X1,,Xn, rekurencyjnie w następujący sposób:

X0=ψU0,Xn+1=ϕXn,Un+1, (7.3)

to jest jasne, że tak otrzymany ciąg zmiennych losowych jest łańcuchem Markowa z rozkładem początkowym q i macierzą przejścia P.

Na zakończenie tego podrozdziału zróbmy kilka prostych uwag.

  • Wszystko, co w tym podrozdziale zostało powiedziane można niemal mechanicznie uogólnić na przypadek nieskończonej ale przeliczalnej przestrzeni X.

  • Można sobie wyobrażać, że dla ustalonego x, zbiór u:ϕx,u=y jest odcinkiem długości Px,y, ale nie musimy tego żądać. Nie jest istotne, że zmienne Ui mają rozkład U0,1. Moglibyśmy założyć, że są określone na dość dowolnej przestrzeni U. Istotne jest, że te zmienne są niezależne, mają jednakowy rozkład i zachodzi wzór (7.2). W praktyce bardzo często do zrealizowania jednego ,,kroku” łańcucha Markowa generujemy więcej niż jedną ,,liczbę losową”.

7.2. Czas dyskretny, przestrzeń ciągła

Przypadek ciągłej lub raczej ogólnej przestrzeni stanów jest w istocie równie prosty, tylko oznaczenia trzeba trochę zmienić i sumy zamienić na całki. Dla prostoty przyjmijmy, że XRd. Poniżej sformułujemy definicję w taki sposób, żeby podkreślić analogię do przypadku dyskretnego i pominiemy subtelności teoretyczne. Zwróćmy tylko uwagę, że prawdopodobieństwo warunkowe nie może tu być zdefiniowane tak elementarnie jak w Definicji 7.1, bo zdarzenie warunkujące może mieć prawdopodobieństwo zero.

Definicja 7.2

(i) Ciąg X0,X1,,Xn, zmiennych losowych o wartościach w X nazywamy łańcuchem Markowa, jeśli dla każdego n=1,2,, dla każdego ciągu x0,x1,,xn punktów przestrzeni X oraz dowolnego (borelowskiego ) zbioru BX,

P(Xn+1B|Xn=xn,Xn-1=xn-1,,X1=x1,X0=x0)=P(Xn+1B|Xn=xn),

(dla prawie wszystkich punktów xn,xn-1,,x1,x0).

(ii) Łańcuch Markowa nazywamy jednorodnym, jeśli dla dowolnego zbioru BX i każdego n możemy napisać

P(Xn+1B|Xn=x)=P(x,B)

(dla prawie wszystkich punktów x).

Funkcja P(,), której argumentami są punkt x i zbiór B, jest nazywana jądrem przejścia. Ważne dla nas jest to, że dla ustalonego xX, jądro P(x,) rozważane jako funkcja zbioru jest rozkładem prawdopodobieństwa. W wielu przykładach jest to rozkład zadany przez gęstość,

Px,B=Bpx,ydy.

Wtedy odpowiednikiem wzoru (7.1) jest następujący wzór na łączną gęstość:

px0,x1,,xn-1,xn=qx0px0,x1pxn-1,xn, (7.4)

gdzie q() jest gęstością rozkładu początkowego, zaś p(xi,xi+1)=p(xi+1|xi) jest gęstością warunkową. Sformułowaliśmy Definicję 7.2 nieco ogólniej głównie dlatego, że w symulacjach ważną rolę odgrywają łańcuchy dla których prawdopodobieństwo przejścia nie ma gęstości. Przykładem może być łańcuch, który z niezerowym prawdopodobieństwem potrafi ,,stać w miejscu”, to znaczy P(x,{x})=:α(x)>0, i ma prawdopodobieństwo przejścia postaci, powiedzmy

P(x,B)=α(x)I(xB)+(1-α(x))Bp(x,y)dy.

Łańcuch Markowa na ogólnej przestrzeni stanów można rekurencyjnie generować w sposób opisany wzorem (7.3), to znaczy X0=ψU0 i Xn+1=ϕXn,Un+1 dla ciągu i.i.d. U0,U1,,Un, z rozkładu U0,1. Niech Q() oznacza rozkład początkowy. Funkcje ψ i ϕ muszą spełniać warunki

PψUB=QBdla każdego (mierzalnego) BX,Pϕx,UB=Px,Bdla dowolnych xX,BX. (7.5)

Różnica między (7.2) i (7.5) jest tylko taka, że w ogólnej sytuacji rozkłady prawdopodobieństwa zmiennych losowych ψU i ϕx,U, czyli odpowiednio Q() i P(x,) nie muszą być dyskretne. Ale można zastosować w zasadzie każdą metodę generacji zmiennych o zadanym rozkładzie, przy czym ten zadany rozkład zależy od x.

7.3. Czas ciągly, przestrzeń dyskretna

Rozważmy proces stochastyczny Xt,t0, czyli rodzinę zmiennych losowych o wartościach w skończonej przestrzeni stanów X, indeksowaną przez parameter t, który interpretujemy jako ciągły czas. Pojedyncze stany oznaczamy przez x,y,z,X lub podobnie. Załóżmy, że trajektorie są prawostronnie ciągłymi funkcjami mającymi lewostronne granice (prawie na pewno).

Definicja 7.3

(i) Mówimy, że Xt jest procesem Markowa, jeśli dla dowolnych x,yX oraz s,t0,

P(X(s+t)=y|X(s)=x,X(u),0u<s)=P(X(t+s)=y|X(s)=x).

(ii) Proces Markowa nazywamy jednorodnym, jeśli dla dowolnych stanów x i y i każdego t i s możemy napisać

P(X(s+t)=y|X(s)=x)=Pt(x,y),

to znaczy prawdopodobieństwo warunkowe w powyższym wzorze zależy tylko od x, y i t, ale nie zależy od s.

Sens założenia (i) jest taki sam jak w Definicji 7.1. Żądamy mianowicie, żeby zmienna Xt+s byłą warunowo niezależna od zmiennych Xu,0u<s pod warunkiem zdarzenia Xs=x. Oczywiście, Ptx,y jest prawdopodobieństwem przejścia w ciągu czasu t. Rozkład początkowy oznaczymy przez qx=PX0=x. Ponieważ X jest skończona, q może być przedstawiony jako wektor a Pt jako macierz.

Odpowiednikiem macierzy przejścia jest macierz intensywności przejść zdefiniowana następująco.

Qx,y=limt01hPhx,y-Ix,y,

gdzie I=P0 jest macierzą identycznościową. Można udowodnić, że granice istnieją. Tak więc Q=ddtPtt=0 i Ph=I+hQ+oh przy h0. Innymi słowy, Qx,y jest rzeczywiście ,,intensywnością skoków z x do y” (na jednostkę czasu). Mamy wzór analogiczny do (6.3):

P(X(t+h)=y|X(t)=x)=hQ(x,y)+o(h) dla xy;P(X(t+h)=x|X(t)=x)=1+hQ(x,x)+o(h),h0.

Zauważmy, że mamy yQx,y=0. Wspomnijmy jeszcze mimochodem, że macierze przejścia wyrażają się przez macierz intensywności Q przy pomocy ,,macierzowej funkcji wykładniczej”: Pt=exptQ. Dla uproszczenia notacji, niech Qx=-Qx,x=yxQx,y oznacza “intensywność wszystkich skoków ze stanu x”.

Z tego co zostało powiedziane łatwo się domyślić, że generowanie procesu Markowa można zorganizować podobnie jak dla procesu Poissona, poprzez czasy skoków. Niech 0<T1<T2<<Tn< będą kolejnymi momentami skoków,

T1=inft>0:XtX0;Tn+1=inft>Tn:XtXTn.

Jeśli XTn=x, to czas oczekiwania na następny skok, Wn+1=Tn+1-Tn zależy tylko od x i ma rozkład wykładniczy z parametrem Qx. W szczególności, mamy E(Wn+1|X(Tn)=x)=1/Q(x). Jeśli obserwujemy proces w momentach skoków, czyli skupimy uwagę na ciągu Xn=XTn to otrzymujemy łańcuch Markowa z czasem dyskretnym, nazywany czasem ,,szkieletem”. Jego prawdopodobieństwa przejścia są takie:

P(x,y)=P(Xn+1=y|Xn=x)=Qx,y/Qxjeśli xy;0jeśli x=y. (7.6)

Oczywiście, cała trajektoria procesu Xt jest w pełni wyznaczona przez momenty skoków T1,,Tn, i kolejne stany łańcucha szkieletowego chain X0=X0,X1,,Xn,. Po prostu, Xt=Xn dla Tnt<Tn+1. Następujący algorytm formalizuje opisany powyżej sposób generacji.

Gen X0q();
T0:=0;
for i:=1 to  do
  begin
  Gen WiExQXi-1;
  Ti:=Ti-1+Wi;
  Gen XiPXi-1,; { P dane  wzorem powyżej }
  end
Rzecz jasna, w praktyce trzeba ustalić sobie skończony horyzont czasowy h i przerwać symulacje gdy Ti>h. Zauważmy, że ten algorytm bez żadnych modyfikacji nadaje się do symulowania procesu Markowa na nieskończoniej ale przeliczalnej przestrzeni stanów, na przykład X=0,1,2,.

Czasami warto zmodyfikować algorytm w następujący sposób. Generowanie procesu Markowa można rozbić na dwie fazy: najpierw wygenerować ,,potencjalne czasy skoków” a następnie symulować ,,szkielet”, który będzie skakał wyłącznie w poprzednio otrzymanych momentach (ale nie koniecznie we wszystkich spośród nich). Opiszemy dokładniej tę konstrukcję, która bazuje na własnościach procesu Poissona. Wyobraźmy sobie najpierw, że dla każdego stanu xX symulujemy niezależnie jednorodny proces Poissona Rx o punktach skoku R1x<<Rkx< przy czym ten proces ma intensywność Qx. Jeśli teraz, w drugiej fazie Xi-1=XTi-1=x, to za następny moment skoku wybierzemy najbliższy punkt procesu Rx na prawo od Ti-1, czyli Ti=minRkx:Rkx>Ti-1. Z własności procesu Poissona (patrz Stwierdzenie 6.2 i jego dowód) wynika, że zmienna Ti-Ti-1 ma rozkład wykładniczy z parametrem Qx i metoda jest poprawna. Naprawdę nie ma nawet potrzeby generowania wszystkich procesów Poissona Rx. Warto posłużyć się metodą przerzedzania i najpierw wygenerować jeden proces o dostatecznie dużej intensywności a następnie ,,w miarę potrzeby” go przerzedzać. Niech R* będzie procesem Poissona o intensywności Q*maxxQx i oznaczmy jego punkty skoków przez R1<<Rk<. Jeśli w drugiej fazie algorytmu mamy XRi-1=x w pewnym momencie Ri-1R*, to zaczynamy przerzedzać proces R* w taki sposób, aby otrzymać proces o intensywności QxQ*. Dla każdego punktu Rj, ji powinniśmy rzucić monetą i z prawdopodobieństwem 1-Qx/Q* ten punkt usunąć. Ale jeśli usuniemy punkt Ri to znaczy, że w tym punkcie nie ma skoku, czyli XRi=x. Jeśli punkt Ri zostawimy, to wykonujemy skok, losując kolejny stan z prawdopodobieństwem P(x,). W rezultacie, stan XRi jest wylosowany z rozkładu prawdopodobieństwa

P~x,y=Qx,y/Q*jeśli xy;1-Qx/Q*jeśli x=y. (7.7)

Niech X~n=XRi będzie ,,nadmiarowym szkieletem” procesu. Jest to łańcuch Markowa, który (w odróżnieniu od ,,cieńszego szkieletu” Xn) może w jednym kroku pozostać w tym samym stanie i ma prawdopodobieństwa przejścia P(X~n=y|X~n-1=x)=P~(x,y).

Odpowiada temu następujący dwufazowy algorytm.

  • Faza I

Gen RPoissQ*  { proces Poissona }
  • Faza II

Gen X~0q();
for i:=1 to  do Gen X~iP~Xi-1,;  { P~ dane wzorem powyżej }

Algorytm jest bardzo podobny do metody wynalezionej przez Gillespie'go do symulowania wielowymiarowych procesów urodzin i śmierci (głównie w zastosowaniach do chemii). Te procesy mają najczęściej przestrzeń stanów postaci X=0,1,2,d; stanem układu jest układ liczb x=x1,,xd, gdzie xi jest liczbą osobników (na przykład cząstek) typu i. Przestrzeń jest nieskończona, ale większa część rozważań przenosi się bez trudu. Pojawia się tylko problem w ostatnim algorytmie jeśli maxxQx=, czego nie można wykluczyć. Zeby sobie z tym poradzić, można wziąć Q* dostatecznie duże, żeby ,,na ogół” wystarczało, a w mało prawdopodobnym przypadku zawitania do stanu x z Qx>Q* przerzucać się na pierwszy, jednofazowy algorym.

Treść automatycznie generowana z plików źródłowych LaTeXa za pomocą oprogramowania wykorzystującego LaTeXML.

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego.

Projekt współfinansowany przez Ministerstwo Nauki i Szkolnictwa Wyższego i przez Uniwersytet Warszawski.