首页 > 解决方案 > 如何绘制多个个体的平均时间序列

问题描述

我有时间序列数据,其中 7 个变量 ( Var1:Var7) 的测量值是对 15 个人进行的(用唯一的 表示ID)。这些人是从 3 个不同Location的 s 中取样的。请注意,每个人的观察次数是不同的。我相信每个人中的个体在价值和趋势Location上都会比其他个体中的个体更相似。Location对于 eachVariable中的每个Location,我想绘制平均时间序列(以了解整个组的样子)直到Time每个人都相同(因此 x 轴的长度只会与最短的个体一样长)。我怎样才能做到这一点并为每个添加错误栏Time点看个人之间存在多少差异?以下是一些示例数据:

set.seed(123)
ID = factor(letters[seq(15)])
Time = c(1000,1200,1234,980,1300,1020,1180,1908,1303,
        1045,1373,1111,1097,1167,1423)
df <- data.frame(ID = rep(ID, Time), Time = sequence(Time))
df$Location = rep(c("NY","WA","MA"), c(5714,7829,4798))
df[paste0('Var', c(1:7))] <- rnorm(sum(Time))

标签: rtime-series

解决方案


所有变量的值都是相同的,所以我做了以下使其更随机:

for(i in 1:7) df[paste0('Var', i)] <- rnorm(sum(Time))

然后下面的代码给出了三个位置平均的 7 个变量中的每一个的时间序列图。

df %>%
  pivot_longer(cols = Var1:Var7, names_to="Variable") %>%
  group_by(Location, Variable, Time) %>%
  summarise(mval=mean(value)) %>%
  ggplot(aes(y=mval, x=Time, color=Variable)) +
  geom_line() +
  facet_grid(~Location) # , scales="free" # ?

在此处输入图像描述

我不确定这是否是您的想法。


推荐阅读