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ć
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 x∈X.
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,y∈X=P1,1⋯P1,y⋯P1,d⋮⋱⋮⋱⋮Px,1⋯Px,y⋯Px,d⋮⋱⋮⋱⋮Pd,1⋯Pd,y⋯Pd,d |
|
nazywamy macierzą (prawdopodobieństw) przejścia łańcucha. Jest to macierz
stochastyczna, to znaczy Px,y≥0 dla dowolnych stanów x,y∈X oraz
∑yPx,y=1 dla każdego x∈X. Jeśli qx=PX0=x, to wektor
wierszowy
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,1→X i ψ:X×0,1→X będą takimi funkcjami, że
|
PψU=x=qxdla każdego x∈X,Pϕx,U=y=Px,ydla dowolnych x,y∈X. |
| (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 X⊆Rd. 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 B⊆X,
|
P(Xn+1∈B|Xn=xn,Xn-1=xn-1,…,X1=x1,X0=x0)=P(Xn+1∈B|Xn=xn), |
|
(dla prawie wszystkich punktów xn,xn-1,…,x1,x0).
(ii) Łańcuch Markowa nazywamy jednorodnym, jeśli dla
dowolnego zbioru B⊆X i każdego n możemy napisać
(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 x∈X, 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ść,
Wtedy odpowiednikiem wzoru (7.1) jest następujący wzór na łączną gęstość:
|
px0,x1,…,xn-1,xn=qx0px0,x1⋯pxn-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(x∈B)+(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ψU∈B=QBdla każdego (mierzalnego) B⊆X,Pϕx,U∈B=Px,Bdla dowolnych x∈X,B⊆X. |
| (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,t⩾0, 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,y∈X oraz
s,t⩾0,
|
P(X(s+t)=y|X(s)=x,X(u),0⩽u<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,0⩽u<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=limt→01hPhx,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 h↘0.
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 x≠y;P(X(t+h)=x|X(t)=x)=1+hQ(x,x)+o(h),h↘0. |
|
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=∑y≠xQx,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:Xt≠X0;Tn+1=inft>Tn:Xt≠XTn. |
|
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
X⌃n=XTn to otrzymujemy łańcuch Markowa z czasem dyskretnym, nazywany
czasem ,,szkieletem”. Jego prawdopodobieństwa przejścia są takie:
|
P⌃(x,y)=P(X⌃n+1=y|X⌃n=x)=Qx,y/Qxjeśli x≠y;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=X⌃0,X⌃1,…,X⌃n,….
Po prostu, Xt=X⌃n dla Tn≤t<Tn+1.
Następujący algorytm formalizuje opisany powyżej sposób generacji.
Gen X⌃0∼q(⋅); |
T0:=0; |
for i:=1 to ∞ do |
begin |
Gen Wi∼ExQX⌃i-1; |
Ti:=Ti-1+Wi; |
Gen X⌃i∼P⌃X⌃i-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 x∈X 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 X⌃i-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-1∈R*, to
zaczynamy przerzedzać proces R* w taki sposób, aby otrzymać proces o intensywności
Qx⩽Q*. Dla każdego punktu Rj, j⩾i 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 x≠y;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” X⌃n) 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.
Gen R∼PoissQ* { proces Poissona } |
Gen X~0∼q(⋅); |
for i:=1 to ∞ do Gen X~i∼P~X⌃i-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.