我試圖用SSgompertz來適應數百個gompertz形狀的曲線。該數據集有三列「x」和「y」值和一個編碼列以將數據分成不同的樣本:「GROUPING」。之後,使用predict()函數將參數用於確定所有樣本(擬合點方法)在y軸上的固定點的x值。擬合多個Gompertz曲線並在R中跳過錯誤(nlsList和SSgompertz)
我設法使用此代碼的參數饋送到預測()之前,以適應多個多項式到數據:
參數< -lmList(X〜聚(Y,3,原始= TRUE)| GROUPING ,data = data,na.action = na.omit)
儘管它們中的許多並不是很好。理想情況下,我可以使用非線性迴歸來將數據擬合成gompertz曲線。所以,我想這一點:
參數< -nlsList(Y〜SSgompertz(X,ASYM,xmid,財政)|分組數據=數據幀)
但是,如果無法獲得的情況下一個合適的(不良樣本或非典型曲線形狀)會導致錯誤並停止整個過程。
例如, 「迭代次數超過了最大值50」
有沒有辦法忽略那些沒有建模的樣本,但保留那些參數?
編輯: 我曾嘗試使用循環建議,但我有麻煩得到它的工作(見下面的腳本)。 還輸出不能被送入COEF()
uniq <- unique(unlist(data$GROUPING))
results=list()
for (i in uniq){
Singledata <-data[which(data$GROUPING ==uniq[i]), ]
x<-Singledata$x
y<-Singledata$y
ModelSS <- tryCatch(nls(y~SSgompertz(x, Asym, xmid, scal)))
print(ModelSS)
results[i] = ModelS
}
coef(results)
是否有人可以幫助我瞭解我要去哪裏錯了嗎?
實施例的數據:
data<-data.frame(x=c(0,1,2,4,8,16,32,64,0,1,2,4,8,16,32,64,0,1,2,4,8,16,32,64),
y=c(70,90,160,250,410,510,610,650,
NA,NA,NA,NA,NA,NA,NA,NA,
70,90,160,250,410,510,610,650),
GROUPING=c(1,1,1,1,1,1,1,1,
45,45,45,45,45,45,45,45,643,643,643,643,643,643,643,643))
編寫一個用'tryCatch'調用'nls'的循環。 – Roland
這不正確的使用'tryCatch'。研究這個:http://stackoverflow.com/a/12195574/1412059 – Roland
順便說一句。如果你提供了一個[最小可重現的例子](http://stackoverflow.com/a/5963610/1412059),我可能會告訴你如何做到這一點。 – Roland