【发布时间】:2019-09-15 07:54:07
【问题描述】:
以下是我的数据集的摘录:相对频率和大小。从空心圆可以看出,这是一个高斯分布。我在 R 中使用 nls 包来拟合非线性曲线。
我的方程式是
或纯文本:c * e^(-(x - z)^2/l)
我是这样来的
fit <- as.formula(y~c*(exp((-(x-z)^2/l))))
preview(fit_partial, data=mydata, start=list(c=0.005, x=mydata$x_values, z=130,l=2000))
起始值似乎合理。所以我尝试获得非线性拟合
nls_fit <- nls(fit, data=mydata, start=list(c=0.005, x=mydata$x_values, z=130, l=2000))
但是,我遇到了一个错误
numericDeriv(form[[3L]], names(ind), env) 中的错误: 评估模型时产生的缺失值或无穷大
这可能是因为我的起始值很差。不过,一定还有其他问题。感谢任何帮助。
【问题讨论】:
-
如果您包含一个简单的reproducible example,其中包含可用于测试和验证可能解决方案的示例输入和所需输出,则更容易为您提供帮助。但我不认为
x应该在你的开始列表中。如果您使用带有data=参数的公式,它将能够在data.frame 中找到值。您不想估计x的值。这些是给定的。 -
@MrFlick 好的,我将努力为我的示例添加更多内容。是的,我不想预测 x; x 来自我的数据集。如果我从开始列表中删除 x,我会收到错误
parameters without starting value in 'data': x我对编程和 R 的总体掌握非常薄弱;你能澄清一下你的意思吗? -
我认为这个例子写得很好,但是如果不了解你的数据是什么样子就很难排除故障。您能否从中抽取一个小样本,在样本上重现问题,并在您的帖子中分享该样本数据(使用
dput(my_data)等函数)?
标签: r nls non-linear-regression