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