我有一个非线性方程组的列表,并希望解决他们同时使用循环。我的目标是找到每个方程的参数和r平方。
x<-c(1,2,3,4,5,6,7)
y<-c(0.12,0.15,0.19,0.29,0.52,0.60,0.66)
下面是方程的列表。
y~a*x+b
y~a*(x-b)
y~a+b*x+c*x^0.5
y~a*x/(b+x)
我可以单独求解每个方程并找到它的参数,但我有20多个方程,不知道是否有一种方法可以通过循环或其他方式求解所有方程。
fit1<-nls(y~a*x+b,start=list(a=1,b=1))
fit2<-nls(y~a*(x-b),start=list(a=1,b=1))
fit3<-nls(y~a+b*x+c*x^0.5,start=list(a=1,b=1,c=1))
fit4<-nls(y~a*x/(b+x),start=list(a=1,b=1))
r方形
Rsq_fit1<-cor(y,predict(fit1))^2
Rsq_fit2<-cor(y,predict(fit2))^2
Rsq_fit3<-cor(y,predict(fit3))^2
Rsq_fit4<-cor(y,predict(fit4))^2
系数和R平方
list(coef(fit1),coef(fit2),coef(fit3),coef(fit4))
list(Rsq_fit1,Rsq_fit2,Rsq_fit3,Rsq_fit4)
1条答案
按热度按时间nwlls2ji1#
如果将
x
和y
放入 Dataframe 中,并将方程放入列表中:然后你可以这样做:
请注意,您的第四个方程不收敛,因此为了便于演示,我对它做了一些修改。
如果您希望以数值格式输出结果,并且即使
nls
失败也能输出结果,您可以执行以下操作: