【问题标题】:Testing mean of multiple series with ANOVA and Tukey HSD test in R在R中使用ANOVA和Tukey HSD测试测试多个系列的平均值
【发布时间】:2016-11-23 08:20:01
【问题描述】:

在 R 中,我有四个数值向量。我想测试这四个向量的平均值是否相同,如果不一样,哪个平均值更大哪个平均值更小(基本上我想通过它们对四个向量进行排名)。

这篇文章很适合我:

http://brownmath.com/stat/anova1

我正在关注本指南:

https://www.r-bloggers.com/analysis-of-variance-anova-for-multiple-comparisons/

然而,这篇文章停止测试四个平均值是否相等,但如果答案不是,我怎么知道 R 中哪个平均值更大,哪个平均值更小?

非常感谢,

帖子中的代码是:

a = c(65, 48, 66, 75, 70, 55)
b = c(64, 44, 70, 70, 68, 59)
c = c(60, 50, 65, 69, 69, 57)
d = c(62, 46, 68, 72, 67, 56)

dati = c(a, b, c, d)
groups = factor(rep(letters[1:4], each = 6))

fit = lm(formula = dati ~ groups)
anova (fit)

【问题讨论】:

    标签: r anova tukey


    【解决方案1】:

    我将假设满足假设,特别是 残差是独立的,并且残差的分布是同方差的并且与正态分布足够相似

    首先请注意,您的 ANOVA 返回的 p 值为 0.99,这意味着组均值之间没有显着差异。如果 p 值低于 0.05,您可以对成对比较进行事后检验。

    TukeyHSD(aov(fit))
    #  Tukey multiple comparisons of means
    #    95% family-wise confidence level
    #
    #Fit: aov(formula = fit)
    #
    #$groups
    #          diff       lwr      upr     p adj
    #b-a -0.6666667 -15.68081 14.34748 0.9992898
    #c-a -1.5000000 -16.51415 13.51415 0.9921250
    #d-a -1.3333333 -16.34748 13.68081 0.9944302
    #c-b -0.8333333 -15.84748 14.18081 0.9986181
    #d-b -0.6666667 -15.68081 14.34748 0.9992898
    #d-c  0.1666667 -14.84748 15.18081 0.9999888
    

    当然,这里没有什么重要的。

    更强大的是 multcomp 包。它让您定义不同的成对比较。它还可以为您提供您经常在表格或图中看到的组字母。

    library(multcomp)
    pairwise <- glht(fit, linfct = mcp(groups = "Tukey"))
    summary(pairwise)
    cld(pairwise)
    #  a   b   c   d 
    #"a" "a" "a" "a"
    

    同样,由于您的示例中没有什么重要的,所有因子水平都得到相同的字母。

    【讨论】:

    • 非常感谢@Roland。如果两个假设不满足(残差不是独立的,或者残差的分布不是同方差的并且与正态分布足够相似),下一步应该是什么?
    • 那么你应该使用统计测试或模型来考虑这一点。更具体地说,我需要更多细节,但这样的问题在这里是题外话(请注意我如何专注于技术解决方案)。您应该做一些研究,但也可以在 stats.stackexchange.com 上提问。
    猜你喜欢
    • 2011-12-05
    • 1970-01-01
    • 2022-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-02-27
    • 2019-03-08
    • 2020-07-06
    相关资源
    最近更新 更多