我有以下数据集:
{{1}}
当绘制时,它看起来像指数衰减或负ln函数。
我正在尝试为这些数据拟合平滑的曲线,但我不知道如何。我已经尝试过nls和lm函数,但我似乎无法做到正确。在线示例对于我所拥有的简单数据有太多步骤,我无法理解为我所需要的修改示例。任何帮助或建议将不胜感激。谢谢。
编辑:当我说我尝试了nls和lm函数时,我的意思是无论我尝试什么参数,产生的线都是线性的。 当我说太多步骤时,我的意思是我发现的例子是用2个自变量预测,或用于创建多个拟合线。 我要问的是,将简单平滑线拟合到数据的最佳方法是什么,当绘制时,看起来像指数衰减或负ln。这条线的等式并不重要,它意味着是数据形状的参考。
答案 0 :(得分:3)
将曲线拟合到函数的一种好方法是内置nls
函数,该函数执行非线性最小二乘优化。例如,如果您想要适合模型y = b * x^e
,则可以执行以下操作:
n <- nls(y ~ b * x ^ e, data = data.frame(x, y), start = c(b = 1000, e = -1))
(?nls
或this walkthrough可以告诉您有关这些选项的更多信息)。然后,您可以在点上绘制曲线:
plot(x, y)
curve(predict(n, newdata = data.frame(x = x)), add = TRUE)
您可以尝试一些其他模型(由nls
中的公式指定),以适合您的数据。
答案 1 :(得分:0)
也许&#39; lowess&#39;你正在寻找什么?尝试:
plot(y ~ x)
lines(lowess(y ~ x))
该功能只是连接点。听起来你更喜欢能够抚平肘部的东西。原则上,黄土&#39;对此有用,但是你没有足够的数据点可以使它工作。