시뮬레이션으로 문제 해결
첫 번째 시도는 컴퓨터에서 이것을 시뮬레이션하는 것인데, 많은 공정한 동전을 매우 빠르게 뒤집을 수 있습니다. 아래는 하나의 마일리 온 시험 예제입니다. 이벤트 '그 횟수엑스 패턴 '1-0-0'은 n = 100 동전 뒤집기는 20 번 이상입니다. '약 3 천 번의 시험마다 대략 발생하므로 관찰 한 것은 (공평한 동전) 가능성이 거의 없습니다.
히스토그램은 시뮬레이션을위한 것이고 선은 아래에 더 자세히 설명 된 정확한 계산입니다.
set.seed(1)
# number of trials
n <- 10^6
# flip coins
q <- matrix(rbinom(100*n, 1, 0.5),n)
# function to compute number of 100 patterns
npattern <- function(x) {
sum((1-x[-c(99,100)])*(1-x[-c(1,100)])*x[-c(1,2)])
}
# apply function on data
counts <- sapply(1:n, function(x) npattern(q[x,]))
hist(counts, freq = 0)
# estimated probability
sum(counts>=20)/10^6
10^6/sum(counts>=20)
정확한 계산으로 문제 해결
분석 접근법 의 경우 '100 코인 플립에서 20 개 이상의 시퀀스'1-0-0 '을 관찰 할 확률이 1에서 20 시퀀스를 만드는 데 100 번 이상 플립을 수행 할 확률과 같다는 사실을 사용할 수 있습니다. . 이것은 다음 단계에서 해결됩니다.
'1-0-0'이 뒤집힐 가능성을 기다리는 시간
분포 에프엔, x = 1( n ), 정확히 하나의 시퀀스 '1-0-0'을 얻을 때까지 뒤집어 야하는 횟수 중 다음과 같이 계산할 수 있습니다.
Markov 체인으로 '1-0-0'에 도달하는 방법을 분석해 봅시다. 플립 문자열의 접미사 '1', '1-0'또는 '1-0-0'으로 설명 된 상태를 따릅니다. 예를 들어 다음과 같은 8 개의 플립 10101100이있는 경우 '1', '1-0', '1', '1-0', '1', '1', '1-0', '1-0-0'그리고 '1-0-0'에 도달하기 위해 8 번의 플립이 필요했습니다. 모든 플립에서 상태 '1-0-0'에 도달 할 확률은 동일 하지 않습니다 . 따라서 이항 분포로 모형화 할 수 없습니다 . 대신 확률 트리를 따라야합니다. 상태 '1'은 '1'과 '1-0'으로, 상태 '1-0'은 '1'과 '1-0-0'으로 갈 수 있습니다. 상태 '1-0-0'은 흡수 상태이다. 다음과 같이 적을 수 있습니다.
number of flips
1 2 3 4 5 6 7 8 9 .... n
'1' 1 1 2 3 5 8 13 21 34 .... F_n
'1-0' 0 1 1 2 3 5 8 13 21 F_{n-1}
'1-0-0' 0 0 1 2 4 7 12 20 33 sum_{x=1}^{n-2} F_{x}
첫 번째 '1'을 굴린 후 ( '헤드를 뒤집지 않은 상태로'0 '으로 시작) 패턴'1-0-0 '에 도달 할 확률 엔 뒤집기는 내 '1-0'상태에있을 확률의 절반입니다 n - 1 뒤집기 :
에프엔씨, x = 1( n ) =에프n - 22n - 1
어디 에프나는 입니다 나는피보나치 번호. 무조건 확률은 합입니다
에프엔, x = 1( n ) =∑k = 1n - 20.5케이에프엔씨, x = 1( 1 + ( n − k ) ) =0.5엔∑k = 1n - 2에프케이
뒤집을 확률을 기다리는 시간 케이 시간 '1-0-0'
이것은 컨벌루션으로 계산할 수 있습니다.
에프엔, x = k( n ) =∑l = 1엔에프엔, x = 1( l )에프엔, x = 1( n − l )
20 개 이상의 '1-0-0'패턴을 관찰 할 확률이 있습니다 (동전이 공정하다는 가설에 근거 함)
> # exact computation
> 1-Fx[20]
[1] 0.0003247105
> # estimated from simulation
> sum(counts>=20)/10^6
[1] 0.000337
그것을 계산하는 R 코드는 다음과 같습니다.
# fibonacci numbers
fn <- c(1,1)
for (i in 3:99) {
fn <- c(fn,fn[i-1]+fn[i-2])
}
# matrix to contain the probabilities
ps <- matrix(rep(0,101*33),33)
# waiting time probabilities to flip one pattern
ps[1,] <- c(0,0,cumsum(fn))/2^(c(1:101))
#convoluting to get the others
for (i in 2:33) {
for (n in 3:101) {
for (l in c(1:(n-2))) {
ps[i,n] = ps[i,n] + ps[1,l]*ps[i-1,n-l]
}
}
}
# cumulative probabilities to get x patterns in n flips
Fx <- 1-rowSums(ps[,1:100])
# probabilities to get x patterns in n flips
fx <- Fx[-1]-Fx[-33]
#plot in the previous histogram
lines(c(1:32)-0.5,fx)
불공정 동전 계산
관찰 할 확률의 위 계산을 일반화 할 수 있습니다 엑스 패턴 n '1 = head'의 확률이 p 플립은 독립적입니다.
이제 피보나치 수의 일반화를 사용합니다.
Fn(x)=⎧⎩⎨1xx(Fn−1+Fn−2)if n=1if n=2if n>2
확률은 이제 다음과 같습니다.
fNc,x=1,p(n)=(1−p)n−1Fn−2((1−p)−1−1)
과
fN,x=1,p(n)=∑k=1n−2p(1−p)k−1fNc,x=1,p(1+n−k)=p(1−p)n−1∑k=1n−2Fk((1−p)−1−1)
우리가 이것을 플롯하면 다음을 얻습니다.
따라서 공정한 동전 0.0003247의 경우 p- 값이 작지만 다른 불공평 한 동전의 경우 p- 값이 훨씬 우수하지는 않습니다 (단일 주문 만). 귀무 가설 이 다음과 같은 경우 우도 비율 또는 Bayes factor 는 약 11입니다.p=0.5)을 대립 가설과 비교 p=0.33. 이는 사후 배당률 이 이전 배당률보다 10 배만 높다는 것을 의미합니다 .
따라서 실험 전에 동전이 불공평하지 않다고 생각했다면 이제 동전이 불공평하다고 생각해야합니다.
와 동전 pheads=ptails '1-0-0'발생에 대한 불공평
머리와 꼬리의 수를 세어 공정한 코인의 확률을 훨씬 쉽게 테스트하고 이항 분포를 사용하여 이러한 관측치를 모델링하고 관측치가 특별한 지 여부를 테스트 할 수 있습니다.
그러나 동전이 평균적으로 같은 수의 머리와 꼬리를 내리고 있지만 특정 패턴에 대해서는 공평하지 않을 수 있습니다. 예를 들어, 동전은 동전 뒤집기의 성공과 약간의 상관 관계가있을 수 있습니다 (저는 동전으로 채워진 모래 동전으로 모래가 가득 찬 모래 동전으로 채워진 구멍이있는 메커니즘을 상상합니다) 이전 쪽과 같은쪽에 더 떨어질 가능성이 있습니다).
첫 번째 코인 플립은 확률이 같은 머리와 꼬리가되고 후속 플립은 확률이 같습니다 p이전 플립과 같은면. 그런 다음이 게시물의 시작과 비슷한 시뮬레이션을 통해 패턴 '1-0-0'이 20을 초과하는 횟수에 대해 다음과 같은 확률을 얻을 수 있습니다.
'1-0-0'패턴을 관찰 할 가능성이 더 높다는 것을 알 수 있습니다. p=0.45음의 상관 관계가있는 동전), 그러나 더 극적인 것은 '1-0-0'패턴을 극복 할 가능성이 훨씬 적다는 것입니다. 낮은p'1-0-0'패턴의 첫 번째 '1-0'부분 인 머리 뒤에 여러 번 꼬리를 얻지 만 행의 '0-0'부분에서 두 개의 꼬리를 자주 얻지는 않습니다. 무늬. 그 반대는 높음p 가치.
# number of trials
set.seed(1)
n <- 10^6
p <- seq(0.3,0.6,0.02)
np <- length(p)
mcounts <- matrix(rep(0,33*np),33)
pb <- txtProgressBar(title = "progress bar", min = 0,
max = np, style=3)
for (i in 1:np) {
# flip first coins
qfirst <- matrix(rbinom(n, 1, 0.5),n)*2-1
# flip the changes of the sign of the coin
qrest <- matrix(rbinom(99*n, 1, p[i]),n)*2-1
# determining the sign of the coins
qprod <- t(sapply(1:n, function(x) qfirst[x]*cumprod(qrest[x,])))
# representing in terms of 1s and 0s
qcoins <- cbind(qfirst,qprod)*0.5+0.5
counts <- sapply(1:n, function(x) npattern(qcoins[x,]))
mcounts[,i] <- sapply(1:33, function(x) sum(counts==x))
setTxtProgressBar(pb, i)
}
close(pb)
plot(p,colSums(mcounts[c(20:33),]),
type="l", xlab="p same flip", ylab="counts/million trials",
main="observation of 20 or more times '1-0-0' pattern \n for coin with correlated flips")
points(p,colSums(mcounts[c(20:33),]))
통계에서 수학 사용
위의 내용은 모두 괜찮지 만 질문에 대한 직접적인 대답은 아닙니다.
"이것이 공정한 동전이라고 생각합니까?"
이 질문에 답하기 위해서는 위의 수학을 사용할 수 있지만 먼저 상황, 목표, 공정성 정의 등을 잘 설명해야합니다. 배경과 환경에 대한 지식이 없으면 계산은 수학 연습 일뿐입니다. 명백한 질문.
열린 질문 중 하나는 왜 그리고 어떻게 우리가 '1-0-0'패턴을 찾고 있는지입니다.
- 예를 들어이 패턴은 대상이 아니 었으므로 조사 를 수행 하기 전에 결정되었습니다 . 어쩌면 그것은 데이터에서 '돋보이는'것일 수도 있고 실험 후에 주목을 얻은 것일 수도 있습니다. 이 경우 효과적으로 여러 비교를 하고 있다는 것을 고려해야합니다 .
- 다른 문제는 위에서 계산 된 확률이 p- 값이라는 것입니다. p- 값의 의미는 신중하게 고려해야합니다. 동전이 공정 할 확률 은 아닙니다 . 대신 동전이 공정 하면 특정 결과를 관찰 할 가능성이 있습니다 . 동전의 공정성 분포를 알고 있거나 합리적인 가정을 할 수있는 환경이있는 경우이를 고려하여 베이지안 표현을 사용할 수 있습니다 .
- 공정하고 불공평 한 것 결국 충분한 시련을 겪으면 약간의 불공평 함을 발견 할 수 있습니다. 그러나 관련성이 있고 그러한 검색이 편향되지 않습니까? 우리가 빈번한 접근 방식을 고수 할 때, 우리는 코인 페어 (일부 관련된 효과 크기)를 고려하는 경계와 같은 것을 설명해야합니다. 그런 다음 동전이 공정한지 여부를 결정하기 위해 ( '1-0-0'패턴과 관련하여) 두 개의 단면 t- 검정 과 비슷한 것을 사용할 수 있습니다 .