nlsLM maxiter不会改变

问题描述 投票:0回答:1

我正在运行for循环以进行批量非线性回归。问题是,由于没有足够的迭代,某些列最终会导致错误。

Error in nls(y ~ cbind(1, 1/(1 + exp((xmid - x)/exp(lscal)))), data = xy,  : 
  number of iterations exceeded maximum of 50

我尝试更改迭代次数(以下),但仍然给我相同的错误。我不确定该怎么办。我要么需要它来标记不运行的列,要么对其进行迭代直到收敛。奇怪的是,对于所有运行的程序,它们只需要进行1次迭代,所以我不知道这样做如何可以超过50次?

for(i in 1:(ncol(df))) {jpeg(paste((i), ".jpg"), height = 5, width = 6, units = "in", res = 300)
    plot(time, 
         df[[i]],
         xlab = "time (hours)",
         ylab = "fluorescence (rfu)",
         xlim=c(0, 92), ylim=c(0, 150000),
         pch = 20,
         col = "grey65",
         main=colnames(df[i]))
    N$i <- nlsLM(df[[i]]~SSfpl(time, a, b, c, d), control=nls.lm.control(maxiter=100, nprint = 1))
    lines(time, predict(N$i), col = "black")
    dev.off()
}

任何帮助将不胜感激!

r regression nls
1个回答
0
投票

我做了控制=部分不同。尝试这个:具体来说,我有:

maxiter <- 32000
control = list(maxiter = maxiter, gtol=converge)
© www.soinside.com 2019 - 2024. All rights reserved.