1
votes

Exécution du test Wilcoxon avec plusieurs groupes de test

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 commentaires

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 le DataControl $ Value , donnant la même sortie pour chaque groupe


3 Réponses :


2
votes

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.


0 commentaires

0
votes

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


0 commentaires

1
votes

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


0 commentaires