如何在 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+ 次瀏覽

啟動您的 職業生涯

透過完成課程獲得認證

開始
廣告