¿Cómo generar una cantidad no entera de éxitos consecutivos de Bernoulli?


18

Dado:

  1. Una moneda con sesgo desconocido (Cabeza).p
  2. Un real estrictamente positivo .a>0

Problema:

Genere una variante aleatoria de Bernoulli con sesgo .pa

¿Alguien sabe como hacer esto? Por ejemplo, cuando es un número entero positivo, uno puede voltear la moneda vez y ver si todos los resultados fueron Cargos: si son emitidos '0', de lo contrario emiten '1'. La dificultad radica en el hecho de que no es necesariamente un número entero. Además, si supiera el sesgo , podría construir otra moneda con el sesgo deseado. aaap


2
@gung: Creo que lo que se quiere es un algoritmo para generar una variante de Bernoulli dada una moneda.
Neil G

1
Creo que el punto aquí es que, cuando a>1 sólo se mantiene un promedio de 1 de cada a cabezas que aparece y cuando a<1 , se duplica cada una de las cabezas de un promedio de 1/a veces.
Macro

3
@Macro, ¿podría ampliar la idea?
Pedro A. Ortega

1
Estimado Pedro, (+1) por su publicación, que es el tipo de pregunta que hace que el CV sea muy estimulante y estimulante, al menos para mí. ¿Puedo preguntar cuál es el origen de esta pregunta?
Cardenal

@cardinal: ¡Gracias de nuevo por tu respuesta! Este problema es parte de una muestra para resolver problemas de control estocástico en los que estoy trabajando. La razón por la cual se desconoce p es porque requeriría conocer la constante de normalización (que en este caso es una función de partición desagradable), pero aún podemos tomar muestras de ella utilizando el muestreo de rechazo. Por cierto, sería bueno citarlo por su nombre, no solo el enlace a CV ;-).
Pedro A. Ortega

Respuestas:


19

Podemos resolver esto mediante un par de "trucos" y un poco de matemática.

Aquí está el algoritmo básico:

  1. Generar una variable aleatoria geométrica con probabilidad de éxito p .
  2. El resultado de esta variable aleatoria determina un valor conocido fijo fn[0,1] .
  3. Genere una variable aleatoria Ber(fn) utilizando lanzamientos de moneda justos generados a partir de lanzamientos emparejados en bloque de nuestra moneda Ber(p) .
  4. El resultado resultante será Ber(pa) para cualquier a(0,1) , que es todo lo que necesitamos.

Para hacer las cosas más digeribles, las dividiremos en pedazos.

Pieza 1 : Sin pérdida de generalidad, suponga que 0<a<1 .

Si , entonces, podemos escribir p a = p n p b para algún número entero positivo n y algunos 0 b < 1 . Pero, para cualesquiera dos Bernoulli independientes, tenemos P ( X 1 = X 2 = 1 ) = p 1 p 2a1pa=pnpbn0b<1

P(X1=X2=1)=p1p2.
Podemos generar unpn Bernoulli de nuestra moneda de la manera obvia. Por lo tanto, solo debemos preocuparnos por generarBer(pa) cuandoa(0,1) .

Pieza 2 : saber cómo generar un arbitraria Ber(q) de la moneda al aire voltea.

Hay una forma estándar de hacer esto. Expande q=0.q1q2q3 en su expansión binaria y luego usa nuestros lanzamientos de monedas para "igualar" los dígitos de q . La primera coincidencia determina si declaramos un éxito ("cara") o un fracaso ("cruz"). Si qn=1 y nuestro lanzamiento de moneda es cara, declare cara, si qn=0 y nuestro lanzamiento de moneda es cruz, declare cruz. De lo contrario, considere el dígito posterior contra un nuevo lanzamiento de moneda.

Pieza 3 : Sepa cómo generar un lanzamiento de moneda justo a partir de los injustos con sesgo desconocido.

Esto se hace, suponiendo p(0,1) , volteando la moneda en pares. Si obtenemos HT , declare un cara; si obtenemos TH , declaramos una cola y, de lo contrario, repite el experimento hasta que ocurra uno de los dos resultados antes mencionados. Ellos son igualmente probables, así que deben tener probabilidad 1/2 .

Pieza 4 : Algunas matemáticas. (Taylor al rescate).

Al expandir alrededor de p 0 = 1 , el teorema de Taylor afirma que p a = 1 - a ( 1 - p ) - a ( 1 - a )h(p)=pap0=1 Tenga en cuenta que debido a que 0 < a < 1 , cada término después del primero esnegativo, por lo que tenemos 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<1 donde 0 b n1 se conocena priori. Por lo tanto, 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
pa=1n=1bn(1p)n,
0bn1 donde G ~ G e o m ( p ) , f 0 = 0 y f n = Σ n k = 1 b k para n 1 .
1pa=n=1bn(1p)n=n=1bnP(Gn)=n=1fnP(G=n)=Ef(G),
GGeom(p)f0=0fn=k=1nbkn1

Y, ya sabemos cómo usar nuestra moneda para generar una variable aleatoria geométrica con probabilidad de éxito .p

Pieza 5 : Un truco de Monte Carlo.

Sea una variable aleatoria discreta que toma valores en [ 0 , 1 ] con P ( X = x n ) = p n . Deje U X B e r ( X ) . Entonces P ( U = 1 ) = n x n p n .X[0,1]P(X=xn)=pnUXBer(X)

P(U=1)=nxnpn.

Pero, tomando y x n = f n , ahora vemos cómo generar una variable aleatoria B e r ( 1 - p a ) y esto es equivalente a generar una B e r ( p a ) uno.pn=p(1p)nxn=fnBer(1pa)Ber(pa)


¿Cómo puedo citarte (o tu solución)?
Pedro A. Ortega

2
@Pedro: supongo que puede hacer clic en el enlace "compartir" al final de esta respuesta. Debería ser un enlace estable. Math.SE tiene un mecanismo de citas , que no parece estar habilitado en este sitio, pero es posible que pueda adaptarlo.
cardenal

1
Ahora, esta es una respuesta brillante!
Zen

1
Escribí esto en el foro de debate general de la clase Coursera sobre analítica combinatoria, ya que este fue un buen uso de las series de potencia relacionadas con algunos de los materiales cubiertos allí. class.coursera.org/introACpartI-001/forum/thread?thread_id=108
Douglas Zare

@ Douglas: ¡Gracias! ¿Existe una versión pública de ese hilo o tendría que inscribirme en el curso para verlo? Pedro y yo hemos estado discutiendo (por correo electrónico) posibles vías para incluir este enfoque en algunas de sus investigaciones.
cardenal

6

¿Es tonta la siguiente respuesta?

Si son independientes B e r ( p ) e Y n tiene distribución B e r ( ( n i = 1 X i / n ) a ) , entonces Y n se distribuirá aproximadamente como B e r ( p a ) , cuando n .X1,,XnBer(p)YnBer((i=1nXi/n)a)YnBer(pa)n

Por lo tanto, si no conoce , pero puede lanzar esta moneda muchas veces, es posible tomar muestras (aproximadamente) de una variable aleatoria B e r ( p a ) .pBer(pa)

RCódigo de ejemplo :

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

Resultados:

p^a = 0.01234568 
est = 0.012291 

2
Me gusta esta respuesta, pero sospecho que pierde el punto de la pregunta, que interpreté como pedir un algoritmo que genera a partir de la distribución solicitada sin conocer (o información empírica sobre p ). Pero, el problema presupone que puede generar variables aleatorias B e r n o u l l i ( p ) , por lo que esta es una respuesta perfectamente razonable y no es tonta en absoluto. +1ppBernoulli(p)
Macro

1
+1: me gusta Supongo que te refieres se distribuye ...? Yn
Neil G

¡Mucho mejor! Tks, @Neil G!
Zen

1
Esto es lindo (+1), pero podemos hacerlo exactamente en un número casi seguro de cambios (y, en promedio, ese número será relativamente pequeño).
cardenal

5

Publiqué la siguiente exposición de esta pregunta y la respuesta del cardenal en el foro de discusión general de la clase actual de Combinatoria analítica en Coursera, "Aplicación de series de potencia para construir una variable aleatoria". Estoy publicando una copia aquí como wiki de la comunidad para que esté disponible públicamente y de forma más permanente.


Hubo una pregunta y respuesta interesantes en stat.stackexchange.com relacionadas con las series de potencia: "¿Cómo generar una cantidad no entera de éxitos consecutivos de Bernoulli?" Parafrasearé la pregunta y la respuesta del cardenal.

Supongamos que tenemos una moneda posiblemente injusta que es cara con probabilidad , y un número real positivo α . ¿Cómo podemos construir un evento cuya probabilidad es p α ?pαpα

Si fuera un entero positivo, podríamos lanzar la moneda α veces y dejar que el evento sea que todos los lanzamientos fueron caras. Sin embargo, si α no es un entero, por ejemplo 1 / 2 , entonces esto no tiene sentido, pero podemos utilizar esta idea para reducir al caso de que 0 < α < 1 . Si queremos construir un evento cuya probabilidad sea p 3.5 , tomamos la intersección de eventos independientes cuyas probabilidades son p 3 y p 0.5 .ααα1/20<α<1p3.5p3p0.5

Una cosa que podemos hacer es construir un evento con cualquier probabilidad conocida . Para hacer esto, podemos construir una corriente de bits justas por voltear repetidamente la moneda dos veces, la lectura H T como 1 y T H como 0 , y haciendo caso omiso H H y T T . Comparamos esta secuencia con la expansión binaria de p = 0. a 1 a 2 a 3 . . . 2p[0,1]HT1TH0HHTTp=0.a1a2a3...2. El evento de que el primer desacuerdo es donde tiene probabilidad p ' . No sabemos p α , por lo que no podemos usar esto directamente, pero será una herramienta útil.ai=1ppα

La idea principal es que nos gustaría utilizar la serie de potencias para dondep=1-q. Podemos construir eventos cuyas probabilidades sonqnvolteando la monedanveces y ver si son todas colas, y podemos producir un evento con probabilidadpqncomparando los dígitos binarios depcon un flujo de bits justo como el anterior y verificar sinlanzamientos son todos colas.pα=(1q)α=1αqα(1α)2q2α(1α)(2α)3!q3...p=1qqnnpqnpn

Construya una variable aleatoria geométrica con el parámetro p . Este es el número de colas antes de la primera cabeza en una secuencia infinita de lanzamientos de monedas. P ( G = n ) = ( 1 - p ) n p = q n p . (Algunas personas usan una definición que difiere en 1 ).GpP(G=n)=(1p)np=qnp1

Dada una secuencia , Podemos producir t G : voltear la moneda hasta que la primera cabeza, y si hay G colas antes de la primera cabeza, tomar el elemento de la secuencia de índice G . Si cada t n[ 0 , 1 ] , podemos comparar t G con una variable aleatoria uniforme en [ 0 , 1 ] (construida como anteriormente) para obtener un evento con probabilidad E [ tt0,t1,t2,...tGGGtn[0,1]tG[0,1] .E[tG]=ntnP(G=n)=ntnqnp

Esto es casi lo que necesitamos. Nos gustaría eliminar esa para usar la serie de potencias para p α en 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

Consider 1pα=αq+α(1α)2q2+.... Let tn be the sum of the coefficients of q through qn. Then 1pα=ntnqnp. Each tn[0,1] since the coefficients are positive and sum to 10α=1, so we can construct an event with probability 1pα by comparing a fair bit stream with the binary expansion of tG. The complement has probability pα as required.


Again, the argument is due to cardinal.


1
(+1) Thanks for going to the trouble to post this. The differences in exposition, while relatively slight, help make the approach more clear.
cardinal

4

The very complete answer by cardinal and subsequent contributions inspired the following remark/variant.

Let PZ stand "Probability of Zero" and q:=1p. If Xn is an iid Bernoulli sequence with PZ q, then Mn:=max(X1,X2,,Xn) is a Bernoulli r.v. with PZ qn. Now making n random i.e., replacing it by an integer rv N1 leads to Bernoulli rv MN with

Pr{MN=0}=n=1Pr{MN=0|N=n}Pr{N=n}=n=1Pr{N=n}qn.
So if 0<a<1 and if we take Pr{N=n}=bn from cardinal's answer, we find Pr{MN=0}=1pa and 1MN is Ber(pa) as wanted. This is indeed possible since the coefficients bn satisfy bn0 and they sum to 1.

The discrete distribution of N depends only on a with 0<a<1, recall

Pr{N=n}=ank=1n1(1a/k)(n1).
It has interesting features. It turns out to have an infinite expectation and an heavy tail behaviour nbnc/na with c=1/Γ(a)>0.

Though MN is the maximum of N rvs, its determination needs a number of Xk which is N since the result is known as soon as one Xk is 1. The number of computed Xk is geometrically distributed.


A related idea would be to make the rvs Xk dependent with extremal index θ (0<θ<1), meaning that Mn has PZ qnθ rather than qn. Taking nθ=a would do the job for any a>0. Given a sequence of iid rv.s Xn following a standard Frechet, there are known methods to generate a dependent sequence Xn with standard Frechet margin and the prescribed extremal index θ. However, what happens if we replace standard Frechet'' by Bernoulli''?
Yves

(+1) Very nice, @Yves. A few remarks: (1) The first part can be viewed as the complement of the approach I've taken. In fact, when I first got the series in bnqn, while I immediately saw the connection to the geometric, I first tried something more direct and didn't come up with a natural way to do it. Your answer solves that problem. (2) Your approach can also be implemented using only a Ber(p) coin. In particular, N can be generated by descending down a full binary tree based on fair coin flips, where the left nodes are leaves and the decision is made by (...)
cardinal

(...) comparing the number in (0,1) constructed from the (partial) sequence of coin flips to the partial sums fn=i=1nbi. The termination depth gives N. (3) I believe that nbncn(1+a), which will change your conclusion regarding the finiteness of the mean. (4) In both your approach and mine, it seems we cannot escape computing fn=i=1nbi, even if we allow for uniform random variates in addition to our Ber(p) coin for the purposes of sampling. Finding a way to avoid that would seem to be the most obvious way to improve efficiency.
cardinal

1
Thank you @cardinal. I agree with all your comments except perhaps (3). I actually made an error since c is 1/Γ(a) (edited), but the exponent of n seems the right one. I used the representation of Γ(z) as found e.g. on Wikipedia page on infinite product and took z:=a which gives an equivalent for the product k=1n1. I would be more confident if you could check this.
Yves

Dear @Yves, (+1) You are correct about the constant and about (3). My apologies. Somehow, when I went to transcribe things to paper, I ended up focusing on the asymptotics of bn instead of nbn. :-)
cardinal
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.