2014-03-03 138 views
1

我试图在R中整合泊松分布(dpois),但我得到了一个不正确的答案(0,绝对误差为0)和21个警告。我不明白R是如何消化我的简餐以及为什么会吐出21个警告。泊松分布(dpois)积分R

dpoisd1 <- function(x) {dpois(x, 0.0001)} 
    dpoisd1(1:20) 
    integrate(dpoisd1, lower = 1, upper = 20) 

它产生0,绝对误差< 0和大约21个警告。如果有人能向我展示我的错误,我将不胜感激。

回答

5

使用warnings来看看警告:

warnings() 
#Warning messages: 
#1: In dpois(x, 1e-04) : non-integer x = 10.500000 
#<snip> 

dpois第一个参数必须是一个非负整数(见help("dpois"))。 integrate将非整数值传递给它。事实上,目前尚不清楚,你想要计算什么。您正在尝试整合离散密度函数。可能你想要ppois,累积分布函数。

+1

只是为了放大,像泊松这样的离散概率分布,可以通过简单地将它们相加来求和概率。集成只需要持续分发。所以在这里,使用'sum(dpoisd1(1:20))'或(如罗兰提示)'ppois(20,.0001) - ppois(0,.0001)' –