拟合多条Gompertz曲线并跳过R中的错误(nlsList和SSgompertz)
我正在尝试使用SSgompertz拟合数百条gompertz形状的曲线。数据集有三列,分别为“x”和“y”值,以及一个编码列,用于将数据分隔为不同的样本:“分组”。稍后,这些参数将用于使用predict()从y轴上的固定点确定所有样本的x(拟合点方法) 在使用以下代码将参数输入predict()之前,我设法将多个多项式拟合到数据中:拟合多条Gompertz曲线并跳过R中的错误(nlsList和SSgompertz),r,lm,nls,R,Lm,Nls,我正在尝试使用SSgompertz拟合数百条gompertz形状的曲线。数据集有三列,分别为“x”和“y”值,以及一个编码列,用于将数据分隔为不同的样本:“分组”。稍后,这些参数将用于使用predict()从y轴上的固定点确定所有样本的x(拟合点方法) 在使用以下代码将参数输入predict()之前,我设法将多个多项式拟合到数据中: 参数nlsList已在内部使用try。您的问题似乎是na.action设置(na.fail是默认设置)。使用na.省略: nlsList(y~SSgompertz(
参数
nlsList
已在内部使用try
。您的问题似乎是na.action
设置(na.fail
是默认设置)。使用na.省略:
nlsList(y~SSgompertz(x, Asym, xmid, scal)|GROUPING, data=data, na.action = na.omit)
#Call:
# Model: y ~ SSgompertz(x, Asym, xmid, scal) | GROUPING
# Data: data
#
#Coefficients:
# Asym xmid scal
#1 618.774 2.031473 0.831752
#643 618.774 2.031473 0.831752
Degrees of freedom: 16 total; 10 residual
Residual standard error: 30.44042
编写一个循环,用tryCatch
调用nls
。这不是tryCatch
的正确用法。研究这一点:顺便说一句。如果您提供了一个示例,我可能会告诉您如何执行此操作。很抱歉之前没有这样做,我现在添加了一些示例数据。是否有方法跳过拟合不良的数据,这些数据会产生错误,例如:“迭代次数超过最大50次”,我相信nlsList
已经这样做了。提供一个没有的例子。
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))
nlsList(y~SSgompertz(x, Asym, xmid, scal)|GROUPING, data=data, na.action = na.omit)
#Call:
# Model: y ~ SSgompertz(x, Asym, xmid, scal) | GROUPING
# Data: data
#
#Coefficients:
# Asym xmid scal
#1 618.774 2.031473 0.831752
#643 618.774 2.031473 0.831752
Degrees of freedom: 16 total; 10 residual
Residual standard error: 30.44042