Génération de variables aléatoires binomiales avec une corrélation donnée

8

Supposons que je sache comment générer des variables aléatoires binomiales indépendantes. Comment puis-je générer deux variables aléatoiresX et Y tel que

XBin(8,23),YBin(18,23)  and  Corr(X,Y)=0.5

J'ai pensé essayer d'utiliser le fait que X et YρX sont indépendants où ρ=Corr(X,Y) mais je ne pense pas que XρYest distribué de façon binomiale, je ne peux donc pas utiliser cette méthode. Si cela avait fonctionné, j'aurais généré deux variables aléatoires binomiales, disonsA et B, puis définissez X=A et YρX=B c'est à dire Y=B+ρA et donc j'aurais eu la paire (X,Y). Mais je ne peux pas faire çaYρX n'est pas distribué de façon binomiale.

Tout indice sera apprécié sur la façon de procéder.

Landon Carter
la source
En fait, ce problème est survenu lors d'un examen semestriel, donc ce n'est pas des devoirs, mais vous pouvez l'appeler auto-apprentissage, je suppose. Ajout de la balise.
Landon Carter

Réponses:

8

Vous ne pouvez pas utiliser la représentation linéaire de la corrélation dans des distributions de support discrètes.

Dans le cas particulier de la distribution binomiale, la représentation

X=i=18δiY=i=118γiδi,γiB(1,2/3)
peut être exploitée car
cov(X,Y)=i=18j=118cov(δi,γj)
Si nous choisissons certains des δidoit être égal à certains des γjet générés indépendamment autrement, nous obtenons
cov(X,Y)=i=18j=118I(δi:=γj)var(γj)
où la notation I(δi:=γj) indique que δi est choisi identique à γj plutôt que généré comme Bernoulli B(1,2/3).

Puisque la contrainte est

cov(X,Y)=0.5×8×18×23×13
nous devons résoudre
i=18j=118I(δi:=γj)=0.5×8×18=6
Cela signifie que si nous choisissons 6 des 8 δiest égal à 6 des 18 γjnous devrions obtenir cette corrélation de 0,5.

L'implémentation se déroule comme suit:

  1. produire ZB(6,2/3), Y1B(12,2/3), X1B(2,2/3);
  2. Prend X=Z+Z1 et Y=Z+Y1

On peut vérifier ce résultat avec une simulation R

> z=rbinom(10^8,6,.66)
> y=z+rbinom(10^8,12,.66)
> x=z+rbinom(10^8,2,.66)
cor(x,y)
> cor(x,y)
[1] 0.5000539

Commentaire

Il s'agit d'une solution plutôt artificielle au problème en ce qu'elle ne fonctionne que parce que 8×18 est un carré parfait et parce que cor(X,Y)×8×18est un entier. Pour d'autres corrélations acceptables, une randomisation serait nécessaire, c'est-à-direI(δi:=γj) serait zéro ou un avec une certaine probabilité ϱ.

Addenda

Le problème a été proposé et résolu il y a des années sur Stack Overflow avec la même idée de partager Bernoullis.

Xi'an
la source
1
+1. Tu n'as pas besoin de ça8×18être un carré. Les conditions pour Cor(X,Y)=ρ avoir une solution (via cette méthode) pour X Binomial(n,p) et Y Binomial(m,q) sont (1) p=q et (2) 0ρmnmin(m,n)est un entier. Pour certains négatifs , l'utilisation d'une distribution multinomiale donne une solution. Une approche plus générale - mais plus difficile - utiliserait des copules. ρ
whuber
@whuber: pour la corrélation négative, j'ai d'abord pensé à utiliser mais ça ne marche évidemment pas. Pourriez-vous développer la solution générique? (J'ai aussi pensé aux copules, mais calibrer les copules pour atteindre la bonne corrélation est une mauvaise affaire, n'est-ce pas?!1γj
Xi'an
Xi'an, je voudrais vous demander si la méthode que vous avez utilisée est standard. C'est parce que j'ai beaucoup cherché sur Internet et je n'ai rien trouvé.
Landon Carter
2
Je suis d'accord avec toi - je ne veux pas travailler avec ces copules! Mais ils montrent au moins que des solutions devraient exister (dans certaines limites sur , en fonction des autres paramètres) dans le cadre le plus général. Il serait intéressant de savoir si des constructions plus simples, comme celle que vous donnez ici, pourraient être utilisées pour gérer les cas où ou . Yedaynara: la méthode de fractionnement de deux variables en est standard pour toute famille paramétrique fermée sous addition; et c'est tout ce qui se passe ici. ρpqρ<0X,YX+Z,Y+Z
whuber
@yedaynara: Je suis surpris que vous n'ayez pas trouvé "quoi que ce soit" car j'ai googlé "simulation binomiale corrélée" et trouvé immédiatement ce post sur Stack Overflow .
Xi'an