Chciałbym wygenerować pary liczb losowych z pewną korelacją. Jednak zwykłe podejście polegające na stosowaniu kombinacji liniowej dwóch zmiennych normalnych nie jest tutaj poprawne, ponieważ kombinacja liniowa zmiennych jednolitych nie jest już zmienną równomiernie rozłożoną. Potrzebuję dwóch zmiennych, aby były jednolite.
Masz pomysł, jak wygenerować pary zmiennych jednorodnych o zadanej korelacji?
correlation
random-generation
uniform
Onturenio
źródło
źródło
Odpowiedzi:
Nie znam uniwersalnej metody generowania skorelowanych zmiennych losowych z dowolnymi rozkładami krańcowymi. Tak więc zaproponuję metodę ad hoc do generowania par równomiernie rozmieszczonych zmiennych losowych o zadanej korelacji (Pearsona). Bez utraty ogólności, zakładam, że pożądany rozkład krańcowy jest standardowy jednolity (tj. Wsparcie wynosi ).[ 0 , 1 ]
Proponowane podejście opiera się na:U1 U2 F1 F2 Fi(Ui)=Ui i=1,2
Tak więc rho Spearmana i współczynnik korelacji Pearsona są równe (wersje przykładowe mogą się jednak różnić).
a) Dla standardowych jednorodnych zmiennych losowych i U 2 z odpowiednimi funkcjami rozkładu F 1 i F 2 , mamy F i ( U i ) = U i , dla i = 1 , 2 . Zatem z definicji rho Spearmana wynosi ρ S ( U 1 , U 2 ) =
b) Jeśli są zmiennymi losowymi z ciągłymi marginesami i kopulą Gaussa ze współczynnikiem korelacji (Pearsona) ρ , wówczas rho Spearmana wynosi ρ S ( X 1 , XX1,X2 ρ
Ułatwia to generowanie losowych zmiennych, które mają pożądaną wartość rho Spearmana.
Podejście polega na generowaniu danych z kopuły Gaussa z odpowiednim współczynnikiem korelacji tak aby rho Spearmana odpowiadało pożądanej korelacji dla jednolitych zmiennych losowych.ρ
Algorytm symulacjir oznacza pożądany poziom korelacji, a liczbę generowanych par. Algorytm to:n
Niech
Przykładr=0.6 n=500
Poniższy kod jest przykładem implementacji tego algorytmu przy użyciu R z korelacją docelową i n = 500 par.
Na poniższym rysunku wykresy ukośne pokazują histogramy zmiennych i U 2 , a wykresy nie przekątne pokazują wykresy rozproszenia U 1 iU1 U2 U1 .
U2
Konstruując, zmienne losowe mają jednolite marginesy i współczynnik korelacji (bliski) . Ale ze względu na efekt próbkowania współczynnik korelacji symulowanych danych nie jest dokładnie równyr .r
Zauważ, że
gen.gauss.cop
funkcja powinna działać z więcej niż dwiema zmiennymi, po prostu określając większą macierz korelacji.Badanie symulacyjner=−0.5,0.1,0.6 n
Poniższe badanie symulacyjne powtórzone dla korelacji docelowej sugeruje, że rozkład współczynnika korelacji zbliża się do pożądanej korelacji wraz ze wzrostem wielkości próby n .
źródło
gen.gauss.cop
funkcja będzie działać dla więcej niż dwóch zmiennych z (trywialną) poprawką. Jeśli nie podoba ci się ten dodatek lub chcesz go inaczej ująć, cofnij lub zmień w razie potrzeby.źródło
Here is one easy method for positive correlation: Let(u1,u2)=Iw1+(1−I)(w2,w3) , where w1,w2, and w3 are independent U(0,1) and I is Bernoulli(p ). u1 and u2 will then have U(0,1) distributions with correlation p . This extends immediately to k -tuples of uniforms with compound symmetric variance matrix.
If you want pairs with negative correlation, use(u1,u2)=I(w1,1−w1)+(1−I)(w2,w3) , and the correlation will be −p .
źródło