我有一个(非常)多变量的时间序列,比如在不同时间点的25个观察结果,至少有15个不同的变量。我想绘制关于时间的所有观察结果,并绘制每个时间点的均值线和置信区间(其中均值和标准差是每个时间点不同变量的均值和标准差)。
我发现我可以分别完成这些任务:
nr <- 25
nc <- 15
dat <- data.frame(matrix(data=rnorm(nr*nc), nrow=nr, ncol = nc))
year <- seq(2000, 2000+3*(nr-1), by = 3)
dat$year <- year
dat_long <- melt(data=dat, id.vars = "year")
ggplot(dat_long, aes(x=year, y = value, col = variable))
和
sd <- sqrt(unname(apply(dat, 1, var)))
mean <- unname(apply(dat, 1, mean))
upper <- mean + 2*sd
lower <- mean - 2*sd
eb <- aes(ymin=lower, ymax=upper)
ggplot(dat, aes(x=year, y=mean)) + geom_line() + geom_ribbon(eb, alpha=0.5)
但是如果我加上col=variable来尝试得到每个变量的单独行,我就不再得到置信区间了。我可以尝试什么呢?
1条答案
按热度按时间mwyxok5s1#
用年份和计算的统计数据创建另一个data.frame,并在
data
参数中将其传递给geom_ribbon
。请注意,您还计算了
year
的标准误差和平均值,但在下面的代码中没有。而apply/mean
被rowMeans
取代。创建于2023-09-14带有reprex v2.0.2