我目前正在修改我提供的一些R代码,以满足我的需求。
情况如下:
我们正在绘制约200行。 然后他们使用LOWESS来获得最佳曲线。
现在看起来像这样:
lines(lowess(x.lowess, y.lowess), lwd = 3)
其中x.lowess和y.lowess是相应的坐标,每个坐标都在一个向量中,例如:
> dput(x.lowess)
c(0.268309377138946, 0.511978097193703, 0.785763175906913, 0.974674880219028, ... )
> dput(y.lowess)
c(0.8, 0.5, 0.8, 0.5, ... )
我现在正在寻找一条正在运行的中间曲线,而不是一条LOWESS最佳拟合曲线。
这样做有简单的方法/功能吗?
关于情节的一个例子,请在flickr上看到这个(对不起,不能直接上传它,我在这里是新的,不允许:) plot with lowess smoothing curve in red
答案 0 :(得分:2)
生成一些样本数据:
set.seed(1001)
x <- runif(1000)
y <- runif(1000)
dat <- data.frame(x,y)
使用quantreg
包查找中位数作为x的函数:
library(quantreg)
q1 <- rq(y~x,data=data.frame(x,y))
xvec <- seq(0,1,length=101)
pq <- predict(q1,newdata=data.frame(x=xvec))
绘制基础图形:
plot(x,y,pch=".")
lines(lowess(x,y))
lines(xvec,pq,col=2)
或使用ggplot2
:
library(ggplot2)
theme_set(theme_bw())
qplot(x,y,data=dat,size=I(0.8),alpha=I(0.2))+
geom_smooth(method="loess")+
stat_quantile(quantiles=0.5,formula=y~x,colour="red")