R:幂函数拟合 - 错误修复等
R: power function fitting - error fix and more
我想安装以下型号的电源型号:
y = b*x(^z)
我的数据是海量包裹的动物数据。
我的代码在这里:
library(MASS)
nls(brain~b*body^z,start = list(b = 0, z = 1),data=Animals)
它有一个错误我不知道如何修复
Error in nlsModel(formula, mf, start, wts) :
singular gradient matrix at initial parameter estimates
而且我想问的是适合这个模型使用我的函数吗
感谢您的帮助!
你有两个错误。一个是由于 b=0 导致的奇异梯度,另一个是有两种不同类型的动物遵循完全不同的分布。
查看分布:
固定奇异梯度仍然产生错误:
> nls(brain~b*body^z,start = list(b = 0.1, z = 1),data=Animals)
Error in numericDeriv(form[[3L]], names(ind), env) :
Missing value or an infinity produced when evaluating the model
因此,您也应该这样做:
subset(Animals, ! body > 9000) -> mammals
nls(brain~b*body^z,start = list(b = 0.1, z = 1),data=mammals)
Nonlinear regression model
model: brain ~ b * body^z
data: mammals
b z
15.5540 0.6795
residual sum-of-squares: 4301588
Number of iterations to convergence: 13
Achieved convergence tolerance: 3.321e-06
我想安装以下型号的电源型号:
y = b*x(^z)
我的数据是海量包裹的动物数据。
我的代码在这里:
library(MASS)
nls(brain~b*body^z,start = list(b = 0, z = 1),data=Animals)
它有一个错误我不知道如何修复
Error in nlsModel(formula, mf, start, wts) :
singular gradient matrix at initial parameter estimates
而且我想问的是适合这个模型使用我的函数吗
感谢您的帮助!
你有两个错误。一个是由于 b=0 导致的奇异梯度,另一个是有两种不同类型的动物遵循完全不同的分布。
查看分布:
> nls(brain~b*body^z,start = list(b = 0.1, z = 1),data=Animals)
Error in numericDeriv(form[[3L]], names(ind), env) :
Missing value or an infinity produced when evaluating the model
因此,您也应该这样做:
subset(Animals, ! body > 9000) -> mammals
nls(brain~b*body^z,start = list(b = 0.1, z = 1),data=mammals)
Nonlinear regression model
model: brain ~ b * body^z
data: mammals
b z
15.5540 0.6795
residual sum-of-squares: 4301588
Number of iterations to convergence: 13
Achieved convergence tolerance: 3.321e-06