Обзор концепции корреляции и ее использования в
проектах по науке о данных.

Автор сценария: Юваль Коэн, Дэвид Грабуа

Введение:

Один из самых фундаментальных вопросов статистического обучения — взаимосвязь между переменными. Оценка степени связи между двумя переменными может помочь принять правильные решения в повседневных задачах, связанных с наукой о данных, по разным причинам:

  1. Уменьшите сложность модели — реализуя выбор признаков на основе корреляции.
  2. Уменьшите мультиколлинеарность — манипулируя сильно коррелированными переменными.
  3. Уменьшите неопределенность модели и сделайте выводы.

Этот пост посвящен коэффициентам корреляции. Корреляция — это статистическая фраза, описывающая степень взаимосвязи между любыми двумя переменными. Поскольку
использование неправильного коэффициента корреляции может привести к критическим ошибкам, важно выбрать правильный коэффициент корреляции для нашей задачи.

Мы рассмотрим различные коэффициенты корреляции, учитывая различные типы переменных (например, числовые, порядковые и категориальные) и типы отношений (линейные/нелинейные).

Интуиция за корреляцией и распространенными ошибками:

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

Коэффициент корреляции должен количественно определять силу связи и отвечать на следующие вопросы:

  1. Существует ли статистически значимая связь между двумя переменными?
  2. Каково направление связи (если она существует)?

Распространенные ошибки:

Измерение корреляции сложно, так как существует много коэффициентов корреляции. Кроме того, каждый коэффициент подходит для различных установок и допущений.

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

Например, на графике ниже мы можем получить сильную нелинейную зависимость между x и y. Однако коэффициент Пирсона для x и y составляет всего -0,01, что очень мало, учитывая явно нелинейную зависимость. Следовательно, мы должны использовать другой и правильный коэффициент для этой установки, чтобы определить эту связь.

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

Для примера мы используем упрощенную версию набора данных PetFinder. Каждая строка в наборе данных PetFinder описывает питомца, а каждый столбец представляет собой переменную.

import pandas as pd
df = pd.read_csv('petfinder-mimi.csv')

Ниже приводится описание этого набора данных.

Числовые и числовые:

Настройка: X, Y — представляет собой числовую переменную.

Pearson’s r

Пирсоновский r – это отношение между ковариацией двух переменных и произведением их
стандартных отклонений. Результат находится в диапазоне от -1 до 1; 1/-1 указывает на идеальную линейную положительную/отрицательную связь, 0 означает отсутствие линейной зависимости.

Предположения.
Основным предположением модели является «линейная зависимость». Мы можем разбросать данные
(в двух измерениях) и визуально проверить, имеют ли они линейную зависимость.

За и против:

Главный недостаток заключается в том, что он игнорирует нелинейные формы связи (например, квадратичную форму корреляции
и т. д.). С другой стороны, преимуществами являются низкая временная сложность и простота модели.

Уравнение r Пирсона:

Реализация Python:

df['PhotoAmt'].corr(df['Fee'], method='pearson')

Коэффициент ранговой корреляции Спирмена

Коэффициент ранговой корреляции Спирмена определяет силу и направление монотонной связи между двумя переменными. Этот коэффициент может быть рассчитан между любой смесью числовых и порядковых переменных. Результат находится в диапазоне от -1 до 1, подобно r Пирсона.

Предположения:

Основным предположением модели является «монотонная связь». Мы можем
построить график рассеяния данных и визуально проверить, имеют ли они монотонную зависимость. Функция называется монотонной тогда и только тогда, когда она либо полностью не возрастает, либо полностью неубывающа.

За и против:

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

Уравнение:

Где n — размер выборки.

Реализация Python:

df['PhotoAmt'].corr(df['Fee'], method='spearman')

Корреляция расстояния

Дистанционная корреляция - это довольно новое измерение корреляции, введенное в 2005 году Габором Дж. Секели. Он измеряет зависимость между любыми двумя парными случайными векторами произвольной, не обязательно одинаковой размерности. Коэффициент дистанционной корреляции равен нулю тогда и только тогда, когда случайные векторы независимы и измеряют как линейную, так и нелинейную связь между
двумя случайными величинами или случайными векторами.

Предположения:

Корреляция расстояний предполагает, что данные являются i.i.d, а X и Y имеют конечные первые моменты.

За и против:

Наиболее существенные недостатки дистанционной корреляции:

  1. Корреляция расстояния всегда положительна и не указывает направление связи.

2. Расчетное время.

Преимущества:

  1. Обработка различных типов отношений между переменными.
  2. Дистанционная корреляция нуля подразумевает независимость, в отличие от других коэффициентов корреляции.
  3. Его можно рассчитать для неравных размерных переменных.

Уравнение:

Реализация Python:

import dcor
dcor.distance_correlation(df['PhotoAmt'], df['Fee'])

Категорическая или категориальная:
Настройка: X, Y — представляет категориальную переменную с двумя или более категориями.

Лямбда Гудмана-Крускала

Лямбда Гудмана-Крускала представляет собой асимметричную меру пропорционального уменьшения в анализе таблицы непредвиденных обстоятельств ошибок. Он основан на измерении взаимосвязей путем вопроса, сколько знаний об одной переменной поможет нам предсказать зависимую переменную лучше, чем наивное предсказание. Значение лямбда находится в диапазоне от 0 до 1, где 0 указывает на отсутствие связи, а 1 указывает на полную связь.

Предположения:

Категориальная и категориальная установка

За и против:

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

Уравнение:

Мы будем использовать следующий пример из Википедии:

Поскольку эта мера асимметрична, мы получим разные результаты для разных направлений вычислений. Давайте рассмотрим «Статус отношений» как Y (зависимая переменная), а «Артериальное давление» как X. Сначала мы наивно предсказываем, что все значения Y будут наиболее частой категорией в данной выборке. Поэтому мы будем предсказывать, что y_i будет «Женаты» для каждого i = 1… n, и будем обозначать количество ошибок как E1.

Затем, учитывая значение x_i, мы прогнозируем, что y_i будет наиболее часто встречающейся категорией в популяции
соответствующего уровня xi («Женаты», когда кровяное давление «Высокое», и «Незамужем» в противном случае), и мы сделаем это для каждого i=1…n. Мы будем обозначать количество ошибок как E2.

Значение лямбда определяется как процент исправления ошибок.

Итак, в нашем примере получаем:

Предположим, мы рассматриваем «Артериальное давление» в качестве зависимой переменной. В этом случае мы получим лямбда, равную нулю из-за преобладания «Нормального» на каждом уровне «Статус отношений», что не приведет к уменьшению ошибки в нашем расчете.

Реализация Python:

from pypair.association import categorical_categorical
categorical_categorical(df['Type'], df['Color2'], 'gk_lambda')

От Крамера v

V Крамера — это симметричная мера ассоциации для категориальных переменных. Крэмеровская v основана на статистике хи-квадрат Пирсона, и ее значение варьируется от 0 до 1, где 0 указывает на отсутствие связи, а 1 указывает на полную связь.

Предположения:
Категориальная установка против категориальной. Наблюдения независимы внутри и вне группы.

За и против.
Критерий Крамера v часто используется для измерения связи двух категориальных переменных. Поскольку он основан на статистике хи-квадрат, он не делает никаких предположений о распределении населения. Однако это не подходит для зависимых данных.

Уравнение:

Реализация Python:

import scipy.stats as stats
import numpy as np
import pandas as pd

def cramers_v(var1, var2):
    data = pd.crosstab(var1, var2).values
    chi_2 = stats.chi2_contingency(data)[0]
    n = data.sum()
    phi_2 = chi_2 / n
    r, k = data.shape
    return np.sqrt(phi_2 / min((k-1), (r-1)))
cramers_v(df['Type'], df['Color2'])

Числовые и категориальные

Установка: Y - числовая переменная, X - категориальная переменная с двумя или более категориями.

Коэффициент двухрядной корреляции:

Коэффициент точечно-бисериальной корреляции колеблется от –1 до +1. Значения, близкие к ±1, указывают на сильную положительную/отрицательную связь, а значения, близкие к нулю, указывают на отсутствие связи между двумя переменными.

Вычисление коэффициента точечной бисериальной корреляции осуществляется путем кодирования двух уровней двоичной переменной «0» и «1» и получения коэффициента между непрерывной переменной (Y) и этой закодированной двоичной переменной.

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

Уравнение:

Реализация Python:

import scipy.stats as stats
point_biserial, p_value = stats.pointbiserialr((df['Type'] == 'Cat'), df['PhotoAmt'])

Категорический и порядковый

Настройка: Y — представляет собой категориальную переменную с двумя или более категориями. X - представляет собой порядковую переменную.

Коэффициент ранговой бисериальной корреляции:

Ранг-двурядная корреляция аналогична коэффициенту точечно-двурядной корреляции, но она направлена ​​на измерение корреляции между двоичной и порядковой переменной.
Вычисление коэффициента ранг-двурядной корреляции выполняется путем кодирования двух уровней. двоичной переменной «0» и «1» и получение коэффициента между ранжированной переменной (Y) и этой закодированной двоичной переменной.

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

Уравнение:

Реализация Python:

from pypair.association import binary_continuous
binary_continuous((df['Type'] == 'Cat'), df['AdoptionSpeed'], 'rank_biserial')

Порядковые и порядковые, порядковые и числовые

Настройка: Y - представляет собой порядковую переменную. X - представляет собой порядковую переменную или числовую.

Корреляция рейтинга Спирмена:
объяснено выше.

Коэффициент ранговой корреляции Кендалла (тау):

Когда размер выборки небольшой и в ней много связанных рангов, коэффициент ранговой корреляции Кендалла (тау) является лучшим выбором для корреляции коэффициент. Существует три типа ранговой корреляции Кендалла: Мы ссылаемся на ранговую корреляцию Кендалла tau-b. Как и у Спирмена, он находится в диапазоне от 1 до -1.

Предположения:

Порядковые или числовые данные. Монотонные отношения между двумя переменными.

За и против:

Лучше использовать для небольших данных со многими связанными рангами.

Уравнение:

Реализация Python:

import scipy.stats as stats
tau, p_value = stats.kendalltau(df['FurLength'], df['MaturitySize'])

Все в одном решении — Phik (𝜙k)

До сих пор мы видели много различных коэффициентов корреляции. Однако ни один из приведенных выше коэффициентов нельзя использовать для всех установок и типов отношений.
Недавно мы столкнулись с методом Phik(𝜙k), который основан на нескольких уточнениях критерий непредвиденных обстоятельств χ2 (хи-квадрат) и может фиксировать нелинейные отношения между всеми типами переменных.

За и против:

Вычисление 𝜙k требует значительных вычислительных ресурсов. Кроме того, он не имеет формулы в закрытой форме и не указывает направление связи.
Кроме того, другие подходящие коэффициенты корреляции будут более точными при правильном использовании.
Однако Phik(𝜙k) дает нам глобальное и универсальное решение для всех типов переменных и отношений между переменными.

Реализация Python:

import phik
from phik.report import plot_correlation_matrix

phik_overview = df.phik_matrix()

Таблица решений:

Выводы.
В этом посте мы рассмотрели различные настройки двумерного анализа и соответствующий коэффициент корреляции для каждой из них.
Мы увидели, что использование корреляции Пирсона в качестве нашего единственного коэффициента корреляции неверно. в большинстве случаев. Вместо этого правильный способ измерения корреляции состоит в том, чтобы точно понять вашу настройку с точки зрения типов переменных, типов отношений, предположений о распределении, выбросов и т. д., а затем выбрать наиболее подходящую меру корреляции. Однако при использовании коэффициентов корреляции как части нашей EDA мы можем использовать различные
коэффициенты корреляции параллельно для учета многих комбинаций типов переменных и предположений. Например, мы всегда можем использовать v Крамера и Спирмена (rho) для учета многих случаев и получить хорошее представление о попарных отношениях данных за короткое время вычислений. Следует отметить, что мы не всегда можем сравнивать измерения, поскольку они не обязательно измеряют одно и то же. Например, показатель Спирмена, равный 0,3, не обязательно выше, чем
показатель корреляции расстояния, равный 0,2. Наконец, если время вычислений не является большой проблемой, мы можем попробовать более общий метод, такой как
Phik (𝜙k), и сразу увидеть все попарные 𝜙k оценки корреляции.
Примечание. При использовании коэффициентов корреляции в рамках статистического теста могут подразумеваться дополнительные предположения.