2つのバイアスされたコインがC1
あり、C2
どちらも頭を向ける確率が異なるとします。
私たちはC1
n1
時間を投げてH1
頭を出し、C2
n2
時間をかけてH2
頭を出します。そして、1つのコインの表の比率が他のコインよりも高いことがわかります。
あるコインが他のコインよりも優れていると言える確率はどのくらいですか?(ここでの方が良いということは、実際に頭を回す可能性が高いということです)
2つのバイアスされたコインがC1
あり、C2
どちらも頭を向ける確率が異なるとします。
私たちはC1
n1
時間を投げてH1
頭を出し、C2
n2
時間をかけてH2
頭を出します。そして、1つのコインの表の比率が他のコインよりも高いことがわかります。
あるコインが他のコインよりも優れていると言える確率はどのくらいですか?(ここでの方が良いということは、実際に頭を回す可能性が高いということです)
回答:
2つのコインが等しいという事実を考えると、その観測を行う確率を計算するのは簡単です。これはフィッシャーの正確確率検定によって行うことができます。これらの観察を考えると
試行回数、、および頭の合計数が与えられた場合にコインが等しいときにこれらの数を観察する確率は、
しかし、あなたが求めているのは、1枚のコインがより良い確率です。コインの偏りについての信念について議論するので、結果を計算するためにベイジアンアプローチを使用する必要があります。ベイズ推定では、「信念」という用語は確率としてモデル化され、2つの用語は同じ意味で使用されます(ベイズ確率)。コインが頭を投げる確率をと呼びます。このため、観察後に事後分布、によって与えられるベイズの定理:
確率密度関数(pdf) f (p i | H i、n i)= f (H i | p i、n i)f (p i)
を計算するために、pdfの積分は1つのなければならないという事実を使用します。したがって、分母はそれを達成するための一定の要素になります。既知のpdfがあり、これは、ベータ分布である定数因子のみがノミネーターと異なります。したがって、
、F (P I | H 、I、N I)= 1
独立したコインの確率のペアのpdfは、
今度は、ケースでこれを統合して、コイン方がコインよりも優れていることを確認する必要があります。
この最後の積分を解析的に解くことはできませんが、数値を接続した後、コンピュータで数値的に解くことができます。はベータ関数で、は不完全なベータ関数です。ことに注意してくださいこれは、が継続変数であり、とまったく同じになることはないためです。
に関する以前の仮定とその備考に関して:多くの考えをモデル化するための良い代替案は、ベータ分布です。これは、最終的な確率
このようにして、、が大きくても等しい通常のコインへの強いバイアスをモデル化できます。これは、コインを回追加で投げ、頭を受け取ることと同じです。したがって、より多くのデータを持っていることと同じです。は、作成する必要のないトスの量です
OPは、2枚のコインは両方とも未知の程度に偏っていると述べました。だから私はすべての知識が観察から推測されなければならないことを理解しました。これが、例えば通常のコインのように結果にバイアスをかけないようにする前に、情報がないことを選択した理由です。
すべての情報はコインごとに形式で伝達できます。有益な事前情報がないということは、どのコインが高い確率でより良いかを決定するために、より多くの観察が必要であることを意味します。
Rのコードは、均一な事前を使用して関数を提供します。
P(n1, H1, n2, H2)
mp <- function(p1, n1, H1, n2, H2) {
f1 <- pbeta(p1, H2 + 1, n2 - H2 + 1)
f2 <- dbeta(p1, H1 + 1, n1 - H1 + 1)
return(f1 * f2)
}
P <- function(n1, H1, n2, H2) {
return(integrate(mp, 0, 1, n1, H1, n2, H2))
}
さまざまな実験結果に対してを描画し、次のコードを切り抜いて、、を固定できます。例::
library(lattice)
n1 <- 4
n2 <- 4
heads <- expand.grid(H1 = 0:n1, H2 = 0:n2)
heads$P <- apply(heads, 1, function(H) P(n1, H[1], n2, H[2])$value)
levelplot(P ~ H1 + H2, heads, main = "P(p1 > p2)")
install.packages("lattice")
最初にする必要があるかもしれません。
とが十分に異なる場合、事前分布が均一でサンプルサイズが小さい場合でも、1枚のコインの方が確率が高い、または信じられると、かなり堅実になります。とがさらに大きい場合は、さらに小さな相対差が必要です。以下は、およびプロットです。
Martijn Weterings は、と差の事後確率分布を計算することを提案しました。これは、セットのペアのpdfを積分することで実行できます:
繰り返しますが、分析的に解決できる積分ではありませんが、Rコードは次のようになります。
d1 <- function(p, d, n1, H1, n2, H2) {
f1 <- dbeta(p, H1 + 1, n1 - H1 + 1)
f2 <- dbeta(p + d, H2 + 1, n2 - H2 + 1)
return(f1 * f2)
}
d2 <- function(p, d, n1, H1, n2, H2) {
f1 <- dbeta(p, H1 + 1, n1 - H1 + 1)
f2 <- dbeta(p - d, H2 + 1, n2 - H2 + 1)
return(f1 * f2)
}
fd <- function(d, n1, H1, n2, H2) {
if (d==1) return(0)
s1 <- integrate(d1, 0, 1-d, d, n1, H1, n2, H2)
s2 <- integrate(d2, d, 1, d, n1, H1, n2, H2)
return(s1$value + s2$value)
}
Iをプロットため、、との全ての値。
n1 <- 4
n2 <- 4
H1 <- 3
d <- seq(0, 1, length = 500)
get_f <- function(H2) sapply(d, fd, n1, H1, n2, H2)
dat <- sapply(0:n2, get_f)
matplot(d, dat, type = "l", ylab = "Density",
main = "f(d | 4, 3, 4, H2)")
legend("topright", legend = paste("H2 =", 0:n2),
col = 1:(n2 + 1), pch = "-")
確率を計算できます 値の上方にあることがによって。数値積分を二重に適用すると、多少の数値誤差が生じることに注意してください。たとえば、常にと間の値を取るので、常に必要があります。しかし、結果はしばしば少しずれます。1 d 0 1integrate(fd, d, 1, n1, H1, n2, H2)
integrate(fd, 0, 1, n1, H1, n2, H2)
私はで数値シミュレーションを行いましたがR
、おそらく分析的な答えを探していますが、これを共有するのは興味深いと思いました。
set.seed(123)
# coin 1
N1 = 20
theta1 = 0.7
toss1 <- rbinom(n = N1, size = 1, prob = theta1)
# coin 2
N2 = 25
theta2 = 0.5
toss2 <- rbinom(n = N2, size = 1, prob = theta2)
# frequency
sum(toss1)/N1 # [1] 0.65
sum(toss2)/N2 # [1] 0.52
この最初のコードでは、2つのコイントスをシミュレートします。ここでは、もちろんそれがわかります。theta1 > theta2
もちろん、その頻度はH1
より高くなりH2
ます。別の注意N1
、N2
サイズを。
別ので何ができるか見てみましょうthetas
。コードが最適ではないことに注意してください。全然。
simulation <- function(N1, N2, theta1, theta2, nsim = 100) {
count1 <- count2 <- 0
for (i in 1:nsim) {
toss1 <- rbinom(n = N1, size = 1, prob = theta1)
toss2 <- rbinom(n = N2, size = 1, prob = theta2)
if (sum(toss1)/N1 > sum(toss2)/N2) {count1 = count1 + 1}
#if (sum(toss1)/N1 < sum(toss2)/N2) {count2 = count2 + 1}
}
count1/nsim
}
set.seed(123)
simulation(20, 25, 0.7, 0.5, 100)
#[1] 0.93
したがって、0.93は、最初のコインがより多くの表を持っていた(100のうちの)時間の頻度です。これを見てtheta1
、theta2
使用すると、問題ないようです。
の2つのベクトルを見てみましょうthetas
。
theta1_v <- seq(from = 0.1, to = 0.9, by = 0.1)
theta2_v <- seq(from = 0.9, to = 0.1, by = -0.1)
res_v <- c()
for (i in 1:length(theta1_v)) {
res <- simulation(1000, 1500, theta1_v[i], theta2_v[i], 100)
res_v[i] <- res
}
plot(theta1_v, res_v, type = "l")
100回のシミュレーションのうち、res_v
がである頻度を思い出してくださいH1 > H2
。
したがって、theta1
増加するにつれて、H1
当然、より高い確率が増加します。
他のシミュレーションをいくつか実行しましたが、サイズはそれほど重要N1
でN2
はないようです。
慣れているR
場合は、このコードを使用して問題に光を当てることができます。これは完全な分析ではなく、改善できることは承知しています。
res_v
、シータが交わると連続的に変化します。ただ一つの観察をしただけで、コインの本質的なバイアスについて尋ねていたので、私は質問を理解しました。あなたはバイアスを知った後にどんな観察をするのかと答えているようです。