Pythonで偏相関を計算する方法
統計学では、 ピアソン相関係数を使用して2 つの変数間の線形関係を測定することがよくあります。ただし、場合によっては、 3 番目の変数を制御しながら2 つの変数間の関係を理解したい場合もあります。
たとえば、クラス内での生徒の現在の成績を管理しながら、生徒の学習時間数と最終試験の成績との関連性を測定したいとします。この場合、偏相関を使用して、学習時間と最終試験の成績との関係を測定できます。
このチュートリアルでは、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の間の偏相関を計算するには、ペンギン パッケージのPartial_corr()関数を使用できます。この関数は次の構文を使用します。
Partial_corr(データ、x、y、covar)
金:
- 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 でした。