如果我多次运行for循环nlsLM(),有时由于无用的数据,Rstudio停止并显示以下错误消息: “ nlsModel(formula,mf,start,wts)中的错误: 初始参数估计时的奇异梯度矩阵”
所以我知道并不是每个数据集都可以估算出适合参数,但是我不想要的是整个过程都停止了。
如果没有任何错误,则将系数存储在其中
result[x]
-因此,如果无法将NA存储在result[x]
中,目前我已经尝试了很多目标,但是没有成功。
xx <- c(1:10)
result <- vector("numeric")
width<- vector("numeric")
for(x in xx){
temp <- long[ which(long$NR== x), ]
Ytemp <- temp$Yield
Ttemp <- temp$Treatment
M <- nlsLM(Ytemp ~ (maximum + (minimum - maximum)/(1+exp((Ttemp-
x0)/dx))),
start=list(x0=-10, dx=1))
print(summary(M))
result[x] <- coef(M)[1]
width[x] <- coef(M)[2]
}
round(result, digits = 1)
round(width, digits = 2)
mean <- mean(result)
sd <- sd(result)
我很高兴得到提示!
Matthias
答案 0 :(得分:0)
考虑tryCatch
,将NA
分配给向量,以解决模型调用中的任何错误:
xx <- c(1:10)
result <- vector("numeric")
width<- vector("numeric")
for(x in xx) {
temp <- long[which(long$NR== x),]
Ytemp <- temp$Yield
Ttemp <- temp$Treatment
tryCatch({
M <- nlsLM(Ytemp ~ (maximum + (minimum - maximum)/(1+exp((Ttemp-x0)/dx))),
start=list(x0=-10, dx=1))
print(summary(M)) # PRINT MODEL SUMMARY
result[x] <- coef(M)[1] # ASSIGN COEF
width[x] <- coef(M)[2] # ASSIGN COEF
}, error = function(e) {
print(e) # PRINT ERROR MESSAGE
result[x] <- NA # ASSIGN NA
width[x] <- NA # ASSIGN NA
})
}
round(result, digits = 1)
round(width, digits = 2)
mean <- mean(result, na.rm=TRUE) # REMOVE NA
sd <- sd(result, na.rm=TRUE) # REMOVE NA