Главная страница » Что такое функция корреляция в программном обеспечении

Что такое функция корреляция в программном обеспечении

  • автор:

15 Корреляция и регрессия

Дисперсия — мера разброса значений наблюдений относительно среднего.

  • \(x_1, . x_n\) — наблюдения;
  • \(\bar\) — среднее всех наблюдений;
  • \(X\) — вектор всех наблюдений;
  • \(n\) — количество наблюдений.

Представим, что у нас есть следующие данные:

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

Для того чтобы было понятнее, что такое дисперсия, давайте рассмотрим несколько расспределений с одним и тем же средним, но разными дисперсиями:

В R дисперсию можно посчитать при помощи функции var() 3 .

Проверим, что функция выдает то же, что мы записали в формуле.

Так как дисперсия является квадратом отклонения, то часто вместо нее используют более интерпретируемое стандартное отклонение \(\sigma\) — корень из дисперсии. В R ее можно посчитать при помощи функции sd() :

Посчитайте дисперсию переменной sleep_total в датасете msleep , встроенный в tidyverse . Ответ округлите до двух знаков после запятой.

Посчитайте стандартное отклонение переменной sleep_total в датасете msleep , встроенный в tidyverse . Ответ округлите до двух знаков после запятой.

15.2 z-преобразование

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

Если все наблюдения z-преобразовать, то получиться распределение с средним в 0 и стандартным отклонением 1 (или очень близко к ним).

Само по себе \(z\) -преобразование ничего особенного нам про данные не говорит. Однако это преобразование позволяет привести к “общему знаменателю” разные переменные. Т. е. это преобразование ничего нам не говорит про конкретный набор данных, но позволяет сравнивать разные наборы данных.

В R z-преобразование можно сделать при помощи функции scale() . Эта функция вовзращает матрицу, поэтому я использую индекс [,1] , чтобы результат был вектором.

Проверим, что функция выдает то же, что мы записали в формуле.

Однаждый я заполучил градусник со шкалой Фаренгейта и целый год измерял температуру в Москве при помощи градусников с шкалой Фарингейта и Цельсия. В датасет записаны средние значения для каждого месяца. Постройте график нормализованных и ненормализованных измерений. Что можно сказать про измерения, сделанные разными термометрами?

15.3 Ковариация

Ковариация — эта мера ассоциации двух переменных.

  • \((x_1, y_1), . (x_n, y_n)\) — пары наблюдений;
  • \(\bar, \bar\) — средние наблюдений;
  • \(X, Y\) — векторы всех наблюдений;
  • \(n\) — количество наблюдений.

Представим, что у нас есть следующие данные:

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

Если значения \(x_i\) и \(y_i\) какой-то точки либо оба больше, либо оба меньше средних \(\bar\) и \(\bar\) , то получившееся произведение будет иметь знак + , если же наоборот — знак — . На графике это показано цветом.

Таким образом, если много красных прямоугольников, то значение суммы будет положительное и обозначать положительную связь (чем больше \(x\) , тем больше \(y\) ), а если будет много синий прямоугольников, то значение суммы отрицательное и обозначать положительную связь (чем больше \(x\) , тем меньше \(y\) ). Непосредственно значение ковариации не очень информативно, так как может достаточно сильно варьироваться от датасета к датасету.

В R ковариацию можно посчитать при помощи функции cov() .

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

Проверим, что функция выдает то же, что мы записали в формуле.

15.4 Корреляция

Корреляция — это мера ассоциации/связи двух числовых переменных. Помните, что бытовое применение этого термина к категориальным переменным (например, корреляция цвета глаз и успеваемость на занятиях по R) не имеет смысла с точки зрения статистики.

15.4.1 Корреляция Пирсона

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

  • \((x_1, y_1), . (x_n, y_n)\) — пары наблюдений;
  • \(\bar, \bar\) — средние наблюдений;
  • \(X, Y\) — векторы всех наблюдений;
  • \(n\) — количество наблюдений.

Последнее уравнение показывает, что коэффициент корреляции Пирсона можно представить как среднее (с поправкой, поэтому \(n-1\) , а не \(n\) ) произведение \(z\) -нормализованных значений двух переменных.

Эта нормализация приводит к тому, что

  • значения корреляции имеют те же свойства знака коэффициента что и ковариация:
    • если коэффициент положительный (т. е. много красных прямоугольников) — связь между переменными положительная (чем больше \(x\) , тем больше \(y\) ),
    • если коэффициент отрицательный (т. е. много синих прямоугольников) — связь между переменными отрицательная (чем больше \(x\) , тем меньше \(y\) );
    • если модуль коэффициента близок к 1 или ему равен — связь между переменными сильная,
    • если модуль коэффициента близок к 0 или ему равен — связь между переменными слабая.

    Для того чтобы было понятнее, что такое корреляция, давайте рассмотрим несколько расспределений с разными значениями корреляции:

    Как видно из этого графика, чем ближе модуль корреляции к 1, тем боллее компактно расположены точки друг к другу, чем ближе к 0, тем более рассеяны значения. Достаточно легко научиться приблизительно оценивать коэфициент корреляции на глаз, поиграв 2–5 минут в игру “Угадай корреляцию” здесь или здесь.

    В R коэффициент корреляции Пирсона можно посчитать при помощи функции cor() .

    Проверим, что функция выдает то же, что мы записали в формуле.

    Посчитайте на основе датасета с температурой корреляцию между разными измерениями в шкалах Фарингейта и Цельсия? Результаты округлите до трех знаков после запятой.

    15.4.2 Ранговые корреляции Спирмана и Кендалла

    Коэффициент корреляции Пирсона к сожалению, чувствителен к значениям наблюдений. Если связь между переменными нелинейна, то оценка будет получаться смещенной. Рассмотрим, например, словарь [Ляшевской, Шарова 2011]:

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

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

    Давайте сравним с предыдущими наблюдениями и их логаотфмамиы:

    15.5 Регрессионный анализ

    15.5.1 Основы

    Суть регрессионного анализа в моделировании связи между двумя и более переменными при помощи прямой на плоскости. Формула прямой зависит от двух параметров: свободного члена (intercept) и углового коэффициента (slope).

    Укажите значение свободного члена для красной прямой.

    Укажите значение свободного члена для зеленой прямой.

    Укажите значение свободного члена для синей прямой.

    Укажите значение углового коэффициента для красной прямой.

    Укажите значение углового коэффициента для зеленой прямой.

    Укажите значение углового коэффициента для синей прямой.

    Когда мы пытаемся научиться предсказывать данные одной переменной \(Y\) при помощи другой переменной \(X\) , мы получаем похожую формулу:

    \[y_i = \hat\beta_0 + \hat\beta_1 \times x_i + \epsilon_i,\] где

    • \(x_i\) — \(i\) -ый элемент вектора значений \(X\) ;
    • \(y_i\) — \(i\) -ый элемент вектора значений \(Y\) ;
    • \(\hat\beta_0\) — оценка случайного члена (intercept);
    • \(\hat\beta_1\) — оценка углового коэффициента (slope);
    • \(\epsilon_i\) — \(i\) -ый остаток, разница между оценкой модели ( \(\hat\beta_0 + \hat\beta_1 \times x_i\) ) и реальным значением \(y_i\) ; весь вектор остатков иногда называют случайным шумом (на графике выделены красным).

    Задача регрессии — оценить параметры \(\hat\beta_0\) и \(\hat\beta_1\) , если нам известны все значения \(x_i\) и \(y_i\) и мы пытаемся минимизировать значния \(\epsilon_i\) . В данном конкретном случае, задачу можно решить аналитически и получить следующие формулы:

    \[\hat\beta_1 = \frac<(\sum_^n x_i\times y_i)-n\times\bar x \times \bar y><\sum_^n(x_i-\bar x)^2>\]

    \[\hat\beta_0 = \bar y — \hat\beta_1\times\bar x\]

    15.5.2 Первая регрессия

    Давайте попробуем смоделировать количество слов и в рассказах М. Зощенко в зависимости от длины рассказа:

    Мы видим, несколько одиночных точек, давайте избавимся от них и добавим регрессионную линию при помощи функции geom_smooth() :

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

    Вот мы и получили коэффициенты, теперь мы видим, что наша модель считает следующее:

    \[n = -1.47184 + 0.04405 \times n\_words\]

    Более подробную информцию можно посмотреть, если запустить модель в функцию summary() :

    В разделе Coefficients содержится информацию про наши коэффициенты:

    • Estimate – полученная оценка коэффициентов;
    • Std. Error – стандартная ошибка среднего;
    • t value – \(t\) -статистика, полученная при проведении одновыборочного \(t\) -теста, сравнивающего данный коэфициент с 0;
    • Pr(>|t|) – полученное \(p\) -значение;
    • Multiple R-squared и Adjusted R-squared — одна из оценок модели, показывает связь между переменными. Без поправок совпадает с квадратом коэффициента корреляции Пирсона:
    • F-statistic — \(F\) -статистика полученная при проведении теста, проверяющего, не являются ли хотя бы один из коэффицинтов статистически значимо отличается от нуля. Совпадает с результатами дисперсионного анализа (ANOVA).

    Теперь мы можем даже предсказывать значения, которые мы еще не видели. Например, сколько будет и в рассказе Зощенко длиной 1000 слов?

    Постройте ленейную ргерессию на основании рассказов А. Чехова, предсказывая количество и на основании количства слов. При моделировании используйте только рассказы длиной меньше 2500 слов. Укажите свободный член получившейся модели, округлив его до 3 знаков после запятой.

    Укажите угловой коффициент получившейся модели, округлив его до 3 знаков после запятой.

    Укажите предсказания модели для рассказа длиной 1000 слов, округлив получнное значение до 3 знаков после запятой.

    15.5.3 Категориальные переменные

    Что если мы хотим включить в наш анализ категориальные переменные? Давайте рассмотрим простой пример с рассказами Чехова и Зощенко, которые мы рассматривали в прошлом разделе. Мы будем анализировать логарифм доли слов деньги:

    Визуализация выглядит так:

    Красной точкой обозначены средние значения, так что мы видим, что между двумя писателями есть разница, но является ли она статистически значимой? В прошлом разделе, мы рассмотрели, что в таком случае можно сделать t-test:

    Разница между группами является статистически значимой (t(125) = 5.6871, p-value = 8.665e-08).

    Для того, чтобы запустить регрессию на категориальных данных категориальная переменная автоматически разбивается на группу бинарных dummy-переменных:

    Дальше для регрессионного анализа выкидывают одну из переменных, так как иначе модель не сойдется (dummy-переменных всегда n-1, где n — количество категорий в переменной).

    Если переменная dummy_chekhov принимает значение 1, значит речь о рассказе Чехова, а если принимает значение 0, то о рассказе Зощенко. Если вставить нашу переменную в регрессионную формулу получится следующее:

    \[y_i = \hat\beta_0 + \hat\beta_1 \times \text + \epsilon_i,\]

    Так как dummy_chekhov принимает либо значение 1, либо значение 0, то получается, что модель предсказывает лишь два значения:

    \[y_i = \left\<\begin\hat\beta_0 + \hat\beta_1 \times 1 + \epsilon_i = \hat\beta_0 + \hat\beta_1 + \epsilon_i\text<, если рассказ Чехова>\\ \hat\beta_0 + \hat\beta_1 \times 0 + \epsilon_i = \hat\beta_0 + \epsilon_i\text <, если рассказ Зощенко>\end\right.\]

    Таким образом, получается, что свободный член \(\beta_0\) и угловой коэффициент \(\beta_1\) в регресси с категориальной переменной получает другую интерпретацию. Одно из значений переменной кодируется при помощи \(\beta_0\) , а сумма коэффициентов \(\beta_0+\beta_1\) дают другое значение переменной. Так что \(\beta_1\) — это разница между оценками двух значений переменной.

    Давайте теперь запустим регрессию на этих же данных:

    Во-первых стоит обратить внимание на то, что R сам преобразовал нашу категориальную переменную в dummy-переменную authorЧехов . Во-вторых, можно заметить, что значения t-статистики и p-value совпадают с результатами полученными нами в t-тесте выше. Статистическти значимый коэффициент при аргументе authorЧехов следует интерпретировать как разницу средних между логарифмом долей в рассказах Чехова и Зощенко.

    В работе (Coretta 2017, https://goo.gl/NrfgJm) рассматривается отношения между длительностью гласного и придыхание согласного. Автор собрал данные 5 носителей исландского. Дальше он извлек длительность гласного, после которого были придыхательные и непридыхательные. Скачайте данные и постройте регрессионную модель, предсказывающую длительность гласного на основе .

    15.5.4 Множественная регрессия

    Множественная регрессия позволяет проанализировать связь между зависимой и несколькими зависимыми переменными. Формула множественной регрессии не сильно отличается от формулы обычной линейной регрессии:

    \[y_i = \hat\beta_0 + \hat\beta_1 \times x_<1i>+ \dots+ \hat\beta_n \times x_ + \epsilon_i,\]

    • \(x_\) — \(i\) -ый элемент векторов значений \(X_1, \dots, X_n\) ;
    • \(y_i\) — \(i\) -ый элемент вектора значений \(Y\) ;
    • \(\hat\beta_0\) — оценка случайного члена (intercept);
    • \(\hat\beta_k\) — коэфциент при переменной \(X_\) ;
    • \(\epsilon_i\) — \(i\) -ый остаток, разница между оценкой модели ( \(\hat\beta_0 + \hat\beta_1 \times x_i\) ) и реальным значением \(y_i\) ; весь вектор остатков иногда называют случайным шумом.

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

    Попробуем предсказать длину лепестка на основе длины чашелистик и вида ириса:

    Все предикторы статистически значимы. Давайте посмотрим предсказания модели для всех наблюдений:

    Всегда имеет смысл визуализировать, что нам говорит наша модель. Если использовать пакет ggeffects (или предшествовавший ему пакет effects ), это можно сделать не сильно задумываясь, как это делать:

    Как видно из графиков, наша модель имеет одинаковые угловые коэффициенты (slope) для каждого из видов ириса и разные свободные члены (intercept).

    \[y_i = \left\<\begin -1.70234 + 0.63211 \times \text + \epsilon_i\text<, если вид setosa>\\ -1.70234 + 2.2101 + 0.63211 \times \text + \epsilon_i\text <, если вид versicolor>\\ -1.70234 + 3.09 + 0.63211 \times \text + \epsilon_i\text <, если вид virginica>\end\right.\]

    15.5.5 Сравнение моделей

    Как нам решить, какая модель лучше? Ведь теперь можно добавить сколько угодно предикторов? Давайте создадим новую модель без предиктора Species :

    • можно сравнивать статистическую значимость предикторов
    • можно сравнивать \(R^2\)
    • чаще всего используют так называемые информационные критерии, самый популярный – AIC (Akaike information criterion). Сами по себе значение этого критерия не имеет значения – только в сравнении моделей, построенных на похожих данных. Чем меньше значение, тем модель лучше.

    15.5.6 Послесловие

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

      Вот так вот выглядят остатки нашей модели на основе датасета iris . Смотрите пост, в котором обсуждается, как интерпретировать график остатков.

      19) Корреляция в R

      Двустороннее отношение описывает отношение – или корреляцию – между двумя переменными, и. В этом руководстве мы обсудим концепцию корреляции и покажем, как ее можно использовать для измерения взаимосвязи между любыми двумя переменными.

      Есть два основных метода для вычисления корреляции между двумя переменными.

      • Пирсон: Параметрическая корреляция
      • Спирмен: Непараметрическая корреляция

      В этом уроке вы узнаете

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

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

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

        т.е. стандартное отклонение т.е. стандартное отклонение

      Корреляция колеблется между -1 и 1.

      • Значение, близкое или равное 0, подразумевает небольшую или нулевую линейную зависимость между и.
      • Напротив, чем ближе значение к 1 или -1, тем сильнее линейная зависимость.

      Мы можем вычислить t-критерий следующим образом и проверить таблицу распределения со степенью свободы, равной:

      Спирман Ранг Корреляция

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

      Ранговая корреляция Спирмена, всегда между -1 и 1 со значением, близким к конечности, указывает на сильную связь. Он рассчитывается следующим образом:

      с заявленными ковариациями между рангом и. Знаменатель рассчитывает стандартные отклонения.

      В R мы можем использовать функцию cor (). Требуется три аргумента и метод.

      Аргументы :

      • х: первый вектор
      • у: второй вектор
      • Метод: формула, используемая для вычисления корреляции. Три строковых значения:
        • “Pearson”
        • “Kendall”
        • «Копьеносец»

        Необязательный аргумент может быть добавлен, если векторы содержат отсутствующее значение: use = “complete.obs”

        Мы будем использовать набор данных BudgetUK. Этот набор данных сообщает о распределении бюджета британских домохозяйств в период между 1980 и 1982 годами. Имеется 1519 наблюдений с десятью характеристиками, среди которых:

        • wfood: разделить расходы на продукты питания
        • wfuel: поделитесь расходами топлива
        • wcloth: бюджетная доля расходов на одежду
        • Walc: разделите расходы на алкоголь
        • wtrans: разделите транспортные расходы
        • wother: доля расходов на другие товары
        • totexp: общие расходы домохозяйства в фунтах
        • общий доход домохозяйства
        • возраст: возраст домашнего хозяйства
        • дети: количество детей

        пример

        • Сначала мы импортируем данные и рассмотрим функцию glimpse () из библиотеки dplyr.
        • Три очка выше 500К, поэтому мы решили их исключить.
        • Обычной практикой является преобразование денежной переменной в лог. Это помогает уменьшить влияние выбросов и уменьшает асимметрию в наборе данных.

        Вывод:

        Мы можем вычислить коэффициент корреляции между доходом и переменными wfood с помощью методов “Pearson” и “Spearman”.

        вывод:

        Вывод:

        Матрица корреляции

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

        Функция cor () возвращает корреляционную матрицу. Единственная разница с двумерной корреляцией заключается в том, что нам не нужно указывать, какие переменные. По умолчанию R вычисляет корреляцию между всеми переменными.

        Обратите внимание, что корреляция не может быть вычислена для факторной переменной. Нам нужно убедиться, что мы отбрасываем категориальную особенность, прежде чем передать фрейм данных в cor ().

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

        Мы исключаем children_fac, потому что это переменная факторного уровня. cor не выполняет корреляцию по категориальной переменной.

        • cor (data): отобразить матрицу корреляции
        • round (data, 2): округлить корреляционную матрицу с двумя десятичными знаками
        • as.dist (): показывает только вторую половину

        Вывод:

        Уровень значимости

        Уровень значимости полезен в некоторых ситуациях, когда мы используем метод Пирсона или Спирмена. Функция rcorr () из библиотеки Hmisc вычисляет для нас значение p. Мы можем скачать библиотеку из conda и скопировать код, чтобы вставить ее в терминал:

        Функция rcorr () требует, чтобы кадр данных был сохранен в виде матрицы. Мы можем преобразовать наши данные в матрицу, прежде чем вычислять матрицу корреляции с p-значением.

        Объект списка mat_2 содержит три элемента:

        • r: вывод корреляционной матрицы
        • n: номер наблюдения
        • P: p-значение

        Нас интересует третий элемент, значение p. Распространено показывать матрицу корреляции с p-значением вместо коэффициента корреляции.

        • mat_2 [[“P”]]: значения p хранятся в элементе с именем P
        • round (mat_2 [[“P”]], 3): округлить элементы тремя цифрами

        Вывод:

        Визуализировать матрицу корреляции

        Тепловая карта – это еще один способ показать корреляционную матрицу. Библиотека GGally является расширением ggplot2. В настоящее время он не доступен в библиотеке conda. Мы можем установить прямо в консоли.

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

        Функция ggcorr () имеет множество аргументов. Мы представим только те аргументы, которые мы будем использовать в руководстве:

        Функция ggcorr

        • df : набор данных используется
        • Метод : Формула для расчета корреляции. По умолчанию попарно и Пирсон вычисляются
        • nbreaks : возвращает категориальный диапазон для окрашивания коэффициентов. По умолчанию нет перерывов и цветовой градиент непрерывен
        • цифры : округлить коэффициент корреляции. По умолчанию установлено значение 2
        • низкий : контролировать нижний уровень окраски
        • средний : контроль среднего уровня окраски
        • высокий : контролировать высокий уровень окраски
        • geom : управление формой геометрического аргумента. По умолчанию «тайл»
        • label : логическое значение. Показать или нет метку. По умолчанию установлено значение «ЛОЖЬ»

        Основная тепловая карта

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

        • ggcorr (данные): необходим только один аргумент, который является именем фрейма данных. Переменные уровня фактора не включены в график.

        Вывод:

        Добавить контроль на карту тепла

        Мы можем добавить больше элементов управления на график.

        • nbreaks = 6: разбить легенду с 6 рангами.
        • low = “steelblue”: используйте более светлые цвета для отрицательной корреляции
        • mid = “white”: использовать белые цвета для корреляции средних диапазонов
        • high = “darkred”: использовать темные цвета для положительной корреляции
        • geom = “circle”: используйте круг в качестве формы окон на тепловой карте. Размер круга пропорционален абсолютному значению корреляции.

        Вывод:

        Добавьте ярлык на карту тепла

        GGally позволяет нам добавлять метки внутри окон.

        • label = TRUE: добавить значения коэффициентов корреляции внутри тепловой карты.
        • color = “grey50”: выберите цвет, т.е. серый
        • label_size = 3: установить размер метки равным 3

        Вывод:

        ggpairs

        Наконец, мы представляем еще одну функцию из библиотеки GGaly. Ggpair. Он создает график в матричном формате. Мы можем отобразить три вида вычислений в одном графике. Матрица является измерением, равным количеству наблюдений. Верхняя / нижняя часть отображает окна и по диагонали. Мы можем контролировать, какую информацию мы хотим показать в каждой части матрицы. Формула для ggpair:

        Аргументы :

        • df : набор данных используется
        • столбцы : выберите столбцы, чтобы нарисовать график
        • title : Включить заголовок
        • верхний : Управляйте прямоугольниками выше диагонали графика. Необходимо указать тип вычислений или график для возврата. Если непрерывный = “cor”, мы просим R вычислить корреляцию. Обратите внимание, что аргумент должен быть списком. Другие аргументы могут быть использованы, см. [Vignette] (“http://ggobi.github.io/ggally/#custom_functions”) для получения дополнительной информации.
        • Ниже : установите флажки ниже диагонали.
        • Отображение : указывает на эстетику графика. Например, мы можем вычислить график для разных групп.

        Двусторонний анализ с ggpair с группировкой

        Следующий график отображает три информации:

        • Матрица корреляции между log_totexp, log_income, возрастом и переменным wtrans сгруппирована по тому, есть ли в семье ребенок или нет.
        • График распределения каждой переменной по группам
        • Показать график рассеяния с трендом по группам
        • columns = c (“log_totexp”, “log_income”, “age”, “wtrans”): выберите переменные для отображения на графике
        • title = “Двусторонний анализ расходов доходов британской семьи”: Добавить заголовок
        • upper = list (): Управление верхней частью графика. Т.е. над диагональю
        • непрерывный = обтекание (“cor”, размер = 3)): вычислить коэффициент корреляции. Мы оборачиваем аргумент непрерывным внутри функции wrap (), чтобы контролировать эстетику графа (то есть size = 3) -lower = list (): управлять нижней частью графа. Т.е. ниже диагонали.
        • непрерывный = обтекание («гладкий», альфа = 0,3, размер = 0,1): добавить график рассеяния с линейным трендом. Мы обертываем непрерывный аргумент внутри функции wrap (), чтобы контролировать эстетику графа (то есть размер = 0,1, альфа = 0,3)
        • mapping = aes (color = children_fac): мы хотим, чтобы каждая часть графика была сгруппирована с помощью переменной children_fac, которая является категориальной переменной, принимающей значение 1, если в семье нет детей, и 2 в противном случае

        Вывод:

        Двусторонний анализ с ggpair с частичной группировкой

        График ниже немного отличается. Мы меняем положение отображения внутри верхнего аргумента.

        Расчет и анализ корреляционного отношения средствами Python

        При статистическом анализе зависимостей между количественными переменными возникают ситуации, когда представляет интерес расчет и анализ такого показателя как корреляционное отношение (η).

        Данный показатель незаслуженно обойден вниманием в большинстве доступных для пользователей математических пакетов.

        В данном разборе рассмотрим способы расчета и анализа η средствами Python.

        Не будем углубляться в теорию (про η достаточно подробно написано, например, в [1, с.73], [2, с.412], [3, с.609]), но вспомним основные свойства η:

        η характеризует степень тесноты любой корреляционной связи (как линейной, так и нелинейной), в отличие от коэффициента корреляции Пирсона r, который характеризует тесноту только линейной связи. Условие r=0 означает отсутствие линейной корреляционной связи между величинами, но при этом между ними может существовать нелинейная корреляционная связь (η>0).

        η принимает значения от 0 до 1; при η=0 корреляционная связь отсутствует, при η=1 связь считается функциональной; степень тесноты связи можно оценивать по различным общепринятым шкалам, например, по шкале Чеддока и др.

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

        η не может быть меньше абсолютной величины r: η ≥ |r|.

        η несимметрично по отношению к исследуемым переменным, то есть ηXY ≠ ηYX.

        Для расчета η необходимо иметь эмпирические данные эксперимента с повторностями; если же мы имеем просто два набора значений переменных X и Y, то данные нужно группировать. Этот вывод, в общем-то, очевиден — если предпринять попытку рассчитать η по негруппированным данным, получим результат η=1.

        Группировка данных для расчета η заключается в разбиении области значений переменных X и Y на интервалы, подсчет частот попадания данных в интервалы и формирование корреляционной таблицы.

        Важное замечание: особенности методики расчета корреляционного отношения, особенно при форме связи, близкой к линейной, и η близком к единице, могут привести к результатам, в общем-то абсурдным, например:

        когда нарушается условие η ≥ |r|;

        когда r окажется значим, а η нет;

        когда нижняя граница доверительного интервала для η окажется меньше 0 или верхняя граница — больше 1.

        Это нужно учитывать при выполнении анализа.

        Итак, перейдем к расчетам.

        Формирование исходных данных

        В качестве исходных данных рассмотрим зависимость расхода среднемесячного расхода топлива автомобиля (л/100 км) (FuelFlow) от среднемесячного пробега (км) (Mileage).

        Загрузим исходные данные из csv-файла (исходные данные доступны в моем репозитории на GitHub):

        Загруженный DataFrame содержит следующие столбцы:

        Month — месяц (в формате Excel)

        Mileage — месячный пробег (км)

        Temperature — среднемесячная температура (°C)

        FuelFlow — среднемесячный расход топлива (л/100 км)

        Сохраним нужные нам переменные Mileage и FuelFlow в виде numpy.ndarray.

        Для удобства дальнейшей работы сформируем сформируем отдельный DataFrame из двух переменных — X и Y:

        Настройка заголовков отчета (для дальнейшего формирования графиков):

        Визуализация и первичная обработка данных

        Предварительно отсеем аномальные значения (выбросы). Подробно не будем останавливаться на этой процедуре, она не является целью данного разбора.

        Описательная статистика исходных данных:

        Выполним визуализацию исходных данных:

        Для визуальной оценки выборочных данных построим гистограммы и коробчатые диаграммы:

        Перед тем, как приступать к дальнейшим расчетам, проверим исходные данные на соответствие нормальному закону распределения.

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

        Для проверки нормальности распределения воспользуемся критерием Шапиро-Уилка:

        Итак, гипотеза о нормальном распределении исходных данных принимается, что позволяет нам в дальнейшем пользоваться статистическим инструментарием для интервального оценивания величины η, проверки гипотез и т.д.

        Переходим собственно к расчету корреляционного отношения.

        Переходим собственно к расчету корреляционного отношения.

        Расчёт и анализ корреляционного отношения

        1. Выполним группировку исходных данным по обоим признакам X и Y:

        Создадим новую переменную matrix_XY_df для работы с группированными данными:

        Определим число интервалов группировки (воспользуемся формулой Стерджесса); при этом минимальное число интервалов должно быть не менее 2:

        Выполним группировку данных средствами библиотеки pandas, для этого воспользуемся функцией pandas.cut. В результате получим новые признаки cut_X и cut_X, которые показывают, в какой из интервалов попадает конкретное значение X и Y. Полученные новые признаки добавим в DataFrame matrix_XY_df:

        Теперь мы можем получить корреляционную таблицу с помощью функции pandas.crosstab:

        Функция pandas.crosstab также позволяет формировать более ровные и удобные для восприятия границы интервалов группировки путем задания их вручную. Для расчета η это принципиального значения не имеет, но в отдельных случаях может быть полезно.

        Например, зададим вручную границы интервалов группировки для X и Y:

        Есть и другой способ получения корреляционной таблицы — с помощью pandas.pivot_table:

        2. Выполним расчет корреляционного отношения:

        Для дальнейших расчетов приведем корреляционную таблицу к типу numpy.ndarray:

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

        Также нам необходимо получить среднегрупповые значения X и Y для каждой группы (интервала). При этом нужно помнить, что функция pandas.crosstab при группировании расширяет крайние диапазоны на 0.1% с каждой стороны, чтобы включить минимальное и максимальное значения.

        Для доступа к данным — границам интервалов, полученным с помощью pandas.cut — существуют методы right и left:

        Находим средневзевешенные значения X и Y для каждой группы:

        Общая дисперсия X и Y:

        Межгрупповая дисперсия X и Y (дисперсия групповых средних):

        Внутригрупповая дисперсия X и Y (возникает за счет других факторов — не связанных с другой переменной):

        Эмпирическое корреляционное отношение:

        Итак, мы получили результат — значение корреляционного отношения.

        Оценим тесноту корреляционной связи по шкале Чеддока, для удобства создадим пользовательскую функцию:

        Шкала Чеддока изначально предназначалась для оценки тесноты линейно корреляционной связи (на основе коэффициента корреляции Пирсона r), но мы ее применим и для корреляционного отношения η (не забывая про свойство η ≥ r!). В выводе функции Cheddock_scale_check можно указать символ, обозначающий величину — аргумент name=chr(951) выводит η вместо r.

        В современных исследованиях шкала Чеддока теряет популярность, в последние годы все чаще применяется шкала Эванса (в психосоциальных, медико-биологических и др.исследованиях) ( более подробно про шкалы Чеддока, Эванса и др. — см.[4]). Оценим тесноту корреляционной связи по шкале Эванса, для удобства также создадим пользовательскую функцию:

        Итак, степень тесноты корреляционной связи может быть оценена как высокая (по шкале Чеддока), сильная (по шкале Эванса).

        3. Проверка значимости корреляционного отношения:

        Рассмотрим нулевую гипотезу:

        Для проверки нулевой гипотезы воспользуемся критерием Фишера:

        4. Доверительный интервал для корреляционного отношения:

        Важное замечание: при значениях η близких к 0 или 1 левая или правая граница доверительного интервала может выходить за пределы отрезка [0; 1], теряя содержательный смысл (см. [1, с.80]). Причина этого — в аппроксимационном подходе к определению границ доверительного интервала. Подобные нежелательные явления возможны, и их нужно учитывать при выполнении анализа.

        5. Проверка значимости отличия линейной корреляционной связи от нелинейной:

        Оценим величину коэффициента линейной корреляции:

        Проверим значимость коэффициента линейной корреляции:

        Теперь проверим значимость отличия линейной корреляционной связи от нелинейной. Для этого рассмотрим нулевую гипотезу:

        Для проверки нулевой гипотезы воспользуемся критерием Фишера:

        Создание пользовательской функции для корреляционного анализа

        Для практической работы целесообразно все вышеприведенные расчеты реализовать в виде пользовательских функций:

        функция corr_coef_check — для расчета и анализа коэффициента линейной корреляции Пирсона

        функция corr_ratio_check — для расчета и анализа корреляционного отношения

        функция line_corr_sign_check — для проверка значимости линейной корреляционной связи

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

        Сделаем выводы по результатам расчетов:

        Между величинами существует значимая (acalc<0.05) корреляционная связь, корреляционное отношение η = 0.7936 (т.е. связь сильная по Эвансу).

        Линейная корреляционная связь между величинами также значимая (acalc<0.05), отрицательная, коэффициент корреляции r = -0.7189 (связь сильная по Эвансу); линейная корреляция между переменными объясняет 51.68% вариации.

        Гипотеза о равенстве корреляционного отношения и коэффициента корреляции отвергается (acalc<0.05), то есть отличие линейной формы связи от нелинейной значимо.

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

        Исходный код находится в моем репозитории на GitHub (https://github.com/AANazarov/Statistical-methods).

        Айвазян С.А. и др. Прикладная статистика: исследование зависимостей. — М.: Финансы и статистика, 1985. — 487 с.

        Айвазян С.А., Мхитарян В.С. Прикладная статистика. Основы эконометрики: В 2 т. — Т.1: Теория вероятностей и прикладная статистика. — М.: ЮНИТИ-ДАНА, 2001. — 656 с.

        Кобзарь А.И. Прикладная математическая статистика. Для инженеров и научных работников. — М.: ФИЗМАТЛИТ, 2006. — 816 с.

        «Корреляционный анализ» для выяснения связи между нужными параметрами (на основе разного программного обеспечения). 11римеры

        Корреляционный анализ — совокупность, основанных на математической теории корреляции методов обнаружения корреляционной зависимости между двумя случайными признаками или факторами. [8]. Этот метод незаслуженно мало используется в дипломных работах рассматриваемого профиля. Однако, он имеет неоспоримые преимущества. Действительно, предположим, вы провели рекламную кампанию или сменили этикетки па продаваемой продукции и т. п. Спрос на продукцию вырос. Вы относите этот успех па свой счет. А спрос мог вырасти, например, за счет сезонного роста на данную продукцию (с веселыми новыми этикетками — лучше разошлись подарочные наборы— г. к. пришел Новый год. Праздничная суета заставила людей больше покупать и ваш)? продукцию — в том числе). Таких примеров можно привести множество. Корреляционный анализ защищает разработчика, таким образом, от неоправданных замечаний в его адрес и именно он позволяет вышить причинную связь в изменении тех или иных параметров процесса. Итак, базовые понятия:

        Корреляция — соотношения, взаимосвязь.

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

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

        Коэффициент корреляции шляется доступным для понимания и вместе с тем достаточным определителем наличия взаимосвязи между различными исследуемыми совместно явлениями.

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

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

        Для расчета коэффициента корреляции необходимо взять количественную статистику, характеризующую динамическую зависимость двух показателей, один из которых назначается определяющим (базовым), а другой — зависимым от первого. Имея два достаточно содержательных ряда данных (порядка 15 элементов), можно рассчитать коэффициент корреляционной взаимосвязи по следующей формуле Пирсона характеризующей степень линейной зависимости между переменными

        где М — математическое ожидание, а X и Y — случайные величины.

        В зависимости от коэффициента корреляции различают следующие корреляционные связи:

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

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