scipy.stats.matrix_normal#
-
scipy.stats.matrix_normal =
object> [источник]# Матричная нормальная случайная величина.
The mean ключевое слово указывает среднее значение. Параметр rowcov ключевое слово указывает ковариационную матрицу между строками. Ключевое слово ‘colcov’ указывает ковариационную матрицу между столбцами.
- Параметры:
- meanarray_like, необязательный
Среднее распределения (по умолчанию: None)
- rowcovarray_like, необязательный
Межстрочная ковариационная матрица распределения (по умолчанию:
1)- colcovarray_like, необязательный
Межстолбцовая ковариационная матрица распределения (по умолчанию:
1)- seed{None, int, np.random.RandomState, np.random.Generator}, опционально
Используется для генерации случайных величин. Если seed является None, RandomState используется синглтон. Если seed является int, новый
RandomStateиспользуется экземпляр, инициализированный с seed. Если seed уже являетсяRandomStateилиGeneratorэкземпляр, то этот объект используется. По умолчанию None.
Методы
pdf(X, mean=None, rowcov=1, colcov=1)
Функция плотности вероятности.
logpdf(X, mean=None, rowcov=1, colcov=1)
Логарифм функции плотности вероятности.
rvs(mean=None, rowcov=1, colcov=1, size=1, random_state=None)
Генерировать случайные выборки.
entropy(rowcol=1, colcov=1)
Дифференциальная энтропия.
Примечания
Если mean установлено в None то для среднего используется матрица нулей. Размеры этой матрицы выводятся из формы rowcov и colcov, если они предоставлены, или установить в
1если неоднозначно.rowcov и colcov могут быть двумерными array_likes, задающими ковариационные матрицы напрямую. Альтернативно, одномерный массив будет интерпретироваться как элементы диагональной матрицы, а скаляр или нульмерный массив — как это значение, умноженное на единичную матрицу.
Ковариационные матрицы, заданные rowcov и colcov должна быть (симметричной) положительно определенной. Если выборки в X являются \(m \times n\), затем rowcov должен быть \(m \times m\) и colcov должен быть \(n \times n\). mean должен иметь ту же форму, что и X.
Функция плотности вероятности для
matrix_normalявляется\[f(X) = (2 \pi)^{-\frac{mn}{2}}|U|^{-\frac{n}{2}} |V|^{-\frac{m}{2}} \exp\left( -\frac{1}{2} \mathrm{Tr}\left[ U^{-1} (X-M) V^{-1} (X-M)^T \right] \right),\]где \(M\) это среднее значение, \(U\) ковариационную матрицу между строками, \(V\) ковариационная матрица между столбцами.
The allow_singular поведение
multivariate_normalраспределение в настоящее время не поддерживается. Ковариационные матрицы должны быть полного ранга.The
matrix_normalраспределение тесно связано сmultivariate_normalраспределение. В частности, \(\mathrm{Vec}(X)\) (вектор, образованный конкатенацией столбцов \(X\)) имеет многомерное нормальное распределение со средним \(\mathrm{Vec}(M)\) и ковариация \(V \otimes U\) (где \(\otimes\) является произведением Кронекера). Выборка и вычисление плотности вероятности \(\mathcal{O}(m^3 + n^3 + m^2 n + m n^2)\) для матричного нормального, но \(\mathcal{O}(m^3 n^3)\) для эквивалентного многомерного нормального распределения, что делает эту эквивалентную форму алгоритмически неэффективной.Добавлено в версии 0.17.0.
Примеры
>>> import numpy as np >>> from scipy.stats import matrix_normal
>>> M = np.arange(6).reshape(3,2); M array([[0, 1], [2, 3], [4, 5]]) >>> U = np.diag([1,2,3]); U array([[1, 0, 0], [0, 2, 0], [0, 0, 3]]) >>> V = 0.3*np.identity(2); V array([[ 0.3, 0. ], [ 0. , 0.3]]) >>> X = M + 0.1; X array([[ 0.1, 1.1], [ 2.1, 3.1], [ 4.1, 5.1]]) >>> matrix_normal.pdf(X, mean=M, rowcov=U, colcov=V) 0.023410202050005054
>>> # Equivalent multivariate normal >>> from scipy.stats import multivariate_normal >>> vectorised_X = X.T.flatten() >>> equiv_mean = M.T.flatten() >>> equiv_cov = np.kron(V,U) >>> multivariate_normal.pdf(vectorised_X, mean=equiv_mean, cov=equiv_cov) 0.023410202050005054
Альтернативно, объект может быть вызван (как функция) для фиксации параметров среднего и ковариации, возвращая 'замороженную' матрично-нормальную случайную величину:
>>> rv = matrix_normal(mean=None, rowcov=1, colcov=1) >>> # Frozen object with the same methods but holding the given >>> # mean and covariance fixed.