Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R:幂函数拟合-错误修复等_R_Error Handling_Non Linear Regression - Fatal编程技术网

R:幂函数拟合-错误修复等

R:幂函数拟合-错误修复等,r,error-handling,non-linear-regression,R,Error Handling,Non Linear Regression,我想要适合以下类型的电源型号: 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

我想要适合以下类型的电源型号:

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

如果b=0,那么z的一个小扰动将不会对rhs的值产生影响,因此它的奇异性正如它所说的。对不起,我是r的新手,你能告诉我如何设置b和z吗。谢谢您将b的起始值设置为0。不要那样做。