我是R的初学者,需要用它来估算一个MLE。我正在使用mle2功能。但是因为我有很多自变量,所以在调用mle2时我需要传递许多参数值。例如
library(bbmle)
x <- mle2(probit, start=list(b0=1,b1=1,b2=1,c0=1,c1=1,d0=1,d1=1),method="BFGS")
相反,我想创建一个长度为7的向量theta,并在我调用mle2时传递它。像
这样的东西x <- mle2(probit, start=theta,method="BFGS")
确实这不起作用。我是否需要更改我如何定义函数probit以使用向量作为参数?
我经历了与传递向量作为参数相关的现有线程,他们建议使用do.call,但可以用来调用mle2吗?如果是这样,怎么样?
非常感谢!答案 0 :(得分:1)
如果我理解正确,您的目标是通过找到传递参数值的单个向量的方法来减少样板。您可以通过定义一个实用程序函数来实现这一点,该函数将未命名条目的单个向量转换为适合您的模型和mle2
的命名列表:
## vector of un-named entries
theta <- c(1,1,1,1,1,1,1)
## utility function
toList <- function(th) structure(as.list(th), names=c("b0","b1","b2","c0","c1","d0","d1"))
## check
identical(toList(theta), list(b0=1,b1=1,b2=1,c0=1,c1=1,d0=1,d1=1))
## now this should work
x <- mle2(probit, start=toList(theta), method="BFGS")