Многомерное нормальное распределение является обобщением одномерного нормального распределения на двух или более переменных. Это распределение для случайных векторов коррелированных переменных, где каждый векторный элемент имеет одномерное нормальное распределение. В самом простом случае нет корреляции среди переменных, и элементы векторов являются независимыми одномерными нормальными случайными переменными.
Поскольку с ним легко работать, многомерное нормальное распределение часто используется в качестве модели для многомерных данных.
Statistics and Machine Learning Toolbox™ предоставляет несколько функциональностей, связанных с многомерным нормальным распределением.
Многомерное нормальное распределение использует параметры этой таблицы.
Параметр | Описание | Одномерный нормальный аналог |
---|---|---|
μ | Вектор средних значений | Средняя μ (скаляр) |
Σ | Ковариационная матрица - Диагональные элементы содержат отклонения для каждой переменной, а недиагональные элементы - ковариации между переменными | Дисперсионные σ2 (скаляр) |
Обратите внимание, что в одномерном случае Σ является дисперсией, а не стандартным отклонением. Для получения дополнительной информации о параметрах одномерного нормального распределения смотрите Параметры.
Функция плотности вероятностей (pdf) d -мерного многомерного нормального распределения
где x и μ являются векторами 1-by d, а Σ является d -by d симметричной, положительно определенной матрицей.
Обратите внимание, что Statistics and Machine Learning Toolbox:
Поддерживает сингулярные Σ только для генерации случайных векторов. PDF не может быть записан в той же форме, когда Σ сингулярен.
Использует x и μ, ориентированные как векторы-строки, а не как векторы-столбцы.
Для получения примера см. Раздел «Двухфазное нормальное распределение PDF».
Многомерная нормальная кумулятивная функция распределения (cdf), оцененная в x, определяется как вероятность того, что случайный векторный v, распределенный как многомерный нормаль, лежит внутри полубесконечного прямоугольника с верхними пределами, заданными x,
Хотя многомерный нормальный cdf не имеет закрытой формы, mvncdf
может вычислять значения cdf численно.
Для получения примера смотрите Двухмерное нормальное распределение cdf.
Вычислите и постройте график PDF двухмерного нормального распределения с параметрами mu = [0 0]
и Sigma = [0.25 0.3; 0.3 1]
.
Определите параметры mu
и Sigma
.
mu = [0 0]; Sigma = [0.25 0.3; 0.3 1];
Создайте сетку равномерно разнесенных точек в двумерном пространстве.
x1 = -3:0.2:3; x2 = -3:0.2:3; [X1,X2] = meshgrid(x1,x2); X = [X1(:) X2(:)];
Рассчитать PDF нормального распределения в точках сетки.
y = mvnpdf(X,mu,Sigma); y = reshape(y,length(x2),length(x1));
Постройте график значений PDF.
surf(x1,x2,y) caxis([min(y(:))-0.5*range(y(:)),max(y(:))]) axis([-3 3 -3 3 0 0.4]) xlabel('x1') ylabel('x2') zlabel('Probability Density')
Вычислите и постройте график cdf двухмерного нормального распределения.
Задайте вектор средних значений mu
и ковариационную матрицу Sigma
.
mu = [1 -1]; Sigma = [.9 .4; .4 .3];
Создайте сетку из 625 равномерно расположенных точек в двумерном пространстве.
[X1,X2] = meshgrid(linspace(-1,3,25)',linspace(-3,1,25)'); X = [X1(:) X2(:)];
Вычислите cdf нормального распределения в точках сетки.
p = mvncdf(X,mu,Sigma);
Постройте график значений cdf.
Z = reshape(p,25,25); surf(X1,X2,Z)
Вычислите вероятность по модулю квадрату двухмерного нормального распределения и создайте контурный график результатов.
Задайте двухмерные параметры нормального распределения mu
и Sigma
.
mu = [0 0]; Sigma = [0.25 0.3; 0.3 1];
Вычислите вероятность по модулю квадрату.
p = mvncdf([0 0],[1 1],mu,Sigma)
p = 0.2097
Чтобы визуализировать результат, сначала создайте сетку с равномерно расположенными точками в двумерном пространстве.
x1 = -3:.2:3; x2 = -3:.2:3; [X1,X2] = meshgrid(x1,x2); X = [X1(:) X2(:)];
Затем рассчитать PDF нормального распределения в точках сетки.
y = mvnpdf(X,mu,Sigma); y = reshape(y,length(x2),length(x1));
Наконец, создайте контурный график многомерного нормального распределения, который включает в себя модуль квадрат.
contour(x1,x2,y,[0.0001 0.001 0.01 0.05 0.15 0.25 0.35]) xlabel('x') ylabel('y') line([0 0 1 1 0],[1 0 0 1 1],'Linestyle','--','Color','k')
Вычисление многомерной совокупной вероятности требует значительно большей работы, чем вычисление одномерной вероятности. По умолчанию в mvncdf
функция вычисляет значения меньше полной точности машины и возвращает оценку ошибки как необязательный второй выход. Просмотрите оценку ошибки в этом случае.
[p,err] = mvncdf([0 0],[1 1],mu,Sigma)
p = 0.2097
err = 1.0000e-08
[1] Коц, С., Н. Балакришнан, и Н. Л. Джонсон. Непрерывные многомерные распределения: Том 1: Модели и приложения. 2-й ред. Нью-Йорк: John Wiley & Sons, Inc., 2000.
mvncdf
| mvnpdf
| mvnrnd
| NormalDistribution