在Excel中,拟合一组趋势线中的对数趋势线非常容易。只需单击“添加趋势线”,然后选择“对数”。切换到R以获得更大的功率,我有点不知道应该使用哪个函数来生成此趋势线。
为了生成图形,我使用了ggplot2
和以下代码。
ggplot(data, aes(horizon, success)) + geom_line() + geom_area(alpha=0.3)+
stat_smooth(method='loess')
但是代码做局部多项式回归拟合,这是基于对众多小的线性回归求平均。我的问题是R中是否有类似于Excel中使用的对数趋势线。
我正在寻找的另一种选择是得到形式为y =(c*ln(x))+B的对数方程;是否有coef()函数来获取'c'和'b'?
假设我的数据为:
c(0.599885189,0.588404133,0.577784156,0.567164179,0.556257176,
0.545350172,0.535112897,0.52449292,0.51540375,0.507271336,0.499904325,
0.498851894,0.498851894,0.497321087,0.4964600,0.495885955,0.494068121,
0.492154612,0.490145427,0.486892461,0.482395714,0.477229238,0.471010333)
上述数据是y点,而x点是从1到长度(y)的整数,增量为1。在Excel中:我可以简单地画出这一点,并添加一条对数趋势线,结果将如下所示:
黑色是对数,在R中,如何对上面的数据集进行处理?
4条答案
按热度按时间zpjtge221#
我更喜欢使用基本图形,而不是
ggplot2
:sh7euo9m2#
您可以轻松指定替代平滑方法(如
lm()
、线性最小二乘拟合)和替代公式置信带自动包括:我改变了颜色,使他们可见,因为他们是非常狭窄的。你可以使用
se=FALSE
在stat_smooth
关闭他们。另一个答案告诉你如何得到系数:
我可以想象你接下来可能想把这个方程加到这个图上:参见Adding Regression Line Equation and R2 on graph
gxwragnw3#
我确信一个简单的+scale_y_log10()就能得到你想要的结果。GGPlot统计数据是在转换后计算的,所以loess()是在对数转换后的数据上计算的。
eh57zj3b4#
我刚刚编写了一个blog post here,它描述了如何精确地匹配Excel的对数曲线拟合,该方法的核心是
lm()
函数:希望能有所帮助。