【问题标题】:Different lowess curves in plot and qplot in RR中的plot和qplot中的不同lowess曲线
【发布时间】:2014-12-30 11:52:53
【问题描述】:

我正在比较两个图表,在每种情况下叠加一个非参数低(w)ess 曲线。问题是曲线看起来非常不同,尽管它们的参数(例如跨度)是相同的。

y<-rnorm(100)
x<-rgamma(100,2,2)
qplot(x,y)+stat_smooth(span=2/3,se=F)+theme_bw()
plot(x,y)
lines(lowess(y~x))

qplot() 生成的图表中似乎有更多的曲线。如您所知,检测曲率在回归分析的诊断中非常重要,我担心如果我使用 ggplot2,我会得出错误的结论。

您能告诉我如何在 ggplot2 中生成相同的曲线吗?

谢谢

【问题讨论】:

  • 您正在使用两种不同的拟合函数:loess 线(使用 qplot)和 lowess(使用 lines)。
  • @SimonO'Hanlon lowess 和 loess 指的是相同的平滑函数。 en.wikipedia.org/wiki/Local_regression,不是吗?如果没有,ggplot2中是否有等效功能?
  • 不,他们没有。仔细阅读!并查看here
  • @SimonO'Hanlon 哇,你说的很对。黄土曲线默认拟合二次局部回归,因此曲率。非常感谢!

标签: r ggplot2 statistics


【解决方案1】:

或者,您可以使用loess(..., degree=1)。这会产生与lowess(...) 非常相似但不完全相同的结果

set.seed(1)    # for reproducibility
y<-rnorm(100)
x<-rgamma(100,2,2)
plot(x,y)
points(x,loess(y~x,data.frame(x,y),degree=1)$fitted,pch=20,col="red")
lines(lowess(y~x))

ggplot

qplot(x,y)+stat_smooth(se=F,degree=1)+
  theme_bw()+
  geom_point(data=as.data.frame(lowess(y~x)),aes(x,y),col="red")

【讨论】:

    【解决方案2】:

    这是一个新的stat 函数,用于与ggplot2 一起使用,它使用lowess()https://github.com/harrelfe/Hmisc/blob/master/R/stat-plsmo.r。您需要加载 proto 包才能使其工作。我喜欢使用lowess,因为它对于任何样本大小都很快,并且允许关闭二进制 Y 的异常值检测。但它不提供置信区间。

    【讨论】:

      猜你喜欢
      • 2013-01-03
      • 2017-07-27
      • 2012-11-25
      • 1970-01-01
      • 2010-12-26
      • 1970-01-01
      • 2018-02-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多