如何在数据帧的多个列上执行t检验

时间:2014-05-11 23:40:43

标签: r statistics

我的df由7列组成,每列对应一条染色体。我想看看每个染色体中的值是否与其他染色体具有统计学意义。这是df的子集......

       A01      A02       A03       A04       A05       A06       A07
1 0.0475424 0.224646 0.1065940 0.1580800 0.0279520 0.8189890 0.2721350
2 0.0383661 0.133959 0.0579846 0.0300916 0.1662380 0.0735981 0.2863390
3 0.2999830 0.407670 0.1696190 0.0379608 0.0544481 0.1532610 0.1041220
4 0.1605930 0.729948 0.0642579 0.4513340 0.3155020 0.3234300 0.7930150
5 0.5301730 0.100597 0.1850310 0.1111630 0.1000220 0.2172030 0.0748173
6 0.0268711 1.278470 0.0958172 0.5504090 0.3600080 0.0355549 0.3678820

我知道我可以使用t-test来比较" A01"到" A02"等等。但它会告诉我这两条染色体是否重要,但我的计划是将A01与所有其他染色体进行比较。我怎么能这样做?

由于

众议员

2 个答案:

答案 0 :(得分:1)

您可以引用this post,这是Google搜索“t多个列R”时的第一个链接。

使用reshape2包和pairwise.t.test,并假设dat是您的数据......

> library(reshape2)
> meltdf <- melt(dat)
> pairwise.t.test(meltdf$value, meltdf$variable, p.adjust = "none")
#  Pairwise comparisons using t tests with pooled SD 
# 
# data:  meltdf$value and meltdf$variable 
# 
#     A01   A02   A03   A04   A05   A06  
# A02 0.056 -     -     -     -     -    
# A03 0.639 0.019 -     -     -     -    
# A04 0.794 0.095 0.466 -     -     -    
# A05 0.930 0.046 0.703 0.727 -     -    
# A06 0.566 0.171 0.300 0.754 0.509 -    
# A07 0.381 0.283 0.182 0.536 0.336 0.760
# 
# P value adjustment method: none 

答案 1 :(得分:0)

Welch-test可用于比较具有不同长度和标准误差的正态分布矢量的均值。该测试是R t.test()函数中默认使用的测试。

因此,我猜你可以做你希望聚合从A02到结尾的所有向量,并将它与A01与t.test进行比较(如果它们是正态分布的,你可以用ks.testshapiro.test)。

然后,让测试的矢量随循环而变化,这应该可以解决问题。

但是,您必须手动修复多个测试问题(这不是很难)。