gpt4 book ai didi

r - 在 R 中绘制具有置信区间的时间序列

转载 作者:行者123 更新时间:2023-12-02 04:47:11 30 4
gpt4 key购买 nike

这是我在 R 中制作的几个不同时间序列的图:enter image description here

我用一个简单的循环制作了这些:

for(i in 1:ngroups){
x[paste0("Group_",i)] = apply(x[,group == i],1,mean)
}

plot(x$Group_1,type="l",ylim=c(0,300))
for(i in 2:ngroups){
lines(x[paste0("Group_",i)],col=i)
}

我也可以使用 matplot 绘制此图。现在,如您所见,每个组都是其他几列的平均值。我想要做的是绘制上图中的系列,但另外显示有助于该平均值的基础数据的范围。例如,紫色线将以浅紫色阴影区域为界。在任何给定时间索引处,紫色区域将从紫色组中的最低值扩展到最高值(或者说,5 到 95 个百分位数)。有没有优雅/聪明的方法来做到这一点?

最佳答案

这是使用 graphics 包(R 附带的图形)的答案。我还尝试解释 polygon(用于生成 CI)是如何创建的。这可以重新用于解决您的问题,对此我没有确切的数据。

# Values for noise and CI size
s.e. <- 0.25 # standard error of noise
interval <- s.e.*qnorm(0.975) # standard error * 97.5% quantile

# Values for Fake Data
x <- 1:10 # x values
y <- (x-1)*0.5 + rnorm(length(x), mean=0, sd=s.e.) # generate y values

# Main Plot
ylim <- c(min(y)-interval, max(y)+interval) # account for CI when determining ylim
plot(x, y, type="l", lwd=2, ylim=ylim) # plot x and y

# Determine the x values that will go into CI
CI.x.top <- x # x values going forward
CI.x.bot <- rev(x) # x values backwards
CI.x <- c(CI.x.top, CI.x.bot) # polygons are drawn clockwise

# Determine the Y values for CI
CI.y.top <- y+interval # top of CI
CI.y.bot <- rev(y)-interval # bottom of CI, but rev Y!
CI.y <- c(CI.y.top,CI.y.bot) # forward, then backward

# Add a polygon for the CI
CI.col <- adjustcolor("blue",alpha.f=0.25) # Pick a pretty CI color
polygon(CI.x, CI.y, col=CI.col, border=NA) # draw the polygon

# Point out path of polygon
arrows(CI.x.top[1], CI.y.top[1]+0.1, CI.x.top[3], CI.y.top[3]+0.1)
arrows(CI.x.top[5], CI.y.top[5]+0.1, CI.x.top[7], CI.y.top[7]+0.1)

arrows(CI.x.bot[1], CI.y.bot[1]-0.1, CI.x.bot[3], CI.y.bot[3]-0.1)
arrows(CI.x.bot[6], CI.y.bot[6]-0.1, CI.x.bot[8], CI.y.bot[8]-0.1)

# Add legend to explain what the arrows are
legend("topleft", legend="Arrows indicate path\nfor drawing polygon", xjust=0.5, bty="n")

这是最终结果: enter image description here

关于r - 在 R 中绘制具有置信区间的时间序列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31951495/

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