【发布时间】:2015-02-07 15:53:41
【问题描述】:
我想定义我自己的密度函数,用于从R 的bbmle 包中对mle2 的公式调用。模型的参数是估计的,但我不能在返回的 mle2 对象上应用 residuals 或 predict 之类的函数。
这是我为简单泊松模型定义函数的示例。
library(bbmle)
set.seed(1)
hpoisson <- rpois(1000, 10)
myf <- function(x, lambda, log = FALSE) {
pmf <- (lambda^x)*exp(-lambda)/factorial(x)
if (log)
log(pmf)
else
pmf
}
myfit <- mle2(hpoisson ~ myf(lambda), start = list(lambda=9), data=data.frame(hpoisson))
residuals(myfit)
在myfit 中,lambda 估计正确,但是当我在myfit 上调用残差时,我收到一条错误消息:
Error in myf(9.77598906811668) :
argument "lambda" is missing, with no default
另一方面,如果我简单地使用R 的内置dpois 函数按如下方式拟合模型,则会计算残差:
myfit <- mle2(hpoisson ~ dpois(lambda), start = list(lambda=9), data=data.frame(hpoisson))
residuals(myfit)
谁能告诉我我在myf的函数定义中做错了什么?
谢谢
【问题讨论】: