В статистике мы часто используем Коэффициент корреляции Пирсона для измерения линейной зависимости между двумя переменными. Однако , иногда нам нужно понять взаимосвязь между двумя переменными при контроле третьей переменной.
Например, предположим, что мы хотим измерить связь между количеством часов обучения учащегося и итоговой оценкой, которую он получает на экзамене, учитывая текущую оценку учащегося в классе. В этом случае мы можно использовать частную корреляцию, чтобы измерить взаимосвязь между часами обучения и fi итоговая оценка экзамена.
В этом руководстве объясняется, как вычислить частичную корреляцию в 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()
функция из пакета pingouin, который использует следующий синтаксис:
partial_corr(data, x, y, covar)
где:
- data: имя фрейма данных
- x, y: имена столбцов в фрейме данных
- covar: имя столбца covariate в фрейме данных (например, переменная, которую вы контролируете)
Вот как использовать эту функцию в этом конкретный пример:
#установить и импортировать пакет pingouin
pip install pingouin
import pingouin as pg
#найти частичную корреляцию между количеством часов и экзаменационным баллом при контроле
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():
#вычислить все попарные частные корреляции, округленные до трех знаков после запятой
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