如何在python中计算偏相关


在统计学中,我们经常使用皮尔逊相关系数来衡量两个变量之间的线性关系。然而,有时我们想在控制第三个变量的同时了解两个变量之间的关系。

例如,假设我们想要衡量学生的学习时数与期末考试成绩之间的关联,同时控制学生在班级中的当前成绩。在这种情况下,我们可以使用偏相关来衡量学习时间和期末考试成绩之间的关系。

本教程介绍如何在 Python 中计算偏相关。

示例:Python 中的部分相关

假设我们有以下 Pandas DataFrame,它显示 10 名学生的当前成绩、总学习时间和期末考试成绩:

 import numpy as np
import panda as pd

data = {'currentGrade': [82, 88, 75, 74, 93, 97, 83, 90, 90, 80],
        'hours': [4, 3, 6, 5, 4, 5, 8, 7, 4, 6],
        'examScore': [88, 85, 76, 70, 92, 94, 89, 85, 90, 93],
        }

df = pd.DataFrame(data, columns = ['currentGrade','hours', 'examScore'])
df

   currentGrade hours examScore
0 82 4 88
1 88 3 85
2 75 6 76
3 74 5 70
4 93 4 92
5 97 5 94
6 83 8 89
7 90 7 85
8 90 4 90
9 80 6 93

要在控制currentGrade的同时计算小时数examScore之间的偏相关性,我们可以使用penguin 包中的partial_corr()函数,该函数使用以下语法:

partial_corr(数据,x,y,协方差)

金子:

  • data:数据框的名称
  • x, y:数据框中的列名称
  • covar:数据框中协变量列的名称(例如您正在控制的变量)

以下是在此特定示例中使用此函数的方法:

 #install and import penguin package 
pip install penguin
import penguin as pg

#find partial correlation between hours and exam score while controlling for grade
pg.partial_corr(data=df, x='hours', y='examScore', covar='currentGrade')


         n r CI95% r2 adj_r2 p-val BF10 power
pearson 10 0.191 [-0.5, 0.73] 0.036 -0.238 0.598 0.438 0.082

我们可以看到,学习时间和期末考试成绩之间的偏相关为0.191 ,属于较小的正相关。随着学习时间的增加,假设当前成绩保持不变,考试成绩也往往会增加。

要同时计算多个变量之间的偏相关性,我们可以使用.pcorr()函数:

 #calculate all pairwise partial correlations, rounded to three decimal places
df.pcorr().round(3)

	     currentGrade hours examScore
currentGrade 1.000 -0.311 0.736
hours -0.311 1.000 0.191
examScore 0.736 0.191 1.000

结果解释方式如下:

  • 当前成绩与学习时间之间的偏相关为-0.311
  • 当前成绩与考试成绩之间的偏相关为0.736
  • 学习时间和考试成绩之间的偏相关为0.191

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注