为何pbinom与sum(dbinom)两个表达式返回结果不一致?
问题原因解析
你遇到的结果差异,核心是对pbinom函数lower.tail=FALSE参数的理解偏差:
pbinom(z, N, theta, lower.tail = FALSE)返回的是**P(X > z)**的概率,也就是离散变量X严格大于z的上尾概率。- 而
sum(dbinom(z:N, N, theta))计算的是P(X ≥ z),也就是X大于等于z的概率。
对应你的代码,z=3时:
pbinom(3, 45, 0.014, lower.tail=FALSE)实际算的是P(X>3),也就是X取4到45的概率和;sum(dbinom(3:45, 45, 0.014))算的是X取3到45的概率和,比前者多了X=3这一项的概率dbinom(3,45,0.014)。
如果要让两者结果一致,你需要把pbinom的第一个参数改成z-1,也就是:
pbinom(z-1, N, theta, lower.tail = FALSE)
这样它就会返回P(X>2)=P(X≥3),和sum(dbinom(z:N, N, theta))的结果完全匹配。
拿你的参数验证:
dbinom(3,45,0.014)的值约为0.0176;sum(dbinom(3:45,45,0.014))≈ 0.0203;pbinom(3,45,0.014,lower.tail=FALSE)≈ 0.0027,刚好是0.0203减去0.0176的结果。
内容的提问来源于stack exchange,提问作者user21475223
相关产品推荐
相关产品推荐

