Как рассчитать частичную корреляцию в python


В статистике мы часто используем коэффициент корреляции Пирсона для измерения линейной зависимости между двумя переменными. Однако иногда мы хотим понять взаимосвязь между двумя переменными , одновременно контролируя третью переменную .

Например, предположим, что мы хотим измерить связь между количеством учебных часов учащегося и оценкой на итоговом экзамене, одновременно контролируя текущую оценку учащегося в классе. В этом случае мы могли бы использовать частичную корреляцию для измерения взаимосвязи между учебными часами и оценкой на итоговом экзамене.

В этом руководстве объясняется, как вычислить частичную корреляцию в Python.

Пример: частичная корреляция в Python

Допустим, у нас есть следующий DataFrame Pandas, который отображает текущую оценку, общее количество изученных часов и итоговую оценку за экзамен для 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 , мы можем использовать функцию parts_corr() из пакета penguin , которая использует следующий синтаксис:

частичное_корр (данные, x, y, ковар)

Золото:

  • данные: имя фрейма данных
  • x, y: имена столбцов в кадре данных.
  • ковар: имя столбца ковариаты в кадре данных (например, переменная, которой вы управляете)

Вот как использовать эту функцию в этом конкретном примере:

 #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 .

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *