Se entendi corretamente, o problema é encontrar uma distribuição de probabilidade para o tempo em que a primeira execução de ou mais cabeças termina.n
Editar As probabilidades podem ser determinadas com precisão e rapidez usando a multiplicação de matrizes, e também é possível calcular analiticamente a média como e a variação como onde , mas provavelmente não existe uma forma fechada simples para a própria distribuição. Acima de um certo número de lançamentos de moedas, a distribuição é essencialmente uma distribuição geométrica: faria sentido usar essa forma para maiores .σ 2 = 2 n + 2 ( μ - n - 3 ) - μ 2 + 5 μ μ = μ - + 1 tμ-= 2n + 1- 1σ2= 2n + 2( μ - n - 3 ) - μ2+ 5 μμ = μ-+ 1t
A evolução no tempo da distribuição de probabilidade no espaço de estados pode ser modelada usando uma matriz de transição para estados, em que o número de lançamentos consecutivos de moedas. Os estados são os seguintes:n =k = n + 2n =
- Estado , sem cabeçasH0 0
- Estado , chefes, i 1 ≤ i ≤ ( n - 1 )HEuEu1 ≤ i ≤ ( n - 1 )
- Estado , ou mais chefes nHnn
- Estado , ou mais cabeças seguidas de uma cauda nH∗n
Depois de entrar no estado você não pode voltar para nenhum dos outros estados.H∗
As probabilidades de transição de estado para entrar nos estados são as seguintes
- Estado : probabilidade de , , ou seja, incluindo-se, mas não declarar1H0 0 Hii=0,…,n-1Hn1 12HEui = 0 , … , n - 1Hn
- Estado : probabilidade de1HEu Hi-11 12Hi - 1
- Estado : probabilidade de , ou seja, do estado com cabeças e ele próprio1Hn Hn-1,Hnn-11 12Hn - 1, Hnn - 1
- Estado : probabilidade de e probabilidade 1 de (em si)1H∗ HnH∗1 12HnH∗
Por exemplo, para , isso fornece a matriz de transiçãon = 4
X= ⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪H0 0H1 1H2H3H4H∗H0 01 121 120 00 00 00 0H1 11 120 01 120 00 00 0H21 120 00 01 120 00 0H31 120 00 00 01 120 0H40 00 00 00 01 121 12H∗0 00 00 00 00 01 1⎫⎭⎬⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪
Para o caso , o vetor inicial de probabilidades é . Em geral, o vetor inicial possui
p p = ( 1 , 0 , 0 , 0 , 0 , 0 ) p i = { 1 i = 0 0 i > 0n = 4pp =(1,0,0,0,0,0)
pEu= { 10 0i = 0i > 0
O vetor é a distribuição de probabilidade no espaço por um determinado momento. O cdf necessário é um cdf no tempo e é a probabilidade de ter visto pelo menos lançamentos de moedas terminar no tempo . Ele pode ser escrito como , observando que atingimos o estado 1 timestep após o último na sequência de lançamentos consecutivos de moedas. n t ( X t + 1 p ) k H ∗pnt( Xt + 1p )kH∗
O pmf necessário no tempo pode ser escrito como . No entanto, numericamente, isso envolve retirar um número muito pequeno de um número muito maior ( ) e restringe a precisão. Portanto, nos cálculos, é melhor definir vez de 1. Depois, escrever para a matriz resultante , o pmf é . É isso que é implementado no programa R simples abaixo, que funciona para qualquer , ≈ 1 X k , k = 0 X ′ X ′ = X | X k , k = 0 ( X ′ t + 1 p ) k n ≥ 2( Xt + 1p )k- ( Xtp )k≈ 1Xk , k= 0X′X′= X| Xk , k= 0( X′ T + 1p )kn ≥ 2
n=4
k=n+2
X=matrix(c(rep(1,n),0,0, # first row
rep(c(1,rep(0,k)),n-2), # to half-way thru penultimate row
1,rep(0,k),1,1,rep(0,k-1),1,0), # replace 0 by 2 for cdf
byrow=T,nrow=k)/2
X
t=10000
pt=rep(0,t) # probability at time t
pv=c(1,rep(0,k-1)) # probability vector
for(i in 1:(t+1)) {
#pvk=pv[k]; # if calculating via cdf
pv = X %*% pv;
#pt[i-1]=pv[k]-pvk # if calculating via cdf
pt[i-1]=pv[k] # if calculating pmf
}
m=sum((1:t)*pt)
v=sum((1:t)^2*pt)-m^2
c(m, v)
par(mfrow=c(3,1))
plot(pt[1:100],type="l")
plot(pt[10:110],type="l")
plot(pt[1010:1110],type="l")
O gráfico superior mostra o pmf entre 0 e 100. Os dois gráficos inferiores mostram o pmf entre 10 e 110 e também entre 1010 e 1110, ilustrando a auto-similaridade e o fato de que, como diz @Glen_b, a distribuição parece ser possível. aproximada por uma distribuição geométrica após um período de estabilização.
É possível investigar este comportamento ainda mais usando uma decomposição autovetor de . Fazer isso mostra que para suficientemente grande , , onde é a solução da equação . Essa aproximação melhora com o aumento de e é excelente para na faixa de 30 a 50, dependendo do valor de , conforme mostrado no gráfico de erro de log abaixo para calcular (cores do arco-íris, vermelho no resta parat p t + 1 ≈ c ( n ) p t c ( n ) 2 n + 1 c n ( c - 1 ) + 1 = 0 n t n p 100 n = 2 tXtpt + 1≈ c ( n ) ptc ( n )2n + 1cn( c - 1 ) + 1 = 0ntnp100n = 2) (De fato, por razões numéricas, seria realmente melhor usar a aproximação geométrica para probabilidades quando for maior.)t
Suspeito (ed) que possa haver um formulário fechado disponível para a distribuição, porque os meios e as variações calculados da seguinte forma
n2345678910Significar7153163.12725551110232047Variação241447363392147206169625344010291204151296
(Eu tive que aumentar o número no horizonte de tempo t=100000
para conseguir isso, mas o programa ainda funcionava para todos os em menos de 10 segundos.) Os meios em particular seguem um padrão muito óbvio; as variações menos. Eu resolvi um sistema de transição de três estados mais simples no passado, mas até agora não estou tendo sorte com uma solução analítica simples para esse. Talvez exista alguma teoria útil que eu não conheça, por exemplo, relativa a matrizes de transição.n = 2 , … , 10
Edit : depois de muitas partidas falsas, criei uma fórmula de recorrência. Seja a probabilidade de estar no estado no tempo . Seja a probabilidade cumulativa de estar no estado , ou seja, o estado final, no tempo . NB H i t q ∗ , t H ∗ tpi , tHEutq∗ , tH∗t
- Para qualquer dado , e são uma distribuição de probabilidade no espaço , e imediatamente abaixo eu uso o fato de que suas probabilidades são adicionadas a 1.p i , t , 0 ≤ i ≤ n q ∗ , t itpi , t, 0 ≤ i ≤ nq∗ , tEu
- tp∗ , t formam uma distribuição de probabilidade ao longo do tempo . Mais tarde, uso esse fato para derivar os meios e as variações.t
A probabilidade de estar no primeiro estado no tempo , ou seja, sem cabeças, é dada pelas probabilidades de transição de estados que podem retornar a ele a partir do tempo (usando o teorema da probabilidade total).
Mas para ir do estado a executa etapas, portanto e
Mais uma vez pelo teorema da probabilidade total, a probabilidade de estar no estadot p 0 , t + 1t + 1tH0Hn-1n-1pn-1,t+n-1=1
p0 , t + 1=12p0 , t+12p1 , t+ … 12pn - 1 , t=12∑i = 0n - 1pi , t=12( 1 -pn , t- q∗ , t)
H0 0Hn - 1n - 1pn-1,t+n=1pn - 1 , t + n - 1= 12n - 1p0 , tHnt+1 p n , t + 1pn - 1 , t + n= 12n( 1 - pn , t- q∗ , t)
Hnno momento é
e usando o fato de ,
Portanto, alterando ,
t + 1 q∗,t+1-q∗,t=1pn , t + 1=12pn , t+12pn - 1 , t=12pn , t+ 12n + 1( 1 - pn , t - n- q∗ , t - n)( † )
2 q * , t + 2 - 2 Q * , t + 1q∗ , t + 1- q∗ , t=12pn , t⟹pn , t= 2 q∗ , t + 1- 2 q∗ , t2 q∗ , t + 2- 2 q∗ , t + 1= q∗ , t + 1- q∗ , t+ 12n + 1( 1 - 2 q∗ , t - n + 1+ q∗ , t - n)
t → t + n2 q∗ , t + n + 2- 3 q∗ , t + n + 1+ q∗ , t + n+ 12nq∗ , t + 1- 12n + 1q∗ , t- 12n+ 1=0
Esta fórmula de recorrência controlos fora para os casos e . Por exemplo, para um gráfico desta fórmula usando fornece precisão da ordem da máquina.n =4n = 6n = 6t=1:994;v=2*q[t+8]-3*q[t+7]+q[t+6]+q[t+1]/2**6-q[t]/2**7-1/2**7
Editar Não consigo ver para onde ir para encontrar um formulário fechado dessa relação de recorrência. No entanto, é possível obter um formulário fechado para a média.
Começando com e observando que ,
Tomando somas de a e aplicando a fórmula para a média e observando que é uma distribuição de probabilidade dá
( † )p∗, t + 1=12pn , t t=0
pn , t + 12n + 1( 2p∗ , t + n + 2-p∗ , t + n + 1) +2 p∗ , t + 1=12pn , t+ 12n + 1( 1 - pn , t - n- q∗ , t - n)( † )= 1 - q∗ , t
t = 0∞E[ X] = ∑∞x = 0( 1 - F( x ) )p∗ , t2n + 1∑t = 0∞( 2 p∗ , t + n + 2- p∗ , t + n + 1) +2 ∑t = 0∞p∗ , t + 12n + 1( 2 ( 1 - 12n + 1) -1 1) +22n + 1= ∑t = 0∞( 1 - q∗ , t)= μ= μ
É a média para atingir o estado ; a média para o final da corrida é um a menos que isso.
H∗
Editar Uma abordagem semelhante usando a fórmuladesta pergunta produz a variação.
E[ X2] = ∑∞x = 0( 2 x + 1 ) ( 1 - F( x ) )
∑t = 0∞( 2 t + 1 ) ( 2n + 1( 2 p∗ , t + n + 2- p∗ , t + n + 1) +2 p∗ , t + 1)2 ∑t = 0∞t ( 2n + 1( 2 p∗ , t + n + 2- p∗ , t + n + 1) +2 p∗ , t + 1) +μ2n + 2( 2 ( μ - ( n + 2 ) + 1)2n + 1) -(μ-(n+1)) ) +4(μ-1)+ μ2n + 2( 2 ( μ - ( n + 2 ) ) - ( μ - ( n + 1 ) ) ) + 5 μ2n + 2( μ - n - 3 ) + 5 μ2n + 2( μ - n - 3 ) - μ2+ 5 μ= ∑t = 0∞( 2 t + 1 ) ( 1 - q∗ , t)= σ2+ μ2= σ2+ μ2= σ2+ μ2= σ2+ μ2= σ2
Os meios e variações podem ser facilmente gerados programaticamente. Por exemplo, para verificar os meios e variações da tabela acima, use
n=2:10
m=c(0,2**(n+1))
v=2**(n+2)*(m[n]-n-3) + 5*m[n] - m[n]^2
Finalmente, não tenho certeza do que você queria quando escreveu
quando um rabo bate e quebra a sequência de cabeças, a contagem recomeça a partir do próximo giro.
Se você quis dizer qual é a distribuição de probabilidade para a próxima vez em que a primeira execução de ou mais cabeças termina, o ponto crucial está contido neste comentário por @Glen_b , que é que o processo recomeça após uma cauda (cf. problema inicial em que você pode obter uma quantidade de ou mais cabeças imediatamente).nn
Isso significa que, por exemplo, o tempo médio para o primeiro evento é , mas o tempo médio entre os eventos é sempre (a variação é a mesma). Também é possível usar uma matriz de transição para investigar as probabilidades de longo prazo de estar em um estado depois que o sistema "se acalmou". Para obter a matriz de transição apropriada, defina e para que o sistema retorne imediatamente ao estado partir do estado . Então, o primeiro vetor próprio em escala desta nova matriz fornece as probabilidades estacionárias . Com essas probabilidades estacionárias sãoμ - 1μ + 1Xk , k ,= 0X1 , k= 1H0 0H∗n = 4
H∗=1/0,03030303=33=μ+1
H0 0H1 1H2H3H4H∗probabilidade0.484848480.242424240.121212120,060606060,060606060,03030303
O tempo esperado entre estados é dado pelo inverso da probabilidade. Portanto, o tempo esperado entre as visitas a .
H∗= 1 / 0,03030303 = 33 = μ + 1
Apêndice : Programa Python usado para gerar probabilidades exatas para n
= número de N
lançamentos consecutivos .
import itertools, pylab
def countinlist(n, N):
count = [0] * N
sub = 'h'*n+'t'
for string in itertools.imap(''.join, itertools.product('ht', repeat=N+1)):
f = string.find(sub)
if (f>=0):
f = f + n -1 # don't count t, and index in count from zero
count[f] = count[f] +1
# uncomment the following line to print all matches
# print "found at", f+1, "in", string
return count, 1/float((2**(N+1)))
n = 4
N = 24
counts, probperevent = countinlist(n,N)
probs = [count*probperevent for count in counts]
for i in range(N):
print '{0:2d} {1:.10f}'.format(i+1,probs[i])
pylab.title('Probabilities of getting {0} consecutive heads in {1} tosses'.format(n, N))
pylab.xlabel('toss')
pylab.ylabel('probability')
pylab.plot(range(1,(N+1)), probs, 'o')
pylab.show()