我正在尝试通过优化来获得泊松分布的lambda值。我设法使用optim来做到这一点,par值给了我lambda,但我无法通过使用带有最大值的optimize来做到这一点。
这是我的最佳功能
optim(par = 2, poisson.loglk, x = pdata)
我尝试优化的内容:
optimize(poisson.loglk, x = pdata, interval = c(0,2), maximum = TRUE)$maximum
我想念什么吗?
如果您解释有什么不同,以及您的功能有什么,将非常有帮助。例如,如果我们在下面尝试一个非常简单的示例并对负对数可能性进行优化,则看起来并没有太大不同:
poisson.loglk = function(x,y){-1*sum(dpois(x,lambda=y,log=TRUE))}
lambdas = sapply(seq(2,40,by=2),function(true_lambda){
x = rpois(50,lambda=true_lambda)
p1 = optim(par=2,poisson.loglk,method="Brent",lower=0,upper=40,x=x)$par
p2 = optimize(poisson.loglk,interval=c(0,40),maximum=FALSE,x=x)$minimum
c(p1=p1,p2=p2)
})
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9]
p1 1.960000 3.740000 5.680000 8.480000 10.68000 12.74 13.36 15.12000 18.22000
p2 1.959992 3.739999 5.679986 8.479989 10.68001 12.74 13.36 15.11999 18.22001
[,10] [,11] [,12] [,13] [,14] [,15] [,16] [,17] [,18] [,19]
p1 20.4 20.92 24.44 26.14000 27.48000 30.00000 31.64 32.12 35.78 38.56
p2 20.4 20.92 24.44 26.13999 27.47999 29.99999 31.64 32.12 35.78 38.56
[,20]
p1 40.00000
p2 39.99994