Як розрахувати часткову кореляцію в 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

Щоб обчислити часткову кореляцію між годинами та examScore під час керування currentGrade , ми можемо використати функцію partial_corr() із пакету penguin , яка використовує такий синтаксис:

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 .

Додати коментар

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *