我想定义我自己的密度函数,用于从R
的bbmle
包中调用mle2
的公式。估计模型的参数,但我不能在返回的mle2
对象上应用residuals
或predict
之类的函数。mle2公式调用的自定义密度函数定义的错误
这是一个例子,我定义了一个简单泊松模型的函数。
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
,拉姆达正确地估计,但是当我呼吁myfit
残差,我得到它说的错误:
Error in myf(9.77598906811668) :
argument "lambda" is missing, with no default
在另一方面,如果我只是拟合模型如下使用内置的dpois
功能R
的,残差计算:
myfit <- mle2(hpoisson ~ dpois(lambda), start = list(lambda=9), data=data.frame(hpoisson))
residuals(myfit)
谁能告诉我我是什么在myf
的函数定义中做错了?
感谢
非常感谢。这样可行! – 2015-02-07 17:24:24
亲爱的本,我的目标是定义一个非齐次泊松过程,其中dmyf中的lambda是协变量的函数。再次,我已经尝试过了,并且正确估计了协变量的系数。但是我想知道,在这种情况下,我在smyf中指定的时刻是否有意义,如果我能够正确预测过程的结果并对其进行一些诊断。你有什么建议,我可以找到更多信息?我已经尝试过NHPoisson产生很棒的情节,但我不确定我可以根据自己的需要量身定做。所以我想知道这是否可以用bbmle来完成。 – 2015-02-07 17:56:40
好吧,如果你想计算残差,那么你需要定义*一些*预测值,这样你就可以比较预测值和观测值... – 2015-02-07 18:03:37