Python 中的韦尔奇方差分析(一步一步)
当不满足方差相等假设时,韦尔奇方差分析是典型单向方差分析的一种替代方法。
以下分步示例展示了如何在 Python 中执行 Welch 方差分析。
第 1 步:创建数据
为了确定三种不同的学习技巧是否会导致不同的考试结果,教授随机分配 10 名学生使用每种技巧(技巧 A、B 或 C)一周,然后为每个学生提供同等难度的测试。
30名同学的考试成绩如下:
A = [64, 66, 68, 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]
第 2 步:等差检验
接下来,我们可以执行Bartlett 检验来确定每组之间的方差是否相等。
如果检验统计量的p 值低于一定的显着性水平(例如 α = 0.05),那么我们可以拒绝原假设并得出结论:并非所有组都具有相同的方差。
我们可以使用以下代码在Python中执行Bartlett测试:
import scipy. stats as stats
#perform Bartlett's test
stats. bartlett (A, B, C)
BartlettResult(statistic=9.039674395, pvalue=0.010890796567)
Bartlett 检验的 p 值 ( .01089 ) 小于 α = .05,这意味着我们可以拒绝每个组具有相同方差的原假设。
因此,方差相等的假设被违反,我们可以继续进行韦尔奇方差分析。
第 3 步:执行韦尔奇方差分析
要在 Python 中执行 Welch 方差分析,我们可以使用 Penguin 包中的welch_anova()函数。
首先,我们需要安装企鹅:
pip install Penguin
然后我们可以使用下面的代码来执行Welch的ANOVA:
import penguin as pg import pandas as pd import numpy as np #createDataFrame df = pd. DataFrame ({' score ': [64, 66, 68, 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 Welch's ANOVA pg. welch_anova (dv=' score ', between=' group ', data=df) Source ddof1 ddof2 F p-unc np2 0 group 2 16.651295 9.717185 0.001598 0.399286
方差分析表的总体 p 值 ( 0.001598 ) 小于 α = 0.05,这意味着我们可以拒绝三种研究技术之间的考试结果相同的原假设。
然后,我们可以执行 Games-Howell 事后检验来准确确定哪组均值不同:
pg. pairwise_gameshowell (dv=' score ', between=' group ', data=df) A B mean(A) mean(B) diff se T df pval 0 a b 77.3 91.8 -14.5 3.843754 -3.772354 11.6767 0.0072 1 a c 77.3 84.7 -7.4 3.952777 -1.872102 12.7528 0.1864 2 b c 91.8 84.7 7.1 2.179959 3.256942 17.4419 0.0119
从 p 值可以看出, a组和b组之间的平均差异显着不同, b组和c组之间的平均差异也显着不同。
其他资源
如何在 Python 中执行单向方差分析
如何在 Python 中执行双向方差分析
如何在 Python 中执行重复测量方差分析