簡體   English   中英

R binom.test舍入錯誤?

[英]R binom.test roundoff error?

我對binom.test的操作感到困惑。

假設我想測試4/10成功的樣本對p = 0.5。 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

實際上,兩個P值的差異恰好是dbinom(103,150,.66) 所以似乎R未能包括X = 103。

我可以猜到的唯一解釋是,由於.66的不精確表示導致R僅錯過X = 103,因此存在舍入誤差。 這就是全部,還是還有其他事情發生?

這是用於計算binom.test中p值的代碼(x = 95,n = 150,p = 0.66)

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大於或等於預期值,並且獲得精確C成功的概率小於或等於獲得正好x次成功的概率,直到relErr中的軟糖因子。 因此,他們不是說p是“至少遠離預期值”的概率,而是說p是概率至少與您獲得的值一樣小的概率。

在這種情況下,

dbinom(95,n,p)

是0.05334916。 因此,binom.test查找x的值,使得dbinom(x,n,p)小於0.05334916。 事實證明那些是0:95和104:150。 所以,binom.test返回值

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

這是0.4914044。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM