前言
统计学中有许多方法可用于比较不同组别之间的差异,而其中一种常见且强大的工具就是Tukey检验。当我们进行多组实验或研究时,常常需要了解哪些组别之间存在显著差异,而不仅仅是确定是否存在差异。在这个问题上,Tukey检验可以为我们提供确切的答案。
Tukey检验,也称为Tukey的事后多重比较方法,是方差分析(ANOVA)的后续分析中经常采用的一种统计方法。它的目标是通过比较各组均值之间的差异来揭示群体之间的显著性差异。无论是生物医学研究、社会科学调查还是工程实验,都可以借助Tukey检验来深入理解数据背后的故事。
想要了解其原理,请自行搜索,这里主要介绍,在R语言环境中如何实现😑
Tukey Test in R
背景不再赘述,例子是最好的解释,简而言之,在R语言中,multcompView
包通过 TukeyHSD()
函数实现了 Tukey 检验。它还提供了一个图表,显示每个组合的均值差异情况:
# 加载工具
library(multcompView)
# 创建随机数据
set.seed(1)
treatment <- rep(c("A", "B", "C", "D", "E"), each=20)
value <- c( sample(2:5, 20 , replace=T) , sample(6:10, 20 , replace=T), sample(1:7, 20 , replace=T), sample(3:10, 20 , replace=T) , sample(10:20, 20 , replace=T) )
data <- data.frame(treatment,value)
# treat对value的影响
model <- lm( data$value ~ data$treatment )
# 先做个ANOVA
ANOVA <- aov(model)
# 用 Tukey test 研究每对 treat 和 value
TUKEY <- TukeyHSD(x=ANOVA, 'data$treatment', conf.level=0.95)
# 可视化(下图)
plot(TUKEY , las=1 , col="brown")
图怎么看?
注意看!图中有代表不同配对分组的 “横线” ,和一个在本坐标系中,值为 0 的竖直虚线,若代表配对儿分组的横线和虚线相交,那么,则认为分组中成分的均值没有差异,就是A和C、B和D均值没差异。(反正我是大概理解了……)
使用Boxplot(箱线图)展示 Tukey test 结果
上图显示了A组和C组之间以及D组和B组之间没有显著差异。可以使用箱线图来表示这些信息。A组和C组以相似的方式表示:相同的颜色和相同的字母’b’在顶部。对于B-D和E组也是如此。
先直接上代码:
# 把没有区别的组合放在一起
generate_label_df <- function(TUKEY, variable){
# Extract labels and factor levels from Tukey post-hoc
Tukey.levels <- TUKEY[[variable]][,4]
Tukey.labels <- data.frame(multcompLetters(Tukey.levels)['Letters'])
#I need to put the labels in the same order as in the boxplot :
Tukey.labels$treatment=rownames(Tukey.labels)
Tukey.labels=Tukey.labels[order(Tukey.labels$treatment) , ]
return(Tukey.labels)
}
LABELS <- generate_label_df(TUKEY , "data$treatment")
# 每一组用相同的颜色
my_colors <- c(
rgb(143,199,74,maxColorValue = 255),
rgb(242,104,34,maxColorValue = 255),
rgb(111,145,202,maxColorValue = 255)
)
# 一个基本箱线图
a <- boxplot(data$value ~ data$treatment , ylim=c(min(data$value) , 1.1*max(data$value)) , col=my_colors[as.numeric(LABELS[,1])] , ylab="value" , main="")
# 在每个box上边添加字母
over <- 0.1*max( a$stats[nrow(a$stats),] )
text( c(1:nlevels(data$treatment)) , a$stats[nrow(a$stats),]+over , LABELS[,1] , col=my_colors[as.numeric(LABELS[,1])] )
成图:
PS: Tukey test 也被称为 Tukey’s range test / Tukey method / Tukey’s honest significance test / Tukey’s HSD test / Tukey-Kramer method……名字有点多
简单实现步骤总结以及优缺点
实现:
Tukey检验的步骤如下:
- 执行方差分析(ANOVA)以确定组别间是否存在显著差异。
- 计算每个组别之间的平均差异(mean difference)。
- 使用Tukey公式计算一个名为Q统计量(Q statistic)的值。
- 将Q统计量与Tukey查表中的临界值进行比较,以确定哪些组别之间存在显著差异。通过执行Tukey检验,我们可以识别出具有不同均值的组别,并确定这些差异是否因随机变异而产生。
优点:
- Tukey检验允许进行多个组别之间的多重比较,使得在相同实验中同时比较多个组别成为可能。
- 它提供了简单的结果解释,可以指出哪些组别之间存在显著差异。
- 与其他多重比较方法相比,Tukey检验的错误控制较为保守,减少了误报显著性差异的可能性。
缺点:
- 在样本量较小的情况下,Tukey检验可能会产生较低的统计功效,即可能无法检测到真实存在的差异。
- 当组别之间的方差不均匀或相关时,Tukey检验的假设可能不成立,导致结果的解释存在限制。
- Tukey检验是基于均值差异的比较方法,对于其他统计指标(如中位数)可能不适用。
总之
Tukey检验是一种强大的多重比较方法,可以在实验设计和数据分析中揭示组别间的显著差异。然而,在应用时需要注意其适用性和局限性,并结合实际研究情况进行解释和判断。