多个t检验比较

时间:2017-09-19 16:43:18

标签: r statistics anova t-test

我想知道如何使用t.testpairwise.t.test在基因组合之间进行多重比较。首先,我如何比较基因1与基因3,基因3与基因4等所有组合?第二,我怎么能只比较基因1与其他基因的组合?

我需要为此制作一个功能吗?

假设我有下面的数据集,当“参数长度不同”时,我该怎么办?

感谢。

Gene   S1      S2      S3      S4      S5      S6     S7
1   20000   12032   23948    2794    5870     782    699
3   15051   17543   18590   21005   22996   26448
4   35023   43092   41858   39637   40933   38865

2 个答案:

答案 0 :(得分:3)

我认为@akrun在编程方面有很好的答案,但由于这个问题也与统计有关,因此提出使用多个t检验可能不被视为统计上合理的方法似乎很重要分析,取决于完整数据集中的比较数。所以请记住这一点。至少,这里建议使用Bonferroni校正或类似方法。所以我把它添加到了@ akrun的代码中。

在运行t检验之前,最好运行ANOVA以查看总体上是否存在任何差异。哥伦比亚大学在their stats page上对这种方法有一个有用的解释。

那就是说,我会告诉你如何做到这两点是为了回答问题的编程方面,但是对于那些查找相同问题的人,请在使用这个答案之前仔细检查你的方法。

我通过R中的选项(scipen = 999)显示了以下没有科学记数法的结果,以便不熟悉它的人受益。

pre-t-test ANOVA:

summary(aov(val ~ as.factor(Gene), data=gather(df, key, val, -Gene)))

                Df     Sum Sq    Mean Sq F value     Pr(>F)    
as.factor(Gene)  2 2627772989 1313886494   34.49 0.00000245 ***
Residuals       15  571374752   38091650                       
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

T检验:

library(broom)
library(dplyr)
library(tidyr)

gather(df, key, val, -Gene) %>% 
  do(data.frame(tidy(pairwise.t.test(.$val, .$Gene, p.adjust="bonferroni"))))

  group1 group2       p.value
1      3      1 0.05691493022
2      4      1 0.00000209244
4      4      3 0.00018020669

修改

对于这些测试,如果观察的长度不完全相同则没有特别重要。我上面概述的代码仍将运行。但是,在R中通常优良的做法是使空值或空值等于NA。有关将值更改为NA的方法,请参阅此SO answer

如果你想将你的t检验限制在几个基因比较中,例如,基因1对基因3和基因1对比基因4,而不是基因3对比基因4,最简单的方法是仍然使用上面的代码。但是,不要在pairwise.t.test函数中应用p值校正,只需将其应用于您想要评估的p值。试试这个:

res <- gather(df, key, val, -Gene) %>% 
  do(data.frame(tidy(pairwise.t.test(.$val, .$Gene))))

res <- res[res$group1==1 | res$group2 ==1,]

res$p.value <-  p.adjust(res$p.value, method = "bonferroni")

print(res)

  group1 group2        p.value
1      3      1 0.015989134399
2      4      1 0.000001458475

请注意,以上仅对我们已经子集和想要评估的测试应用p值校正,对于此示例,这是涉及基因1的任何组合,不包括不涉及基因1的组合。

答案 1 :(得分:0)

好的,这是另一个统计建议。您可能需要查看Hotelling T-test,作为多变量分布的t统计量的推广。

包:ICSNP包含教程hereHotelling