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