Построение отдельных ответов для двухстороннего повторного измерения мер с помощью geom_path из ggplot2

Я хочу использовать ggplot а также geom_path построить индивидуальные ответы, измеренные в полностью сбалансированном двустороннем эксперименте с повторными измерениями.

Я могу сгенерировать график, который я хочу, для данных, поступающих из аналогично структурированного проекта смешанной модели.

Мои наборы данных имеют аналогично структурированные данные. Каждый набор данных имеет переменную ответа "Response" и три независимых переменных.

В моем первом наборе данных (DF1) у меня есть "Участник", "Пол" и "Условие". Три женщины и четыре мужчины были включены, что делает "Гендер" фактором "между субъектами", а "Состояние" фактором "внутри субъектов", и это смешанная модель, если я не ошибаюсь.

DF1 <-
  data.frame(
    Response = c(3.2, 3.4, 3.5, 3.7, 3.2, 3.6, 3.5, 3.3, 3.3, 3.3, 3.3, 3.2, 3.4, 3.3),
    Participant = as.factor(c(24, 33, 40, 24, 33, 40, 27, 30, 35, 42, 27, 30, 35, 42)),
    Gender = c("female", "female", "female", "female", "female", "female", "male", "male", "male", "male", "male", "male", "male", "male"),
    Condition = c("trained", "trained", "trained", "untrained", "untrained", "untrained", "untrained", "untrained", "trained", "untrained", "trained", "trained", "untrained", "trained"))

Во втором наборе данных (DF2) у меня есть "Участник", "Время" и "Условие". Одни и те же участники участвовали во всех комбинациях "Время" * "Условие", что делало его сбалансированным двухсторонним повторным измерением.

DF2 <-
  data.frame(
    Response = c(6.0, 6.4, 5.8, 6.3, 6.9, 6.2, 7.6, 7.2, 6.9, 7.0, 7.1, 7.1),
    Participant = as.factor(c(2, 3, 4, 2, 3, 4, 2, 3, 4, 2, 3, 4)),
    Time = as.factor(c(6, 6, 6, 6, 6, 6, 18, 18, 18, 18, 18, 18)),
    Condition = c("Nonexercise", "Nonexercise", "Nonexercise", "Exercise", "Exercise", "Exercise", "Nonexercise", "Nonexercise", "Nonexercise", "Exercise", "Exercise", "Exercise"))

Для моего первого кадра данных (DF1) я могу использовать ggplot а также geom_path с group а также color эстетика (aes) чтобы получить сюжет, который имеет смысл.

library(ggplot2)

ggplot(DF1,
       aes(x = Condition,
           y = Response,
           group = Participant,
           color = Gender)) +
  geom_path()

Если я пытаюсь использовать ту же настройку для моего второго кадра данных (DF2), данные выводятся на график, но таким образом, который не имеет смысла для меня.

ggplot(DF2,
       aes(x = Time,
           y = Response,
           group = Participant,
           color = Condition)) +
  geom_path()

я могу использовать facet_grid чтобы получить график, который имеет смысл, но это не идеально, потому что я хочу, чтобы все мои данные были на одном графике, подобно тому, что я вижу при построении графика DF1.

ggplot(DF2,
       aes(x = Time,
           y = Response,
           group = Participant,
           color = Participant)) +
  geom_path() + facet_grid(.~Condition)

Вот.jpg всех моих графиков бок о бок

Конкретно хочу:

  1. Время по оси X
  2. Один цвет для "Упражнения" и другой цвет для "Без упражнений"
  3. Две строки для каждого участника (по одной для условий "Упражнение" и "Отсутствие упражнения")

Спасибо заранее за любые советы!

1 ответ

Решение

Вы хотите сгруппировать по обоим Condition а также Paticipant, Способ сделать это с помощью interaction() функция:

library(ggplot2)
DF2 <- data.frame(
        Response = c(6.0, 6.4, 5.8, 6.3, 6.9, 6.2, 7.6, 7.2, 6.9, 7.0, 7.1, 7.1),
        Participant = as.factor(c(2, 3, 4, 2, 3, 4, 2, 3, 4, 2, 3, 4)),
        Time = as.factor(c(6, 6, 6, 6, 6, 6, 18, 18, 18, 18, 18, 18)),
        Condition = c("Nonexercise", "Nonexercise", "Nonexercise", "Exercise", "Exercise", "Exercise", "Nonexercise", "Nonexercise", "Nonexercise", "Exercise", "Exercise", "Exercise"))
ggplot(DF2) +
    geom_path(aes(x = Time, y = Response, group = interaction(Condition, Participant), color = Condition)) +
    geom_point(aes(x = Time, y = Response, shape = Participant, color = Condition), size = 3)

Я также добавил пункт с различными формами, чтобы улучшить ясность.

Это то, что вы просили. Если вы заинтересованы в моем мнении, замена сопоставления улучшит график еще больше (при условии, что изменения согласованы на других графиках):


ggplot(DF2) +
    geom_path(aes(x = Time, y = Response, group = interaction(Condition, Participant), color = Participant)) +
    geom_point(aes(x = Time, y = Response, shape = Condition, color = Participant), size = 3)

Другие вопросы по тегам