我对 R 相当陌生,我正在尝试进行 kruskal wallis 测试,以查看在查看不同基因时三组之间是否存在差异。我有 3 组和 127 种蛋白质。我已经能够创建一个可以做到这一点的代码,
样本数据”
groups <- c("control","control","control","control","control","group1","group1","group1","group1","group1","group1","group1","group1","group1","group1","group1","group1","group1","group2","group2","group2","group2","group2","group2","group2","group2")
gene1 <- c(8,7,4,5,0,2,8,5,6,4,4,6,5,4,6,4,7,4,8,1,6,3,5,6,3,1)
gene2 <- c(8,10,10,9,7,5,8,10,8,9,10,9,6,9,8,7,8,7,8,9,9,7,7,6,9,8)
gene3 <- c(10,11,10,11,5,6,9,11,10,11,12,8,4,7,7,10,10,3,2,11,9,10,9,3,10,10)
gene4 <- c(4,4,3,2,0,2,4,4,3,3,4,1,1,1,4,4,3,2,3,4,4,1,4,3,2,2)
gene5 <- c(8,10,11,10,7,6,8,8,8,12,11,8,7,8,8,10,10,9,10,8,10,7,8,7,10,7)
mydata <- data.frame(groups,gene1,gene2,gene3,gene4,gene5)
i <- 2 #ignore 1st column as this is not a "protein"
pval <-NULL
repeat{
K <- kruskal.test(df[,i], df[,1], data = df, paired=FALSE, p.adjust.methods="none")
pval <- c(as.matrix(sapply(K[3],as.numeric)),pval)
i <- i+1
if(i>ncol(df)){break}
}
不幸的是,获得的 pvalue 与我一次只对一个基因进行 kruskal wallis 测试的结果不同。例如:
对于 Gene1,从循环中获得的 pvalue 是 0.0389,但是当我运行 kruskal.test(Gene1,group, data=df) 时,我得到的 pvalue 是 0.84。
我遇到了这个问题,因为在进行 kruskal wallist 测试后,我进行了成对的 Mann Whitney 测试,并注意到 Kruskal wallis 的“显着”pvalues 与 Mann Whitney 的“显着”pvalues 无关。
此外,我继续使用 VassarStats 和 minitab,得到的 p 值为 0.84(平局调整)。我想知道如何在不影响 p 值的情况下循环运行这个 Kruskal wallis 测试。有什么我没有看到我做错了吗?
此外,我使用了我在上一篇文章中看到的 getAnywhere(kruskal.test.default),但我找不到在一遍又一遍地执行测试时会导致这种情况发生的原因。