';奇异梯度';使用nls()函数生成von Bertalanffy生长模型时出错

';奇异梯度';使用nls()函数生成von Bertalanffy生长模型时出错,r,gradient,nls,singular,R,Gradient,Nls,Singular,我试图在R中生成一个von Bertalanffy增长模型,该模型使用nls()函数,但是得到了“奇异梯度”错误 数据集“FladenA”是指我的样本来自的位置,包含“最大高度”和“年龄”数据,这是模型所需的两个变量 这是我用来帮助制作模型的pdf nls中的错误(vbTypical,data=FladenA,start=svTypicala): 奇异梯度 这个“奇异梯度”就是问题所在,有人知道如何解释这个问题以及我如何解决它吗?如果不看数据,很难判断这些模型是否合适;这可能会导致估算困难。快

我试图在R中生成一个von Bertalanffy增长模型,该模型使用
nls()
函数,但是得到了“奇异梯度”错误

数据集“FladenA”是指我的样本来自的位置,包含“最大高度”和“年龄”数据,这是模型所需的两个变量

这是我用来帮助制作模型的pdf

nls中的错误(vbTypical,data=FladenA,start=svTypicala):
奇异梯度


这个“奇异梯度”就是问题所在,有人知道如何解释这个问题以及我如何解决它吗?

如果不看数据,很难判断这些模型是否合适;这可能会导致估算困难。快速下注,您可以尝试使用
lm(log(Max_Height)~Age)获得起始位置
SO R标签的问题必须是可复制的,包括以可在R中方便使用的形式提供输入数据。正如user20650所述,奇异梯度可能是由于模型的错误指定或起始值离最佳值太远造成的。如果使用的起始值太远,可以尝试使用nls2包生成更好的起始值。Base R已经通过
SSasympOff
提供了这一自启动模型,但参数已转换。还可以查看drc包中的AR.2模型。
#load in the appropriate packages
library(FSA)
library(FSAdata)
library(nlstools)

#generate reasonable starting values using vbStarts
svTypical <- vbStarts(Max_Height~Age,data=FladenA)

# unlist used only to save space when viewing the results
unlist(svTypical)

#      Linf          K         t0 
#63.1980478  0.1035328  4.5816629 

# creating object that contains a list of the identified starting values
svTypical <- list(Linf=63.1980478,K=0.1035328,t0= 4.5816629)
#Name and input the growth model 
vbTypical <- Max_Height~Linf*(1-exp(-K*(Age-t0)))

# use the nls function with the vbTypical as the growth model expression, dataset for which to draw the variables as Fladen A, and the list containing the starting parameter values as svTypical

fitTypical <- nls(vbTypical,data=FladenA,start=svTypical)