scipy.stats.

tukey_hsd#

scipy.stats.tukey_hsd(*args)[source]#

对多种处理的均值相等性执行 Turkey 的 HSD 检验。

Turkey 的诚实显著差异 (HSD) 检验对一组样本的均值进行成对比较。ANOVA(例如 f_oneway)评估每个样本的底层均值是否相同,而 Turkey 的 HSD 是一种事后检验,用于将每个样本的均值与其他每个样本的均值进行比较。

原假设是,样本的底层分布具有相同的均值。检验统计量(计算每个样本的所有成对配对)只是样本均值之间的差异。对于每对样本,p 值是在原假设(及其他假设;见注释)下观察到该统计量的极端值(考虑到正在执行许多成对比较)的概率。

参数:
sample1, sample2, …array_like

每组的样本测量值。至少要有两个参数。

返回:
resultTukeyHSDResult 实例

返回值是具有以下属性的对象

statisticfloat ndarray

每个比较测试的计算统计数据。索引 (i, j) 元素是组 ij 之间的比较统计数据。

pvalue浮点型数组

每个比较测试的计算 p 值。索引 (i, j) 元素是组 ij 之间的比较 p 值。

该对象具有以下方法

confidence_interval(confidence_level=0.95)

计算指定置信水平的置信区间。

参见

dunnett

执行均值与控制组的比较。

备注

使用此测试依赖于几个假设。

  1. 各组内和之间的观察值相互独立。

  2. 每组内的观察值呈正态分布。

  3. 从其抽取样本的分布具有相同的有限方差。

该测试的最初公式适用于样本大小相等的情况 [6]。对于样本大小不相等的情况,测试采用图基-克雷默方法 [4]

参考

[1]

NIST/SEMATECH 统计方法电子手册,“7.4.7.1. 图基本法”。https://www.itl.nist.gov/div898/handbook/prc/section4/prc471.htm,2020 年 11 月 28 日。

[2]

阿布迪,埃尔韦 & 威廉姆斯,琳恩。(2021 年)。“图基的显著性差异 (HSD) 检验”。https://personal.utdallas.edu/~herve/abdi-HSD2010-pretty.pdf

[3]

“使用 SAS PROC ANOVA 和 PROC GLM 进行单因素 ANOVA”。SAS 教程,2007 年,www.stattutorials.com/SAS/TUTORIAL-PROC-GLM.htm。

[4]

克雷默,克莱德·杨。“将多重范围检验扩展到组均值,具有不均等的重复数”。生物测量学,第 12 卷,第 3 期,1956 年,第 307-310 页。JSTOR,www.jstor.org/stable/3001469。于 2021 年 5 月 25 日访问。

[5]

NIST/SEMATECH 统计方法电子手册,“7.4.3.3. ANOVA 表和关于均值的假设检验”https://www.itl.nist.gov/div898/handbook/prc/section4/prc433.htm, 2021 年 6 月 2 日。

[6]

图基本,约翰·W。“在方差分析中比较个体均值”。生物测量学,第 5 卷,第 2 期,1949 年,第 99-114 页。 JSTOR,www.jstor.org/stable/3001913。于 2021 年 6 月 14 日访问。

示例

这里有一些数据比较三种品牌的止痛药的缓解时间,以分钟为单位报告。数据根据 [3] 改编。

>>> import numpy as np
>>> from scipy.stats import tukey_hsd
>>> group0 = [24.5, 23.5, 26.4, 27.1, 29.9]
>>> group1 = [28.4, 34.2, 29.5, 32.2, 30.1]
>>> group2 = [26.1, 28.3, 24.3, 26.2, 27.8]

我们想看看任何两组的平均值是否存在显著差异。首先,使用箱线图进行目视检查。

>>> import matplotlib.pyplot as plt
>>> fig, ax = plt.subplots(1, 1)
>>> ax.boxplot([group0, group1, group2])
>>> ax.set_xticklabels(["group0", "group1", "group2"]) 
>>> ax.set_ylabel("mean") 
>>> plt.show()
../../_images/scipy-stats-tukey_hsd-1_00_00.png

从箱形图中,我们可以看到第 1 组到第 2 组与第 3 组的四分位区间重叠,但我们可以应用 tukey_hsd 测试来判断均值差是否显著。我们设定显着性水平为 .05 来拒绝零假设。

>>> res = tukey_hsd(group0, group1, group2)
>>> print(res)
Tukey's HSD Pairwise Group Comparisons (95.0% Confidence Interval)
Comparison  Statistic  p-value   Lower CI   Upper CI
(0 - 1)     -4.600      0.014     -8.249     -0.951
(0 - 2)     -0.260      0.980     -3.909      3.389
(1 - 0)      4.600      0.014      0.951      8.249
(1 - 2)      4.340      0.020      0.691      7.989
(2 - 0)      0.260      0.980     -3.389      3.909
(2 - 1)     -4.340      0.020     -7.989     -0.691

零假设是每组的均值相同。group0group1 之间的比较以及 group1group2 之间的比较的 p 值没有超过 .05,因此我们拒绝均值相同的零假设。group0group2 之间的比较的 p 值超过 .05,因此我们接受均值之间没有显著差异的零假设。

我们还可以计算与我们选择的置信水平相关联的置信区间。

>>> group0 = [24.5, 23.5, 26.4, 27.1, 29.9]
>>> group1 = [28.4, 34.2, 29.5, 32.2, 30.1]
>>> group2 = [26.1, 28.3, 24.3, 26.2, 27.8]
>>> result = tukey_hsd(group0, group1, group2)
>>> conf = res.confidence_interval(confidence_level=.99)
>>> for ((i, j), l) in np.ndenumerate(conf.low):
...     # filter out self comparisons
...     if i != j:
...         h = conf.high[i,j]
...         print(f"({i} - {j}) {l:>6.3f} {h:>6.3f}")
(0 - 1) -9.480  0.280
(0 - 2) -5.140  4.620
(1 - 0) -0.280  9.480
(1 - 2) -0.540  9.220
(2 - 0) -4.620  5.140
(2 - 1) -9.220  0.540