如何在R中绘制对数曲线?

时间:2015-07-07 19:20:34

标签: r plot curve-fitting curve logarithm

我有以下数据集:

{{1}}

当绘制时,它看起来像指数衰减或负ln函数。

我正在尝试为这些数据拟合平滑的曲线,但我不知道如何。我已经尝试过nls和lm函数,但我似乎无法做到正确。在线示例对于我所拥有的简单数据有太多步骤,我无法理解为我所需要的修改示例。任何帮助或建议将不胜感激。谢谢。

编辑:当我说我尝试了nls和lm函数时,我的意思是无论我尝试什么参数,产生的线都是线性的。 当我说太多步骤时,我的意思是我发现的例子是用2个自变量预测,或用于创建多个拟合线。 我要问的是,将简单平滑线拟合到数据的最佳方法是什么,当绘制时,看起来像指数衰减或负ln。这条线的等式并不重要,它意味着是数据形状的参考。

2 个答案:

答案 0 :(得分:3)

将曲线拟合到函数的一种好方法是内置nls函数,该函数执行非线性最小二乘优化。例如,如果您想要适合模型y = b * x^e,则可以执行以下操作:

n <- nls(y ~ b * x ^ e, data = data.frame(x, y), start = c(b = 1000, e = -1))

?nlsthis 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;对此有用,但是你没有足够的数据点可以使它工作。