我想定義我自己的密度函數,用於從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