如何在Python中进行ANCOVA分析?
ANCOVA(协变量分析)是一种有用的统计方法,因为它可以将协变量包含在分析中,这可以有助于调整辅助变量并增加组比较的精度。这些额外的因素或协变量可以通过使用ANCOVA纳入研究中。为了确保任何观察到的组之间差异都是由治疗或研究中介入引起的,而不是由不相关的因素引起的,可以使用ANCOVA来调整协变量对组均值的影响。这可以使组之间的比较更准确,并给出关于变量之间关系的更坚实的结论。在本文中,我们将仔细研究ANCOVA,并在Python中实现它。
什么是ANCOVA?
协方差分析(ANCOVA)方法比较两个或多个组的平均值,同时调整一个或多个连续变量(称为协变量)的效应。 ANCOVA类似于方差分析(ANOVA),但它允许在模型中包括变量。 因此,它是评估这些因素对组均值的影响并生成更准确的组之间比较的有价值的工具。
考虑以下情形-您正在进行研究,以评估新的降血压药物的功效。 您从服用药物的人群和未服用药物的人群收集了血压数据,以及每个参与者的年龄数据。 使用ANCOVA可以在调整协变量(年龄)对组均值的影响的同时,比较两组在因变量(血压)上的平均值。 这将使您能够确定药物是否能成功降低血压,同时考虑组之间的任何年龄差异。
在Python中实现ANCOVA
考虑使用statsmodels模块执行以下Python中的ANCOVA-
语法
df = pd.DataFrame({'dependent_variable' : [8, 7, 9, 11, 10, 12, 14, 13, 15, 16],
'group' : ["A", "A", "A", "B", "B", "B", "C", "C", "C", "C"],
'covariate' : [20, 30, 40, 30, 40, 50, 40, 50, 60, 70]})
model = ols('dependent_variable ~ group + covariate', data=df).fit()
使用Python的statsmodels模块,可以进行ANCOVA(协变量分析)。协方差分析(ANCOVA)是一种统计方法,用于比较两个或多个组的平均值,同时调整一个或多个连续变量(称为协变量)的效应。
算法
-
导入Pandas和statsmodel.api
-
定义Ancova数据
-
执行Ancova操作
-
打印模型的摘要
示例
在此示例中演示了使用scikit-posthocs库运行Dunn的测试-
import pandas as pd
import statsmodels.api as sm
from statsmodels.formula.api import ols
# 定义ANCOVA数据
df = pd.DataFrame({'dependent_variable' : [8, 7, 9, 11, 10, 12, 14, 13, 15, 16],
'group' : ["A", "A", "A", "B", "B", "B", "C", "C", "C", "C"],
'covariate' : [20, 30, 40, 30, 40, 50, 40, 50, 60, 70]})
# 执行ANCOVA
model = ols('dependent_variable ~ group + covariate', data=df).fit()
# 打印模型总结
print(model.summary())
输出
OLS回归结果
==============================================================================
Dep. Variable: dependent_variable R-squared: 0.939
Model: OLS Adj. R-squared: 0.909
Method: Least Squares F-statistic: 31.00
Date: Fri, 09 Dec 2022 Prob (F-statistic): 0.000476
Time: 09:52:28 Log-Likelihood: -10.724
No. Observations: 10 AIC: 29.45
Df Residuals: 6 BIC: 30.66
Df Model: 3
Covariance Type: nonrobust
==============================================================================
coef std err t P>|t| [0.025 0.975]
------------------------------------------------------------------------------
Intercept 6.0000 1.054 5.692 0.001 3.421 8.579
group[T.B] 2.3333 0.805 2.898 0.027 0.363 4.303
group[T.C] 4.8333 1.032 4.684 0.003 2.308 7.358
covariate 0.0667 0.030 2.191 0.071 -0.008 0.141
==============================================================================
Omnibus: 2.800 Durbin-Watson: 2.783
Prob(Omnibus): 0.247 Jarque-Bera (JB): 1.590
Skew: -0.754 Prob(JB): 0.452
Kurtosis: 1.759 Cond. No. 201.
估计系数和对照变量,以及它们的p值和置信范围的输出都包含在此代码的输出中。可以使用这些数据比较组平均值,同时考虑协变量的影响,并评估模型中的组和协变量的重要性。
总的来说,statsmodels模块为Python用户提供了一个强大而适应性强的工具来进行ANCOVA分析。它使得创建、测试、分析和理解ANCOVA模型及其输出变得简单。
结论
最后,ANCOVA(协方差分析)是一种统计方法,用于比较两个或多个组的平均值,并调整一个或多个连续变量(称为协变量)的影响。ANCOVA类似于ANOVA(方差分析),但它允许向模型中添加变量。因此,它是评估这些因素对组平均值影响的有用工具,并在组之间生成更准确的比较。 它被广泛应用于各个研究领域,包括心理学,生物学和经济学,以评估协变量对组平均数的影响,并绘制更精确的变量相关性结论。