Wykład VII: Metody specjalne Monte Carlo 24 listopada 2014
Transformacje specjalne Przykład - symulacja rozkładu geometrycznego Niech X Ex(λ). Rozważmy zmienną losową [X ], która przyjmuje wartości naturalne. Dla dowolnego k = 0, 1, 2,... mamy P ( [X ] = k ) = P ( k X < k + 1 ) jeśli położyć p = 1 e λ. Zatem [X ] + 1 Ge(p). = F X (k + 1) F X (k) = 1 e λ(k+1) ( 1 e λk) = ( 1 e λ) e λk = (1 p) k p,
Transformacja Boxa-Mullera Przykład (Metoda Boxa-Mullera) Generujemy niezależnie U, V o rozkładzie jednostajnym U(0, 1). Wtedy wektor (X, Y ), gdzie ma rozkład łączny N(0, I 2 ). X = 2 ln U cos 2πV, Y = 2 ln U sin 2πV, Uwaga: przy obliczaniu funkcji sinus i cosinus okresowość tych funkcji może interferować z okresowością generatora liczb losowych.
Algorytm Marsaglii Transformacje specjalne Przykład (Algorytm Marsaglii) repeat generuj U 1, U 2 z rozkładu o gęstości U(0, 1); V 1 = 2 U 1 1; V 2 = 2 U 2 1; W = V 2 1 + V 2 2 ; until W < 1. return Z 1 = V 1 2 log(w )/W ; Z 2 = V 2 2 log(w )/W. ( Z1, Z 2 ) ma rozkład łączny N(0, I2 ).
von Neumanna von Neumanna - wariant ogólny Generowanie rozkładu normalnego Niech f będzie gęstością prawdopodobieństwa rozkładu, który chcemy symulować. Zakładamy, że: f : [a, b] R +. f (x) C, x [a, b].
von Neumanna von Neumanna - wariant ogólny Generowanie rozkładu normalnego Algorytm ( von Neumanna) Niech A = [a, b] [0, C] i niech B będzie zbiorem punktów pod wykresem gęstości f, tzn. B = { (x, u) A ; u f (x) }. Generujemy (X 1, U 1 ) U(a, b) U(0, C). 1 Jeżeli (X 1, U 1 ) B, to kładziemy X = X 1. 2 W przeciwnym przypadku generujemy parę (X 2, U 2 ) U(a, b) U(0, C). 3 Jeżeli (X 2, U 2 ) B, kładziemy X = X 2. 4 Jeśli tak nie jest, powtarzamy procedurę aż do skutku. Otrzymana zmienna X ma rozkład o gęstości f.
- wariant ogólny von Neumanna - wariant ogólny Generowanie rozkładu normalnego Komentarz W metodzie eliminacji von Neumanna rozważane są gęstości f, które: są ograniczone przez stałą C > 0; mają zwarty nośnik [a, b]; To są poważne ograniczenia. Co więcej, w zależności od zachowania funkcji f, pole różnicy między prostokątem A i zbiorem B mogło być duże, co pociąga wielką liczbę eliminacji.
- wariant ogólny von Neumanna - wariant ogólny Generowanie rozkładu normalnego Algorytm (Ogólna metoda eliminacji) Zakładamy, że istnieje stała C > 0 taka, że 0 f (x) Cg(x), gdzie g jest gęstością rozkładu, który umiemy generować, a f jest gęstością rozkładu, który chcemy generować. Stosujemy metodę eliminacji według pseudokodu: repeat generuj X z rozkładu o gęstości g generuj U z rozkładu U(0, 1) until CUg(X ) f (X ) return Y := X
- wariant ogólny von Neumanna - wariant ogólny Generowanie rozkładu normalnego Uwaga Wygenerowana za pomocą ogólnej metody eliminacji zmienna Y ma rozkład o gęstości f, przy czym P ( Y y ) = P ( X y CUg(X ) f (X ) ), a wektor (X, U) ma dwuwymiarowy rozkład jednostajny skupiony na zbiorze pod wykresem Cg.
Generowanie rozkładu normalnego von Neumanna - wariant ogólny Generowanie rozkładu normalnego Algorytm (Generowanie rozkładu normalnego metodą eliminacji) repeat generuj X z rozkładu Ex(1) generuj U z rozkładu U(0, 1) until (X 1) 2 2 ln U generuj R z rozkładu B(1/2) return Y := R X
Motywacja Transformacje specjalne Jeżeli X N (0, 1), to P ( X 3 ) 1 0, 00027. Jest to tzw. prawo 3σ: praktycznie cała masa rozkładu N (0, σ 2 ) mieści się w przedziale ( 3σ, 3σ). Przypuśćmy, że chcemy znaleźć przybliżenie dla Φ( 4, 5) (wiemy skądinąd, że Φ( 4, 5) 3, 3 10 6 ). Spróbujmy zastosować prostą metodę Monte Carlo do obliczenia Eh(X ), gdzie h(x) = 1I [4,5;+ ). Mamy h(x 1 ) + h(x 2 ) +... + h(x n ) n Eh(X 1 ). Ale 1 w powyższym ciągu pojawia się przeciętnie raz na ok. 300000 zer! Taka symulacja jest nieopłacalna!
(ang. Importance sampling) Twierdzenie () Niech X ma rozkład o gęstości f (x). Chcemy wyznaczyć Eh(X ) dla pewnej funkcji h. Niech g będzie gęstością prawdopodobieństwa taką, że g(x) > 0, jeśli tylko h(x)g(x) 0. Wtedy ( 1 h(y1 )f (Y 1 ) + h(y 2)f (Y 2 ) n g(y 1 ) g(y 2 ) +... + h(y ) n)f (Y n ) Eh(X ), g(y n ) gdzie Y 1, Y 2,..., Y n jest ciągiem niezależnych zmiennych losowych z rozkładu o gęstości g.
Przykład: Obliczanie Φ( 4, 5) Niech h(x) = 1I [4,5;+ ). Szukamy Φ( 4, 5) = 1 Φ(4, 5) = 0 h(x)ϕ(x) dx, gdzie ϕ(= f ) jest gęstością standardowego rozkładu normalnego. Symulujemy Y 1, Y 2,... z rozkładu wykładniczego obciętego do półprostej [4, 5; + ), tzn. z gęstości g(y) = e y 1I [4,5,+ ) (y) 4,5 e x dx = e (y 4,5) 1I [4,5,+ ) (y). Wtedy dla y > 4, 5 h(y)f (y) g(y) = 1 2π e y 2 /2 e y 4,5 = 1 2π e y 2 /2+y 4,5.
Przykład: Obliczanie Φ( 4, 5) Przykład - cd. Zatem P-prawie wszędzie e 4,5 ( e Y1 2 /2+Y 1 + e Y 2 2/2+Y 2 +... + e Y n 2/2+Yn 2π n ) Φ( 4, 5). Przykładowa symulacja daje wartość 3, 312 10 6 przy rzeczywistej wartości 3, 398 10 6. Takie podejście jest skuteczne w przypadku, gdy potrafimy łatwo i dokładnie symulować rozkład z gęstości g. Przy próbkowaniu ważonym gęstość g należy dobrać tak, aby zmienna h(y )f (Y )/g(y ) miała skończoną wariancję, co gwarantuje lepszą jakość zbieżności.