R 将`bbmle:mle2`与向量参数一起使用(已经可以使用`optim`)
在尝试进行回归时,我在使用R 将`bbmle:mle2`与向量参数一起使用(已经可以使用`optim`),r,optimization,regression,mle,R,Optimization,Regression,Mle,在尝试进行回归时,我在使用bbmle:mle2函数时遇到一些问题。为了说明我的问题,我举了一个玩具的例子 我们定义泊松分布(或任何自定义分布)的负对数似然: 我可以轻松地使用optim进行回归。以下是截取唯一型号: z1 <- model.matrix(claim ~ 1) optim(par = 0, fn = LL, z = z1, x = claim) 评估大量不同模型的方法非常简单,只需指定模型矩阵即可。如何使其与bbmle软件包中的mle2功能一起工作 如果beta是一维的,我
bbmle:mle2
函数时遇到一些问题。为了说明我的问题,我举了一个玩具的例子
我们定义泊松分布(或任何自定义分布)的负对数似然:
我可以轻松地使用optim
进行回归。以下是截取
唯一型号:
z1 <- model.matrix(claim ~ 1)
optim(par = 0, fn = LL, z = z1, x = claim)
评估大量不同模型的方法非常简单,只需指定模型矩阵即可。如何使其与bbmle
软件包中的mle2
功能一起工作
如果beta
是一维的,我可以这样做:
mle2(minuslogl = function(beta){ LL(beta = beta, z = z1, x = claim) },
start = list(beta = 0))
但是如果beta
是一个向量,那么我会遇到问题:
mle2(
minuslogl = function(beta){ LL(beta = beta, z = z2, x = claim) },
start = list(beta = c(0, 0)),
vecpar = T,
parnames = colnames(z2)
)
我无法获得正确的语法,也无法在文档或案例中找到任何示例来帮助我。问题肯定是,beta
现在是一个向量。文档建议使用vecpar=T
参数是“与optim
兼容”的前进方向。任何提示都将不胜感激
另外,是否有一种方法可以像我在
optim
中那样,以更优雅的方式将日志似然函数中的z
和x
参数传递到mle2
?我认为主要的问题是需要提供start
作为原子向量(而不是列表)
谢谢你的回复,本!这很好,解决了我的问题,所以我应该能够用我的实际日志实现它。干杯
z2 <- model.matrix(claim ~ age)
optim(par = c(0, 0), fn = LL, z = z2, x = claim)
mle2(minuslogl = function(beta){ LL(beta = beta, z = z1, x = claim) },
start = list(beta = 0))
mle2(
minuslogl = function(beta){ LL(beta = beta, z = z2, x = claim) },
start = list(beta = c(0, 0)),
vecpar = T,
parnames = colnames(z2)
)
library(bbmle)
LL2 <- function(beta) {
LL(beta, z = z2, x = claim)
}
parnames(LL2) <- colnames(z2)
mle2(
minuslogl = LL2 ,
start = setNames(c(0,0),colnames(z2)),
vecpar = TRUE
)
mle2(claim~dpois(exp(loglambda)), ## use log link/exp inverse-link
data=data.frame(claim,age), ## need to specify as data frame
parameters=list(loglambda~age), ## linear model for loglambda
start=list(loglambda=0)) ## start values for *intercept*