Как создать ковариационную матрицу в Python

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

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

В следующем примере показано, как создать ковариационную матрицу в Python.

Как создать ковариационную матрицу в Python


Выполните следующие шаги: o создать ковариационную матрицу в Python.

Шаг 1. Создайте набор данных.

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

import numpy as np

math = [84, 82, 81, 89, 73, 94, 92, 70, 88, 95]
science = [85, 82, 72, 77, 75, 89, 95, 84, 77, 94]
history = [97, 94, 93, 95, 88, 82, 78, 84, 69, 78]

data = np.array([math, science, history])

Шаг 2. Создайте ковариационную матрицу.

Далее мы создадим ковариационную матрицу для этого набора данных с помощью функции numpy cov(), указав, что bias = True, чтобы мы могли рассчитать ковариационную матрицу генеральной совокупности.

np.cov(data, bias=True)

array([[ 64.96,  33.2 , -24.44],
       [ 33.2 ,  56.4 , -24.1 ],
       [-24.44, -24.1 ,  75.56]])

Шаг 3. Интерпретация ковариационной матрицы.

Значения по диагоналям матрицы — это просто дисперсии каждого субъекта. Например:

  • Дисперсия оценок по математике составляет 64,96
  • Дисперсия оценок по естественным наукам составляет 56,4
  • Дисперсия оценок истории составляет 75,56

Другие значения в матрице представляют собой ковариации между различными субъектами. Например:

  • Ковариация между оценками по математике и естественным наукам составляет 33,2
  • Ковариация между оценками по математике и истории составляет -24,44
  • Ковариация между оценками по естественным наукам и истории составляет -24,1

положительное число для ковариации указывает, что две переменные имеют тенденцию увеличиваться или уменьшаться в тандеме. Например, математика и естествознание имеют положительную ковариацию (33,2), что указывает на то, что учащиеся, получившие высокие баллы по математике, также, как правило, получают высокие баллы по естественным наукам. И наоборот, учащиеся с низкими баллами по математике также имеют низкие баллы по естественным наукам.

Отрицательное число ковариации указывает на то, что по мере увеличения одной переменной вторая переменная имеет тенденцию к уменьшению. Например, математика и история имеют отрицательную ковариацию (-24,44), что указывает на то, что учащиеся с высокими баллами по математике, как правило, имеют низкие баллы по истории. И наоборот, учащиеся с низкими баллами по математике, как правило, получают высокие баллы по истории.

Шаг 4. Визуализируйте ковариационная матрица (необязательно).

Вы можете визуализировать ковариационную матрицу, используя функцию heatmap() из пакета seaborn:

import seaborn as sns
import matplotlib.pyplot as plt

cov = np.cov(data, bias=True)
labs = ['math', 'science', 'history']

sns.heatmap(cov, annot=True, fmt='g', xticklabels=labs, yticklabels=labs)
plt.show()

Вы также можете изменить палитру, указав аргумент cmap:

sns.heatmap(cov, annot=True, fmt='g', xticklabels=labs, yticklabels=labs, cmap='YlGnBu')
plt.show()

Дополнительные сведения о стиле этой тепловой карты см. в документация Seaborn.