我想要适合类型的力量模型:
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
我想问一下,使用我的功能是否适合这个模型。
感谢您的帮助!
答案 0 :(得分:2)
你有两个错误。一个是由于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