Документация Engee

corrcoef

Коэффициенты корреляции.

Библиотека

EngeeDSP

Синтаксис

Вызов функции

  • R,P,RL,RU = corrcoef(A) — возвращает матрицу R коэффициентов корреляции для матрицы A, где столбцы матрицы A представляют собой случайные переменные, а строки — измерения.

    Также возвращает матрицу p-значений P для проверки гипотезы об отсутствии связи между наблюдаемыми явлениями (нулевая гипотеза). Если внедиагональный элемент матрицы P меньше уровня значимости (по умолчанию 0.05), то соответствующая корреляция в R считается значимой.

    Также возвращает матрицы RL и RU, содержащие нижние и верхние границы 95% доверительного интервала для каждого коэффициента.

    Аргументы P, RL и RU возвращаются, только если R не содержит комплексные элементы.

  • ___ = corrcoef(A,B) — Возвращает коэффициенты между двумя случайными переменными A и B.

  • ___ = corrcoef(___, Name,Value) — задает дополнительные опции для любого из предыдущих синтаксисов одним или несколькими аргументами Name,Value.

Аргументы

Входные аргументы

# A — входной массив
матрица

Details

Входной массив, заданный как матрица.

  • Если A — скаляр, то функция corrcoef(A) возвращает NaN.

  • Если A — вектор, то функция corrcoef(A) возвращает 1.

Типы данных

Float32, Float64

Поддержка комплексных чисел

Да

# B — дополнительный входной массив
вектор | матрица | многомерный массив

Details

Дополнительный входной массив, заданный как вектор, матрица или многомерный массив.

  • A и B должны быть одинакового размера.

  • Если A и B — скаляры, то corrcoef(A,B) возвращает 1. Однако если A и B равны, то corrcoef(A,B) возвращает NaN.

  • Если A и B — матрицы или многомерные массивы, то corrcoef(A,B) преобразует каждый входной аргумент в его векторное представление.

  • Если A и B — пустые массивы 0×0, то corrcoef(A,B) возвращает матрицу 2×2 со значениями NaN.

Типы данных

Float32, Float64

Поддержка комплексных чисел

Да

Входные аргументы «имя-значение»

Укажите необязательные пары аргументов в формате Name, Value, где Name — имя аргумента, а Value — соответствующее значение. Аргументы типа «имя-значение» должны располагаться после других аргументов, но порядок пар не имеет значения.

Используйте запятые для разделения имени и значения, а Name заключите в кавычки.

Пример: R = corrcoef(A, "Alpha", 0.01).

# Alpha — уровень значимости
0.05 (по умолчанию) | скаляр в интервале (0, 1)

Details

Уровень значимости, заданный числом от 0 до 1. Значение аргумента Alpha определяет уровень значимости в процентах, 100*(1−Alpha)%, для коэффициентов корреляции, который определяет границы в RL и RU.

Типы данных

Float32, Float64

# Rows — использование значений NaN
"all" (по умолчанию) | "complete" | "pairwise"

Details

Использование значений NaN, заданное одним из следующих значений:

  • "all" — включить все значения NaN во входные данные перед вычислением коэффициентов корреляции.

  • "complete" — пропустить все строки входных данных, содержащие значения NaN, перед вычислением коэффициентов корреляции. Эта опция всегда возвращает положительно полуопределенную матрицу.

  • "pairwise" — пропустить все строки, содержащие NaN, только попарно для каждого вычисления коэффициента корреляции в двух столбцах. Эта опция может вернуть матрицу, которая не является положительно полуопределенной.

Выходные аргументы

# R — коэффициенты корреляции
матрица

Details

Коэффициенты корреляции, возвращаемые в виде матрицы.

  • Для одной входной матрицы, матрица R имеет размер [size(A,2) size(A,2)], основанный на количестве случайных переменных (столбцов), представленных матрицей A. Диагональные элементы по соглашению равны единице, а внедиагональные элементы представляют собой коэффициенты корреляции пар переменных. Значения коэффициентов могут варьироваться от −1 до 1, где −1 означает прямую отрицательную корреляцию, 0 — отсутствие корреляции, а 1 — прямую положительную корреляцию. Матрица R симметрична.

  • Для двух входных матриц, R представляет собой матрицу 2×2 с единицами по диагонали и коэффициентами корреляции вне диагонали.

  • Если какая-либо случайная переменная является константой, ее корреляция со всеми другими переменными не определена, и соответствующее значение строки и столбца равно NaN.

# P — p-значения
матрица

Details

P-значения, возвращаемые в виде матрицы. Матрица P симметрична и имеет тот же размер, что и R. Все элементы на диагонали — единицы, а элементы вне диагонали — p-значения для каждой пары переменных. P-значения варьируются от 0 до 1, где значения, близкие к 0, соответствуют значимой корреляции в R и низкой вероятности подтверждения нулевой гипотезы.

# RL — нижняя граница для коэффициента корреляции
матрица

Details

Нижняя граница коэффициента корреляции, возвращаемая в виде матрицы. Матрица RL симметрична и имеет тот же размер, что и R. Все диагональные элементы — единицы, а недиагональные элементы представляют собой нижнюю границу 95% доверительного интервала для соответствующего коэффициента в R. Аргумент RL не возвращается, если R содержит комплексные значения.

# RU — верхняя граница для коэффициента корреляции
матрица

Details

Верхняя граница коэффициента корреляции, возвращаемая в виде матрицы. Матрица RU симметрична и имеет тот же размер, что и R. Все диагональные элементы — единицы, а недиагональные элементы представляют собой верхнюю границу 95% доверительного интервала для соответствующего коэффициента в R. Аргумент RU не возвращается, если R содержит комплексные значения.

Примеры

Случайные столбцы матрицы

Details

Вычислим коэффициенты корреляции для матрицы с двумя нормально распределенными случайными столбцами и одним столбцом, определенным через другой. Поскольку третий столбец матрицы A является кратным второму, эти две переменные напрямую коррелируют, следовательно, коэффициент корреляции в элементах (2,3) и (3,2) матрицы R равен 1.

import EngeeDSP.Functions: corrcoef, randn

x = randn(6,1)
y = randn(6,1)
A = [x y 2*y .+ 3]
R = corrcoef(A)[1]
3×3 Matrix{Float64}:
  1.0       -0.322277  -0.322277
 -0.322277   1.0        1.0
 -0.322277   1.0        1.0

Две случайные переменные

Details

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

import EngeeDSP.Functions: corrcoef, randn

A = randn(10,1)
B = randn(10,1)
R = corrcoef(A,B)[1]
2×2 Matrix{Float64}:
 1.0       0.193892
 0.193892  1.0

Матрицы p-значений, верхних и нижних границ доверительного интервала

Details

Вычислим коэффициенты корреляции и p-значения нормально распределенной случайной матрицы с добавленным четвертым столбцом, равным сумме значений трех других столбцов. Поскольку последний столбец матрицы A представляет собой линейную комбинацию остальных, возникает корреляция между четвертой переменной и каждой из трех других переменных. Следовательно, четвертая строка и четвертый столбец матрицы P содержат очень малые p-значения, что указывает на наличие значимых корреляций.

import EngeeDSP.Functions: corrcoef, randn

A = randn(50,3)
A = hcat(A, sum(A, dims=2))
R,P,RU,RL=corrcoef(A)

Выведем матрицу R.

print("R:")
R
R:
4×4 Matrix{Float64}:
  1.0        -0.0191831  -0.0562013  0.512678
 -0.0191831   1.0        -0.252374   0.497031
 -0.0562013  -0.252374    1.0        0.511839
  0.512678    0.497031    0.511839   1.0

Выведем матрицу P p-значений.

print("P:")
P
P:
4×4 Matrix{Float64}:
 1.0          0.894805     0.698269     0.000140925
 0.894805     1.0          0.0770341    0.000240879
 0.698269     0.0770341    1.0          0.000145133
 0.000140925  0.000240879  0.000145133  1.0

Выведем матрицы RL и RU нижних и верхних границ коэффициентов.

print("RL:")
RL
RL:
4×4 Matrix{Float64}:
  1.0       -0.295951  -0.329396  0.273336
 -0.295951   1.0       -0.495887  0.253795
 -0.329396  -0.495887   1.0       0.272283
  0.273336   0.253795   0.272283  1.0
print("RU:")
RU
RU:
4×4 Matrix{Float64}:
 1.0       0.260556   0.225677   0.692241
 0.260556  1.0        0.0279365  0.681144
 0.225677  0.0279365  1.0        0.691648
 0.692241  0.681144   0.691648   1.0

Значения NaN

Details

Создадим нормально распределенную матрицу, содержащую значения NaN, и вычислим матрицу коэффициентов корреляции, исключив все строки, содержащие NaN.

import EngeeDSP.Functions: corrcoef, randn

A = randn(5, 3)
A[1, 3] = NaN
A[3, 2] = NaN
A
5×3 Matrix{Float64}:
  0.194551     1.40891   NaN
  0.279785    -0.534099   -0.792337
  0.0512203  NaN          -0.952975
 -0.774466    -0.176248    0.353905
  0.786782    -0.24375     1.59703
R = corrcoef(A,"Rows","complete")[1]
3×3 Matrix{Float64}:
  1.0       -0.369186  0.340384
 -0.369186   1.0       0.748195
  0.340384   0.748195  1.0

Используем опцию "all", чтобы включить все значения NaN в расчет.

R = corrcoef(A,"Rows","all")[1]
3×3 Matrix{Float64}:
   1.0  NaN  NaN
 NaN    NaN  NaN
 NaN    NaN  NaN

Используем опцию "pairwise" для попарного вычисления коэффициента корреляции для каждого столбца. Если один из столбцов содержит значение NaN, эта строка будет пропущена.

R = corrcoef(A,"Rows","pairwise")[1]
3×3 Matrix{Float64}:
 1.0         0.00819072  0.300542
 0.00819072  1.0         0.748195
 0.300542    0.748195    1.0

Дополнительно

Коэффициент корреляции

Details

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

где

  • и — среднее значение и стандартное отклонение ;

  • и — среднее значение и стандартное отклонение .

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

Матрица коэффициентов корреляции двух случайных величин — это матрица коэффициентов корреляции для каждой попарной комбинации переменных:

Поскольку и всегда напрямую коррелируют сами с собой, элементы по диагонали равны 1, то есть

Литература

  1. Fisher R.A., Statistical Methods for Research Workers, 13th Ed., Hafner, 1958.

  2. Kendall M.G., The Advanced Theory of Statistics, 4th Ed., Macmillan, 1979.

  3. Press W.H., Teukolsky S.A., Vetterling W.T., and Flannery B.P., Numerical Recipes in C, 2nd Ed., Cambridge University Press, 1992.