Je souhaite lancer le test Wilcoxon pour comparer 3 groupes de test (B, C et D) avec le groupe témoin (A)
Les données sont organisées dans le format suivant:
Group P-value B 0.04 C 0.10 D 0.01
3 Réponses :
En plus d'un opérateur de canal manquant, comme indiqué par @OlliePerkins, il vous manque également un argument dans l'appel de wilcox.test
:
Data %>% filter(Group != "A") %>% group_by(Group) %>% summarise(p_value = wilcox.test(DataControl$Value, Value, exact = FALSE)$p.value) # A tibble: 3 x 2 # Group p_value # <fct> <dbl> # 1 B 0.355 # 2 C 0.782 # 3 D 0.470
où notez que select (Group, Value)
n'était pas nécessaire.
L'un des problèmes est le commentaire (%>%
manquant) et deuxièmement, le «x» a été uniquement fourni et non le «y» dans wilcox.test
Data %>% filter(Group != "A") %>% group_by(Group) %>% summarise(p_value = wilcox.test(Value, Data$Value[Data$Group == "A"] )$p.value) # A tibble: 3 x 2 # Group p_value # <chr> <dbl> #1 B 0.355 #2 C 0.782 #3 D 0.470
Il existe une fonction par paire intégrée; Je commencerais par là. Ensuite, rangez-le simplement et choisissez les pièces dont vous avez besoin.
Notez que mon code (et le vôtre aussi) ne corrige pas les comparaisons multiples. Vous devriez vous demander si cela vous convient ici.
foo <- pairwise.wilcox.test(Data$Value, Data$Group, p.adjust.method="none") foo ## Pairwise comparisons using Wilcoxon rank sum test ## data: Data$Value and Data$Group ## A B C ## B 0.355 - - ## C 0.782 0.344 - ## D 0.470 0.098 0.927 ## ## P value adjustment method: none library(tidyverse) broom::tidy(foo) %>% filter(group2=="A") ## # A tibble: 3 x 3 ## group1 group2 p.value ## <chr> <chr> <dbl> ## 1 B A 0.355 ## 2 C A 0.782 ## 3 D A 0.470
Buddy, je pense qu'il vous manque un opérateur de canal entre group_by et l'exécution du test Wilcox.
omg, désolé et merci d'avoir répondu
Mais, mis à part le
%>%
manquant, vous ne faites que passer leDataControl $ Value
, donnant la même sortie pour chaque groupe