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*