我有一些的功能,以或的形式,其中是已知的。的形式重写(近似值)它们,其中、和是任意的。
我不认为有、和使得两条曲线完全匹配,所以我认为可能尝试拟合非线性回归并找到最接近、和。我尝试了以下 R 代码,我得到了奇异梯度错误。
x = seq(1, 50000, by=1000)
y = 50*sqrt(x)
model = nls(y ~ a/(1 + b*x^c), start=list(a=1, b=-0.01, c=0.01))
我有一些的功能,以或的形式,其中是已知的。的形式重写(近似值)它们,其中、和是任意的。
我不认为有、和使得两条曲线完全匹配,所以我认为可能尝试拟合非线性回归并找到最接近、和。我尝试了以下 R 代码,我得到了奇异梯度错误。
x = seq(1, 50000, by=1000)
y = 50*sqrt(x)
model = nls(y ~ a/(1 + b*x^c), start=list(a=1, b=-0.01, c=0.01))
你有几个问题。如果您重新参数化您的拟合函数,则最容易看到最大的问题
至
(这给出了相同的模型拟合,只是某些参数与您对模型的表达不同)
现在让我们看看你的数据:
也就是说,、和 ,您的模型完全适合您的数据。
因此,将其恢复为您尝试拟合的原始形式,或和。
所以三个问题:
有一个山脊
(ii)越大,拟合越好(误差平方和将被最小化为。
(iii) 作为,拟合中没有错误。这给拟合算法带来了一些困难——它不能很好地终止,但如果你解决了前两个问题,它仍然可以找到拟合。(如果您在前两个问题解决后打开,并从合理的位置开始,它确实会找到我提到的参数值 -是迹线为 SSE、b1 和 c 提供的值。如果您使用收敛标准,您也许可以将结果存储在.)trace=TRUE
1.662634e-22 : 0.02 -0.50
model
(好吧,亚历克西斯正确地指出你的起始值不好,所以也许这是四个问题。)