1

我对 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),但我找不到在一遍又一遍地执行测试时会导致这种情况发生的原因。

4

1 回答 1

0

当我隔离 kruskal 测试线时,我没有得到你的结果。

df <- mydata
i <- 2
kruskal.test(df[,i], df[,1], data = df, paired=FALSE, p.adjust.methods="none")
# 
#   Kruskal-Wallis rank sum test
# 
# data:  df[, i] and df[, 1]
# Kruskal-Wallis chi-squared = 0.66988, df = 2, p-value = 0.7154

我认为您的 pval 分配行导致了问题。但是您并没有充分利用 R。首先,请始终阅读函数的手册页。除非您指定公式,否则该kruskal.test函数不带data=参数,也不带paired=参数(仅与两组之间的测试相关),也不带p.adjust.methods=参数。你只是在猜测和浪费你的时间。获取 R 教程并花一天左右的时间学习基础知识。您的整个代码可以表示如下:

pval <- sapply(2:6, function(x) kruskal.test(mydata[,x], mydata[,1])$p.value)
pval
# [1] 0.7153797 0.4424115 0.5360940 0.9816007 0.6118471
于 2020-04-15T20:43:49.897 回答