Come generare un numero non intero di successi Bernoulli consecutivi?


18

Dato:

  1. Una moneta con pregiudizio sconosciuto (Testa).p
  2. Un reale strettamente positivo .a>0

Problema:

Genera una variabile Bernoulli casuale con bias .pa

Qualcuno sa come fare questo? Ad esempio, quando è un numero intero positivo, allora si può lanciare la moneta volta e vedere se tutti i risultati sono stati Head: se poi emettono '0', altrimenti '1'. La difficoltà sta nel fatto che non è necessariamente un numero intero. Inoltre, se conoscessi il pregiudizio , potrei semplicemente costruire un'altra moneta con il pregiudizio desiderato. a a paaap


2
@gung: Penso che ciò che si desidera sia un algoritmo per generare una variabile di Bernoulli con una moneta.
Neil G,

1
Credo che il punto qui è che quando si mantiene solo una media di 1 su ogni teste che si apre e quando , si duplica ciascuna delle teste una media di volte. a>1aa<11/a
Macro

3
@Macro, potresti approfondire l'idea?
Pedro A. Ortega,

1
Caro Pedro, (+1) per il tuo post, che è il tipo di domanda che rende il CV molto corroborante e stimolante, almeno per me. Potrei chiedere qual è l'origine di questa domanda?
cardinale

@cardinale: grazie ancora per la tua risposta! Questo problema fa parte di un campionatore per la risoluzione di problemi di controllo stocastico su cui sto lavorando. Il motivo per cui è sconosciuto è perché richiederebbe di conoscere la costante normalizzante (che in questo caso è una brutta funzione di partizione), ma possiamo ancora campionare da essa usando il campionamento del rifiuto. A proposito, sarebbe bello citarti per nome, non solo per il link al CV ;-). p
Pedro A. Ortega,

Risposte:


19

Possiamo risolverlo tramite un paio di "trucchi" e un po 'di matematica.

Ecco l'algoritmo di base:

  1. Generare una variabile casuale geometrica con probabilità di successo .p
  2. Il risultato di questa variabile casuale determina un valore noto fisso .fn[0,1]
  3. Genera una variabile casuale usando lanci di monete equi generati da lanci accoppiati in senso antiorario della nostra moneta .B e r ( p )Ber(fn)Ber(p)
  4. Il risultato risultante sarà per qualsiasi , che è tutto ciò di cui abbiamo bisogno.a ( 0 , 1 )Ber(pa)a(0,1)

Per rendere le cose più digeribili, le suddivideremo in pezzi.

Pezzo 1 : Senza perdita di generalità supponiamo che .0<a<1

Se , quindi, possiamo scrivere per un numero intero positivo e un po ' . Ma, per ogni due Bernoulli indipendenti, abbiamo Possiamo generare un Bernoulli dalla nostra moneta nel modo ovvio. Quindi, dobbiamo preoccuparci solo di generare il quando .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)

Pezzo 2 : Sapere come generare un arbitrario da lanci di monete onesti.Ber(q)

C'è un modo standard per farlo. Espandi nella sua espansione binaria e quindi usa i nostri monete equi per "abbinare" le cifre di . La prima corrispondenza determina se dichiariamo un successo ("teste") o un fallimento ("code"). Se e il nostro lancio della moneta è testa, dichiara teste, se e il nostro lancio della moneta è croce, dichiara la coda. Altrimenti, considera la cifra successiva rispetto a un nuovo lancio di una moneta.q q n = 1 q n = 0q=0.q1q2q3qqn=1qn=0

Pezzo 3 : sapere come generare un lancio della moneta corretto da quelli ingiusti con pregiudizio sconosciuto.

Questo viene fatto, assumendo , lanciando la moneta in coppia. Se otteniamo , dichiariamo un testa; se otteniamo , dichiariamo una coda e altrimenti ripetiamo l'esperimento fino a quando si verifica uno dei due risultati sopra menzionati. Sono ugualmente probabili, quindi devono avere probabilità .H T T H 1 / 2p(0,1)HTTH1/2

Pezzo 4 : Alcuni di matematica. (Taylor in soccorso.)

Espandendo intorno a , il teorema di Taylor afferma che Si noti che poiché ogni termine dopo il primo è negativo, quindi abbiamo dove sono noti a priori . Quindi dove , ep 0 = 1 p a = 1 - a ( 1 - p ) - a ( 1 - a )h(p)=pun'p0=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=1nbkper .n1

E sappiamo già come usare la nostra moneta per generare una variabile casuale geometrica con probabilità di successo .p

Pezzo 5 : un trucco di Monte Carlo.

Sia una variabile casuale discreta che assume valori in con . Lascia che . Quindi [ 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.

Ma, prendendo e , vediamo ora come generare una variabile casuale e questo equivale a generare un uno.x n = f n B e r ( 1 - p a ) B e r ( p apn=p(1p)nxn=fnBer(1pa)Ber(pa)


Come posso citare te (o la tua soluzione)?
Pedro A. Ortega,

2
@Pedro: suppongo che tu possa fare clic sul link "condividi" in fondo a questa risposta. Dovrebbe essere un collegamento stabile. Math.SE ha un meccanismo di citazione , che non sembra essere abilitato su questo sito, ma potresti essere in grado di adattarlo.
cardinale

1
Ora, questa è una risposta brillante!
Zen,

1
L'ho scritto nel forum di discussione generale della classe Coursera sulla Combinatoria Analitica in quanto si trattava di un buon uso delle serie di potenze relative ad alcuni dei materiali trattati. class.coursera.org/introACpartI-001/forum/thread?thread_id=108
Douglas Zare,

@Douglas: grazie! Esiste una versione pubblicamente visualizzabile di quel thread o dovrei iscrivermi al corso per vederlo? Pedro ed io abbiamo discusso (via e-mail) possibili strade per includere questo approccio in alcune delle sue ricerche.
cardinale il

6

La seguente risposta è sciocca?

Se sono indipendenti e ha distribuzione , allora sarà approssimativamente distribuito come , quando .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

Quindi, se non conosci , ma puoi lanciare questa moneta molte volte, è possibile campionare (approssimativamente) da una variabile casuale .B e r ( p a )pBer(pa)

RCodice di esempio :

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))

risultati:

p^a = 0.01234568 
est = 0.012291 

2
Mi piace questa risposta ma sospetto che manchi il punto della domanda, che ho interpretato come chiedere un algoritmo che genera dalla distribuzione richiesta senza conoscere (o informazioni empiriche su p ). Ma, il problema fa presupporre che si può generare B e r n o u l l i ( p ) variabili casuali, quindi questa è una risposta perfettamente ragionevole e non è affatto stupida! +1ppBernoulli(p)
Macro

1
+1: mi piace. Presumo tu intenda che è distribuito ...? Yn
Neil G,

Molto meglio! Tks, @Neil G!
Zen,

1
Questo è carino (+1), ma possiamo farlo esattamente in un numero quasi sicuramente finito di lanci (e, in media, quel numero sarà relativamente piccolo).
cardinale

5

Ho pubblicato la seguente esposizione di questa domanda e la risposta del cardinale al forum di discussione generale dell'attuale classe di analisi combinatoria su Coursera, "Applicazione di serie di potenze alla costruzione di una variabile casuale". Sto pubblicando una copia qui come wiki della community per renderlo disponibile pubblicamente e in modo permanente.


C'era un'interessante domanda e risposta su stat.stackexchange.com relativa alle serie di potenze: "Come generare una quantità non intera di successi consecutivi di Bernoulli?" Parafraserò la domanda e la risposta del cardinale.

Supponiamo di avere una moneta forse ingiusta che è la testa con probabilità e un numero reale positivo α . Come possiamo costruire un evento la cui probabilità è p α ?pαpα

Se fosse un numero intero positivo, potremmo semplicemente lanciare la moneta α volte e lasciare che l'evento fosse che tutti i lanci erano diretti. Tuttavia, se α non è un intero, dire 1 / 2 , allora questo non ha senso, ma si può usare questa idea per ridurre al caso che 0 < α < 1 . Se vogliamo costruire un evento la cui probabilità è p 3.5 , prendiamo l'intersezione di eventi indipendenti le cui probabilità sono p 3 e p 0,5 .ααα1/20<α<1p3.5p3p0.5

Una cosa che possiamo fare è costruire un evento con qualsiasi probabilità nota . Per fare questo, possiamo costruire un flusso di bit equi ripetutamente lanciando moneta due volte, leggendo H T come 1 e T H come 0 , e ignorando H H e T T . Confrontiamo questo flusso con l'espansione binaria di p = 0. a 1 a 2 a 3 . . . 2p[0,1]HT1TH0HHTTp=0.a1a2a3...2. L'evento in cui il primo disaccordo è dove ha probabilità p . Non conosciamo p α , quindi non possiamo usarlo direttamente, ma sarà uno strumento utile.ai=1ppα

L'idea principale è che vorremmo usare la serie di potenze per dovep=1-q. Possiamo costruire eventi le cui probabilità sonoqnlanciando la monetanvolte e vedendo se sono tutte code, e possiamo produrre un evento con probabilitàpqnconfrontando le cifre binarie dipcon un flusso di bit discreto come sopra e controllando senlanci sono tutti code.pα=(1q)α=1αqα(1α)2q2α(1α)(2α)3!q3...p=1qqnnp'qnp'n

Costruire una variabile casuale geometrica con il parametro p . Questo è il numero di code prima della prima testa in una sequenza infinita di lanci di monete. P ( G = n ) = ( 1 - p ) n p = q n p . (Alcune persone usano una definizione che differisce di 1 ).solpP(sol=n)=(1-p)np=qnp1

Data una sequenza , Possiamo produrre t G : Flip la moneta fino alla prima testa, e se ci sono G code prima della prima testa, prendere l'elemento della sequenza dell'indice G . Se ciascuno t n[ 0 , 1 ] , possiamo confrontare t G con una variabile casuale uniforme in [ 0 , 1 ] (costruita come sopra) per ottenere un evento con probabilità E [ tt0,t1,t2,...tsolsolsoltn[0,1]tsol[0,1] .E[tsol]=ΣntnP(sol=n)=Σntnqnp

Questo è quasi ciò di cui abbiamo bisogno. Vorremmo eliminare quella per usare la serie di potenze per p α in q .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

Considera . Siatnla somma dei coefficienti daqaqn. Quindi1-pα=ntnqnp. Ciascunotn[0,1]poiché i coefficienti sono positivi e si sommano a1-0α=1, quindi possiamo costruire un evento con probabilità1-pα1pα=αq+α(1α)2q2+...tnqqn1pα=ntnqnptn[0,1]10α=11pαconfrontando un flusso di punta giusta con l'espansione binaria di . Il complemento ha probabilità p α come richiesto.tGpα


Ancora una volta, l'argomento è dovuto al cardinale.


1
(+1) Grazie per essere andato nei guai a pubblicare questo. Le differenze nell'esposizione, sebbene relativamente lievi, aiutano a rendere più chiaro l'approccio.
cardinale il

4

La risposta molto completa del cardinale e dei successivi contributi ha ispirato la seguente osservazione / variante.

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

Pr{MN=0}=Σn=1Pr{MN=0|N=n}Pr{N=n}=Σn=1Pr{N=n}qn.
0<un'<1Pr{N=n}=BnPr{MN=0}=1-pun'1-MNBer(pun')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
cardinale

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

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

BnnBn
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.