Se ho capito bene, allora il problema è trovare una distribuzione di probabilità per il momento in cui termina la prima serie di o più teste.n
Modifica Le probabilità possono essere determinate in modo accurato e rapido utilizzando la moltiplicazione matriciale ed è anche possibile calcolare analiticamente la media come e la varianza come σ 2 = 2 n + 2 ( μ - n - 3 ) - μ 2 + 5 μ dove μ = μ - + 1μ−=2n+1−1σ2=2n+2(μ−n−3)−μ2+5μμ=μ−+1, ma probabilmente non esiste un semplice modulo chiuso per la distribuzione stessa. Al di sopra di un certo numero di lanci di monete la distribuzione è essenzialmente una distribuzione geometrica: avrebbe senso usare questa forma per più grandi .t
L'evoluzione nel tempo della distribuzione di probabilità nello spazio degli stati può essere modellata usando una matrice di transizione per stati, dove n = il numero di lanci di monete consecutivi. Gli stati sono i seguenti:k=n+2n=
- Stato , nessuna testaH0
- Stato , i capi, 1 ≤ i ≤ ( n - 1 )Hii1≤i≤(n−1)
- Stato , n o più capiHnn
- Stato , n o più teste seguite da una codaH∗n
Una volta entrato nello stato non puoi tornare in nessuno degli altri stati.H∗
Le probabilità di transizione dello stato per entrare negli stati sono le seguenti
- Stato : probabilità 1H0 daHi,i=0,…,n-1, cioè includendo se stesso ma non dichiarandoHn12Hii=0,…,n−1Hn
- Stato : probabilità 1Hio daHi-112Hi - 1
- Stato : probabilità 1Hn daHn-1,Hn, cioè dallo stato conn-1teste e se stesso12Hn - 1, Hnn - 1
- Stato : probabilità 1H* daHne probabilità 1 daH∗(stesso)12HnH*
Ad esempio, per , ciò fornisce la matrice di transizionen = 4
X= ⎧⎩⎨⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪H0H1H2H3H4H*H012120000H112012000H212001200H312000120H400001212H*000001⎫⎭⎬⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪⎪
Per il caso , il vettore iniziale delle probabilità p è p = ( 1 , 0 , 0 , 0 , 0 , 0 ) . In generale il vettore iniziale ha
p i = { 1 i = 0 0 i > 0n = 4pp =(1,0,0,0,0,0)
pio= { 10i = 0i > 0
Il vettore è la distribuzione di probabilità nello spazio per un dato tempo. Il cdf richiesto è un cdf nel tempo ed è la probabilità di aver visto almeno n lanciare le monete alla fine del tempo t . Può essere scritto come ( X t + 1 p ) k , osservando che raggiungiamo lo stato H ∗ 1 timestep dopo l'ultimo nella sequenza di lanci di monete consecutivi.pnt( Xt + 1p )KH*
Il pmf richiesto nel tempo può essere scritto come . Tuttavia numericamente ciò comporta la rimozione di un numero molto piccolo da un numero molto più grande ( ≈ 1 ) e limita la precisione. Pertanto nei calcoli è meglio impostare X k , k = 0 anziché 1. Quindi scrivere X ′ per la matrice risultante X ′ = X | X k , k = 0( Xt + 1p )K- ( Xtp )K≈ 1Xk , k= 0X'X'= X| Xk , k= 0, il pmf è . Questo è ciò che è implementato nel semplice programma R di seguito, che funziona per qualsiasi n ≥ 2 ,( 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")
La trama superiore mostra il pmf tra 0 e 100. I due grafici inferiori mostrano il pmf tra 10 e 110 e anche tra 1010 e 1110, illustrando l'auto-somiglianza e il fatto che come dice @Glen_b, la distribuzione sembra che possa essere approssimato da una distribuzione geometrica dopo un periodo di assestamento.
E 'possibile indagare ulteriormente questo comportamento utilizzando una decomposizione autovettore di . In questo modo si mostra che per t sufficientemente grande , p t + 1 ≈ c ( n ) p t , dove c ( n ) è la soluzione dell'equazione 2 n + 1 c n ( c - 1 ) + 1 = 0 . Questa approssimazione migliora con l'aumento di n ed è eccellente per tXtpt + 1≈ c ( n ) ptc ( n )2n + 1cn( c - 1 ) + 1 = 0ntnell'intervallo da circa 30 a 50, a seconda del valore di , come mostrato nel diagramma dell'errore di registro di seguito per il calcolo di p 100 (colori dell'arcobaleno, rosso a sinistra per n = 2 ). (In effetti per ragioni numeriche, sarebbe effettivamente meglio usare l'approssimazione geometrica per probabilità quando t è più grande.)np100n = 2t
Ho il sospetto (ed) che potrebbe esserci un modulo chiuso disponibile per la distribuzione perché i mezzi e le variazioni come li ho calcolati come segue
n2345678910Significare715316312725551110232047Varianza241447363392147206169625344010291204151296
(Ho dovuto aumentare il numero nell'orizzonte temporale t=100000
per ottenere questo, ma il programma funzionava ancora per tutti in meno di circa 10 secondi.) I mezzi in particolare seguono uno schema molto ovvio; le variazioni meno. In passato ho risolto un sistema di transizione a 3 stati più semplice, ma finora non ho avuto fortuna con una semplice soluzione analitica a questo. Forse c'è qualche teoria utile di cui non sono a conoscenza, ad esempio relativa alle matrici di transizione.n = 2 , … , 10
Modifica : dopo molte false partenze mi è venuta in mente una formula di ricorrenza. Sia la probabilità di essere nello stato H i al tempo t . Sia q ∗ , t la probabilità cumulativa di trovarsi nello stato H ∗ , cioè lo stato finale, al tempo t . NBpio , tHiotq∗ , tH*t
- Per ogni dato , p i , t , 0 ≤ i ≤ n e q ∗ , t è una distribuzione di probabilità sullo spazio i , e immediatamente sotto uso il fatto che le loro probabilità si sommino a 1.tpio , t, 0 ≤ i ≤ nq∗ , tio
- forma una distribuzione di probabilità nel tempo t . Più tardi, uso questo fatto per ricavare mezzi e varianze.p∗ , tt
La probabilità di trovarsi al primo stato al tempo , cioè senza teste, è data dalle probabilità di transizione dagli stati che possono ritornare ad esso dal tempo t (usando il teorema della probabilità totale).
p 0 , t + 1t + 1t
Ma per passare dallo statoH0aHn-1prenden-1passi, quindipn-1,t+n-1=1
p0 , t + 1= 12p0 , t+ 12p1 , t+ ... 12pn - 1 , t= 12Σi = 0n - 1pio , t= 12( 1 - pn , t- q∗ , t)
H0Hn - 1n - 1e
pn-1,t+n=1pn - 1 , t + n - 1= 12n - 1p0 , t
Ancora una volta dal teorema della probabilità totale la probabilità di essere allo stato
Hnnel tempo
t+1è
p n , t + 1pn - 1 , t + n= 12n( 1 - pn , t- q∗ , t)
Hnt + 1
e usando il fatto che
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∗ , t
Quindi, cambiando
t→t+n,
2q∗,t+n+2-3q∗,t+n+1+q∗,t+n+12 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
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
Modifica Non riesco a vedere dove andare per trovare un modulo chiuso da questa relazione di ricorrenza. Tuttavia, è possibile ottenere un modulo chiuso per la media.
( † )p∗ , t + 1= 12pn , t
pn , t + 12n + 1( 2 p∗ , 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) +22n + 1= ∑t = 0∞( 1 - q∗ , t)= μ= μ
H*
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 ) + 12n + 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
I mezzi e le varianze possono essere facilmente generati a livello di codice. Ad esempio per controllare i mezzi e le variazioni dalla tabella sopra utilizzare
n=2:10
m=c(0,2**(n+1))
v=2**(n+2)*(m[n]-n-3) + 5*m[n] - m[n]^2
Infine, non sono sicuro di cosa volessi quando hai scritto
quando una coda colpisce e rompe la serie di teste, il conteggio ricomincia dal prossimo lancio.
nn
μ - 1μ + 1Xk , k ,= 0X1 , k= 1H0H*n = 4
H0H1H2H3H4H*probabilità0.484848480.242424240.121212120.060606060.060606060.03030303
Il tempo previsto tra gli stati è dato dal reciproco della probabilità. Quindi il tempo previsto tra una visita e l'altra
H*= 1 / 0.03030303 = 33 = μ + 1.
Appendice : programma Python utilizzato per generare probabilità esatte per n
= numero di N
colpi consecutivi durante i tiri.
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()