Como gerar uma quantidade não inteira de sucessos consecutivos em Bernoulli?


18

Dado:

  1. Uma moeda com viés desconhecido p (cabeça).
  2. Um real estritamente positivo a>0 .

Problema:

Gere uma variável aleatória de Bernoulli com viés .pa

Alguém sabe como fazer isso? Por exemplo, quando é um número inteiro positivo, pode-se jogar a moeda vez e ver se todos os resultados foram Heads: se eles emitem '0', caso contrário, emitem '1'. A dificuldade está no fato de que não é necessariamente um número inteiro. Além disso, se eu soubesse o viés , poderia construir outra moeda com o viés desejado. aaap


2
@gung: Eu acho que o que se quer é um algoritmo para gerar uma variável de Bernoulli dada uma moeda.
22413 Neil G

1
Eu acho que o ponto aqui é que, quando a>1 só manter uma média de 1 de cada a cabeças que aparece e quando a<1 , você duplicar cada uma das cabeças de uma média de 1/a vezes.
Macro

3
@ Macro, você poderia expandir a ideia?
Pedro A. Ortega

1
Caro Pedro, (+1) para o seu post, que é o tipo de pergunta que torna o CV muito revigorante e estimulante, pelo menos para mim. Eu poderia perguntar qual é a origem desta pergunta?
cardeal

@ cardinal: Mais uma vez obrigado pela sua resposta! Esse problema faz parte de um amostrador para resolver problemas de controle estocástico em que estou trabalhando. A razão pela qual é desconhecido é porque seria necessário conhecer a constante de normalização (que neste caso é uma função de partição desagradável), mas ainda podemos fazer amostragens usando a amostragem por rejeição. Btw, seria bom citar você pelo nome, não apenas o link para o CV ;-). p
Pedro A. Ortega

Respostas:


19

Podemos resolver isso através de alguns "truques" e um pouco de matemática.

Aqui está o algoritmo básico:

  1. Gere uma variável aleatória geométrica com probabilidade de sucesso .p
  2. O resultado dessa variável aleatória determina um valor conhecido fixo .fn[0,1]
  3. Gere uma variável aleatória usando lançamentos justos de moedas gerados a partir de lançamentos emparelhados em blocos da nossa moeda B e r ( p ) .Ber(fn)Ber(p)
  4. O resultado resultante será para qualquer a ( 0 , 1 ) , que é tudo o que precisamos.Ber(pa)a(0,1)

Para tornar as coisas mais digeríveis, vamos dividir as coisas em pedaços.

Peça 1 : Sem perda de generalidade, assuma que .0<a<1

Se , então podemos escrever p a = p n p b para algum número inteiro positivo n e algum 0 b < 1 . Mas, para quaisquer dois Bernoulli independentes, temos P ( X 1 = X 2 = 1 ) = p 1 p 2a1pa=pnpbn0b<1 Podemos gerar um p n Bernoulli da nossa moeda na maneira óbvia. Portanto, precisamos nos preocupar apenas em gerar B e r ( p a ) quando

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

Peça 2 : Saiba como gerar uma arbitráriapartir de lançamentos justos de moedas.Ber(q)

Existe uma maneira padrão de fazer isso. Expanda em sua expansão binária e, em seguida, use nossos lançamentos justos para "combinar" os dígitos de q . A primeira correspondência determina se declaramos um sucesso ("cara") ou falha ("coroa"). Se q n = 1q=0.q1q2q3qqn=1 e nossa moeda jogar for cara, declare cara, se e nossa moeda jogar for coroa, declare coroa. Caso contrário, considere o dígito subsequente contra um novo lançamento de moeda.qn=0

Peça 3 : Saiba como gerar uma troca de moedas justa com as injustas com viés desconhecido.

Isso é feito, assumindo , lançando a moeda em pares. Se conseguirmos H T , declarar uma cabeça; se conseguirmos T Hp(0,1)HTTH , declarar uma coroa e repetir o experimento até que um dos dois resultados mencionados ocorra. Eles são igualmente prováveis, então deve ter probabilidade .1/2

Peça 4 : Um pouco de matemática. (Taylor para o resgate.)

Ao expandir torno de p 0 = 1 , o teorema de Taylor afirma que p a = 1 - a ( 1 - p ) - a (h(p)=pap0=1 Note-se que porque 0 < um < 1 , cada prazo após o primeiro énegativa, de modo que temos p um = 1 - Σ n = 1 b n ( 1 - P ) n

pa=1a(1p)a(1a)2!(1p)2a(1a)(2a)3!(1p)3.
0<a<1 onde 0 b n1 são conhecidosa priori. Portanto onde,epara.
pa=1n=1bn(1p)n,
0bn1L ~ L um e o m ( P
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=1nbkn1

E já sabemos como usar nossa moeda para gerar uma variável aleatória geométrica com probabilidade de sucesso .p

Peça 5 : Um truque de Monte Carlo.

Seja uma variável aleatória discreta, levando valores em com . Deixe . Então [ 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.

Mas, considerando e , vemos agora como gerar uma variável aleatória e isso é equivalente a gerar uma um.x n = f n B e r ( 1 - p a ) B e r ( p a )pn=p(1p)nxn=fnBer(1pa)Ber(pa)


Como posso citar você (ou sua solução)?
Pedro A. Ortega

2
@ Pedro: Suponho que você pode clicar no link "compartilhar" na parte inferior desta resposta. Deve ser um link estável. O Math.SE possui um mecanismo de citação , que não parece estar ativado neste site, mas você pode adaptá-lo.
cardeal

1
Agora, esta é uma resposta brilhante!
Zen

1
Eu escrevi isso no fórum de discussão geral da classe Coursera sobre Analytic Combinatorics, já que esse era um bom uso de séries de poder relacionadas a alguns dos materiais abordados lá. class.coursera.org/introACpartI-001/forum/thread?thread_id=108
Douglas Zare

@ Douglas: Obrigado! Existe uma versão publicamente visível desse segmento ou eu precisaria me inscrever no curso para vê-lo? Pedro e eu discutimos (via e-mail) possíveis caminhos para incluir essa abordagem em algumas de suas pesquisas.
cardeal

6

A resposta a seguir é boba?

Se são independentes B e r ( p ) e Y n tem distribuição B e r ( ( n i = 1 X i / n ) a ) , então Y n será distribuído aproximadamente como B e r ( p a ) , quando n .X1,,XnBer(p)YnBer((i=1nXi/n)a)YnBer(pa)n

Portanto, se você não conhece , mas pode jogá-la várias vezes, é possível obter amostras (aproximadamente) de um B e r ( p a )pBer(pa) variável aleatória .

Exemplo RCódigo de :

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
Gosto dessa resposta, mas suspeito que ela não entenda a questão, que interpretei como pedindo um algoritmo que gera a partir da distribuição solicitada sem conhecer (ou informações empíricas sobre p ). Mas, o problema faz pressuposto de que você pode gerar B e r n o u l l i ( p ) variáveis aleatórias, então isso é uma resposta perfeitamente razoável e não é boba em tudo! +1ppBernoulli(p)
Macro

1
+1: eu gosto. Eu suponho que você quer dizer que é distribuído ...? Yn
Neil G

Muito melhor! Tks, @Neil G!
Zen

1
Isso é engraçado (+1), mas podemos fazer exatamente em um número quase certamente finito de movimentos (e, em média, esse número será relativamente pequeno).
cardeal

5

Publiquei a seguinte exposição desta pergunta e a resposta do cardeal no fórum de Discussão Geral da atual classe Analytic Combinatorics no Coursera, "Aplicação de séries de poder à construção de uma variável aleatória". Estou publicando uma cópia aqui como wiki da comunidade para disponibilizá-la publicamente e de forma mais permanente.


Havia uma pergunta e resposta interessantes no stat.stackexchange.com relacionadas a séries de potência: "Como gerar uma quantidade não inteira de sucessos consecutivos em Bernoulli?" Parafraseando a pergunta e a resposta do cardeal.

Suponha que tenhamos uma moeda possivelmente injusta que seja cara com probabilidade e um número real positivo α . Como podemos construir um evento cuja probabilidade é p αpαpα ?

Se fosse um número inteiro positivo, poderíamos simplesmente jogar a moeda α vezes e permitir que o evento fosse que todos os lançamentos fossem cara. No entanto, se α não é um inteiro, digamos 1 / 2 , então isso não faz sentido, mas podemos usar essa idéia para reduzir ao caso em que 0 < α < 1 . Se queremos construir um evento cuja probabilidade é p 3,5 , tomamos a intersecção de eventos independentes, cujas probabilidades são p 3 e p 0,5 .ααα1/20<α<1p3.5p3p0.5

Uma coisa que podemos fazer é construir um evento com qualquer probabilidade conhecida . Para fazer isso, podemos construir um fluxo de bits justas lançando repetidamente a moeda duas vezes, lendo H T como 1 e T H como 0 , e ignorando H H e T T . Comparamos esse fluxo com a expansão binária de p = 0. a 1 a 2 a 3 . . . 2p[0,1]HT1TH0HHTTp=0.a1a2a3...2. O evento em que o primeiro desacordo é onde tem probabilidade p ' . Como não conhecemos p α , não podemos usá-lo diretamente, mas será uma ferramenta útil.ai=1ppα

A idéia principal é que gostaríamos de usar a série de potências para ondep=1-q. Podemos construir eventos cujas probabilidades sãoqnlançando a moedanvezes e ver se são todas caudas, e podemos produzir um evento com probabilidadepqncomparando os dígitos binários depcom um fluxo de bits razoável, como acima e verificando senpα=(1q)α=1αqα(1α)2q2α(1α)(2α)3!q3...p=1qqnnpqnpn arremessos são todos caudas.

Construa uma variável aleatória geométrica com o parâmetro p . Este é o número de caudas antes da primeira cabeça em uma sequência infinita de lançamentos de moedas. P ( G = n ) = ( 1 - p ) n p = q n p . (Algumas pessoas usam uma definição que difere de 1GpP(G=n)=(1p)np=qnp1 )

Dada uma sequência , Podemos produzir t G : Inverter a moeda até à primeira cabeça, e se houver G caudas antes da primeira cabeça, levar o elemento da sequência de índice G . Se cada t n[ 0 , 1 ] , podemos comparar t G com uma variável aleatória uniforme em [ 0 , 1 ] (construída como acima) para obter um evento com probabilidade E [ tt0,t1,t2,...tGGGtn[0,1]tG[0,1]E[tG]=ntnP(G=n)=ntnqnp .

Isso é quase o que precisamos. Gostaríamos de eliminar esse para usar a série de potências para p α em 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

Considere . Sejatna soma dos coeficientes deqaqn. Em seguida,1-pα=ΣntnQnp. Cadatn[0,1],uma vez que os coeficientes são positivos e somam1-0α=1, para que possamos construir um evento com probabilidade1-pα1pα=αq+α(1α)2q2+...tnqqn1pα=ntnqnptn[0,1]10α=11pαcomparando um fluxo justo pouco com a expansão binária de . O complemento tem probabilidade p αtGpα conforme necessário.


Novamente, o argumento é devido ao cardeal.


1
(+1) Obrigado por se dar ao trabalho de postar isso. As diferenças na exposição, embora relativamente pequenas, ajudam a tornar a abordagem mais clara.
cardeal

4

A resposta muito completa de das contribuições cardinais e subsequentes inspirou a seguinte observação / variante.

Deixe PZ repousar "Probabilidade de Zero" . Se X n é uma sequência iid Bernoulli com PZ q , então M n : = max ( X 1 ,q:=1pXnq é um Bernoulli rv com PZ q n . Agora fazendo n ou seja aleatório, substituindo-o por um RV inteiro N 1 leva a Bernoulli rv H N com P r { M N = 0 } = Σ n = 1 P r { M N = 0Mn:=max(X1,X2,,Xn)qnnN1MN Portanto, se 0 < a < 1 e se considerarmos P r { N = n } = b n darespostado cardeal, encontramos P r { M N = 0 } = 1 - p a e 1 - M N é B e r ( p a ) como desejado. Isso é realmente possível, uma vez que os coeficientes b n

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)bnsatisfaça e eles somam 1 .bn01

A distribuição discreta de depende apenas de a com 0 < a < 1 , lembre-se P r { N = n } = aNa0<a<1 Tem características interessantes. Acontece que ele tem uma expectativa infinita e um comportamento pesado na cauda n

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

Embora seja o máximo de N rvs, sua determinação precisa de um número de X k que é N, pois o resultado é conhecido assim que um X k é 1 . O número de X k calculado é geometricamente distribuído.MNNXkNXk1Xk


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

bnqnBer(p)N
cardeal

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

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

bnnbn
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.