2015-04-14 3 views
0

Я бы хотел, чтобы мои статистические результаты испытаний были интегрированы в мой заговор. Пример моего сценария с фиктивными переменными (фиктивные данные ниже генерироваться после первого поста):визуализация результатов статистических испытаний с помощью ggplot2

cases <- rep(1:1:5,times=10) 
var1 <- rep(11:15,times=10) 
outcome <- rep(c(1,1,1,2,2),times=10) 

maindata <- data.frame(cases,var1,outcome) 

df1 <- maindata %>% 
    group_by(cases) %>% 
    select(cases,var1,outcome) %>% 
    summarise(var1 = max(var1, na.rm = TRUE), outcome=mean(outcome, na.rm =TRUE)) 

wilcox.test(df1$var1[df1$outcome<=1], df1$var1[df1$outcome>1]) 

ggplot(df1, aes(x = as.factor(outcome), y = as.numeric(var1), fill=outcome)) + geom_boxplot() 

С этим все работает просто отлично, но я не могу найти способ интегрировать свои wilcox.test результаты моего участка автоматически (конечно, я могу использовать аннотацию() и писать результаты вручную, но это не то, что мне нужно.

Мой скрипт создает два ящика с max-значением var1 по оси y и сгруппированы по результату на x-axis (только два разных значения для результата). Я хотел бы добавить результаты моего wilcox.test к этому boxplot, все другие соответствующие данные присутствуют. Пытался найти путь от форумов и файлов справки, но не смог найти способ (по крайней мере, с ggplot2)

Я новичок в R и стараюсь изучать материал с помощью ggplot2 и dplyr, которые я вижу как самые интуитивные пакеты для манипуляций и визуализации. Не знаю, оптимальны ли они для решения, за которым я после этого, не стесняйтесь предлагать решения из альтернативных пакетов ...

+4

Не могли бы вы превратить свой вопрос в [воспроизводимый пример] (http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example). Все, что вам нужно сделать, это создать некоторые фиктивные данные. Это поможет людям ответить на ваш вопрос. –

+0

Вы хотите сказать, что просто хотите добавить результат печати результатов теста wilcox в виде текста в сюжет? В этом случае я бы попробовал 'geom_text' с' label = paste (capture.output (wt), collapse = "\ n") 'где' wt' - это переменная, которая хранит ваши результаты теста wilcox. Какие координаты xy вы хотите, чтобы он появился? – konvas

+0

На самом деле я просто хочу распечатать значение wilcox.test p-value на сюжете, например, так (http://ajplung.physiology.org/content/287/2/L332/F5.large.jpg?width=800&height= 600 & карусельный = 1). Он может быть расположен поверх ящиков или под легендой. Главное, что визуально очевидно, что это означает результаты статистического теста между группами. – Zelus1

ответ

0

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

wtOut = wilcox.test(df1$var1[df1$outcome<=1], df1$var1[df1$outcome>1]) 
exampleOut <- ggplot(df1, 
    aes(x = as.factor(outcome), y = as.numeric(var1), fill=outcome)) + 
    geom_boxplot() + 
    scale_fill_gradient(name = paste0("P-value: ", 
             signif(wtOut$p.value, 3), "\nOutcome")) + 
    ylab("Variable 1") + xlab("Outcome") + theme_bw() 

ggsave('exampleOut.jpg', exampleOut, width = 6, height = 4) 

enter image description here

Если вы хотите включить р-значение в качестве своей собственной легенды, похоже, это some work, but doable.

Или, если хотите, просто бросьте signif(wtOut$p.value, 3) в annotate(...). Вам просто нужно придумать, где их разместить.

+1

Большое спасибо! Это решило мою проблему, и дополнительный код, который вы предоставили, мне тоже полезен! – Zelus1

+0

Если мой код решит вашу проблему, не могли бы вы проверить его как решение –

+1

yep, done! Этот «тик» для решены был новой особенностью для меня ... :) – Zelus1

Смежные вопросы