Zagadnienia

5. Generowanie zmiennych losowych III. Rozkłady wielowymiarowe

5.1. Ogólne metody

Wiele spośród ogólnych metod generowania zmiennych losowych jest całkowicie niezależnych od wymiaru. W szczególności, metody eliminacji, kompozycji i przekształceń są z powodzeniem stosowane do generowania zmiennych losowych wielowymiarowych. Wyjątek stanowi ,,najbardziej ogólna” metoda odwracania dystrybuanty, która nie ma naturalnego odpowiednika dla wymiaru większego niż 1.

5.1.1. Metoda rozkładów warunkowych

Jest to właściwie jedyna metoda ,,w zasadniczy sposób wielowymiarowa”. Opiera się na przedstawieniu gęstości łącznej zmiennych losowych X1,,Xd jako iloczynu gęstości brzegowej i gęstości warunkowych (wzór łańcuchowy):

f(x1,x2,,xd)=f(x1)f(x2|x1)f(x3|x1,x2)f(xd|x1,,xd-1).

Wynika stąd następujący algorytm:

for    i:=1 to d do
  Gen Xif(|X1,,Xi-1)
Przykład 5.1 (Wielowymiarowy rozkład normalny)

Ograniczymy się do zmiennych losowych X1,X2 pochodzących z rozkładu dwuwymiarowego N0,0,σ12,σ22,ρ o gęstości

fx1,x2=12πσ1σ21-ρ2exp-121-ρ2x12σ12-2ρx1x2σ1σ2+x22σ22.

Jak wiadomo (można to sprawdzić elementarnym rachunkiem),

fx1=12πσ1exp-x122σ12,
f(x2|x1)=12πσ21-ρ2exp[-12σ221-ρ2(x2-ρσ2σ1x1)2].

To znaczy, że N0,σ12 jest rozkładem brzegowym X1 oraz

Nρσ2σ1x1,σ221-ρ2

jest rozkładem warunkowym X2 dla X1=x1. Algorytm jst więc następujący.

Gen X1,X2N0,1
X1:=σ1X1
X2:=ρσ2/σ1X1+σ21-ρ2X2

Próbka z dwuwymiarowego rozkładu normalnego, poziomice gęstości i funkcja regresji
Rys. 5.1. Próbka z dwuwymiarowego rozkładu normalnego, poziomice gęstości i funkcja regresji x2=E(X2|X1=x1).

Efekt działania powyższego algorytmu widać na Rysunku 5.1. W tym konkretnym przykładzie X1 ma rozkład brzegowy N0,1, zaś X2 ma rozkład warunkowy NX1,0.5. Zauważmy, że VarX2=1.5 i CovX1,X2=1. Prosta x2=x1 jest wykresem funkcji regresji E(X2|X1=x1) i jest przedstawiona na wykresie. Pokazane są też poziomice gęstości (elipsy). Warto zwrócić uwagę, że funkcja regresji nie pokrywa się ze wspólną osią tych elips. Dlaczego? Jak obliczyć oś?

Uogólnienie na przypadek rozkładu normalnego Nμ1,μ2,σ12,σ22,ρ, z niezerowymi średnimi, jest banalne. Uogólnienie na wyższe wymiary też nie jest skomplikowane. Okazuje się jednak, że metoda rozkładów warunkowych dla rozkładów normalnych prowadzi to do algorytmu identycznego jak otrzymany metodą przekształceń.

5.1.2. Metoda przeksztalceń

Podstawą jest następujące twierdzenie o przekształcaniu gęstości.

Twierdzenie 5.1

Załóżmy, że X jest d-wymiarową zmienną losową o wartościach w otwartym zbiorze ARd. Jeżeli

Xfx

i h:ARd jest dyfeomorfizmem, to

Y=hXgy=fh-1ydetyh-1y.
Przykład 5.2 (Wielowymiarowy rozkład normalny)

Rozważmy niezależne zmienne losowe Z1,,ZdN0,1. Wektor Z=Z1,,Zd ma d-wymiarowy rozkład normalny N0,I o gęstości

fz=2π-d/2exp-12zz.

Jeżeli teraz R jest nieosobliwą macierzą d×d to przekształcenie zx=Rz jest dyfeomorfizmem z jakobianem detR. Z Twierdzenia 5.1 wynika, że wektor losowy X=RZ ma rozkład normalny o gęstości

fXx=2π-d/2detR-1/2exp-12xΣ-1x,

gdzie Σ=RR. Innymi słowy, XN0,Σ. Algorytm generacji jest oczywisty:

Gen ZN0,I
X:=RZ
Jeśli dana jest macierz kowariancji Σ wektora X, to przed uruchomieniem algorytmu trzeba znaleźć taką macierz R, żeby Σ=RR. Istnieje wiele takich macierzy, ale najlepiej skorzystać z rozkładu Choleskiego i wybrać macirz trójkątną.

5.2. Kilka ważnych przykładów

Rozmaitych rozkładów wielowymiarowych jest więcej, niż gwiazd na niebie – a wśród nich tyle przykładów ciekawych i ważnych! Musiałem wybrać zaledwie kilka z nich. Rzecz jasna, wybrałem te, które mi się szczególnie podobają.

5.2.1. Rozkłady sferyczne i eliptyczne

Najważniejszy, być może, przykład to wielowymiarowy rozkład normalny, omówiony już w 5.2. Rozpatrzymy teraz rozklady jednostajne na kuli

Bd=xRd:x21

i sferze

Sd-1=xRd:x2=1.

Oczywiście, x oznacza normę euklidesową, x=x12++xd21/2=xx1/2. Rozkład UBd ma po prostu stałą gęstość względem d-wymiarowej miary Lebesgue'a na kuli. Rozkład USd-1 ma stałą gęstość względem d-1-wymiarowej miary ,,powierzchniowej” na sferze. Oba te rozkłady są niezmiennicze względem obrotów (liniowych przekształceń ortogonalnych) Rd. Takie rozkłady nazywamy sferycznie symetrycznymi lub krócej: sferycznymi. Zauważmy, że zmienną losową o rozkładzie USd-1 możemy interpretować jako losowo wybrany kierunek w przestrzeni d-1-wymiarowej. Algorytmy ,,poszukiwań losowych” często wymagają generowania takich losowych kierunków.

Rozkłady jednostajne na kuli i sferze są blisko ze sobą związane.

  • Jeśli V=V1,,VdUBd i R=V to

    Y=VR=V1R,,VdRUSd-1.

    Łatwo też zauważyć, że R jest zmienną losową o rozkładzie PRr=rd niezależną od Y.

  • Jeśli YUSd-1 i R jest niezależną zmienną losową o rozkładzie PRr=rd to V=RY=RY1,,RVdUBd.

Zmienną R łatwo wygenerować metodą odwracania dystrybuanty.

Najprostszy wydaje się algorytm eliminacji:

repeat
  Gen V1,,VdU0,1
until    R2=V12++Vd21
Na wyjściu otrzymujemy, zgodnie z żądaniem

V=V1,,VdUBd.

W istocie, dokładnie ta metoda, dla d=2, była częścią algorytmu biegunowego Marsaglii. Problem w tym, że w wyższych wymiarach efektywnosc eliminacji gwałtownie maleje. Prawdopodobieństwo akceptacji jest równe stosunkowi ,,objętości” kuli Bd do kostki -1,1d. Ze znanego wzoru na objętość kuli d-wymiarowej wynika, że

Bd2d=2πd/2dΓd/212d=πd/2d2d-1Γd/2d0.

Zbieżność do zera jest bardzo szybka. Dla dużego d kula jest znikomą częścią opisanej na niej kostki.

Inna metoda, którą z powodzeniem stosuje się dla d=2 jest związana ze współrzędnymi biegunowymi:

Gen ΦU0,2π;
Y1:=cosΦ;Y2:=sinΦ;
Gen U;R:=U;
V1:=Y1R;V2:=Y2R;
Na wyjściu Y1,Y2S1 i V1,V2B2. Jest to część algorytmu Boxa-Müllera. Uogólnienie na przypadek d>2 nie jest jednak ani proste, ani efektywne. Mechaniczne zastąpienie, współrzędnych biegunowych przez współrzędne sferyczne (dla, powiedzmy d=3) prowadzi do niepoprawnych wyników. Popatrzmy na punkty produkowane przez następujący algorytm:

Gen ΦU0,2π;ΨU-π2,π2
Y1:=cosΦcosΨ;Y2:=sinΦcosΨ;Y3=sinΨ
Algorytm ,,współrzędnych sferycznych'' \text@underline{nie generuje} rozkładu jednostajnego na sferze
Rys. 5.2. Niepoprawne i poprawne generowanie z rozkładu jednostajnego na sferze.

Efekt działania algorytmu ,,współrzędnych sferycznych” jest widoczny na trzech początkowych obrazkach na Rysunku 5.2. Górny lewy rysunek przedstawia punkty widoczne ,,z płaszczyzny równika”, czyli Y1,Y3. Górny prawy – te same punkty widziane ,,znad bieguna”, czyli Y1,Y2. Dolny lewy – górną półsferę widzianą ,,skośnie”, czyli Y2,Y3a, gdzie Y3a=2Y3+2Y1. Dla porównania, na ostatnim rysunku po prawej stronie u dołu – punkty wylosowane rzeczywiście z rozkładu US2 przy pomocy poprawnego algorytmu podanego niżej.

Gen Z1,,ZdN0,1;
R:=Z12++Zd21/2;
Y1:=Z1/R,,Yd:=Zd/R;
Gen U;R:=U1/d;
V1:=Y1R,,Vd:=YdR;
Na wyjściu YUSd-1 i VUBd. Jak widać, algorytm polega na normowaniu punktów wylosowanych ze sferycznie symetrycznego rozkładu normalnego. Jest prosty, efektywny i godny polecenia.

Przykład 5.3 (Wielowymiarowe rozkłady Studenta)

Niech Z=Z1,,Zd będzie wektorem losowym o rozkładzie N0,I, zaś R2 – niezależną zmienną losową o rozkładzie χ2n. Wektor

Y1,,Yd=Z1,,ZdR2/n

ma, z definicji, Sferyczny rozkład t-Studenta z n stopniami swobody. Gęstość tego rozkładu (z dokładnością do stałej normującej) jest równa

fy=fy1,,yd1+1nyi2-n+d/2=1+1ny2-n+d/2.

W przypadku jednowymiarowym, a więc przyjmując d=1, otrzymujemy dobrze znane rozklady t-Studenta z n stopniami swobody o gęstości

fy11+y2/nn+1/2

W szczególnym przypadku, biorąc za liczbę stopni swobody n=1, otrzymujemy rozkłady Cauchy'ego. Na przykład, dwuwymiarowy rozkład Cauchy'ego ma taką gęstość:

fy1,y211+y12+y223/2.

Użytecznym uogólnieniem rozkładów sferycznych są rozkłady eliptyczne. Są one określone w następujący sposób. Niech Σ będzie macierzą symetryczną i nieosbliwą. Nazwijmy uogólnionym obrotem przekształcenie liniowe, które zachowuje uogólnioną normę xΣ-1=xΣ-1x1/2. Rozkład jest z definicji eliptycznie konturowany lub krócej eliptyczny, gdy jest niezmienniczy względem uogólnionych obrotów (dla ustalonej macierzy Σ).

5.2.2. Rozklady Dirichleta

Definicja 5.1

Mówimy, że n-wymiarowa zmienna losowa X ma rozkład Dirichleta,

X=X1,,XnDirα1,,αn

jesli X1++Xn=1 i zmienne X1,,Xn-1 mają gęstość

fx1,,xn-1=Γα1++αnΓα1Γαnx1α1-1xn-1αn-1-11-x1-xn-1αn-1.

Parametry α1,,αn mogą być dowolnymi liczbami dodatnimi.

Uwaga 5.1

Rozkłady Dirichleta dla d=2 są to w istocie rozkłady beta:

X1Betaα1,α2wtedy i tylko wtedy, gdy X1,X2Dirα1,α2
Wniosek 5.1

Jeśli U1,,Un-1 są niezależnymi zmiennymi o jednakowym rozkładzie jednostajnym U0,1 i

U1:n<<Un-1:n-1

oznaczają statystyki pozycyjne, to spacje

Xi=Ui:n-Ui-1:n,Xn=1-Un-1:n

maja rozklad Dir1,,1.

Twierdzenie 5.2

Jeśli Y1,,Yn są niezależnymi zmiennymi losowymi o rozkładach gamma,

YiGammaαi

i S=Y1++Yn to

X1,,Xn=Y1S,,YnSDirα1,,αn.

Wektor losowy X jest niezależny od S.

Dowód

Obliczymy łączną gęstość zmiennych losowych S,X1,,Xn-1. Ze wzoru na przekształcenie gęstości wynika, że

fS,X1,,Xn-1s,x1,,xn-1=fY1,,Ynx1s,,xnsx1sα1-1e-x1sxnsαn-1e-xnsy1,,yns,x1,xn-1x1α1-1xnαn-1sα1++αn-1e-s,

ponieważ jakobian przekształcenia odwrotnego jest równy sn-1. Wystarczy teraz zauważyć, że

x1α1-1xnαn-1=Dir,
sα1++αn-1e-s=Gamma.
Wniosek 5.2

Dla niezależnych zmiennych losowych o jednakowym rozkładzie wykładniczym,

Y1,,YnEx1,

jeśli S=Y1++Yn to

X1,,Xn=Y1S,,YnSDir1,,1

Z 5.1 i 5.2 wynika, że następujące dwa algorytmy:

Gen U1,,Un-1;
Sort U1,,Un-1;U0=0;Un=1;
Xi:=Ui-Ui-1
oraz
Gen Y1,,YnEx1
S:=Y1++Yn
Xi:=Yi/S
dają te same wyniki.

Wiele ciekawych własności rozkładów Dirichleta wynika niemal natychmiast z 5.2 (choć nie tak łatwo wyprowadzić je posługując się gęstością 5.2). Mam na myśli przede wszystkim zasadniczą własność ,,grupowania zmiennych”.

Wniosek 5.3

Rozważmy rozbicie zbioru indeksów na sumę rozłącznych podzbiorów:

1,,n=j=1kIj.

Jeżeli X1,,XnDirα1,,αn i rozważymy ,,zgrupowane zmienne”

Sj=iIjXi,

to wektor tych zmiennych ma też rozkład Dirichleta,

S1,,SkDirβ1,,βk,

gdzie

βj=iIjαi.

Co więcej, każdy z wektorów Xi/SjiIj ma rozkład Dirichleta DirαiiIj i wszystkie te wektory są niezależne od S1,,Sk.

Przykład 5.4

Wniosek 5.3 razem z 5.1 pozwala szybko generować wybrane statystyki pozycyjne. Na przykład łączny rozkład dwóch statystyk pozycyjnych z rozkładu jednostajnego jest wyznaczony przez rozkład trzech ,,zgrupowanych spacji”:

Uk:n-1,Ul:n-1-Uk:n-1, 1-Ul:n-1Dirk,l-k,n-l
Przykład 5.5 (Rozkład dwumianowy)

Aby wygenerować zmienną o rozkładzie dwumianowym Binn,p wystarczy rozpoznać między którymi statystykami pozycyjnymi z rozkładu U0,1 leży liczba p. Nie musimy w tym celu generować wszystkich staystyk pozycyjnych, możemy wybierać ,,najbardziej prawdopodobne”. W połączeniu 5.4 daje to następujący algorytm.

k:=nθ:=pX:=0;
repeat
  i:=1+kθ;
  Gen VBetai,k+1-i;
  if θ<V then
    begin θ:=θ/Vk:=i-1 end
                  else
    begin X:=X+iθ=θ-V/1-Vk:=k-i end
until k=0

Metoda generowania zmiennych o rozkładzie Dirichleta opiera sie na następującym fakcie, który jest w istocie szczególnym przypadkiem ,,reguły grupowania” 5.3.

Wniosek 5.4

Jeśli X1,,XnDirα1,,αn i, dla k=1,,n, określimy Sk=X1++Xk to zmienne

Y1=S1S2,Y2=S2S3,,Yn=Sn-1Sn

są niezależne i

YkBetaα1++αk,αk+1.

Odwrotnie, jeśli zmienne Y1,,Yn są niezależne i każda z nich ma rozkład beta, to wektor X1,,Xn ma rozkład Dirichleta.

Oczywiście, jeśli wygenerujemy niezależne zmienne Y1,,Yn o rozkładach beta, to zmienne X1,,Xn łatwo ,,odzyskać” przy pomocy wzorów:

Xn=1-Yn-1
Zn-1=1-Yn-2Yn-1
Z2=1-Y1Y2Yn-1
Z1=Y1Y2Yn-1

Powyższe równania określają algorytm generowania zmiennych o rozkładzie Dirα1,,αn.

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.