如何在 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 # Define the data for the 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]}) # Perform the ANCOVA model = ols('dependent_variable ~ group + covariate', data=df).fit() # Print the summary of the model print(model.summary())

输出

                           OLS Regression Results                            
==============================================================================
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),但它允许将变量包含在模型中。因此,它是评估这些因素对组均值的影响和生成组间更准确比较的宝贵工具。它广泛应用于各种研究领域,包括心理学、生物学和经济学,以评估协变量对组均值的影响,并得出关于变量相关性的更精确结论。

更新于: 2022-12-28

4K+ 次浏览

启动您的 职业生涯

通过完成课程获得认证

开始
广告

© . All rights reserved.