gpt4 book ai didi

r - 使用 stat_quantile 时 ggplot2 中的置信区间带?

转载 作者:行者123 更新时间:2023-12-02 02:55:38 28 4
gpt4 key购买 nike

我想将中值样条线和相应的置信区间带添加到 ggplot2 散点图中。我正在使用'quantreg'-package ,更具体地说是 rqss 函数(加性分位数回归平滑)。

ggplot2中,我可以添加中值样条线,但不能添加置信区间带:

fig = ggplot(dd, aes(y = MeanEst, x = N, colour = factor(polarization)))
fig + stat_quantile(quantiles=0.5, formula = y ~ qss(x), method = "rqss") +
geom_point()

ggplot2 median spline

quantreg-包带有自己的绘图函数; plot.rqss。我可以在其中添加置信带 (bands=TRUE):

plot(1, type="n", xlab="", ylab="", xlim=c(2, 12), ylim=c(-3, 0)) # empty plot
plotfigs = function(df) {
rqss_model = rqss(df$MeanEst ~ qss(df$N))
plot(rqss_model, bands=TRUE, add=TRUE, rug=FALSE, jit=FALSE)
return(NULL)
}
figures = lapply(split(dd, as.factor(dd$polarization)), plotfigs)

enter image description here

但是 quantreg 包附带的绘图函数不是很灵活/不太适合我的需求。是否可以在 ggplot2 图中获得置信带?也许通过模仿 quantreg 包中使用的方法,或者只是从图中复制它们?

数据:pastebin .

最佳答案

你几乎已经拥有它了。当你打电话时

 plot(rqss_model, bands=TRUE, add=TRUE, rug=FALSE, jit=FALSE)

该函数非常有帮助地返回绘制的数据。我们所做的就是抓取数据框。首先对您的函数进行一些小调整,以合理的方式返回数据

plotfigs = function(df) {
rqss_model = rqss(df$MeanEst ~ qss(df$N))
band = plot(rqss_model, bands=TRUE, add=TRUE, rug=FALSE, jit=FALSE)
data.frame(x=band[[1]]$x, low=band[[1]]$blo, high=band[[1]]$bhi,
pol=unique(df$polarization))
}

接下来调用函数并压缩

figures = lapply(split(dd, as.factor(dd$polarization)), plotfigs)
bands = Reduce("rbind", figures)

然后使用geom_ribbon来绘图

## We inherit y and color, so have to set them to NULL
fig + geom_ribbon(data=bands,
aes(x=x, ymin=low, ymax=high,
y=NULL, color=NULL, group=factor(pol)),
alpha=0.3)

关于r - 使用 stat_quantile 时 ggplot2 中的置信区间带?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35159455/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com