gpt4 book ai didi

r - 如何将 stat_ecdf 与 geom_ribbon 结合使用?

转载 作者:行者123 更新时间:2023-12-04 11:51:33 26 4
gpt4 key购买 nike

我正在尝试使用 绘制一些具有“置信区间”的数据的 ECDF,通过阴影区域表示。 ggplot2 .我在合并时遇到问题 geom_ribbon()stat_ecdf()达到我追求的效果。

考虑以下示例数据:

set.seed(1)
dat <- data.frame(variable = rlnorm(100) + 2)
dat <- transform(dat, lower = variable - 2, upper = variable + 2)

> head(dat)
variable lower upper
1 2.534484 0.5344838 4.534484
2 3.201587 1.2015872 5.201587
3 2.433602 0.4336018 4.433602
4 6.929713 4.9297132 8.929713
5 3.390284 1.3902836 5.390284
6 2.440225 0.4402254 4.440225

我能够生成 variable 的 ECDF使用
library("ggplot2")
ggplot(dat, aes(x = variable)) +
geom_step(stat = "ecdf")

但是我无法使用 lowerupperyminymax美学 geom_ribbon()将置信区间作为另一层叠加在图上。我试过了:
ggplot(dat, aes(x = variable)) +
geom_ribbon(aes(ymin = lower, ymax = upper), stat = "ecdf") +
geom_step(stat = "ecdf")

但这会引发以下错误
Error: geom_ribbon requires the following missing aesthetics: ymin, ymax

有没有办法哄 geom_ribbon()stat_ecdf() 合作产生阴影置信区间?或者,任何人都可以建议添加由 lower 定义的阴影多边形的替代方法。和 upper作为 ECDF 图的一层?

最佳答案

试试这个(在黑暗中拍摄一点):

ggplot(dat, aes(x = variable)) +
geom_ribbon(aes(x = variable,ymin = ..y..-2,ymax = ..y..+2), stat = "ecdf",alpha=0.2) +
geom_step(stat = "ecdf")

好的,所以这与您尝试做的事情不同,但它应该解释发生了什么。 stat正在返回一个仅包含原始 x 和计算出的 y 的数据框,所以我认为这就是您需要处理的全部内容。即 stat_ecdf一次只计算单个 x 的累积分布函数。

我能想到的唯一另一件事是显而易见的,分别计算下限和上限,如下所示:
l <- ecdf(dat$lower)
u <- ecdf(dat$upper)
v <- ecdf(dat$variable)
dat$lower1 <- l(dat$variable)
dat$upper1 <- u(dat$variable)
dat$variable1 <- v(dat$variable)

ggplot(dat,aes(x = variable)) +
geom_step(aes(y = variable1)) +
geom_ribbon(aes(ymin = upper1,ymax = lower1),alpha = 0.2)

关于r - 如何将 stat_ecdf 与 geom_ribbon 结合使用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20277658/

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