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