nls中具有正确起始值的奇异梯度误差


19

我正在尝试将线+指数曲线拟合到一些数据。首先,我尝试对一些人工数据执行此操作。该函数为: 它实际上是具有线性截面的指数曲线,以及附加的水平移位参数(m)。但是,当我使用R 函数时,即使使用的参数与最初生成数据时使用的参数相同,也会出现可怕的“ 初始参数估计时的奇异梯度矩阵 ”错误。 我尝试了不同的算法,不同的起始值并尝试使用

y=a+br(xm)+cx
nls()
optim最小化剩余平方和,无济于事。我已经读到,可能的原因可能是公式的参数设置过高,但我不认为是(是吗?)
有人对此问题有建议吗?还是这只是一个尴尬的模型?

一个简短的例子:

#parameters used to generate the data
reala=-3
realb=5
realc=0.5
realr=0.7
realm=1
x=1:11 #x values - I have 11 timepoint data
#linear+exponential function
y=reala + realb*realr^(x-realm) + realc*x
#add a bit of noise to avoid zero-residual data
jitter_y = jitter(y,amount=0.2)
testdat=data.frame(x,jitter_y)

#try the regression with similar starting values to the the real parameters
linexp=nls(jitter_y~a+b*r^(x-m)+c*x, data=testdat, start=list(a=-3, b=5, c=0.5, r=0.7, m=1), trace=T)

谢谢!


2
提示:看的系数(对于固定- [R ),并注意b - [R - = 常数有解决方案的一维家族b b = - [R 恒定rxrbrm=constant(b,m)b=rmconstant
ub

1
除非或受到某种约束,否则这不是确定的模型。我认为需要[R 0 1 将做的工作。[Rbrr(0,1)

Answers:


16

我最近被这个咬了。我的意图是相同的,制作一些人造模型并进行测试。主要原因是@whuber和@marco给出的原因。此类模型尚未确定。要看到这一点,请记住NLS最小化了该功能:

i=1n(yiabrximcxi)2

假设通过一组参数(a,b,m,[RC将其最小化。不难看出这组参数一种b[R-0[RC将给出相同的要最小化的函数值。因此,无法识别模型,即没有唯一的解决方案。

不难理解为什么梯度是奇异的。表示

f(a,b,r,m,c,x)=a+brxm+cx

然后

fb=rxm

fm=blnrrxm

我们为所有人 x

blnrfb+fm=0.

因此矩阵

(f(x1)f(xn))

不会达到最高等级,这就是为什么nls会给出奇异梯度消息的原因。

我花了一个多星期的时间在其他地方的代码中寻找错误,直到我注意到主要的错误在模型中:)


2
我知道这已经很久了,但我只是想知道,这是否意味着nls无法在无法识别的模型上使用?例如,神经网络?
2015年

我知道机会多多了,但是您能为那些减少钙记忆的人分解一下吗?:)。另外,OP的解决方案是什么?放弃回家
森林生态学家,

2
brxmβrxmββ=brm

@CountZero,基本上是,如果参数不确定,通常的优化方法将失败。但是,神经网络通过添加其他约束和使用其他有趣的技巧来回避此问题。
mpiktas

fm=blnr rxm

17

上面的答案当然是正确的。根据nls帮助页面上的内容,除了给出的说明以外,如果您要在人工数据集上尝试这样做,则还可以: http //stat.ethz.ch/R-manual/R-patched/ library / stats / html / nls.html

R的nls无法处理它。帮助页面特别指出:

警告

不要在人工“零残差”数据上使用nls。

nls函数使用相对偏移收敛准则,该准则将当前参数估计值处的数值不精确度与残差平方和进行比较。这在以下形式的数据上表现良好

y = f(x,θ)+ eps

(var(eps)> 0)。它不能表示形式数据的收敛性

y = f(x,θ)

因为该标准等于比较四舍五入误差的两个分量。如果您想对人工数据进行nls测试,请添加一个噪声分量,如下例所示。

因此,没有噪音对R的nls没有好处。


欢迎使用该网站@B_D_Dubbya。我随意格式化您的答案,希望您不要介意。您可以在此处找到有关编辑简历的更多信息。
gung-恢复莫妮卡

1
我知道这个问题-因此使用“抖动”功能添加一些噪音
steiny
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.