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 中执行重复测量方差分析

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注