Усреднение групп временных рядов и построение их друг против друга - PullRequest
1 голос
/ 06 марта 2020

В данных временных рядов, созданных ниже data, были отобраны особи (обозначенные уникальным ID) из 2 групп населения (NC и SC). Все люди имеют одинаковое количество наблюдений. Я хочу усреднить данные для каждого соответствующего «момента времени» для всех людей, которые принадлежат одному и тому же «Штату» (средняя линия), и я хочу построить средние линии из каждого состояния друг против друга. Я хочу, чтобы это выглядело примерно так:

enter image description here

library(tidyverse)
set.seed(123)
ID <- rep(1:10, each = 500)
Time = rep(c(1:500),10)
Location = rep(c("NC","SC"), each = 2500)
Var <- rnorm(5000)
data <- data.frame(
  ID = factor(ID),
  Time = Time,
  State = Location,
  Variable = Var
)

1 Ответ

2 голосов
/ 06 марта 2020

Я бы порекомендовал ознакомиться с различными функциями dplyr. В частности, group_by и summarise. Вы можете прочитать: Введение в dplyr или просмотреть эту серию сообщений в блоге.

Короче говоря, мы группируем данные по Time и State переменную, а затем суммируем эти данные со средним (т.е. mean(Variable)). Чтобы построить данные, мы помещаем Time на нашей оси X, недавно созданный avg_var на нашей оси Y и используем State для представления цвета. Они присваиваются в качестве эстетики нашей диаграммы (т. Е. aes(...). Наконец, мы добавляем строку geom с geom_line() для визуализации линий на нашей визуализации.

data %>% 
    group_by(Time, State) %>%
    summarise(avg_var = mean(Variable)) %>% 
    ggplot(aes(x = Time, y = avg_var, color = State)) +
    geom_line()

enter image description here

...