Как построить средние временные ряды нескольких лиц - PullRequest
0 голосов
/ 05 марта 2020

У меня есть данные временного ряда, где измерения 7 переменных (Var1:Var7) были проведены для 15 человек (обозначается уникальным ID). Эти люди были отобраны из 3 различных Location с. Обратите внимание, что количество наблюдений отличается для каждого человека. Я считаю, что люди в каждом Location будут больше похожи друг на друга, чем люди в других Location, как по стоимости, так и по тренду. Для каждого Variable в каждом Location я хочу построить график среднего временного ряда (чтобы получить представление о том, как выглядит группа в целом) до точки, где Time одинаково для каждого человека (так что длина оси х будет равна длине самого короткого человека). Как я могу сделать это и добавить полосы ошибок для каждой 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))

1 Ответ

0 голосов
/ 05 марта 2020

Значения всех ваших переменных одинаковы, поэтому я сделал следующее, чтобы сделать его более случайным:

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" # ?

enter image description here

Я не уверен, что это то, что вы имели в виду.

...