0

我正在尝试在 R 中对按因素分组的数据进行配对 t 检验:

> head(i.o.diff,n=20)
#   Difference Tree.ID Tree.Name   Ins Outs
#1        0.20    AK-1      Akun  1.20  1.0
#2       -1.60    AK-2      Akun  0.40  2.0
#3       -0.60    AK-3      Akun  1.40  2.0
#4        0.40    AK-4      Akun  0.40  0.0
#5        1.30    AK-5      Akun  1.80  0.5
#6        2.70     J-1     Jaror 10.20  7.5
#7        6.60     J-2     Jaror 10.60  4.0
#8        2.50     J-3     Jaror  6.00  3.5
#9        7.50     J-4     Jaror 22.00 14.5
#10      -4.50     J-5     Jaror  5.00  9.5
#11       3.50    Ce-1     Ku'ch  4.00  0.5
#12      -0.70    Ce-2     Ku'ch  4.80  5.5
#13       1.60    Ce-3     Ku'ch  2.60  1.0
#14      -2.40    Ce-4     Ku'ch  2.60  5.0
#15      -1.75    Ce-5     Ku'ch  2.25  4.0

我首先尝试使用:

pairwise.t.test(i.o.diff$In,i.o.diff$Out,g=i.o.diff$Tree.Name,paired=TRUE,pool=FALSE,p.adj="none",alternative=c("less"),mu=0)

但我得到了错误

complete.cases(x, y) 中的错误:并非所有参数都具有相同的长度

这对我来说没有多大意义。

我考虑过使用ddply()apply()summaryBy(),但无法让它工作,因为配对 t 检验的输入需要 2 个向量,而我提到的大多数前面的函数似乎在只有一列被“操作”时效果最好。

为了解决这个问题,我尝试使用 for 循环来达到相同的目的:

for(i in unique(i.o.diff$Tree.Name)) {
  pair_sub<-subset(i.o.diff,Tree.Name==i) 
  t.pair<-t.test(pair_sub$Ins,pair_sub$Outs,paired="True")
  print(t.pair)
}

但是,当我这样做时,我得到了错误

成对 || !is.null(y) : x||y 中的“x”类型无效

所以我检查了typeof(pair_sub$Ins)。原来那个类型是双精度的,它是数字的,所以我不确定为什么配对 t 检验不起作用。关于如何解决这两种方法的任何想法?

4

2 回答 2

0

在 for 循环中删除了 TRUE 周围的引号。现在效果很好。

于 2015-03-19T19:02:29.510 回答
0

来自 R 文档:t.test {stats} R 文档学生的 t 检验:

Description:

     Performs one and two sample t-tests on vectors of data. Usage t.test(x, …)

Default S3 method:
t.test(x, y = NULL, alternative = c(“two.sided”, “less”, “greater”), mu = 0, paired = FALSE, var.equal = FALSE, conf.level = 0.95, …)
于 2015-11-03T23:47:12.047 回答