Выполнение теста Вилкоксона с несколькими тестовыми группами - PullRequest
1 голос
/ 03 мая 2019

Я хочу запустить тест Вилкоксона, чтобы сравнить 3 тестовые группы (B, C и D) с контрольной группой (A)

Данные организованы в следующем формате:

Group   CustomerID  Value
A           23483   61
A           23484   54
A           23485   57
A           23486   59
A           23487   69
A           23488   69
B           23489   57
B           23490   53
B           23491   68
B           23492   59
B           23493   57
C           23494   58
C           23495   70
C           23496   69
C           23497   62
C           23498   53
D           23499   65
D           23500   62
D           23501   60
D           23502   62
D           23503   63
D           23504   68

Пока я написал код ниже

#Seperate Control Data
DataControl<- Data%>%
                select(Group,Value)%>%
                filter(Group =="A")

#Filter data
Data%>%
  filter(Group!="A")%>%
  select(Group,Value)%>%
  group_by(Group)
  summarise(p_value = wilcox.test(DataControl$Value,exact =FALSE)$p.value)

но я получаю следующие ошибки

Error in summarise_(.data, .dots = compat_as_lazy_dots(...)) : 
  argument ".data" is missing, with no default

Желаемый результат должен быть

Group P-value
B     0.04
C     0.10
D     0.01

Ответы [ 3 ]

2 голосов
/ 03 мая 2019

В дополнение к отсутствующему оператору канала, как отмечает @OlliePerkins, вам также не хватает одного аргумента в вызове 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

, где обратите внимание, что select(Group, Value) не было необходимости.

1 голос
/ 03 мая 2019

Есть встроенная парная функция;Я бы начал там.Затем просто приведите в порядок и выберите нужные вам фрагменты.

Обратите внимание, что мой код (и ваш тоже) не подходит для нескольких сравнений.Вы должны подумать, если это уместно здесь.

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 голосов
/ 03 мая 2019

Одной из проблем является проблема с комментариями (%>% отсутствует), а во-вторых, был указан только «x», а не «y» в 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...