我在R和StackOverflow中都很新。我试图在for循环中使用nlsLM创建一个大型引导程序。 nlsLM必须运行大约1000或1500次,每个循环使用大约70%的随机排序的数据。如果我运行我的代码大约100次它工作正常,但有1000或1500循环它给我一个错误,如" nlsModel中的错误(formula,mf,start,wts):初始参数估计时的奇异梯度矩阵"。我已尝试过不同的起始值,但始终会遇到相同的错误。这是我的代码:
fitpoly2.btsp<-function(rep,s.rep) {
nsample<-round(nrow(dados)*(s.rep/100))
coefpoly2<-matrix()
for (i in 1:rep) {
rand<-dados[sample(nrow(dados),nsample),]
poly2fitted<-tryCatch({poly2fitted<-tryCatch({
nlsLM(Weight ~ (a1 * Length^b1) * (1/(1 + exp(rate *(Length - scp)))) + (a2 * Length^b2) *(1 - (1/(1 + exp(rate * (Length - scp))))),data=rand,start=list(a1=0.01,b1=2.8,a2=0.02,b2=3,scp=36,rate=10),control=nls.lm.control(maxiter=1024),lower=c(0,0,0,0,0,1),upper=c(1,6,1,6,74,20),trace=TRUE)})
if (i==1){ coefpoly2<-coef(poly2fitted)
} else {
coefpoly2<-rbind(coefpoly2,coef(poly2fitted))}
}}
好吧,我的朋友们,我知道这个问题很容易解决,也许我的代码是错误的或原始的,但我真的不知道如何解决它。
感谢您的帮助和建议!!