Добавление значений р для сравнения групп означает в разное время в gganimate gif с боксплоты / скрипки - PullRequest
0 голосов
/ 19 ноября 2018

Мой текущий код для печати скрипок с использованием gganimate выглядит следующим образом

  library(ggplot2); library(gganimate); library(ggpubr)
  ggplot(dat2, aes(x=diet, y=bicep, fill=diet)) + 
  geom_violin() +
  scale_fill_manual(values=c("#00AFBB", "#FC4E07")) +
  stat_compare_means(aes(label = ..p.format..), paired = FALSE, label.x.npc = 0.5) +
  labs(title = 'Week: {frame_time}') +
  transition_time(time) +
  ease_aes('linear')

Здесь значения p печатаются, но это всего лишь общие значения p. Я бы хотел, чтобы значение p менялось со временем (0, 6 и 12 недель). В моем исследовании каждое измерение результата (бицепс) проводится в три разных момента времени (0, 6 и 12 недель или время 1, время 2, время 3). Было бы хорошо, если бы я мог показать изменение значений р в момент 0 6, 12. Здесь я бы использовал непарный t-критерий для сравнения групповых показателей по диете / лечению.

В качестве альтернативы, покажите значение p (парный t-тест) только в конце, где бицепс в момент времени «3» сравнивается с бицепсом в момент времени «1» для обеих диет.

Как бы я поступил так? Спасибо, что прочитали это.

Структура данных

 structure(list(code = c(1L, 1L, 1L, 2L, 2L, 2L, 3L, 3L, 3L, 4L, 
4L, 4L, 5L, 5L, 5L, 6L, 6L, 6L, 7L, 7L, 7L, 8L, 8L, 8L), diet = c("a", 
"a", "a", "b", "b", "b", "a", "a", "a", "b", "b", "b", "a", "a", 
"a", "b", "b", "b", "a", "a", "a", "b", "b", "b"), time = c(1L, 
2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 3L, 1L, 2L, 
3L, 1L, 2L, 3L, 1L, 2L, 3L), bicep = c(8L, 7L, 7L, 9L, 9L, 9L, 
11L, 10L, 9L, 11L, 11L, 12L, 12L, 11L, 10L, 9L, 9L, 9L, 12L, 
10L, 8L, 12L, 12L, 12L)), class = "data.frame", row.names = c(NA, 
-24L))

Воспроизводимый код Gganimate

    ggplot(example3, aes(x=diet, y=bicep, fill=diet)) + 
  geom_violin() +
  scale_fill_manual(values=c("#00AFBB", "#FC4E07")) +
  stat_compare_means(aes(label = ..p.format..), paired = FALSE, label.x.npc = 0.5) +
  labs(title = 'Week: {frame_time}') +
  transition_time(time) +
  ease_aes('linear')

1 Ответ

0 голосов
/ 19 ноября 2018

Вы можете попытаться заранее вычислить p.values.

library(gganimate)
library(tidyverse)
example3 %>%
  group_by(time) %>% 
  mutate(p=wilcox.test(bicep~diet, exact =F)$p.value,
         max=max(bicep, na.rm = T)) %>% 
  ggplot() + 
  geom_violin(aes(x=diet, y=bicep, fill=diet)) +
  geom_text(data = . %>% distinct(p, max, time), 
            aes(x=1.5, y = max+.5, label=as.character(round(p,2))),
            size=12) +
  transition_time(time) +
  ease_aes('linear')

enter image description here

Вам необходимо установить ggpubr_0.2

...