探索组间差异利器:Tukey 检验 【Tukey Test】

news2024/10/5 16:29:56

前言

    统计学中有许多方法可用于比较不同组别之间的差异,而其中一种常见且强大的工具就是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检验是一种强大的多重比较方法,可以在实验设计和数据分析中揭示组别间的显著差异。然而,在应用时需要注意其适用性和局限性,并结合实际研究情况进行解释和判断。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/910800.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ArcGIS Pro怎么解决道路压盖问题

在默认情况下&#xff0c;道路可能会存在低等级道路将高等级道路压盖、在道路连接处不连通的情况&#xff0c;这些问题都可以在ArcGIS Pro内解决&#xff0c;这里为大家介绍一下处理方法&#xff0c;希望能对你有所帮助。 道路分级 在符号系统内&#xff0c;选择唯一值&#x…

查看镁光DDR芯片型号的办法

查看镁光DDR芯片型号的办法 百度镁光官网 搜索decoder 输入需要查询的FBGA信息 镁光芯片丝印有两行&#xff0c;第一行为产地&#xff0c;不用管&#xff0c;第二行就是FBGA

PLSQL DEVELOPER 右侧工具栏剪贴板不见了怎么显示

解决&#xff1a;在左侧顶级菜单中找到视图&#xff0c;然后找到PLSQL剪贴板&#xff0c;把它勾选上&#xff0c;就会显示出来了。

企业虚拟直播是什么,操作界面和直播观看界面截图介绍

企业虚拟直播是什么&#xff0c;操作界面和直播观看界面截图介绍 企业MR虚拟直播操作界面和直播观看界面 “虚拟场景虚拟特效虚拟录播/直播”技术方案.MR虚拟直播 MR虚拟直播带来的内容、体验和互动的升级&#xff0c;对多个行业、场景具有重大意义&#xff0c;尤其是在汽车、科…

MySQL 、Sql server 错误处理机制 \输出特点的错误信息

sql server 错误处理机制 try 。。。catch ---Try Catch Syntax BEGIN TRY{<sql statements>} end TRY BEGIN Catch{<sql> statements} end catch [;]MySQL 程序错误处理机制 ** 定义条件 定义处理程序** 定义条件&#xff1a; declare 错误名称 condition …

物流签收异常,财务对账复杂,怎么解决?

电子商务行业的蓬勃发展为人们的购物体验带来了巨大的便利&#xff0c;然而&#xff0c;随之而来的物流签收异常和财务对账复杂问题却给电商企业的财务部门带来了一系列困扰。 每天大量的订单和货物流转&#xff0c;不可避免地导致了物流签收数据与财务记录之间的不一致和差异…

七夕特别!用代码绘制爱心,送你一份浪漫的礼物

七夕情人节即将来临&#xff0c;是时候为心爱的人准备一份特别的礼物了。不过&#xff0c;我们今天要来换个方式&#xff0c;用一段简单的Python代码绘制一个爱心图案&#xff0c;再搭配一个暖心的七夕文案&#xff0c;为这个特别的日子增添一份浪漫与惊喜。 # -*- coding: ut…

基于Element-ui的颜色选取器,增加最近使用的颜色。

8个预设颜色值&#xff0c;使用一个颜色后&#xff0c;将颜色放到第一个预设颜色&#xff0c;去重&#xff0c;保存到本地。 完整代码自取 <template><div><el-color-picker :value"value" show-alpha :predefine"predefineColors" chan…

实例041 获取桌面大小

实例说明 获取桌面分辨率可以使用API函数GetDeviceCaps&#xff0c;但API函数参数较多&#xff0c;使用不方便&#xff0c;如何更方便的获取桌面分辨率呢&#xff1f;在本例中&#xff0c;通过读取Screen对象的属性&#xff0c;来获取桌面分辨率信息&#xff0c;以像素为单位。…

IBM LSF 系统简介

IBM LSF 系统简介 LSF&#xff08;Load Sharing Facility&#xff09;是IBM旗下的一款分布式集群管理系统软件&#xff0c;负责计算资源的管理和批处理作业的调度。它给用户提供统一的集群资源访问接口&#xff0c;让用户透明地访问整个集群资源。同时提供了丰富的功能和可定制…

实时拍照翻译怎么做?几个步骤轻松翻译

现在&#xff0c;随着人们跨越国界的频率不断增加&#xff0c;语言障碍成为了一个越来越普遍的问题。为了解决这个问题&#xff0c;一些应用程序开始提供实时拍照翻译功能&#xff0c;这种功能可以通过手机摄像头拍摄文本&#xff0c;并将其翻译成用户所需的语言。那么&#xf…

YOLO目标检测——动漫头像数据集下载分享

动漫头像数据集是用于研究和分析动漫头像相关问题的数据集&#xff0c;它包含了大量的动漫风格的头像图像。动漫头像是指以动漫风格绘制的虚构人物的头像图像&#xff0c;常见于动画、漫画、游戏等媒体。 数据集点击下载&#xff1a;YOLO动漫头像数据集50800图片.rar

结构型(四) - 装饰器模式

一、概念 装饰器模式&#xff08;Decorator Pattern&#xff09;&#xff1a;允许向一个现有的对象添加新的功能&#xff0c;同时又不改变其结构。这种模式创建了一个装饰类&#xff0c;用来包装原有的类&#xff0c;并在保持类方法签名完整性的前提下&#xff0c;提供了额外的…

【Java转Go】快速上手学习笔记(五)之Gorm篇

目录 go get命令1、go get命令无响应问题2、Unresolved dependency错误 连接数据库连接.gomain.go 操作数据库创建表新增数据更新数据删除数据查询数据单表查询多表查询 用到的数据库表原生SQL 完整代码 go往期文章笔记&#xff1a; 【Java转Go】快速上手学习笔记&#xff08;…

python-docx把dataframe表格添加到word文件中

python-docx把dataframe表格添加到word文件中思路较为简单&#xff1a; 先把dataframe格式转变为table新建一个段落&#xff1a;document.add_paragraph()把table添加到这个段落下方 效果图 示例代码 from docx import Document, oxml import pandas as pd import numpy as …

什么是安全测试报告,怎么获得软件安全检测报告?

安全测试报告 软件安全测试报告&#xff1a;是指测试人员对软件产品的安全缺陷和非法入侵防范能力进行检查和验证的过程&#xff0c;并对软件安全质量进行整体评估&#xff0c;发现软件的缺陷与 bug&#xff0c;为开发人员修复漏洞、提高软件质量奠定坚实的基础。 怎么获得靠谱…

单链表制作通讯录

1 问题 通讯录具有输入信息&#xff0c;显示信息&#xff0c;查找以姓名作为关键字&#xff0c;删除信息。 2 方法 实现一个基于面向对象思想的&#xff0c;具有添加、查看、删除、修改、查找、保存数据功能的通讯录程序。 class Node: def __init__(self, name, phone_numb…

HCIP的交换机(STP,VRRP)实验

题目 拓扑图 链路聚合 LSW1 [lsw3]interface Eth-Trunk 1 [lsw3-Eth-Trunk1]trunkport GigabitEthernet 0/0/3 0/0/4 [lsw3-Eth-Trunk1]q [lsw3]vlan batch 1 2 [lsw3]interface Eth-Trunk 1 [lsw3-Eth-Trunk1]port link-type trunk [lsw3-Eth-Trunk1]port trunk allow-pass…

多线程与并行计算(python与c++)基础入门篇

目录 1.简介 1.1什么事多线程 1.2概念 2.python多线程基础知识讲解 创建线程&#xff1a; 启动线程&#xff1a; 线程函数/方法&#xff1a; 线程同步&#xff1a; 线程间通信&#xff1a; 线程结束与等待&#xff1a; 线程常用方法&#xff1a; 3.c多线程基础知识…

无涯教程-PHP - ereg()函数

ereg() - 语法 int ereg(string pattern, string originalstring, [array regs]); ereg()函数在string指定的字符串中搜索pattern指定的字符串&#xff0c;如果找到pattern&#xff0c;则返回true&#xff0c;否则返回false。搜索对于字母字符区分大小写。 可选的输入参数re…