【问题标题】:geom_smooth: what is its meaning (why is it lower than the mean?)geom_smooth:它的含义是什么(为什么它低于平均值?)
【发布时间】:2013-05-10 11:36:20
【问题描述】:

我有关于人们每周上班的次数的数据。除了旅行的距离,我对这两个变量之间的关系感兴趣。 (预计频率会随着距离的增加而下降,本质上是负相关。)Cor.test 支持这一假设:-0.08993444,p 值为 2.2e-16。

当我开始绘制此图时,距离显然会随着更频繁的旅行而减少。为了理解大量的点,我使用了 geom_smooth。但我不完全理解结果。根据help pages,这是一个“条件均值”。但是,它似乎永远不会接近真正的平均值,

> mean(aggs3$Distance)
[1] 9.766497

在下面的图中,它似乎永远不会超过 8。 这里发生了什么?我想我真的想要滚动平均值,但是从 zoo 包中发现 rollmean 实现起来很麻烦(您需要先对数据进行排序),并且我想在继续前进之前询问最佳解决方案。非常感谢。

p <- ggplot(data=aggs3, aes(x=N.trips.week, y=Distance))
p + geom_point(alpha = 0.1) + geom_smooth() +
  ylim(0,30) + xlim(0,25)  + ylab("Distance (miles)") +
  stat_density2d(aes(fill = ..level..), geom="polygon", alpha=0.5,na.rm=T, se=0.1) 

(次要无关问题:如何使 2d 密度层轮廓更平滑?)

(P.s. 我知道有更好的方法来可视化这一点 - 例如下面,但为了学习,我需要更好地了解如何使用 geom_smooth。)

【问题讨论】:

  • 假设您使用 geom_smooth 的默认设置,您所看到的实际上是“滚动平均值”,因为使用的 loess 方法本质上是使用本地拟合模型平均。尽管默认值的二次性质可能与您简单的“滚动平均值”预期相冲突。
  • 来吧。于并没有真正向我们展示这些数据。你坚持 ylim=c(0,30) 并且很容易在距离值中存在一些怪异的 9999 值,从而扭曲了平均值。黄土估计对这种影响不敏感。向我们展示max(eggs$Distance)tail(sort(eggs$Distance))
  • @DWin:除非条形图被类似地截断,否则不会有超过 100 的值。
  • @RoyalTS:那么,条形图前两列中绘制为深绿色但未显示在图例中且可能高于 100 的值是什么?
  • 啊!你的眼睛明显比我好。道歉!

标签: r ggplot2 smooth smoothing


【解决方案1】:

geom_smooth 产生的曲线确实是对条件平均函数的估计,即它是以英里为单位的平均距离的估计以每周旅行次数为条件(这是一种特殊的估计器称为 LOESS)。相反,您计算的数字是无条件均值的估计值,即所有数据的均值。

如果是您感兴趣的两个变量之间的关系,您可以通过多种方式对其进行建模。如果你只想要一个线性关系,拟合一个线性模型(lm())就可以了,如果这是你想要绘制的,将method='lm'作为参数传递给geom_smooth会告诉你它是什么样子的。但是您的数据看起来并不像两个变量之间只是简单的线性关系,因此您可能需要更加努力地思考您到底想要做什么!

【讨论】:

  • 平均值周围的灰色带是什么,那是什么?这是一个置信区间吗?
  • @Ray Kodiak 是的
  • 有人碰巧知道我在哪里可以找到关于我可以传递给methods 的methods 的精确文档真的 做什么?另外:如何获得例如的结果y = a x + b 的系数 a, b 的线性拟合?
猜你喜欢
  • 2019-07-13
  • 2019-02-06
  • 1970-01-01
  • 2012-01-07
  • 2014-05-26
  • 2016-06-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多