r语言 - 事后韦尔奇方差分析后的特定成对比较



我是R的新手,并且对此网站是全新的,所以我真的希望我能以一种清晰的方式传达我的问题。

以下是我数据集的一部分:

A1<-c(0.308, 0.3624, 0.1861, 0.6176, 0.0506, 0.1014, 0.2245, 0.1894, 0.246, 0.1795)
A2<-c(0.0785, 0.1583, 0.1803, 0.0538, 0.0534, 0.0646, 0.0902, 0.0307, 0.2002, 0.1135, 0.0862)
B1<-c(0.293, 0.2159, 0.1919, 0.1904, 0.1274, 0.1482, 0.1579, 0.3284, 0.1948, 0.3159, 0.1764, 0.0403)
B2<-c(0.0741, 0.0601, 0.0273, 0.077, 0.1214, 0.0837, 0.0521, 0.0746, 0.0733, 0.0403, 0.0544)

数据是正态分布的,但显示了异方差,因此我在创建数据帧后使用了带有Welch校正的ANOVA:

(X <- data.frame(Y = c(A1,A2,B1,B2), Group = rep(c("A1", "A2", "B1", "B2"), times = c(length(A1), length(A2), length(B1), length(B2)))))
oneway.test(Y ~ Group, data = X)
    One-way analysis of means (not assuming equal variances)
data:  Y and Group
F = 12.346, num df = 3.000, denom df = 19.002, p-value = 0.0001037
然后,

i然后使用具有非填充标准偏差的成对t检验(由于异方差)进行事后比较

with(X, pairwise.t.test(Y, Group, pool.sd=FALSE))
    Pairwise comparisons using t tests with non-pooled SD 
data:  Y and Group 
   A1      A2      B1     
A2 0.05617 -       -      
B1 0.40115 0.01665 -      
B2 0.02360 0.17723 0.00089
P value adjustment method: holm 

我的问题是我对所有比较并不真正感兴趣,我真的只想将A1与A2,B1与B2等进行比较。我的数据集还包括C1&amp; 2,d1&amp; 2和E1&amp; 2,因此,我通过p值调整而失去了很大的意义,因为t检验是45对。

当然,我可以通过t.test()函数分开运行我感兴趣的每个t检验,并手动调整p值。但是,我很快就会有一个类似但更大的数据集,这使这是一项非常乏味的工作。因此,我想知道R中是否有一个选项可以选择pairwise.t.test()中包含哪些比较,或者是否有其他事后事后选项可以使此功能成为可能。

任何建议将不胜感激。

这是一种快速的方法

Z <- split(X, substr(X$G, 1, 1))   # split your data frame into a list of data frames 
ans <- lapply(Z, function(A) with(A, pairwise.t.test(Y, Group, pool.sd=FALSE)))

输出

您所需的成对比较列表($ a Group,$ b组)

$A
        Pairwise comparisons using t tests with non-pooled SD 
data:  Y and Group 
   A1   
A2 0.019
P value adjustment method: holm 
$B
        Pairwise comparisons using t tests with non-pooled SD 
data:  Y and Group 
   B1     
B2 0.00015
P value adjustment method: holm 

相关内容

  • 没有找到相关文章

最新更新