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

cov

Ковариация.

Библиотека

EngeeDSP

Синтаксис

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

  • C = cov(A) — возвращает ковариацию.

    • Если A — вектор наблюдений, то C — скалярное значение дисперсии.

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

    • Если A — скаляр, cov(A) возвращает 0. Если A — пустой массив, cov(A) возвращает NaN.

    Выходной аргумент C нормализуется на количество наблюдений минус 1. Если наблюдение единственное, то C нормализуется на 1.

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

    • Если A и B — векторы наблюдений одинаковой длины, то C — ковариационная матрица размером 2 на 2.

    • Если A и B — матрицы наблюдений, то функция cov рассматривает аргументы A и B как векторы, и данный вызов эквивалентен cov(A[:],B[:]). Входные аргументы A и B должны быть одинакового размера.

    • Если A и B — скаляры, cov(A,B) возвращает блок нулей размером 2 на 2. Если A и B — пустые массивы, cov(A,B) возвращает блок значений NaN размером 2 на 2.

  • C = cov(___,w) — задает вес нормализации для любого из предыдущих синтаксисов. При w = 0 (по умолчанию) выходной аргумент C нормализуется на количество наблюдений минус 1. При w = 1 — ровно на количество наблюдений.

  • C = cov(___,nanflag) — задает условие для обработки значений NaN во входных массивах. Например, cov(A,"omitrows") игнорирует любые строки массива A, содержащие одно или несколько значений NaN. По умолчанию функция cov учитывает значения NaN.

Аргументы

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

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

Details

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

Типы данных

Float32, Float64

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

Details

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

Типы данных

Float32, Float64

# w — вес нормализации
0 (по умолчанию) | 1

Details

Вес нормализации, заданный как:

  • 0 — выходной аргумент нормализуется на количество наблюдений минус 1. Если наблюдение единственное, то на 1.

  • 1 — выходной аргумент нормализуется на количество наблюдений.

Типы данных

Float32, Float64

# nanflag — условие отсутствия значения
"includemissing" (по умолчанию) | "includenan" | "omitrows" | "partialrows"

Details

Условие отсутствия значения, заданное как:

  • "includemissing" или "includenan" — функция учитывает значения NaN во входных массивах при вычислении ковариации. Значения "includemissing" и "includenan" ведут себя одинаково.

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

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

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

# C — ковариация
скаляр | матрица

Details

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

  • Для одной входной матрицы аргумент C имеет размер [size(A,2) size(A,2)], основанный на количестве случайных переменных (столбцов), представленных в матрице A. Дисперсии столбцов расположены вдоль диагонали. Если A — вектор-строка или вектор-столбец, то C — это скалярная дисперсия.

  • Для двух входных векторов или матриц аргумент C — это ковариационная матрица размером 2 на 2 между двумя случайными переменными. Дисперсии расположены вдоль диагонали матрицы C.

Примеры

Ковариация матрицы

Details

Создадим матрицу размером 3 на 4 и вычислим ее ковариацию.

import EngeeDSP.Functions: cov

A = [5 0 3 7; 1 -5 7 3; 4 9 8 10]
C = cov(A)
4×4 Matrix{Float64}:
  4.33333   8.83333  -3.0   5.66667
  8.83333  50.3333    6.5  24.1667
 -3.0       6.5       7.0   1.0
  5.66667  24.1667    1.0  12.3333

Поскольку количество столбцов матрицы A равно 4, в результате получается матрица 4 на 4.

Ковариация двух векторов

Details

Создадим два вектора и вычислим их ковариационную матрицу размером 2 на 2.

import EngeeDSP.Functions: cov

A = [3 6 4]
B = [7 12 -9]
cov(A, B)
2×2 Matrix{Float64}:
 2.33333    6.83333
 6.83333  120.333

Ковариация двух матриц

Details

Создадим две матрицы одинакового размера и вычислим их ковариацию размером 2 на 2.

import EngeeDSP.Functions: cov

A = [2 0 -9; 3 4 1]
B = [5 2 6; -4 4 9]
cov(A, B)
2×2 Matrix{Float64}:
 22.1667   -6.93333
 -6.93333  19.4667

Задание веса нормализации

Details

Создадим матрицу и вычислим ее ковариацию, нормализованную на количество строк.

import EngeeDSP.Functions: cov

A = [1 3 -7; 3 9 2; -5 4 6]
C = cov(A, 1)
3×3 Matrix{Float64}:
  11.5556   5.11111  -10.2222
   5.11111  6.88889    5.22222
 -10.2222   5.22222   29.5556

Ковариация без учета отсутствия значений

Details

Создадим матрицу, содержащую значения NaN.

A = [1.77 -0.005 3.98; NaN -2.95 NaN; 2.54 0.19 1.01]

Вычислим ковариацию матрицы, исключив строки, содержащие значения NaN.

import EngeeDSP.Functions: cov

C = cov(A, "omitrows")
3×3 Matrix{Float64}:
  0.29645    0.075075   -1.14345
  0.075075   0.0190125  -0.289575
 -1.14345   -0.289575    4.41045

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

Ковариация

Details

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

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

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

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

Дисперсия

Details

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

где — среднее значение ,

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