4

binom.test の操作について混乱しています。

p=0.5 に対して 4/10 成功のサンプルをテストしたいとします。P 値は次のようになります。

P(X <= 4) + P(X >=6) または P(X <= 4) + 1-P(X <= 5)

本当に:

>pbinom(4,10,p=0.5) + 1-pbinom(5,10,0.5)
[1] 0.7539063

また:

>binom.test(4,10,p=0.5)

Exact binomial test

data:  4 and 10
number of successes = 4, number of trials = 10, p-value = 0.7539

しかし今、95/150 のサンプルを p=0.66 に対してテストしたいと思います。ここで、期待値は 99 なので、P 値は

P(X <= 95) + P(X >= 103) または P(X <= 95) + 1-P(X <= 102)

これは

>pbinom(95,150,.66) + 1-pbinom(102,150,.66)
[1] 0.5464849

しかし

>binom.test(95,150,.66)

    Exact binomial test

data:  95 and 150
number of successes = 95, number of trials = 150, p-value = 0.4914

実際、2 つの P 値の差は正確にdbinom(103,150,.66)です。したがって、R は X=103 を含めることに失敗したようです。

これについて私が推測できる唯一の説明は、R が X=103 を見逃す原因となる .66 の不正確な表現による丸め誤差があるということです。これだけですか、それとも他に何かありますか?

4

1 に答える 1

4

binom.test(x = 95, n = 150, p= 0.66) で p 値を計算するためのコードを次に示します。

relErr <- 1 + 1e-07
d <- dbinom(x, n, p)
m <- n * p
i <- seq.int(from = ceiling(m), to = n)
y <- sum(dbinom(i, n, p) <= d * relErr)
pbinom(x, n, p) + pbinom(n - y, n, p, lower.tail = FALSE)

そのため、binom.test は期待値に関して対称に見えません。C が期待値以上で、正確に C 回成功する確率が正確に x 回成功する確率以下である最初の整数 C を、relErr のファッジ係数まで探します。したがって、p は「期待値から少なくともそれだけ離れた」確率であると言う代わりに、その確率が得られた値と少なくとも同じくらい小さい確率であると言います。

この場合、

dbinom(95,n,p)

0.05334916 です。したがって、binom.test は、dbinom(x,n,p) が 0.05334916 未満になるような x の値を探します。それらは 0:95 と 104:150 であることがわかります。したがって、binom.test は次の値を返します。

sum(dbinom(0:95,n,p)) + sum(dbinom(104:150,n,p))

これは 0.4914044 です。

于 2016-11-19T05:24:41.310 に答える