查找带有循环的优化函数的参数估计?

问题描述

我想使用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 (将#修改为@)