我正在运行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()
}
任何帮助将不胜感激!
我做了控制=部分不同。尝试这个:具体来说,我有:
maxiter <- 32000
control = list(maxiter = maxiter, gtol=converge)