Mon but ultime est de pouvoir générer un vecteur de taille des variables aléatoires de Bernoulli corrélées. Une façon de le faire est d'utiliser l'approche Coupla gaussienne. Cependant, l'approche Coupla gaussienne me laisse juste un vecteur:
Supposons que j'ai généré telle sorte que la corrélation commune entre eux soit. Maintenant, comment puis-je les transformer en un nouveau vecteur de ou c'est? En d'autres termes, je voudrais:
mais avec la même corrélation .
Une approche à laquelle j'ai pensé était d'attribuer une règle de coupure stricte telle que si , puis laissez et si , puis laissez .
Cela semble bien fonctionner dans les simulations en ce sens qu'il conserve la structure de corrélation mais il est très arbitraire pour moi quelle valeur de coupure devrait être choisie en dehors de .
Une autre façon est de traiter chacun comme variable aléatoire de Bernoulli avec probabilité de succès et en goûter. Cependant, cette approche semble entraîner une perte de corrélation et au lieu de, Je peux avoir ou .
Quelqu'un a-t-il des idées ou des commentaires à ce sujet? Je vous remercie.
la source
Réponses:
Je ne comprends pas assez la copule gaussienne pour savoir quel est le problème. Mais j'ai trouvé un moyen de générer des vecteurs Bernoulli corrélés.
Suivant https://mathoverflow.net/a/19436/105908 si nous prenons un ensemble de vecteurs fixesv1. . .vn et un vecteur aléatoire sur la sphère unitaire u , nous pouvons transformer u en binaire X où Xje= ( u ⋅vje> 0 ) . Dans cette configuration,c o r (Xje,Xj) =π- 2 ∗ θ ( i , j )π où θ ( i , j ) est l'angle entre vje et vj .
Comment trouver une matrice appropriéeV= |v1. . .vn| pour produire une matrice de corrélation souhaitée R ? La condition d'angle se traduit parVVT= c o s ( -πR - π2) et ainsi nous pouvons trouver V avec décomposition Cholesky.
Un exemple de code dans R suit:
Merci @ jakub-bartczuk pour le lien vers la question MO - je ne trouverais pas cela tout seul.
Le code ci-dessus a une grande limitation: les distributions marginales sont fixées àXje∼ B e r n o u l l i ( 0,5 ) . Je ne sais pas actuellement comment étendre cette approche pour correspondre à la fois aux corrélations et aux distributions marginales. Une autre réponse a une approche pour le cas général, mais elle perd beaucoup de simplicité (elle implique une intégration numérique). Il existe également un article intitulé Generating Spike Trains with Specified Correlation Coefficients et le paquet Matlab qui l' accompagne où l'échantillonnage implique de «trouver» numériquement le zéro unique d'une fonction monotone par bissection.
la source