Ich habe mich gefragt, ob es nach einem linearen Transformationsansatz möglich sein könnte, korrelierte binomische Zufallsvariablen zu generieren.
Unten habe ich etwas Einfaches in R ausprobiert und es ergibt eine gewisse Korrelation. Aber ich habe mich gefragt, ob es einen prinzipiellen Weg gibt, dies zu tun?
X1 = rbinom(1e4, 6, .5) ; X2 = rbinom(1e4, 6, .5) ; X3 = rbinom(1e4, 6, .5) ; a = .5
Y1 = X1 + (a*X2) ; Y2 = X2 + (a*X3) ## Y1 and Y2 are supposed to be correlated
cor(Y1, Y2)
copula
, mit dessen Hilfe abhängige Variablen mit festen Rändern generiert werden können.Antworten:
Binomialvariablen werden normalerweise durch Summieren unabhängiger Bernoulli-Variablen erstellt. Mal sehen, ob wir mit einem Paar korrelierter Bernoulli-Variablen und dasselbe tun können.(X,Y)
Angenommen, ist eine Bernoulli -Variable ( und ) und ist eine Bernoulli -Variable. Um ihre gemeinsame Verteilung festzulegen, müssen wir alle vier Kombinationen von Ergebnissen angeben. Wenn wir schreiben wir den Rest leicht aus den Axiomen der Wahrscheinlichkeit herausfinden:( p ) Pr ( X = 1 ) = p Pr ( X = 0 ) = 1 - p Y ( q ) Pr ( ( X , Y ) = ( 0 , 0 ) ) = a , Pr ( ( X , Y ) = ( 1 , 0 ) ) = 1 - qX (p) Pr(X=1)=p Pr(X=0)=1−p Y (q)
Das Einfügen in die Formel für den Korrelationskoeffizienten und das Lösen ergibtρ
Vorausgesetzt, alle vier Wahrscheinlichkeiten sind nicht negativ, ergibt dies eine gültige gemeinsame Verteilung - und diese Lösung parametrisiert alle bivariaten Bernoulli-Verteilungen. (Wenn , gibt es eine Lösung für alle mathematisch bedeutsamen Korrelationen zwischen und ) Wenn wir dieser Variablen summieren , bleibt die Korrelation gleich - aber jetzt sind die Randverteilungen Binomial und Binomial , wie gewünscht.p=q −1 1 n (n,p) (n,q)
Beispiel
Es sei , , , und wir möchten, dass die Korrelation . Die Lösung ist (und die anderen Wahrscheinlichkeiten sind etwa , und ). Hier ist eine Darstellung von Realisierungen aus der gemeinsamen Verteilung:n=10 p=1/3 q=3/4 ρ=−4/5 (1) a=0.00336735 0.247 0.663 0.087 1000
Die roten Linien geben das Mittel der Stichprobe an und die gepunktete Linie ist die Regressionslinie. Sie sind alle nahe an ihren beabsichtigten Werten. Die Punkte in diesem Bild wurden zufällig gezittert, um die Überlappungen aufzulösen: Schließlich erzeugen Binomialverteilungen nur ganzzahlige Werte, sodass es zu einer starken Überzeichnung kommt.
Eine Möglichkeit, diese Variablen zu generieren, besteht darin, mal aus mit den gewählten Wahrscheinlichkeiten abzutasten und dann jede in , jede in , jede umzuwandeln in und jeweils in . Summiere die Ergebnisse (als Vektoren), um eine Realisierung von .{ 1 , 2 , 3 , 4 } 1 ( 0 , 0 ) 2 ( 1 , 0 ) 3n {1,2,3,4} 1 (0,0) 2 (1,0) 3 4 ( 1 , 1 ) ( X , Y )(0,1) 4 (1,1) (X,Y)
Code
Hier ist eine
R
Implementierung.quelle