在TukeyHSD中显示家庭课程

时间:2018-06-26 16:36:02

标签: r statistics tukeyhsd

我习惯在minitab中进行Tukey事后测试。当我这样做时,通常会得到因变量/预测变量的族分组。

Minitab Output - Tukey Pairwise

在R中,使用TukeyHSD()不会显示(或计算出)族分组。它仅显示每个因变量/预测变量之间的关系。 是否可以在minitab中显示家庭分组?

使用diamonds数据集:

av <- aov(price ~ cut, data = diamonds)
tk <- TukeyHSD(av, ordered = T, which = "cut")
plot(tk)

输出:

Fit: aov(formula = price ~ cut, data = diamonds)

$cut
                    diff        lwr       upr     p adj
Good-Ideal         471.32248  300.28228  642.3627 0.0000000
Very Good-Ideal    524.21792  401.33117  647.1047 0.0000000
Fair-Ideal         901.21579  621.86019 1180.5714 0.0000000
Premium-Ideal     1126.71573 1008.80880 1244.6227 0.0000000
Very Good-Good      52.89544 -130.15186  235.9427 0.9341158
Fair-Good          429.89331  119.33783  740.4488 0.0014980
Premium-Good       655.39325  475.65120  835.1353 0.0000000
Fair-Very Good     376.99787   90.13360  663.8622 0.0031094
Premium-Very Good  602.49781  467.76249  737.2331 0.0000000
Premium-Fair       225.49994  -59.26664  510.2665 0.1950425

添加了图片以帮助阐明我对Maruits评论的回应: enter image description here

1 个答案:

答案 0 :(得分:0)

这是有关如何为ggplot2::diamonds数据集复制minitab表的分步示例。我已尽可能包含详细信息/说明。

请注意,据我所知,minitab表中显示的结果与Tukey事后测试的结果无关/无关;它们基于方差分析的结果。 Tukey的诚实显着性差异(HSD)检验是事后检验,可确定在给出方差分析结果的情况下(诚实的)那些比较在(组平均值的所有可能的成对比较中)具有统计学意义。


为了重现minitab的“均值分组”摘要表(请参见first table of "Interpret the results: Step 3" of the minitab Express Support),我建议(重新)运行线性模型以提取均值和置信区间。请注意,这正是aov拟合各组方差分析模型的方式。

拟合线性模型

我们指定一个0偏移量以获得每个组的绝对估算值(而不是相对于偏移量的变化估算值)。

fit <- lm(price ~ 0 + cut, data = diamonds)
coef <- summary(fit)$coef;
coef;
#    Estimate Std. Error   t value Pr(>|t|)
#cutFair      4358.758   98.78795  44.12236        0
#cutGood      3928.864   56.59175  69.42468        0
#cutVery Good 3981.760   36.06181 110.41487        0
#cutPremium   4584.258   33.75352 135.81570        0
#cutIdeal     3457.542   27.00121 128.05137        0

确定家庭分组

为了获得类似于minitab的“家庭分组”的信息,我们采用以下方法:

  1. 计算所有参数的置信区间
  2. 对所有参数的置信区间数据进行分层聚类分析
  3. 将生成的树剪切为与CI的标准偏差相对应的高度。这将根据参数的置信区间为我们提供一组参数估计值。这是某种经验性的方法,但由于树测量了置信区间和the standard deviation can be interpreted as a Euclidean distance之间的成对距离,因此是合理的。

我们从计算置信区间开始,并使用完全链接使用分层聚类对所得距离矩阵进行聚类。

CI <- confint(fit);
hc <- hclust(dist(CI));

我们检查聚类树状图

plot(hc);

enter image description here

我们现在在所有参数估计值上以与所有CI的标准偏差相对应的高度切割树,以获取“家庭分组”

grps <- cutree(hc, h = sd(CI))

总结结果

最后,我们整理所有数量并将结果存储在类似于minitab的“均值分组”表的表中。

library(tidyverse)
bind_cols(
    cut = rownames(coef),
    N = as.integer(table(fit$model$cut)),
    Mean = coef[, 1],
    Groupings = grps) %>%
    as.data.frame()
#           cut     N     Mean Groupings
#1      cutFair  1610 4358.758         1
#2      cutGood  4906 3928.864         2
#3 cutVery Good 12082 3981.760         2
#4   cutPremium 13791 4584.258         1
#5     cutIdeal 21551 3457.542         3

请注意,我们的结果与minitab“均值分组”表中的结果几乎完全一致:cut = Ideal本身位于组3中(minitab表中的C组) ,而Fair + Premium共享组1(minitab:组A),而Good + Very Good共享组2 (迷你标签:组B)。