Python에서 부분 상관 관계를 계산하는 방법


통계에서는 두 변수 간의 선형 관계를 측정하기 위해 Pearson 상관 계수를 자주 사용합니다. 그러나 때때로 우리는 세 번째 변수를 제어하면서 두 변수 사이의 관계를 이해하고 싶을 때가 있습니다.

예를 들어, 학생의 현재 수업 성적을 통제하면서 학생의 학습 시간과 최종 시험 성적 사이의 연관성을 측정한다고 가정해 보겠습니다. 이 경우 부분 상관 관계를 사용하여 공부 시간과 최종 시험 성적 간의 관계를 측정할 수 있습니다.

이 튜토리얼에서는 Python에서 부분 상관 관계를 계산하는 방법을 설명합니다.

예: Python의 부분 상관관계

10명의 학생에 대한 현재 성적, 총 학습 시간 및 최종 시험 성적을 표시하는 다음 Pandas DataFrame이 있다고 가정해 보겠습니다.

 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 사이의 부분 상관관계를 계산하려면 다음 구문을 사용하는 펭귄 패키지부분적_corr() 함수를 사용할 수 있습니다.

부분_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입니다 .

의견을 추가하다

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다