내가 동전을 10,000 번 넘겼다고 가정 해 봅시다. 연속으로 4 개 이상의 연속 헤드를 얻는 데 걸리는 플립 횟수를 알고 싶습니다.
카운트는 다음과 같이 작동하며, 한 번의 연속 플립 플립은 헤드 (4 헤드 이상) 인 것으로 간주합니다. 꼬리가 치고 머리의 행진이 끊어지면 카운트는 다음 플립에서 다시 시작됩니다. 그런 다음 10,000 번 뒤집기를 반복합니다.
4 개 이상의 헤드가 연속으로 발생하는 것이 아니라 6 개 이상, 10 개 이상의 확률을 알고 싶습니다. 9 헤드의 행진이 달성되었는지 명확히하기 위해, 2 개의 개별 줄무늬가 아닌 1 행진 4 이상 (및 / 또는 6 이상)으로 계산 될 수있다. 예를 들어 동전이 THTHTHTHHHHHH /// THAHTHT … 인 경우 카운트는 13이되고 다음 꼬리에서 다시 시작됩니다.
데이터가 오른쪽으로 치우친다고 가정하겠습니다. 평균은 평균 40 점으로 4 줄 이상을 달성하는 데 걸리며 분포는 u = 28입니다.
나는 지금까지 아무것도 발견하지 않은 것을 제외하고 설명 데이터를 이해하는 방법을 찾기 위해 최선을 다하고 있습니다.
합리적인 확률을 얻을 수있는 방법을 찾고 싶습니다. +/- 1 SD가 68 % 등인 일반 곡선처럼 로그 정규화를 살펴본 결과 실제로는 목표가 아닌 파라 메트릭 테스트에만 사용됩니다.
베타 배포판을 들었습니다.하지만 제가 제안한 모든 제안은 상당히 혼란 스러웠습니다. 나는 1 년 전에이 질문을하고 통찰력을 얻었지만 불행히도 여전히 대답이 없습니다. 아이디어가있는 분들께 감사드립니다.
답변
내가 올바르게 이해했다면 문제는 개 이상의 헤드 의 첫 번째 실행이 끝나는 시간에 대한 확률 분포를 찾는 것 입니다.
편집 행렬 곱셈을 사용하여 확률을 정확하고 빠르게 확인할 수 있으며, 평균을 로, 분산을 으로 분석하여 계산할 수도 있습니다. 여기서 이지만 분포 자체에 대한 간단한 닫힌 형식은 없을 것입니다. 특정 수의 코인 플립 위에서 분포는 본질적으로 기하학적 분포입니다. 더 큰 대해이 형식을 사용하는 것이 좋습니다.σ 2 = 2 n + 2 ( μ − n – 3 ) − μ 2 + 5 μ μ = μ − + 1 t
상태 공간에서의 확률 분포 시간에서의 진화는 상태에 대한 전이 행렬을 사용하여 모델링 될 수 있으며 , 여기서 은 연속 코인 플립의 수이다. 상태는 다음과 같습니다., N =
- 상태 , 헤드 없음
- 상태 , 헤드, i 1 ≤ i ≤ ( n – 1 )
- 상태 , 개 이상의 헤드 n
- 상태 , 개 이상의 헤드와 꼬리 n
상태 도달하면 다른 상태로 돌아갈 수 없습니다.
상태로 들어갈 수있는 상태 전이 확률은 다음과 같습니다.
- 주 : 확률 에서 , , 즉 자신을 포함하되 명시되지1
Hii=0,…,n–1Hn - 주 : 확률 에서1
Hi–1 - 상태 : 에서 나오는 확률 , 즉 헤드와 그 자체 가있는 상태에서1
Hn–1,Hnn–1 - 주 : 확률 에서 에서 확률 1 (자체)1
HNH*
예를 들어, , 이것은 전이 행렬을 제공합니다
의 경우 확률 의 초기 벡터 는 입니다. 일반적으로 초기 벡터는
, P , P = ( 1 , 0 , 0 , 0 , 0 , 0 ) , P가 나는 = { 1 난 = 0 0 I > 0
벡터 는 주어진 시간 동안 공간 에서의 확률 분포입니다 . 필요한 cdf는 시간 의 cdf이며 , 시간 ( 의해 적어도 코인 플립이 끝날 가능성이있다 . 로 쓸 수 있는데 , 이는 연속적인 동전 뒤집기 실행의 마지막 단계 이후 상태 1 타임 스텝에 도달했음을 나타 냅니다. n t ( X t + 1 p ) k H ∗
시간에 필요한 pmf는 로 쓸 수 있습니다 . 그러나 수치 적으로 이것은 훨씬 더 큰 수 ( ) 에서 매우 작은 수를 제거하고 정밀도를 제한합니다. 따라서 계산에서 대신 하는 것이 좋습니다. 그런 다음 결과 행렬 를 쓰면 pmf는 입니다. 이것은 아래의 간단한 R 프로그램에서 구현되며 에서 작동합니다 . ≈ 1 X K , K = 0 X ‘ X ‘ = X | X k , k = 0 ( X ′ t + 1 p ) k n ≥ 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")
위 그림은 0에서 100 사이의 pmf를 보여줍니다. 아래 두 그림은 p10에서 10과 110 사이 그리고 1010과 1110 사이에서 pmf를 보여줍니다. 안정 기간 후의 기하학적 분포에 의해 근사됩니다.
의 고유 벡터 분해를 사용하여이 동작을 추가로 조사 할 수 있습니다 . 그렇게하면 충분히 큰 에 대한 . 여기서 은 방정식 . 이 근사값은 을 증가 시키면 더 좋아지고 을 계산하기위한 아래의 로그 오류 그림 (무지개 색, 빨간색)에 표시된 것처럼 값에 따라 약 30에서 50까지의 범위에서 에 대해 우수 대해 왼쪽t 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 t
). 실제로 숫자로 인해 가 클 때 확률에 대해 기하 근사를 사용하는 것이 좋습니다 .
나는 다음과 같이 계산 한 평균과 분산 때문에 분포에 사용할 수있는 닫힌 양식이 있다고 생각합니다.
(나는 t=100000
이것을 얻기 위해 시간 범위를 넘어서야 했지만 프로그램은 여전히 약 10 초 이내에 모든 에 대해 실행되었습니다.) 특히 그 수단은 매우 명백한 패턴을 따릅니다. 차이가 적습니다. 나는 과거에 더 간단한 3 상태 전이 시스템을 해결했지만 지금까지는 간단한 분석 솔루션으로는 운이 없습니다. 어쩌면 전이 행렬과 관련하여 내가 모르는 유용한 이론이있을 수 있습니다.
편집 : 많은 잘못된 시작 후 나는 반복 공식을 생각해 냈습니다. 를 시간 에서 상태 에 있을 확률 이라고하자 . 하자 상태에있는 누적 확률 될 시간에, 즉 최종 상태, . NB H i t q ∗ , t H ∗ t
- 주어진 에 대해 및 는 공간 대한 확률 분포 이며, 바로 아래에서 확률이 1에 추가된다는 사실을 사용합니다.p i , t , 0 ≤ i ≤ n q ∗ , t i
- t
는 시간 대한 확률 분포를 형성합니다 . 나중에이 방법을 사용하여 평균과 분산을 도출합니다.
시간 에서 제 1 상태 , 즉 헤드가 없을 확률은 시간 ( 에서 복귀 할 수있는 상태 (전 확률 이론을 사용하여) 로부터 전이 확률에 의해 주어진다 .
하지만 상태 에서 데 단계 가 걸리므로 및
다시 한번 총 확률 이론에 의해 상태t p 0 , t + 1
H0Hn−1n−1pn−1,t+n−1=1
pn−1,t+n=1
Hnt+1 p n , t + 1
시간 은
및 사실 사용 ,
따라서 ,
이 되풀이 수식은 경우 및 합니다. 예를 들어, 에 대해이 공식의 도표 는 기계 순서 정확도 를 제공합니다.
t=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
편집 이 되풀이 관계에서 닫힌 양식을 찾기 위해 어디로 가야하는지 알 수 없습니다. 그러나 입니다 평균에 대한 폐쇄 양식을 얻을 수.
부터 출발 , 그 주목 ,
에서 합계 촬영 에 , 평균의 수식을 적용 와 그 주목 확률 분포는
이것은 상태 에 도달하기위한 평균입니다 . 머리 끝의 평균은 이것보다 하나 적습니다.
편집 화학식 이용한 유사한 방법이 질문 에서 분산 이 산출됩니다.
평균과 분산은 프로그래밍 방식으로 쉽게 생성 할 수 있습니다. 예를 들어 위 표에서 사용 된 평균과 분산을 확인하십시오.
n=2:10
m=c(0,2**(n+1))
v=2**(n+2)*(m[n]-n-3) + 5*m[n] - m[n]^2
마지막으로, 당신이 쓸 때 당신이 무엇을 원했는지 잘 모르겠습니다
꼬리가 치고 머리의 행진이 끊어지면 카운트는 다음 플립에서 다시 시작됩니다.
당신은에 대한 확률 분포 무엇을 의미하는 경우에는 다음 의 첫 번째 실행되는 시간 이상의 헤드의 끝이 다음 중요한 점은이에 포함 @Glen_b에 의해 코멘트 프로세스가 다시 시작이다, 하나 개 꼬리 후 CF ( 이상의 헤드를 즉시 얻을 수있는 초기 문제 ).
예를 들어 첫 번째 이벤트까지의 평균 시간은 이지만 이벤트 사이의 평균 시간은 항상 (분산은 동일 함). 전이 매트릭스를 사용하여 시스템이 “정착 된”상태의 장기적인 확률을 조사 할 수도 있습니다. 적절한 전이 행렬을 얻으려면 시스템 이 상태 에서 상태 즉시 돌아 오도록 및 을 설정하십시오 . 그런 다음 이 새로운 행렬 의 스케일 된 첫 번째 고유 벡터는 고정 확률을 제공합니다 . 함께 이 정적 확률은
상태 간의 예상 시간은 확률의 역수로 제공됩니다. 따라서 방문 사이의 예상 시간 입니다.
부록 : n
= 연속 헤드 수에 대한 정확한 확률을 생성하는 데 사용되는 Python 프로그램 N
.
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()
답변
베타가이 문제를 다루는 방법으로 특히 적합 할 것이라고 확신하지 않습니다. “플레이 횟수 …”는 분명히 카운트입니다. 정수이며 양의 확률을 얻는 값에는 상한이 없습니다.
이와 대조적으로 베타 분포는 지속적이고 제한적인 간격을두고 있기 때문에 특별한 선택이 아닌 것 같습니다. 스케일 된 베타와 모멘트가 일치하면 누적 분포 함수가 분포의 중앙 몸체에서 그리 나쁘지 않을 수 있습니다. 그러나 어떤 다른 선택은 어느 쪽 꼬리라도 실질적으로 더 나아질 것입니다.
분포에서 확률 또는 시뮬레이션에 대한 표현이있는 경우 (근사적인 베타를 찾기 위해 필요할 수 있음) 왜 직접 사용하지 않습니까?
확률에 대한 표현 또는 필요한 토스 수의 확률 분포를 찾는 데 관심이있는 경우 가장 간단한 아이디어는 확률 생성 함수를 사용하는 것입니다. 이것들은 확률 사이의 재귀 관계에서 함수를 도출하는 데 유용하며, 함수 (pgf)는 필요한 확률을 추출 할 수 있습니다.
다음은 대수적 접근 방식을 취한 좋은 답변이있는 게시물입니다.이 글은 어려움을 설명하고 pgf와 재발 관계를 잘 활용합니다. “행의 두 성공”사례에서 평균 및 분산에 대한 특정 표현이 있습니다.
/math/73758/probability-of-n-successes-in-a-row-at-the-k-th-bernoulli-trial-geometric
네 가지 성공 사례는 물론 훨씬 더 어려울 것입니다. 반면에 는 일을 다소 단순화합니다.
–
수치 해답을 원한다면 시뮬레이션은 비교적 간단합니다. 확률 추정값을 직접 사용할 수도 있고 모의 확률을 평활화하는 것이 합리적 일 수도 있습니다.
근사 분포를 사용해야하는 경우 아마도 잘 수행 할 수있는 것을 선택할 수 있습니다.
음수 이항식 ( ‘성공 횟수’버전이 아닌 ‘시험 횟수’버전)이 합리적 일 수 있습니다. 2 개 또는 3 개의 구성 요소는 극단적 인 꼬리를 제외하고는 모두 좋은 근사치를 제공해야합니다.
근사치에 대한 단일 연속 분포를 원한다면 베타 분포보다 더 나은 선택이있을 수 있습니다. 조사해야 할 것이 있습니다.
좋아, 나는 약간의 대수, 재귀 관계, 시뮬레이션 및 약간의 사고로 연주했습니다.
아주 좋은 근사치로, 처음 네 개의 0이 아닌 확률 (쉽게)을 지정하고 반복을 통해 다음 몇 가지 값을 계산하고 (그리고 쉽게) 반복 관계가 있으면 기하학적 꼬리를 사용하여 간단히 벗어날 수 있다고 생각합니다. 초기에 덜 부드러운 확률의 진행을 부드럽게했습니다.
기하학적 꼬리를 사용하여 k = 20을 지나서 매우 높은 정확도를 얻을 수있는 것처럼 보이지만 4 숫자 정확도에 대해 걱정이된다면 더 일찍 가져올 수 있습니다.
이를 통해 pdf 및 cdf를 정확하게 계산할 수 있습니다.
조금 걱정입니다. 계산에 따르면 평균 던지기 횟수는 30.0이고 표준 편차는 27.1입니다. “x”와 “u”의 의미를 이해했다면 던지기에서 40과 28을 얻었습니다. 28은 괜찮아 보이지만 40은 내가 얻은 것을 벗어난 것처럼 보입니다.
====
참고 : 처음과 이후에 발생했던 시간 사이의 복잡성을 감안할 때, 나는 우리가 동일한 것을 세고 있음을 확신하고 싶습니다.
여기에 ‘4 개 이상의 H’시퀀스의 끝이 표시된 짧은 시퀀스가 있습니다 (마지막 H 직후 플립 사이의 간격을 가리킴)
\/ \/
TTHHHHHHTTHTTTTTHHTTHTTHHTHHHHHT...
/\ /\
이 두 마크 사이에서 나는 23 번의 플립을 계산합니다. 즉, 이전 순서 (이 경우 6) H가 끝나 자마자 바로 다음 T에서 계산을 시작한 다음 다음 순서를 끝내는 5 H (이 경우) 순서의 끝까지 바로 계산합니다. 이 경우 23 카운트를 제공합니다.
그렇게 계산합니까?
위의 내용이 올 바르면 다음은 4 개 이상의 헤드를 한 번 실행 한 후 다음 4 개 이상의 헤드를 완성 할 때까지 던지기 횟수의 확률 함수입니다.
언뜻보기에는 처음 몇 값에 대해 평평한 것처럼 보이지만 기하학적 꼬리가 있지만 그 인상은 정확하지 않습니다. 효과적으로 기하학적 꼬리로 정착하는 데 시간이 걸립니다.
이 프로세스와 관련된 확률에 관한 질문에 가능한 한 간단하고 정확한 정확도로 대답하기 위해 사용할 수있는 적절한 근사치를 생각해 내고 있습니다. 나는 작동 해야하는 꽤 좋은 근사치를 가지고 있습니다 (이미 10 억 코인 토스의 시뮬레이션에 대해 이미 확인했습니다). 근사치가 범위의 일부로 제공하는 확률에는 약간 작지만 일관된 편향이 있습니다. 정확도를 더 높일 수 있는지 확인하십시오.
가장 좋은 방법은 확률 함수 테이블을 제공하고 기하 분포를 사용할 수있는 지점까지 cdf를 제공하는 것일 수 있습니다.
그러나 근사값을 사용해야하는 것의 범위에 대한 아이디어를 줄 수 있다면 도움이 될 것입니다.
나는 pgf 접근 방식을 따르기를 희망하지만 다른 사람이 나보다 그들보다 더 능숙하고 4 경우뿐만 아니라 다른 경우도 가능합니다.
답변
기하 분포를 원합니다 . Wikipedia에서 :
베르누이 시행 횟수 의 확률 분포는 {1, 2, 3, …} 세트에서 한 번의 성공을 거두어야했습니다.
헤드 H는 고장이되고 테일 T는 성공이된다. 랜덤 변수 는 첫 번째 꼬리를 보는 데 필요한 코인 플립 수입니다. 예를 들어 는 시퀀스 HHHT가됩니다. 대한 확률 분포는 다음과 같습니다 .
그러나 헤드 수만 원합니다. 대신 을 헤드 수로 정의 해 봅시다 . 배포판은 다음과 같습니다.
위한 . 우리는 공정한 동전을 가정하여 만듭니다. 따라서
이것은 모두 플립의 개수 이 충분히 크다고 가정한다 (예 : 10,000). 더 작은 (finite) 경우 정규화 인자 를 표현식 에 추가해야합니다 . 간단히 말해서, 총합이 1과 같아야합니다. 여기서는 로 정의 된 모든 확률의 합으로 나눠서이를 수행 할 수 있습니다 .
이는 로 표시된 의 수정 된 형식이 다음과 같음을 의미합니다 .
다시 사용하면 지오 메릭 시리즈 합산을 사용하여 이것을 더 줄일 수 있습니다 .
그리고 우리는 로서 수정 된 버전 가 이전부터 접근 한다는 것을 알 수 있습니다 .