mvncdf

Многомерная нормальная кумулятивная функция распределения

Описание

пример

p = mvncdf(X) возвращает кумулятивную функцию распределения (cdf) многомерного нормального распределения с нулем среднего и единичной ковариационной матрицы, рассчитанной в каждой строке X. Для получения дополнительной информации см. Раздел «Многомерное нормальное распределение».

пример

p = mvncdf(X,mu,Sigma) возвращает cdf многомерного нормального распределения со средним mu и ковариационные Sigma, рассчитывается в каждой строке X.

Задайте [] для mu использовать его значение , равное нулю, когда вы хотите задать только Sigma.

пример

p = mvncdf(xl,xu,mu,Sigma) возвращает многомерный нормальный cdf, рассчитанный по многомерному прямоугольнику с нижними и верхними пределами, заданными как xl и xu, соответственно.

пример

p = mvncdf(___,options) задает параметры управления для численного интегрирования, используемого для вычисления p, использование любой комбинации входных аргументов в предыдущих синтаксисах. Создайте options аргумент, использующий statset функция с любой комбинацией параметров 'TolFun', 'MaxFunEvals', и 'Display'.

пример

[p,err] = mvncdf(___) дополнительно возвращает оценку ошибки в p. Для получения дополнительной информации см. «Алгоритмы».

Примеры

свернуть все

Вычислите cdf стандартного четырехмерного многомерного нормального распределения в точках с увеличением координат в каждой размерности.

Создайте матрицу X пяти четырехмерных точек с увеличением координат.

firstDim = (-2:2)';
X = repmat(firstDim,1,4)
X = 5×4

    -2    -2    -2    -2
    -1    -1    -1    -1
     0     0     0     0
     1     1     1     1
     2     2     2     2

Вычислите cdf в точках в X.

p = mvncdf(X)
p = 5×1

    0.0000
    0.0006
    0.0625
    0.5011
    0.9121

Значения cdf увеличиваются, потому что координаты точек увеличиваются в каждой размерности.

Вычислите и постройте график 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)

Figure contains an axes. The axes contains an object of type surface.

Вычислите вероятность по модулю квадрату двухмерного нормального распределения и создайте контурный график результатов.

Задайте двухмерные параметры нормального распределения 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')

Figure contains an axes. The axes contains 2 objects of type contour, line.

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

[p,err] = mvncdf([0 0],[1 1],mu,Sigma)
p = 0.2097
err = 1.0000e-08

Вычислите cdf многомерного нормального распределения в случайных точках и отобразите оценки ошибок, связанные с вычислением cdf.

Сгенерируйте четыре случайные точки из пятимерного многомерного нормального распределения со средним векторным mu и ковариационная матрица Sigma.

mu = [0.5 -0.3 0.2 0.1 -0.4];
Sigma = 0.5*eye(5);
rng('default')  % For reproducibility
X = mvnrnd(mu,Sigma,4);

Найдите значения cdf p в точках в X и связанные с ними оценки ошибок err. Отображение сводных данных числовых вычислений.

[p,err] = mvncdf(X,mu,Sigma,statset('Display','final'))
Successfully satisfied error tolerance of 0.0001 in 8650 function evaluations.
Successfully satisfied error tolerance of 0.0001 in 8650 function evaluations.
Successfully satisfied error tolerance of 0.0001 in 8650 function evaluations.
Successfully satisfied error tolerance of 0.0001 in 8650 function evaluations.
p = 4×1

    0.1520
    0.0407
    0.0002
    0.1970

err = 4×1
10-16 ×

    0.5949
    0.1487
         0
    0.1983

Входные параметры

свернуть все

Точки оценки, заданные как n -by d числовая матрица, где n является положительным скалярным целым числом, а d является размерностью одинарного многомерного нормального распределения. Строки X соответствуют наблюдениям (или точкам), а столбцы соответствуют переменным (или координатам).

Типы данных: single | double

Вектор средних значений многомерного нормального распределения, заданный как 1-by - d числовой вектор или числовой скаляр, где d - размерность многомерного нормального распределения. Если mu является скаляром, тогда mvncdf реплицирует скаляр, чтобы соответствовать размеру X.

Типы данных: single | double

Ковариационная матрица многомерного нормального распределения, заданная как d -by d симметричная, положительно определенная матрица, где d - размерность многомерного нормального распределения. Если ковариационная матрица диагональна, содержащая отклонения по диагонали и нулевые ковариации от нее, то можно также задать Sigma как 1-by - d вектор, содержащий только диагональные элементы.

Типы данных: single | double

Нижний предел прямоугольника, заданный как 1-by - d числовой вектор.

Типы данных: single | double

Верхний предел прямоугольника, заданный как 1-by - d числовой вектор.

Типы данных: single | double

Опции численного интегрирования, заданные как структура. Создайте options аргумент вызовом statset функция с любой комбинацией следующих параметров:

  • 'TolFun' - Максимальный абсолютный допуск ошибок. Значение по умолчанию 1e-8 когда d < 4, и 1e-4 при d ≥ 4.

  • 'MaxFunEvals' - Максимальное количество интеграционных оценок, допустимое при d ≥ 4. Значение по умолчанию 1e7. Функция игнорирует 'MaxFunEvals' при d < 4.

  • 'Display' - Уровень вывода дисплея. Выбор следующий 'off' (по умолчанию), 'iter', и 'final'. Функция игнорирует 'Display' при d < 4.

Пример: statset('TolFun',1e-7,'Display','final')

Типы данных: struct

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

свернуть все

cdf значения, возвращенные как n -by- 1 числовой вектор, где n - количество строк в X, или числовой скаляр, представляющий вероятность по прямоугольной области, заданной как xl и xu.

Абсолютный допуск ошибок, возвращенный как положительный числовой скаляр. Для двухмерных и трехмерных распределений абсолютная ошибка допуска по умолчанию является 1e-8. Для четырёх или более размерностей абсолютный допуск ошибки по умолчанию является 1e-4. Для получения дополнительной информации см. «Алгоритмы».

Подробнее о

свернуть все

Многомерное нормальное распределение

Многомерное нормальное распределение является обобщением одномерного нормального распределения на двух или более переменных. У этого есть два параметра, вектор средних значений μ и ковариационная матрица Σ, которые походят на средние параметры и параметры отклонения одномерного нормального распределения. Диагональные элементы Σ содержат отклонения для каждой переменной, а недиагональные элементы Σ - ковариации между переменными.

Функция плотности вероятностей (pdf) d -мерного многомерного нормального распределения

y = f(x,μ,Σ) = 1|Σ|(2π)dexp(12(x-μΣ-1(x-μ)')

где x и μ являются векторами 1-by d, а Σ является d -by d симметричной, положительно определенной матрицей. Толькоmvnrnd позволяет положительные полуопределенные матрицы Σ, которые могут быть сингулярными. PDF не может иметь ту же форму, когда Σ сингулярна.

Многомерная нормальная кумулятивная функция распределения (cdf), оцененная в x, является вероятностью того, что случайный векторный v, распределенный как многомерный нормаль, лежит внутри полубесконечного прямоугольника с верхними пределами, заданными x:

Pr{v(1)x(1),v(2)x(2),...,v(d)x(d)}.

Хотя многомерный нормальный cdf не имеет закрытой формы, mvncdf может вычислять значения cdf численно.

Совет

  • В одномерном случае Sigma - дисперсия, а не стандартное отклонение. Для примера, mvncdf(1,0,4) то же, что и normcdf(1,0,2), где 4 - отклонение и 2 - стандартное отклонение.

Алгоритмы

Для двухмерных и трехмерных распределений, mvncdf использует адаптивную квадратуру на преобразовании плотности t, основанную на методах, разработанных Дрезнером и Везоловским [1] и [2]Генцем [3]. Для четырёх или более размерностей, mvncdf использует алгоритм интегрирования квази-Монте-Карло, основанный на методах, разработанных Генцем и Бретцем [4] .[5]

Ссылки

[1] Дрезнер, Z. «Расчет тривариатного нормального интеграла». Математика расчетов. Том 63, 1994, стр. 289-294.

[2] Дрезнер, З., и Г. О. Везоловский. «Об расчете двухмерного нормального интеграла». Журнал статистических расчетов и симуляции. Том 35, 1989, стр. 101-107.

[3] Genz, A. «Численный расчет прямоугольных двухфазных и трехфазных нормальных и t вероятностей». Статистика и вычисления. Том 14, № 3, 2004, стр. 251-260.

[4] Genz, A., and F. Bretz. Численный расчет многомерных t вероятностей с приложением к вычислению степени нескольких контрастов. Журнал статистических расчетов и симуляции. Том 63, 1999, стр. 361-378.

[5] Genz, A., and F. Bretz. Сравнение методов расчета многомерных t-вероятностей. Журнал вычислительной и графической статистики. Том 11, № 4, 2002, стр. 950-971.

[6] Коц, С., Н. Балакришнан, и Н. Л. Джонсон. Непрерывные многомерные распределения: Том 1: Модели и приложения. 2-й ред. Нью-Йорк: John Wiley & Sons, Inc., 2000.

Расширенные возможности

Введенный в R2006a