Comment générer un nombre non entier de succès consécutifs de Bernoulli?


18

Donné:

  1. Une pièce avec un biais inconnu (tête).p
  2. Un réel strictement positif .a>0

Problème:

Générez une variable de Bernoulli aléatoire avec le biais .pa

Est-ce que quelqu'un sait comment faire ça? Par exemple, quand est un entier positif, alors on peut lancer la pièce fois et voir si tous les résultats étaient chefs: si elles sont alors question « 0 », sinon question « 1 ». La difficulté réside dans le fait que n'est pas nécessairement un entier. De plus, si je connaissais le biais , je pourrais simplement construire une autre pièce avec le biais souhaité. aaap


2
@gung: Je pense que ce que l'on veut, c'est un algorithme pour générer une variable de Bernoulli avec une pièce.
Neil G

1
Je pense que le point est là, quand vous garder seulement une moyenne de 1 sur tous tête qui apparaît et quand , vous dupliquez chacune des têtes soit une moyenne de fois. a>1aa<11/a
Macro

3
@Macro, pourriez-vous développer l'idée?
Pedro A. Ortega

1
Cher Pedro, (+1) pour votre message, c'est le genre de question qui rend le CV très vivifiant et stimulant, du moins pour moi. Puis-je demander quelle est l'origine de cette question?
Cardinal

@cardinal: Merci encore pour votre réponse! Ce problème fait partie d'un échantillonneur pour résoudre les problèmes de contrôle stochastique sur lesquels je travaille. La raison pour laquelle est inconnu est qu'il nécessiterait de connaître la constante de normalisation (qui dans ce cas est une fonction de partition désagréable), mais nous pouvons toujours en échantillonner à l'aide de l'échantillonnage de rejet. Btw, ce serait bien de vous citer par son nom, pas seulement le lien vers CV ;-). p
Pedro A. Ortega

Réponses:


19

Nous pouvons résoudre ce problème via quelques "astuces" et un peu de mathématiques.

Voici l'algorithme de base:

  1. Générer une variable aléatoire géométrique avec probabilité de succès .p
  2. Le résultat de cette variable aléatoire détermine une valeur connue fixe .fn[0,1]
  3. Générez une variable aléatoire utilisant des retournements de pièces justes générés à partir de retournements appariés par blocs de notre pièce .B e r ( p )Ber(fn)Ber(p)
  4. Le résultat résultant sera pour tout , ce qui est tout ce dont nous avons besoin.a ( 0 , 1 )Ber(pa)a(0,1)

Pour rendre les choses plus digestes, nous allons les diviser en morceaux.

Pièce 1 : Sans perte de généralité, supposons que .0<a<1

Si , alors, nous pouvons écrire pour un entier positif et un . Mais, pour deux Bernoulli indépendants, nous avons Nous pouvons générer un Bernoulli à partir de notre pièce de manière évidente. Par conséquent, nous n'avons qu'à nous préoccuper de générer le quand .p a = p n p b n 0 b < 1 P ( X 1 = X 2 = 1 ) = p 1 p 2a1pa=pnpbn0b<1p n B e r ( p a ) a ( 0 , 1 )

P(X1=X2=1)=p1p2.
pnBer(pa)a(0,1)

Pièce 2 : Savoir comment générer un arbitraire à partir de tours de pièces justes.Ber(q)

Il existe une manière standard de procéder. Développez dans son expansion binaire, puis utilisez nos équitables pour "faire correspondre" les chiffres de . La première correspondance détermine si nous déclarons un succès ("têtes") ou un échec ("queues"). Si et que notre lancer de monnaie est des têtes, déclarer des têtes, si et notre lancer de pièce est des queues, déclarer des queues. Sinon, considérez le chiffre suivant par rapport à un nouveau lancer de pièce.q q n = 1 q n = 0q=0.q1q2q3qqn=1qn=0

Pièce 3 : Savoir comment générer un lancer de pièce équitable à partir de pièces injustes avec un biais inconnu.

Cela se fait, en supposant , en retournant la pièce par paires. Si nous obtenons , déclarons une tête; si nous obtenons , déclarer une queue, et sinon répéter l'expérience jusqu'à ce que l'un des deux résultats susmentionnés se produise. Ils sont également probables, ils doivent donc avoir une probabilité .H T T H 1 / 2p(0,1)HTTH1/2

Pièce 4 : Quelques mathématiques. (Taylor à la rescousse.)

En développant autour de , le théorème de Taylor affirme que Notez que parce que chaque terme après le premier est négatif, nous avons donc où sont connus a priori . D'où où , etp 0 = 1 p a = 1 - a ( 1 - p ) - a ( 1 - a )h(p)=pap0=10 < a < 1 p a = 1 - n = 1 b n ( 1 - p ) n

pa=1a(1p)a(1a)2!(1p)2a(1a)(2a)3!(1p)3.
0<a<10 b n1 1 - p a = n = 1 b n ( 1 - p ) n = n = 1 b n P ( G n ) = n = 1 f n P ( G = n ) = E f ( G ) , G
pa=1n=1bn(1p)n,
0bn1
1pa=n=1bn(1p)n=n=1bnP(Gn)=n=1fnP(G=n)=Ef(G),
f 0 = 0 f n = n k = 1 b k n 1GGeom(p)f0=0fn=k=1nbkpour .n1

Et, nous savons déjà comment utiliser notre pièce pour générer une variable géométrique aléatoire avec une probabilité de succès .p

Pièce 5 : Un tour de Monte-Carlo.

Soit une variable aléatoire discrète prenant des valeurs dans avec . Soit . Alors [ 0 , 1 ] P ( X = x n ) = p n U X B e r ( X ) P ( U = 1 ) = n x n p n .X[0,1]P(X=xn)=pnUXBer(X)

P(U=1)=nxnpn.

Mais, en prenant et , nous voyons maintenant comment générer une variable aléatoire et cela équivaut à générer une un.x n = f n B e r ( 1 - p a ) B e r ( p a )pn=p(1p)nxn=fnBer(1pa)Ber(pa)


Comment puis-je vous citer (ou votre solution)?
Pedro A. Ortega

2
@Pedro: Je suppose que vous pouvez cliquer sur le lien "partager" au bas de cette réponse. Ce devrait être un lien stable. Math.SE dispose d'un mécanisme de citation , qui ne semble pas activé sur ce site, mais vous pourrez peut-être l'adapter.
Cardinal

1
Maintenant, c'est une réponse brillante!
Zen

1
J'ai écrit cela dans le forum de discussion générale de la classe Coursera sur la combinatoire analytique, car c'était une belle utilisation des séries de puissance liées à certains des matériaux couverts. class.coursera.org/introACpartI-001/forum/thread?thread_id=108
Douglas Zare

@Douglas: Merci! Existe-t-il une version accessible au public de ce fil ou devrais-je m'inscrire au cours pour le voir? Pedro et moi avons discuté (par e-mail) des pistes possibles pour inclure cette approche dans certaines de ses recherches.
cardinal

6

La réponse suivante est-elle idiote?

Si sont indépendants et a la distribution , alors sera approximativement distribué comme , quand .B e r ( p ) Y n B e r ( ( n i = 1 X i / n ) a ) Y n B e r ( p a ) n X1,,XnBer(p)YnBer((i=1nXi/n)a)YnBer(pa)n

Par conséquent, si vous ne connaissez pas , mais vous pouvez lancer cette pièce beaucoup de fois, il est possible de l' échantillon (environ) à partir d' un variable aléatoire.B e r ( p a )pBer(pa)

Exemple de Rcode:

n <- 1000000
p <- 1/3 # works for any 0 <= p <= 1
a <- 4
x <- rbinom(n, 1, p)
y <- rbinom(n, 1, mean(x)^a)
cat("p^a =", p^a, "\n")
cat("est =", mean(y))

Résultats:

p^a = 0.01234568 
est = 0.012291 

2
J'aime cette réponse mais je soupçonne qu'elle manque le point de la question, que j'ai interprété comme demandant un algorithme qui génère à partir de la distribution demandée sans connaître (ou des informations empiriques sur ). Mais, le problème suppose que vous pouvez générer des variables aléatoires , donc c'est une réponse parfaitement raisonnable et pas idiote du tout! +1p B e r n o u l l i ( p )ppBernoulli(p)
Macro

1
+1: J'aime ça. Je suppose que vous voulez dire que est distribué…? Yn
Neil G

Bien mieux! Tks, @Neil G!
Zen

1
C'est mignon (+1), mais nous pouvons le faire exactement en un nombre presque sûrement fini de flips (et, en moyenne, ce nombre sera relativement petit).
Cardinal

5

J'ai posté l'exposition suivante de cette question et la réponse du cardinal au forum de discussion générale de la classe actuelle de combinatoire analytique sur Coursera, "Application des séries de puissance à la construction d'une variable aléatoire." J'en publie une copie ici en tant que wiki communautaire pour le rendre public et plus accessible en permanence.


Il y avait une question et une réponse intéressantes sur stat.stackexchange.com concernant la série de puissance: "Comment générer un nombre non entier de succès consécutifs de Bernoulli?" Je vais paraphraser la question et la réponse du cardinal.

pαpα

ααα1/20<α<1p3.5p3p0.5

p[0,1]HT1TH0HHTTp=0.a1a2a3...2ai=1ppα

pα=(1q)α=1αqα(1α)2q2α(1α)(2α)3!q3...p=1qqnnpqnpn

GpP(G=n)=(1p)np=qnp1

t0,t1,t2,...tGGGtn[0,1]tG[0,1]E[tG]=ntnP(G=n)=ntnqnp

ppαq

1=p+qp+q2p+q3p+...

qn=qnp+qn+1p+qn+2p+...

nsnqn=nsn(qnp+qn+1p+qn+2p+...)=n(s0+s1+...+sn)qnp

1pα=αq+α(1α)2q2+...tnqqn1pα=ntnqnptn[0,1]10α=11pαtGpα


Encore une fois, l'argument est dû au cardinal.


1
(+1) Merci d'avoir pris la peine de poster ceci. Les différences d'exposition, bien que relativement légères, contribuent à rendre l'approche plus claire.
cardinal

4

La réponse très complète du cardinal et des contributions ultérieures a inspiré la remarque / variante suivante.

q:=1pXnqMn:=max(X1,X2,,Xn)qnnN1MN

Pr{MN=0}=n=1Pr{MN=0|N=n}Pr{N=n}=n=1Pr{N=n}qn.
0<a<1Pr{N=n}=bnPr{MN=0}=1pa1MNBer(pa)bnbn01

Na0<a<1

Pr{N=n}=ank=1n1(1a/k)(n1).
nbnc/nac=1/Γ(a)>0

MNNXkNXk1Xk


Xkθ (0<θ<1)Mnqnθqnnθ=aa>0XnXnθstandard Frechet'' by

bnqnBer(p)N
Cardinal

(0,1)fn=i=1nbiNnbncn(1+a)fn=i=1nbiBer(p)

1
c1/Γ(a)nΓ(z)z:=ak=1n1
Yves

bnnbn
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.