不同的Anova来自相同的比较

时间:2017-03-27 22:31:06

标签: r anova

我有两个矩阵(d1, d2)代表来自两个不同实验的数据,其中行是不同的测量值,列是不同的时间点(每个时间点重复3次)。

我希望每个时间点的每次测量都能在两个实验之间运行Anova并记录它们的p值。对于两个实验,在我的第一个时间点的所有测量(行)等于1,跨越3个重复。我的意思是从我的代码中排除这个时间点,但是我忘了这样做了,我发现尽管它们的常量值(Output[1,]),Anova会返回不同的结果。所以这让我质疑我的方法。为什么会这样?我的代码出了什么问题吗?

我的数据和代码的虚拟样本如下:

expA <- read.table(header = TRUE, text = 
'expA.1 expA.1 expA.1    expA.2    expA.2    expA.2    expA.3    expA.3    expA.3
1      1      1      1 1.0590361 6.0840000 0.3126238 0.9512048 0.5080000 0.1923839
2      1      1      1 1.0250958 2.2046729 1.0730671 1.1411717 1.8937081 0.8498161
3      1      1      1 0.5253539 0.7999517 0.5635622 0.5484518 0.5883386 0.8645538
4      1      1      1 1.2129670 1.4956726 1.5498014 1.7048222 1.1656466 1.6938889
5      1      1      1 0.1903024 3.6452976 0.8402939 0.7885819 2.6368440 0.9033027
6      1      1      1 0.9538349 1.9105057 1.3856549 1.0811355 1.5250233 1.3113107')

expB <- read.table(header = TRUE, text =
'expB.1 expB.1 expB.1    expB.2    expB.2    expB.2    expB.3    expB.3    expB.3
1      1      1      1 0.5850559 0.5858956 0.4498688 0.7030726 0.5139633 0.4788714
2      1      1      1 0.8810560 0.9518831 1.2129251 0.9662685 1.1690522 1.1529898
3      1      1      1 0.8331984 0.7367421 0.7101967 0.9298349 1.0121873 0.8389997
4      1      1      1 0.9780624 0.7264760 1.1186710 0.7796886 0.6307443 1.0288995
5      1      1      1 0.6441718 1.2217535 0.7014686 1.1087473 1.3889726 0.7439220
6      1      1      1 1.1069592 1.3709256 1.3999807 1.3019256 1.3422111 1.5893162')

#Anova loop code
    Output <- array(numeric(0), c(6, 3))
    for (i in 1:nrow(expA)) {
        Output[i,] <- c(unlist(summary(aov(c(t(expA[i,1:3]), t(expB[i,1:3])) ~ c(rep("expA", 3), rep("expB", 3)))))[9],
                       unlist(summary(aov(c(t(expA[i,4:6]), t(expB[i,4:6])) ~ c(rep("expA", 3), rep("expB", 3)))))[9],
                       unlist(summary(aov(c(t(expA[i,7:9]), t(expB[i,7:9])) ~ c(rep("expA", 3), rep("expB", 3)))))[9]
                       )
                       #unlist(summary(aov(c(t(expA[i,10:12]) 
}

#Output table of p-values
         t.1          t.2        t.3
1 0.4158234414 0.34373556 0.95204240
2 0.0328117398 0.35232074 0.56545725
3 0.0006251536 0.23615864 0.07974182
4 0.6730575455 0.03679283 0.02900738
5 0.5410373240 0.54923102 0.59392961
6 0.0050755052 0.69271985 0.53786311

0 个答案:

没有答案