📜  如何在Python中执行 Welch 的 ANOVA

📅  最后修改于: 2022-05-13 01:54:59.649000             🧑  作者: Mango

如何在Python中执行 Welch 的 ANOVA

当违反等方差假设时, Welch 的 ANOVA被用作标准单向 ANOVA 的替代方案。单向方差分析(“方差分析”)用于查看三个或更多独立组的平均值是否存在统计学上的显着差异。

执行 Welch 的 ANOVA 的步骤:

第 1 步:创建一个 Pandas 数据框来保存执行 ANCOVA 的数据。

例子:

为了查看三种不同的学习策略是否会导致不同的考试成绩,教师随机分配 10 名学生使用每种策略(strat1、strat2、strat3)一周,然后要求每个学生参加类似复杂性的考试。以下是30名学生的考试成绩:

第 2 步:检查这三种策略的分数之间是否存在相等的方差。

我们可以使用 Bartlett 检验来查看每组的方差是否相等。如果检验统计量的 p 值小于某个显着性水平(例如 =.05),我们可以拒绝原假设并得出并非所有组都具有相同方差的结论。要在Python中运行 Bartlett 的测试,请使用以下代码:

Python
# Import library
import scipy.stats as stats
  
# Create Data
strat1 = [64, 66, 68, 75, 78, 94, 98, 79, 71, 80]
strat2 = [91, 92, 93, 90, 97, 94, 82, 88, 95, 96]
strat3 = [79, 78, 88, 94, 92, 85, 83, 85, 82, 81]
  
# perform Bartlett's test
stats.bartlett(strat1, strat2, strat3)


Python
import pingouin as pg
import pandas as pd
import numpy as np
  
# create DataFrame
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(['strat1', 'strat2', 'strat3'],
                                      repeats=10)})
  
# perform Welch's ANOVA
pg.welch_anova(dv='score', between='group', data=df)


Bartlett 检验的 p 值 (.01089) 小于 α = .05,这意味着我们可以拒绝每个组具有相同方差的原假设。因此,等于方差的假设被违反,我们可以继续执行 Welch 的 ANOVA。

第 3 步:现在将 Welch 的 ANOVA 应用于数据。

在Python中,我们可以使用 Pingouin 包的 welch_anova()函数来执行 Welch 的 ANOVA。在应用 Welch 的 ANOVA 之前,请确保我们已经安装了 'pingouin' 库。

安装 pingouin 库的语法:

Python

import pingouin as pg
import pandas as pd
import numpy as np
  
# create DataFrame
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(['strat1', 'strat2', 'strat3'],
                                      repeats=10)})
  
# perform Welch's ANOVA
pg.welch_anova(dv='score', between='group', data=df)

第四步:分析执行welch_anova()后得到的结果。

ANOVA 表中的总体 p 值 (0.001598) 小于 α = .05,这意味着我们可以拒绝三种学习技术的考试成绩相等的原假设。