2017-09-27 1 views
0

Suite à this question, j'essaie de faire des comparaisons de boîtes à moustaches et par paires pour montrer les niveaux de signification (seulement pour les paires significatives) à nouveau, mais cette fois j'ai plus de 2 groupes à comparer et des facettes plus compliquées. Je vais utiliser le jeu de données iris ici à des fins d'illustration. Vérifiez le MWE ci-dessous où j'ajoute une variable "traitement" supplémentaire.R ggplot2: boîtes à moustaches avec niveau de signification (plus de 2 groupes: kruskal.test et wilcox.test par paires) et plusieurs facettes

library(reshape2) 
library(ggplot2) 
data(iris) 
iris$treatment <- rep(c("A","B"), length(iris$Species)/2) 
mydf <- melt(iris, measure.vars=names(iris)[1:4]) 
ggplot(mydf, aes(x=variable, y=value, fill=Species)) + geom_boxplot() + 
stat_summary(fun.y=mean, geom="point", shape=5, size=4) + 
facet_grid(treatment~Species, scales="free", space="free_x") + 
theme(axis.text.x = element_text(angle=45, hjust=1)) 

Ce produit le tracé suivant:

plot

L'idée serait d'effectuer un test de Kruskal-Wallis à travers les groupes "variables" (Sepal.Length, Sepal.Width, Pétale. Length, Petal.Width), et deux tests Wilcoxon par paires entre eux, PAR FACET défini par "Espèce" et "traitement".

Cela impliquerait probablement la mise à jour de l'annotation comme dans ma précédente question.

En d'autres termes, je veux faire la même chose que dans this other question j'ai posté, mais PAR FACET.

Je suis horriblement confus et coincé, même si la solution devrait être assez similaire ... Toute aide serait appréciée !! Merci!!

Répondre

2

Vous pouvez

library(ggsignif) 
ggplot(mydf,aes(x=variable, y=value)) + 
    geom_boxplot(aes(fill=Species)) + # define the fill argument here 
    facet_grid(treatment~Species) + 
    ylim(0,15)+ 
    theme(axis.text.x = element_text(angle=45, hjust=1)) + 
    geom_signif(test="wilcox.test", comparisons = combn(levels(mydf$variable),2, simplify = F)[-4], 
       step_increase = 0.2) 

enter image description here

Kruskal.wallis peut être inclus en ajoutant

library(ggpubr) 
stat_compare_means(test="kruskal.test") 
+0

Salut Jimobu, merci beaucoup pour votre temps. J'atteignais quelque chose comme ça, mais j'ai quelques soucis avec ça ... La première chose est que je me demande pourquoi je ne reçois pas les mêmes p-values ​​avec 'geom_signif()' qu'avec 'pv <- tidy (avec (mydf, pairwise.wilcox.test (valeur, interaction (traitement, espèces, variable), p.adjust.method = "BH"))) ' – DaniCee

+0

L'autre chose serait de mettre les p-values ​​sous la forme de * et * * ne montrant pas ces comparaisons non significatives. Exactement la même chose que nous avons fait dans https://stackoverflow.com/questions/45476950/r-ggplot2-boxplots-ggpubr-stat-compare-means-not-working-properly mais par facette ... J'ai en fait besoin du même p- valeurs, car les tracés que nous avons faits dans la question précédente étaient des sous-ensembles provenant des mêmes données – DaniCee

+0

p-values: vous devez comparer des pvalues ​​non-adjuasted. utilisez donc 'p.adjust.method =" none "'. Utilisez cette [solution] (https://stackoverflow.com/questions/45552715/r-ggplot2-perform-pairwise-tests-per-pair-in-a-facet-and-show-the-p-values-wit) pour l'autre problème. – Jimbou