Для чего применяется функция cor
15 Ковариация и корреляция
Возьмем новый набор данных, на этот раз про американских студентов, вес их рюкзаков и проблемы со спиной. Этот набор данных хранится в пакете Stat2Data — пакет с большим количеством разнообразных данных.
С помощью функции data() загрузим набор данных Backpack :
Давайте посмотрим, что внутри этой переменной:
Name | Backpack |
Number of rows | 100 |
Number of columns | 9 |
_______________________ | |
Column type frequency: | |
factor | 3 |
numeric | 6 |
________________________ | |
Group variables | None |
Variable type: factor
skim_variable | n_missing | complete_rate | ordered | n_unique | top_counts |
---|---|---|---|---|---|
Major | 0 | 1 | FALSE | 41 | Bio: 9, Bus: 8, LS: 7, ME: 6 |
Sex | 0 | 1 | FALSE | 2 | Fem: 55, Mal: 45 |
Status | 0 | 1 | FALSE | 2 | U: 97, G: 3 |
Variable type: numeric
skim_variable | n_missing | complete_rate | mean | sd | p0 | p25 | p50 | p75 | p100 | hist |
---|---|---|---|---|---|---|---|---|---|---|
BackpackWeight | 0 | 1 | 11.66 | 5.77 | 2.00 | 8.00 | 11.00 | 14.25 | 35.00 | ▅▇▂▁▁ |
BodyWeight | 0 | 1 | 153.05 | 29.40 | 105.00 | 130.00 | 147.50 | 170.00 | 270.00 | ▆▇▂▁▁ |
Ratio | 0 | 1 | 0.08 | 0.04 | 0.02 | 0.05 | 0.07 | 0.10 | 0.18 | ▆▇▆▃▁ |
BackProblems | 0 | 1 | 0.32 | 0.47 | 0.00 | 0.00 | 0.00 | 1.00 | 1.00 | ▇▁▁▁▃ |
Year | 0 | 1 | 3.20 | 1.39 | 0.00 | 2.00 | 3.00 | 4.00 | 6.00 | ▃▆▇▆▆ |
Units | 0 | 1 | 14.27 | 2.81 | 0.00 | 13.00 | 15.00 | 16.00 | 19.00 | ▁▁▁▇▆ |
До этого мы говорили о различиях между выборками. Теперь мы будем говорить о связи между переменными.
15.1 Ковариация
Самая простая мера связи между двумя переменными — это ковариация. Если ковариация положительная, то чем больше одна переменная, тем больше другая переменная. При отрицательной ковариации все наоборот: чем больше одна переменная, тем меньше другая.
Ковариация переменной самой с собой — дисперсия.
В R есть функция cov() для подсчета ковариации. На самом деле, функция var() делает то же самое. Обе эти функции считают сразу матрицу ковариаций для всех сочетаний колонок на входе:
Ну а по углам этой матрицы – дисперсии!
Однако у ковариации есть серьезное ограничение – ее размер привязан к исходной шкале, поэтому сложно оценить, насколько ковариация большая или маленькая. Поэтому на практике гораздо больше используются коэффициенты корреляции.
15.2 Корреляция
Если коэффициент корреляции положительный, то чем больше значения в одной переменной, тем больше значения в другой переменной.
Если коэффициент корреляции отрицательный, то чем больше значения в одной переменной, тем меньше значения в другой переменной.
Если коэффициент корреляции равен 0, то изменения одной переменной не связано с изменениями в другой переменной.
15.2.1 Коэффициент корреляции Пирсона
Коэффициент корреляции Пирсона можно понимать по-разному. С одной стороны, это просто ковариация, нормированная на стандартное отклонение обоих переменных. С другой стороны, можно понимать это как среднее произведение z-оценок.
Корреляцию в R можно посчитать с помощью функции cor() :
Результат выполнения этой функции очень похож на то, что мы получали при проведении t-теста.
15.2.2 Непараметрические коэффициенты корреляции
15.3 Корреляционная матрица
Возможно, вы нашли что-то более интересное для проверки гипотезы о корреляции. Например, вы еще хотите проверить гипотезу о связи количества учебных кредитов и массе рюкзака: логично предположить, что чем больше студент набрал себе курсов, тем тяжелее его рюкзак (из-за большего количества учебников). Или что студенты к старшим курсам худеют и становятся меньше. Или что те, кто набрал себе много курсов, меньше питаются и от того меньше весят. В общем, хотелось бы прокоррелировать все интересующие нас переменные со всеми. Это можно сделать с помощью функции cor() :
Но функция cor() не позволяет посчитать p-value для этих корреляций! Функция cor.test() позволяет получить p-value, но только для одной пары переменных.
На помощь приходит пакет psych с функцией corr.test() :
Тем не менее, если у вас много гипотез для тестирования, то у вас появляется проблема: вероятность выпадения статистически значимых результатов сильно повышается. Даже если эти переменные никак не связаны друг с другом.
Эта проблема называется проблемой множественных сравнений (multiple comparisons problem). 40 Если мы проверяем сразу несколько гипотез, то у нас возрастает групповая вероятность ошибки первого рода (Family-wise error rate) — вероятность ошибки первого рода для хотя бы одной из множества гипотез.
Например, если вы коррелируете 10 переменных друг с другом, то вы проверяете 45 гипотез о связи. Пять процентов из этих гипотез, т.е. в среднем 2-3 гипотезы у вас будут статистически значимыми даже если никаких эффектов на самом деле нет!
Поэтому если вы проверяете сразу много гипотез, то необходимо применять поправки на множественные сравнения (multiple testing correction). Эти поправки позволяют контролировать групповую вероятность ошибки первого рода на желаемом уровне. Самая простая и популярная поправка на множественные сравнения — поправка Бонферрони (Bonferroni correction). Она считается очень просто: мы просто умножаем p-value на количество проверяемых гипотез!
Это очень “дубовая” и излишне консервативная поправка. Да, она гарантирует контроль групповую вероятности ошибки первого рода, но при этом сильно повышает вероятность ошибки второго рода — вероятность пропустить эффект, если он на самом деле существует. Поэтому по умолчанию в R используется более либеральная поправка на множественные сравнения под названием поправка Холма или поправка Холма-Бонферрони (Holm-Bonferroni correction), которая, тем не менее, тоже гарантирует контроль групповой вероятности ошибки первого рода.
Самая известная поправка для контроля средней доли ложных отклонений — это поправка Бенджамини — Хохберга (Benjamini-Hochberg correction).
Коэффициент CoR
Отличительной особенностью работы любого предприятия в рамках правового поля является обязательное ведение на нем бухгалтерской отчетности. Особенно это важно для банковских организаций, где изменение финансовых потоков может очень сильно меняться в течение небольшого промежутка времени ( день, неделя ).
Непрерывный, ежедневный банковский учет оборотов и остатков по счетам обусловлен необходимостью контроля за рациональным использованием финансовых ресурсов и оценки рисков проведения банковских операций.
В частности, экономистами разработаны многочисленные перечни показателей и мультипликаторов, используемых для экспресс-оценки деятельности кредитной организации и ее ценности.
Для принятия взвешенного инвестиционного решения рассматривается совокупность показателей деятельности кредитной организации, которые удобно сгруппированы в 3 основных блока: о прибылях и убытках (ОПУ); о финансовом положении (ОФП) и финансовые коэффициенты и мультипликаторы стоимости.
Третий блок включает в себя многочисленные «финансовые коэффициенты и мультипликаторы стоимости». Рассмотрим из восьми мультипликаторов этого третьего блока (ROA, POE, NIM,CIR, H1/H23, P/E, P/BV), коэффициент CoR, отвечающий за устойчивость работы кредитной организации и особенно его значимость в процессе принятия инвестиционных и управленческих решений.
Итак, стоимость риска, CoR (cost of risk) – коэффициент отражающий устойчивость финансовой организации. В общем смысле, это стоимость страхования на случай ущерба. Для банка – это затраты на создание резервов под возможные потери, соотнесенные с размером кредитного портфеля.
Анализ CoR показывает что чем выше данный показатель, тем выше риск проводимых операций кредитной организацией, обуславливающих необходимость доначисления резервов и соответственно выбытие данной части капитала из рабочего, приносящего банку доход. Снижение данного показателя является позитивным сигналом и означает снижение риска отдельно выданного банком кредита.
Например, в таблице ниже показано, что коэффициент CoR для Сбербанка уменьшился на 7 базисных пунктов в 2019 году по сравнению с 2018 годом.
Линейный коэффициент корреляции Пирсона
Обнаружение взаимосвязей между явлениями – одна из главных задач статистического анализа. На то есть две причины. Первая. Если известно, что один процесс зависит от другого, то на первый можно оказывать влияние через второй. Вторая. Даже если причинно-следственная связь отсутствует, то по изменению одного показателя можно предсказать изменение другого.
Взаимосвязь двух переменных проявляется в совместной вариации: при изменении одного показателя имеет место тенденция изменения другого. Такая взаимосвязь называется корреляцией, а раздел статистики, который занимается взаимосвязями – корреляционный анализ.
Корреляция – это, простыми словами, взаимосвязанное изменение показателей. Она характеризуется направлением, формой и теснотой. Ниже представлены примеры корреляционной связи.
Далее будет рассматриваться только линейная корреляция. На диаграмме рассеяния (график корреляции) изображена взаимосвязь двух переменных X и Y. Пунктиром показаны средние.
При положительном отклонении X от своей средней, Y также в большинстве случаев отклоняется в положительную сторону от своей средней. Для X меньше среднего, Y, как правило, тоже ниже среднего. Это прямая или положительная корреляция. Бывает обратная или отрицательная корреляция, когда положительное отклонение от средней X ассоциируется с отрицательным отклонением от средней Y или наоборот.
Линейность корреляции проявляется в том, что точки расположены вдоль прямой линии. Положительный или отрицательный наклон такой линии определяется направлением взаимосвязи.
Крайне важная характеристика корреляции – теснота. Чем теснее взаимосвязь, тем ближе к прямой точки на диаграмме. Как же ее измерить?
Складывать отклонения каждого показателя от своей средней нет смысла, получим нуль. Похожая проблема встречалась при измерении вариации, а точнее дисперсии. Там эту проблему обходят через возведение каждого отклонения в квадрат.
Квадрат отклонения от средней измеряет вариацию показателя как бы относительно самого себя. Если второй множитель в числителе заменить на отклонение от средней второго показателя, то получится совместная вариация двух переменных, которая называется ковариацией.
Чем больше пар имеют одинаковый знак отклонения от средней, тем больше сумма в числителе (произведение двух отрицательных чисел также дает положительное число). Большая положительная ковариация говорит о прямой взаимосвязи между переменными. Обратная взаимосвязь дает отрицательную ковариацию. Если количество совпадающих по знаку отклонений примерно равно количеству не совпадающих, то ковариация стремится к нулю, что говорит об отсутствии линейной взаимосвязи.
Таким образом, чем больше по модулю ковариация, тем теснее линейная взаимосвязь. Однако значение ковариации зависит от масштаба данных, поэтому невозможно сравнивать корреляцию для разных переменных. Можно определить только направление по знаку. Для получения стандартизованной величины тесноты взаимосвязи нужно избавиться от единиц измерения путем деления ковариации на произведение стандартных отклонений обеих переменных. В итоге получится формула коэффициента корреляции Пирсона.
Показатель имеет полное название линейный коэффициент корреляции Пирсона или просто коэффициент корреляции.
Таким образом, ковариация и корреляция отражают тесноту линейной взаимосвязи. Последняя используется намного чаще, т.к. является относительным показателем и не имеет единиц измерения.
Линейная функция является моделью взаимосвязи между X иY и показывает ожидаемое значение Y при заданном X. Коэффициент детерминации – это соотношение дисперсии ожидаемых Y (точек на прямой линии) к общей дисперсии Y, или доля объясненной вариации Y. При r = 0,1 r 2 = 0,01 или 1%, при r = 0,5 r 2 = 0,25 или 25%.
Выборочный коэффициент корреляции
Коэффициент корреляции обычно рассчитывают по выборке. Значит, у аналитика в распоряжении не истинное значение, а оценка, которая всегда ошибочна. Если выборка была репрезентативной, то истинное значение коэффициента корреляции находится где-то относительно недалеко от оценки. Насколько далеко, можно определить через доверительные интервалы.
Согласно Центральное Предельной Теореме распределение оценки любого показателя стремится к нормальному с ростом выборки. Но есть проблемка. Распределение коэффициента корреляции вблизи придельных значений не является симметричным. Ниже пример распределения при истинном коэффициенте корреляции ρ = 0,86.
В общем рассчитывать на свойства нормального распределения нельзя. Поэтому Фишер предложил провести преобразование выборочного коэффициента корреляции по формуле:
Распределение z для тех же r имеет следующий вид.
Намного ближе к нормальному. Стандартная ошибка z равна:
Далее исходя из свойств нормального распределения несложно найти верхнюю и нижнюю границы доверительного интервала для z. Определим квантиль стандартного нормального распределения для заданной доверительной вероятности, т.е. количество стандартных отклонений от центра распределения.
Теперь обратным преобразованием Фишера из z вернемся к r.
Нижняя граница r:
Это была теоретическая часть. Переходим к практике расчетов.
Как посчитать коэффициент корреляции в Excel
Корреляционный анализ в Excel лучше начинать с визуализации.
На диаграмме видна взаимосвязь двух переменных. Рассчитаем коэффициент парной корреляции с помощью функции Excel КОРРЕЛ. В аргументах нужно указать два диапазона.
Коэффициент корреляции 0,88 показывает довольно тесную взаимосвязь между двумя показателями. Но это лишь оценка, поэтому переходим к интервальному оцениванию.
Расчет доверительного интервала для коэффициента корреляции в Excel
В Эксель нет готовых функций для расчета доверительного интервала коэффициента корреляции, как для средней арифметической. Поэтому план такой:
— Делаем преобразование Фишера для r.
— На основе нормальной модели рассчитываем доверительный интервал для z.
— Делаем обратное преобразование Фишера из z в r.
Удивительно, но для преобразования Фишера в Excel есть специальная функция ФИШЕР.
Стандартная ошибка z легко подсчитывается с помощью формулы.
Используя функцию НОРМ.СТ.ОБР, определим квантиль нормального распределения. Доверительную вероятность возьмем 95%.
Значение 1,96 хорошо известно любому опытному аналитику. В пределах ±1,96σ от средней находится 95% нормально распределенных величин.
Используя z, стандартную ошибку и квантиль, легко определим доверительные границы z.
Последний шаг – обратное преобразование Фишера из z назад в r с помощью функции Excel ФИШЕРОБР. Получим доверительный интервал коэффициента корреляции.
Нижняя граница 95%-го доверительного интервала коэффициента корреляции – 0,724, верхняя граница – 0,953.
Надо пояснить, что значит значимая корреляция. Коэффициент корреляции статистически значим, если его доверительный интервал не включает 0, то есть истинное значение по генеральной совокупности наверняка имеет тот же знак, что и выборочная оценка.
Несколько важных замечаний
1. Коэффициент корреляции Пирсона чувствителен к выбросам. Одно аномальное значение может существенно исказить коэффициент. Поэтому перед проведением анализа следует проверить и при необходимости удалить выбросы. Другой вариант – перейти к ранговому коэффициенту корреляции Спирмена. Рассчитывается также, только не по исходным значениям, а по их рангам (пример показан в ролике под статьей).
2. Синоним корреляции – это взаимосвязь или совместная вариация. Поэтому наличие корреляции (r ≠ 0) еще не означает причинно-следственную связь между переменными. Вполне возможно, что совместная вариация обусловлена влиянием третьей переменной. Совместное изменение переменных без причинно-следственной связи называется ложная корреляция.
3. Отсутствие линейной корреляции (r = 0) не означает отсутствие взаимосвязи. Она может быть нелинейной. Частично эту проблему решает ранговая корреляция Спирмена, которая показывает совместный рост или снижение рангов, независимо от формы взаимосвязи.
В видео показан расчет коэффициента корреляции Пирсона с доверительными интервалами, ранговый коэффициент корреляции Спирмена.
Корреляция в R: Пирсон и Спирмен на примере матрицы
Двумерная связь описывает связь или корреляцию между двумя переменными, и. В этом руководстве мы обсудим концепцию корреляции и покажем, как ее можно использовать для измерения взаимосвязи между любыми двумя переменными.
Есть два основных метода вычисления корреляции между двумя переменными.
В этом руководстве вы узнаете
Корреляции Пирсона
Метод корреляции Пирсона обычно используется в качестве первичной проверки взаимосвязи между двумя переменными.
Мы можем вычислить t-критерий следующим образом и проверить таблицу распределения со степенью свободы, равной:
Корреляция рангов Спирмена
Ранговая корреляция сортирует наблюдения по рангу и вычисляет уровень сходства между рангами. Преимущество ранговой корреляции состоит в том, что она устойчива к выбросам и не связана с распределением данных. Обратите внимание, что ранговая корреляция подходит для порядковой переменной.
с заявленными ковариациями между рангом и. Знаменатель вычисляет стандартные отклонения.
В R мы можем использовать функцию cor (). Он принимает три аргумента, и метод.
Аргументы :
Если векторы содержат пропущенное значение, можно добавить необязательный аргумент: use = «complete.obs»
Мы будем использовать набор данных BudgetUK. Этот набор данных сообщает о бюджетных ассигнованиях британских домохозяйств в период с 1980 по 1982 год. Имеется 1519 наблюдений с десятью характеристиками, среди которых:
Выход:
Мы можем вычислить коэффициент корреляции между доходом и переменными wfood с помощью методов «пирсона» и «копейщика».
выход:
Выход:
Матрица корреляции
Функция cor () возвращает корреляционную матрицу. Единственное отличие от двумерной корреляции состоит в том, что нам не нужно указывать, какие переменные. По умолчанию R вычисляет корреляцию между всеми переменными.
Обратите внимание, что корреляция не может быть вычислена для факторной переменной. Нам нужно убедиться, что мы отбрасываем категориальную функцию, прежде чем передавать фрейм данных внутри cor ().
Корреляционная матрица симметрична, что означает, что значения над диагональю имеют те же значения, что и значения ниже. Нагляднее показать половину матрицы.
Мы исключаем children_fac, потому что это переменная факторного уровня. cor не выполняет корреляцию по категориальной переменной.
Выход:
Уровень значимости
Уровень значимости полезен в некоторых ситуациях, когда мы используем метод Пирсона или Спирмена. Функция rcorr () из библиотеки Hmisc вычисляет для нас p-значение. Мы можем скачать библиотеку с conda и скопировать код, чтобы вставить его в терминал:
Rcorr () требует, чтобы фрейм данных был сохранен в виде матрицы. Мы можем преобразовать наши данные в матрицу, прежде чем вычислить корреляционную матрицу с p-значением.
Объект списка mat_2 содержит три элемента:
Нас интересует третий элемент, p-значение. Обычно корреляционную матрицу показывают с p-значением вместо коэффициента корреляции.
Выход:
Визуализировать корреляционную матрицу
Библиотека включает в себя различные функции для отображения сводной статистики, такой как корреляция и распределение всех переменных в матрице.
У функции ggcorr () много аргументов. Мы представим только те аргументы, которые мы будем использовать в учебнике:
Функция ggcorr
Базовая тепловая карта
Выход:
Добавить контроль на тепловую карту
Мы можем добавить дополнительные элементы управления на график.
Выход:
Добавить метку к тепловой карте
GGally позволяет нам добавлять метки внутри окон.
Выход:
ggpairs
Аргументы :
Двумерный анализ с ggpair с группировкой
На следующем графике представлены три информации:
Выход:
Двумерный анализ с ggpair с частичной группировкой
График ниже немного отличается. Мы меняем положение отображения внутри верхнего аргумента.
Выход:
Резюме
Мы можем резюмировать функцию в таблице ниже: