如何解决查找带有循环的优化函数的参数估计?
我想使用optim函数计算模型的参数。我尝试使用最逻辑的值作为参数估计值,但不幸的是,它们不能正常工作,因为optim函数无法与我给出的初始参数估计值一起使用。 我以为也许可以写一个循环来测试参数估计值的不同组合并存储这些组合(或者只是第一个组合),从而使optim $ covergence == 0。
但是,我没有成功编写这样的循环。所以我想知道是否有人可以帮助我解决这个问题。或者也许知道解决问题的更好方法
我的代码如下
FN <- function(par,x,k,N){
a1 <- par[1]
aa <- par[2]
b1 <- par[3]
bb <- par[4]
a2 <- par[5]
aa2 <- par[6]
b2 <- par[7]
bb2 <- par[8]
p <- cbind ((a1+aa*(Data$FDS=="low")) + ((b1+bb*(Data$FDS=="low")) * x),1 - (((a2+aa2*(Data$FDS=="low")) * (x ^ 2))/(((b2+bb2*(Data$FDS=="low")) ^ 2) + (x ^ 2))))[cbind(1:length(Data$Location_2),Data$Location_2)]
zprob1 <- par [9]
zprob2 <- par [10]
nll <- -sum(dzibinom(x = k,prob = p,size = N,zprob = c(zprob1,zprob2)[Data$Location_2],log = T))
return(nll)
}
opt1 <- optim(par = c(a1 = 0.38,aa = 0.0001,b1 = 0.04,bb = 0,a2 = 0.61,aa2 = 0.0001,b2 = 1.6,bb2=0.00001,zprob1 = 0.93,zprob2 = 0.89),x = Data$Day,k = Data$k,N = Data$N,fn = FN,hessian = TRUE)
opt2
因此,首先我创建了一个函数(FN),然后针对该函数我要计算优化。但是为此,我需要找到一种方法来获取正确的参数估计值。而且我认为也许有一个循环是可能的。但是,过去的几周我一直在努力编写这样的循环。因此,如果有人有另一个好的解决方案,我也很想听听。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。