我有一个计算二项分布概率的函数.用户可以输入样本概率.比方说,他们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值产生如此大的影响?

推荐答案

文档中有一条 comments 直接涉及到这一点:

If an element of x is not integer, the result of dbinom is zero, with a warning.

所以这不是数字错误,本质上是,如果你给dbinom一个非整数,它总是返回0,并带有一个警告.因此,是的,解决方案是始终判断您的输入,以确保它们是整数.

R相关问答推荐

手工PCA上的载体与输出双图不匹配

是否有R代码来判断一个组中的所有值是否与另一个组中的所有值相同?

在ComplexHeatmap中,如何更改anno_barplot()标题的Angular ?

R Markdown中的交叉引用表

保存包含循环和ifelse的函数的输出

如何通过Docker部署我的shiny 应用程序(多个文件)

为什么我的基准测试会随着样本量的增加而出现一些波动?

在ggplot中为不同几何体使用不同的 colored颜色 比例

如果可能,将数字列转换为整数,否则保留为数字

在R中按行按列范围查找最大值的名称

如何删除仅在数据集顶部和底部包含零的行

有没有办法使用ggText,<;Sub>;&;<;sup>;将上标和下标添加到同一元素?

更改STAT_VALLES/STAT_PEAKS中的箭头线宽/大小

您是否可以将组添加到堆叠的柱状图

在纵向数据集中创建新行

R中时间间隔的大向量与参考时间间隔的相交

如何从嵌套数据中自动创建命名对象?在R中

注释不会绘制在所有ggplot2面上

生存时间序列的逻辑检验

如何编辑被动式数据表?