Функция corrcoef
Функция corrcoef вычисляет коэффициент корреляции Пирсона
для выборок данных. Коэффициент корреляции измеряет линейную
зависимость между двумя переменными и принимает значения
от -1 до 1: 1 означает полную положительную корреляцию,
-1 - полную отрицательную корреляцию, 0 - отсутствие линейной
зависимости. Первым параметром функция принимает массив данных,
где каждая строка - это переменная, а каждый столбец - наблюдение.
Вторым параметром можно передать массив для попарного сравнения.
Синтаксис
np.corrcoef(arr, [arr2], [rowvar=True], [bias=False], [dtype=None])
Основные параметры:
arr- входной массив, содержащий переменные в строках и наблюдения в столбцах;arr2- второй массив для попарного сравнения с первым;rowvar- если True (по умолчанию), каждая строка - переменная, иначе каждый столбец - переменная;bias- нормализация: если False (по умолчанию), используется деление на (N-1);dtype- тип данных результирующего массива.
Пример
Вычислим коэффициент корреляции между двумя переменными:
import numpy as np
# Две переменные: положительная корреляция
x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 4, 6, 8, 10])
arr = np.array([x, y])
res = np.corrcoef(arr)
print(res)
Результат выполнения кода:
[[1. 1.]
[1. 1.]]
Пример
Рассчитаем корреляцию для отрицательной зависимости:
import numpy as np
x = np.array([1, 2, 3, 4, 5])
y = np.array([10, 8, 6, 4, 2])
arr = np.array([x, y])
res = np.corrcoef(arr)
print(res)
Результат выполнения кода:
[[ 1. -1.]
[-1. 1.]]
Пример
Используем второй массив для попарного сравнения:
import numpy as np
x = np.array([1, 2, 3, 4, 5])
y = np.array([2, 4, 6, 8, 10])
z = np.array([5, 4, 3, 2, 1])
res = np.corrcoef(x, y, z)
print(res)
Результат выполнения кода:
[[ 1. 1. -1.]
[ 1. 1. -1.]
[-1. -1. 1.]]
Пример
Изменим интерпретацию строк и столбцов с помощью параметра rowvar:
import numpy as np
# Данные: столбцы - переменные
arr = np.array([[1, 2, 3],
[4, 5, 6]])
# По умолчанию строки - переменные
res1 = np.corrcoef(arr)
print("rowvar=True (строки - переменные):")
print(res1)
# Столбцы - переменные
res2 = np.corrcoef(arr, rowvar=False)
print("rowvar=False (столбцы - переменные):")
print(res2)
Результат выполнения кода:
rowvar=True (строки - переменные):
[[1. 1.]
[1. 1.]]
rowvar=False (столбцы - переменные):
[[1. 1. 1.]
[1. 1. 1.]
[1. 1. 1.]]
Пример
Используем функцию для данных с случайным шумом:
import numpy as np
rng = np.random.default_rng(0)
x = rng.normal(0, 1, 100)
y = 2 * x + rng.normal(0, 0.5, 100)
arr = np.array([x, y])
res = np.corrcoef(arr)
print("Коэффициент корреляции:")
print(res)
Результат выполнения кода:
Коэффициент корреляции:
[[1. 0.95923356]
[0.95923356 1. ]]