シミュレーションで問題を解決する
私の最初の試みは、コンピューターでこれをシミュレートすることでした。以下は、1件のミリオン裁判の例です。「パターンバツのパターン1-0-0がn=100回発生する回数X = 100のコインフリップが20回以上である」というイベントは、およそ3000回の試行ごとに1回発生するため、観察したことはあまりありません(フェアコイン)。
ヒストリグラムはシミュレーション用であり、線は以下でさらに説明される正確な計算であることに注意してください。
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」をめくる確率の待機時間
fN,x=1(n)
マルコフ連鎖として「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}
nn−1
fNc,x=1(n)=Fn−22n−1
Fii
fN,x=1(n)=∑k=1n−20.5kfNc,x=1(1+(n−k))=0.5n∑k=1n−2Fk
フリップする確率の待機時間k
これは畳み込みによって計算できます。
fN,x=k(n)=∑l=1nfN,x=1(l)fN,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)
不公平なコインの計算
xnp
ここで、フィボナッチ数列の一般化を使用します。
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)
これをプロットすると、次のようになります。
p=0.5p=0.33
したがって、実験前にコインが不公平である可能性は低いと考えていた場合は、今でもコインは不公平である可能性は低いと考えるべきです。
pheads=ptails
表と裏の数を数えることで公正なコインの確率をテストし、二項分布を使用してこれらの観測をモデル化し、その観測が特定のものであるかどうかをテストする方がはるかに簡単です。
ただし、コインは平均して表と裏の数は同じですが、特定のパターンに関しては公平ではない可能性があります。たとえば、コインは後続のコインフリップとある程度の相関関係があるかもしれません(私は、コインをロードしている前のコインフリップの反対側の端に向かって砂時計のように流れる砂で満たされた、コインの金属内部に空洞があるメカニズムを想像します前の側と同じ側に落ちる可能性が高くなります)。
p
p=0.45pp
# 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つは、「1-0-0」のパターンをなぜ、どのように探しているかです。
- たとえば、このパターンはターゲットではなかった可能性があります。これは調査を行う前に決定されました。多分それはデータで「際立った」もので、実験後に注目されたものだったのかもしれません。その場合、複数の比較を効果的に行っていると考える必要があります。
- 別の問題は、上記で計算された確率がp値であることです。p値の意味は慎重に検討する必要があります。コインが公正である確率ではありません。代わりに、コインが公正である場合に特定の結果を観察する確率です。コインの公平性の分布を知っている環境がある場合、または合理的な仮定を立てることができる場合、これを考慮してベイジアン式を使用できます。
- 公正なもの、不公平なもの。結局のところ、十分な試練が与えられれば、ごくわずかな不公平を見つけるかもしれません。しかし、それは関連性があり、そのような検索は偏っていませんか?頻出主義のアプローチに固執するときは、コインフェアと見なす境界のようなものを説明する必要があります(関連するエフェクトサイズ)。次に、コインが公正かどうかを判断するために、2つの片側t検定に似たものを使用できます(「1-0-0」パターンに関して)。