Ограничение pandas corr() и как с ним бороться

Что такое корреляция?

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

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

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

Большинство людей, плохо знакомых с наукой о данных, обнаружат, что используют встроенную функцию корреляции pandas, то есть pandas.DataFrame.corr(), как показано ниже.

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





Однако независимо от метода функция pandas.DataFrame.corr() возвращает только кадр данных, состоящий из значений корреляции.

Ограничение pandas corr()

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



Если не corr(), что еще?

С точки зрения приложения, если pandas.DataFrame.corr() не дает нам p-значения, как их узнать? Ну, вы могли бы рассчитать их сами. Или вы можете использовать scipy для расчета корреляции!

Библиотека статистики Scipy предлагает все три версии теста корреляции, предлагаемые в pandas.DataFrame.corr(), то есть пирсон, копейщик, кендалл тау. Использовать его так же просто, как передать столбцы фрейма данных, которые вы хотите сравнить. Рассмотрим фрагмент ниже

Из приведенного выше вывода мы можем видеть p-значения и, следовательно, знать, насколько значительны корреляции.

Заключение

Для корреляционных тестов на выборках данных (с которыми вы часто будете работать) всегда также вычисляйте p-значения. Таким образом, при работе с образцами данных используйте scipy.stats вместо pandas.DataFrame.corr().