与多个测试组一起执行Wilcoxon测试

时间:2019-05-03 14:38:50

标签: r dplyr statistics

我想进行Wilcoxon测试,以比较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 个答案:

答案 0 :(得分:2)

除了缺少管道运算符(如@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 :(得分:1)

有一个内置的成对函数;我从那里开始。然后整理一下,然后挑选您需要的东西。

请注意,我的代码(以及您的代码)也无法正确进行多次比较。您应该考虑这里是否合适。

#include <stdio.h>
#include <mpi.h>

int main(int argc, char *argv[])
{
    int myrank, procs, n = 4;

    MPI_Init(&argc, &argv);
    MPI_Comm_rank(MPI_COMM_WORLD, &myrank);
    MPI_Comm_size(MPI_COMM_WORLD, &procs);
    int aPart[n/procs][n];
    int bPart[n][n/procs];
    int a[n][n];
    int b[n][n];
    if(myrank == 0) 
    {
        int temp = 0;        
        for(int i=0; i<n; i++) {
            for(int j=0;j<n;j++) {
                a[i][j] = temp;
                temp++;
            }            
        }       
        /*
        printf("Two Dimensional array elements:\n");
        for(int i=0; i<n; i++) {
            for(int j=0;j<n;j++) {
                printf("%d ", a[i][j]);
            }
            printf("\n");
        }*/               
    }
    MPI_Scatter(&a,(n * (n/procs)),MPI_INT,&aPart,(n * (n/procs)),MPI_INT,0,MPI_COMM_WORLD); 

printf("%d \n",myrank); 
 for(int i=0; i<n; i++) {
        for(int j=0;j< n/procs ;j++) {
            bPart[i][j] = aPart[j][i];
        }        
    }
printf("\n");
for(int i=0; i<n/procs; i++) {
            for(int j=0;j<n;j++) {
                printf("%d ", bPart[i][j]);
            }            
        }   
printf("\n");
MPI_Gather(bPart,(n * (n/procs)),MPI_INT,b,(n * (n/procs)),MPI_INT,0,MPI_COMM_WORLD);
if(myrank == 0)
{
printf("B \n");
for(int i=0; i<n; i++) {
            for(int j=0;j<n;j++) {
                printf("%d ", b[i][j]);
            }
            printf("\n");
        }
}
    MPI_Finalize();

    return 0;
}

答案 2 :(得分:0)

问题之一是被注释的问题(缺少%>%),其次是仅提供了“ x”,而不是wilcox.test中的“ y”

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