曲线中的不同lowess曲线和R中的qplot

时间:2014-12-30 11:52:54

标签: r ggplot2 statistics

我将两个图表与每种情况下叠加的非参数lo(w)ess曲线进行比较。问题在于曲线看起来非常不同,尽管它们的参数(例如span)是相同的。

enter image description here

enter image description here

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中产生相同的曲线吗?

谢谢

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

或者,您可以使用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")