我有一个计算二项分布概率的函数.用户可以输入样本概率.比方说,他们35分中有25分.他们计算概率为0.7143,并将其输入到函数中.
因为我使用的是pbinom(),所以我将把概率乘以样本大小以得到分位数.当我在这里复制数学时,请看一下不同之处,第一个是计算的分位数,第二个是实际计数.
> 2*pbinom(.7143*35,35,.5,lower.tail = FALSE)+dbinom(.7143*35,35,.5)
[1] 0.005988121
Warning message:
In dbinom(0.7143 * 35, 35, 0.5) : non-integer x = 25.000500
> 2*pbinom(25,35,.5,lower.tail = FALSE)+dbinom(25,35,.5)
[1] 0.01133098
尾部的这个数量的差异可能会导致不同的结论.
下面是一个不属于尾部的例子,满分35分,有18分:
> 2*pbinom(.5143*35,35,.5,lower.tail = FALSE)+dbinom(.5143*35,35,.5)
[1] 0.7358788
Warning message:
In dbinom(0.5143 * 35, 35, 0.5) : non-integer x = 18.000500
> 2*pbinom(18,35,.5,lower.tail = FALSE)+dbinom(18,35,.5)
[1] 0.8679394
这是p值的13%的差异.
我理解为什么会出现警告消息,我可以通过四舍五入轻松修复它,但为什么分位数中0.0005的微小误差会对计算出的p值产生如此大的影响?