Obecnie próbuje symulować wartościami -wymiarowej zmiennej losowej , który ma wielowymiarowego rozkładu normalnego o średniej wektor i macierzy kowariancji .X μ = ( μ 1 , . . . , Μ N ) T S
Mam nadzieję, że do korzystania z procedury podobnej do metody odwrotność CDF, co oznacza, że chcę najpierw wygenerować wymiarowa zmienna losowa jednolity , a następnie podłączyć do CDF że odwrotnego tego rozkładu, tak aby wygenerować wartość .U X
Mam problemy, ponieważ procedura nie jest dobrze udokumentowana i istnieją niewielkie różnice między funkcją mvnrnd w MATLAB a opisem, który znalazłem na Wikipedii .
W moim przypadku losowo wybieram parametry rozkładu. W szczególności generuję każdy ze środków z jednolitego rozkładu . Następnie buduję macierz kowariancji stosując następującą procedurę: U ( 20 , 40 ) S
Utwórz dolną macierz trójkątną gdzie dla i dla i <jL ( i , i ) = 1 i = 1 .. N L ( i , j ) = U ( - 1 , 1 ) i < j
Niech , gdzie oznacza transpozycję .
Ta procedura pozwala mi upewnić się, że jest symetryczny i pozytywnie określony. Zapewnia również dolną macierz trójkątną tak że , która moim zdaniem jest wymagana do wygenerowania wartości z rozkładu.
Korzystając z wytycznych dla Wikipedii, powinienem być w stanie wygenerować wartości za pomocą wymiarowego munduru w następujący sposób:
Jednak zgodnie z funkcją MATLAB jest to zwykle wykonywane jako:
Gdzie jest odwrotnością CDF na -wymiarowej, rozdzielnego rozkładu normalnego, a jedyna różnica między obu metod jest to, czy po prostu do stosowania lub . N L L T
Czy MATLAB lub Wikipedia są najlepszym rozwiązaniem? Czy oba są w błędzie?
Odpowiedzi:
Jeśli to wektor kolumna standardowych normalne RV, a następnie, jeśli zestaw , kowariancja jest .X∼N(0,I) Y=LX Y LLT
Myślę, że problem, który masz, może wynikać z faktu, że funkcja mvnrnd matlaba zwraca wektory wierszowe jako próbki, nawet jeśli podasz średnią jako wektor kolumny. na przykład,
I zauważ, że przekształcenie wektora wiersza daje odwrotną formułę. jeśli jest wektorem wiersza, to jest również wektorem wiersza, więc jest wektorem kolumny, a kowariancję można zapisać .X Z=XLT ZT=LXT ZT E[ZTZ]=LLT
W oparciu o to, co napisał chociaż formuła Wikipedia jest prawidłowa: jeśli były wektor wiersz zwracany przez Matlab, nie można lewej pomnożyć przez . (Ale mnożenie w prawo przez dałoby próbkę z tą samą kowariancją ).Φ−1(U) LT LT LLT
źródło