R:如何使用命名向量初始化mle2中的参数值

时间:2016-08-17 04:10:48

标签: r

我是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吗?如果是这样,怎么样?

非常感谢!

1 个答案:

答案 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")