如何在 python 中执行 tukey 测试
单向方差分析用于确定三个或更多独立组的平均值之间是否存在统计显着差异。
如果方差分析表的总体p 值低于一定的显着性水平,则我们有足够的证据表明至少其中一个组均值与其他均值不同。
然而,这并没有告诉我们哪些群体彼此不同。这只是告诉我们并非所有组的平均值都是相等的。为了准确地了解哪些组彼此不同,我们需要执行事后测试。
最常用的事后检验之一是Tukey 检验,它允许我们在每组均值之间进行成对比较,同时控制族误差率。
本教程提供了如何在 Python 中执行 Tukey 测试的分步示例。
第1步:加载必要的包和函数
首先,我们将在Python中加载必要的包和函数:
import pandas as pd
import numpy as np
from scipy. stats import f_oneway
from statsmodels. stats . multicomp import pairwise_tukeyhsd
第 2 步:拟合方差分析模型
以下代码展示了如何创建一个包含三组(A、B 和 C)的假数据集,并对数据拟合单向方差分析模型以确定每组的平均值是否相等:
#enter data for three groups a = [85, 86, 88, 75, 78, 94, 98, 79, 71, 80] b = [91, 92, 93, 90, 97, 94, 82, 88, 95, 96] c = [79, 78, 88, 94, 92, 85, 83, 85, 82, 81] #perform one-way ANOVA f_oneway(a, b, c) F_onewayResult(statistic=5.167774552944481, pvalue=0.012582197136592609)
我们可以看到方差分析表中的总体 p 值为0.01258 。
由于这个数字小于0.05,我们有足够的证据表明每组中的平均值并不相等。
因此,我们可以进行 Tukey 检验来准确确定哪些组均值不同。
第 3 步:执行 Tukey 测试
要在Python中执行Tukey测试,我们可以使用statsmodels库中的pairwise_tukeyhsd()函数:
#create DataFrame to hold data df = pd. DataFrame ({'score': [85, 86, 88, 75, 78, 94, 98, 79, 71, 80, 91, 92, 93, 90, 97, 94, 82, 88, 95, 96, 79, 78, 88, 94, 92, 85, 83, 85, 82, 81], 'group': np. repeat (['a', 'b', 'c'], repeats= 10 )}) # perform Tukey's test tukey = pairwise_tukeyhsd(endog=df['score'], groups=df['group'], alpha= 0.05 ) #display results print (tukey) Multiple Comparison of Means - Tukey HSD, FWER=0.05 ==================================================== === group1 group2 meandiff p-adj lower upper reject -------------------------------------------------- --- ab 8.4 0.0158 1.4272 15.3728 True ac 1.3 0.8864 -5.6728 8.2728 False bc -7.1 0.0453 -14.0728 -0.1272 True -------------------------------------------------- ---
以下是如何解释结果:
- a 和 b 之间平均值差异的 P 值: 0.0158
- a 和 c 之间均值差异的 P 值: 0.8864
- b 和 c 之间平均值差异的 P 值: 0.0453
因此,我们可以得出结论, a组和b组以及b组和c组的平均值之间存在统计显着性差异,但a组和c组的平均值之间没有统计显着性差异。
其他资源
如何在 Python 中执行单向方差分析
如何在 Python 中执行双向方差分析
如何在 Python 中执行重复测量方差分析