如何在Python中执行 ANCOVA
ANCOVA(协方差分析)用于在控制一个或多个解释变量(协变量)后识别 2 个或多个独立组的平均值之间的统计差异。影响响应变量但与研究无关的变量称为协变量。
- 解释响应变量(输出变量)变化的自变量或预测变量称为解释变量。
- 响应解释变量变化的因变量或结果变量称为响应变量。
应用 ANCOVA函数
示例:一位导师想知道三种不同的教学方法是否会对考试成绩产生不利影响,但她也想考虑学生在课堂上的当前成绩。她将使用以下变量运行 ANCOVA:
- 学习方法是一个因素变量。
- 当前等级是协变量。
- 测试分数是一个响应变量。
执行 ANCOVA 的步骤
第 1 步:创建一个 Pandas 数据框来保存执行 ANCOVA 的数据。
Python
import numpy as np
import pandas as pd
# create data
data = pd.DataFrame({'methodology': np.repeat(['A', 'B', 'C'], 4),
'current_grade': [67, 88, 75, 85,
92, 77, 74, 88,
91, 88, 82, 80],
'test_score': [77, 89, 74, 69,
88, 93, 94, 90,
85, 81, 83, 79]})
# view data
data
Python
from pingouin import ancova
data = pd.DataFrame({'methodology': np.repeat(['A', 'B', 'C'], 4),
'current_grade': [67, 88, 75, 85,
92, 77, 74, 88,
91, 88, 82, 80],
'test_score': [77, 89, 74, 69,
88, 93, 94, 90,
85, 81, 83, 79]})
ancova(data=data, dv='test_score', covar='current_grade', between='methodology')
第 2 步:现在使用pingouin库中的ancova()执行 ANCOVA。在使用ANCOVA()之前,请确保您已经安装了pingouin库,如下所示。
句法:
pip install pingouin
上面的代码将执行pingouin 的所有必要的库和模块。
ancova() 函数:
Syntax: pingouin.ancova(data=None, dv=None, between=None, covar=None, effsize=’np2′)
Pameters:
- Data : pandas data frame that is supplied to perform ANCOVA.
- DV : Dependent variable column name.
- Between : name of the column in data with Factor variable.
- Covar : name of the columns in data with covariate.
- effsize : Effect size.
Python
from pingouin import ancova
data = pd.DataFrame({'methodology': np.repeat(['A', 'B', 'C'], 4),
'current_grade': [67, 88, 75, 85,
92, 77, 74, 88,
91, 88, 82, 80],
'test_score': [77, 89, 74, 69,
88, 93, 94, 90,
85, 81, 83, 79]})
ancova(data=data, dv='test_score', covar='current_grade', between='methodology')
输出:
步骤 3:分析执行 ANCOVA 后获得的结果。
ANCOVA()函数执行成功后返回以下值。
- aov-pandas.DataFrame
- ANCOVA summary:
- ‘Source’: Names of the factor considered
- ‘SS’: Sums of squares
- ‘DF’: Degrees of freedom
- ‘F’: F-values
- ‘p-unc’: Uncorrected p-values
- ‘np2’: Partial eta-squared
根据 ANCOVA 表,研究方法的 p 值(p-unc = “未校正的 p 值”)为 0.025542。因为这个值小于 0.05,我们可以拒绝每个学习方法产生相同的平均测试分数的原假设,即使在控制了学生在课堂上的当前成绩之后也是如此。