Main Content

mvncdf

多変量正規累積分布関数

説明

p = mvncdf(X) は、X の各行で評価した、ゼロ平均および単位共分散行列をもつ多変量正規分布の累積分布関数 (cdf) を返します。詳細は、多変量正規分布を参照してください。

p = mvncdf(X,mu,Sigma) は、X の各行で評価した、平均 mu および共分散 Sigma をもつ多変量正規分布の cdf を返します。

Sigma のみを指定する場合、mu には既定値のゼロを使用するように [] を指定します。

p = mvncdf(xl,xu,mu,Sigma) は、xlxu でそれぞれ定義された下限および上限をもつ多次元矩形で評価した、多変量正規 cdf を返します。

p = mvncdf(___,options) は、前の構文におけるいずれかの入力引数の組み合わせを使用して、p を計算するために使用する数値積分の制御パラメーターを指定します。引数 options は、パラメーター 'TolFun''MaxFunEvals' および 'Display' の任意の組み合わせで関数 statset を使用して作成します。

[p,err] = mvncdf(___) は、さらに誤差の推定値を p に返します。詳細は、アルゴリズムを参照してください。

すべて折りたたむ

すべての次元で座標の値を増加させた点で、4 次元の標準多変量正規分布の cdf を評価します。

座標の値が増加する 5 つの 4 次元点が含まれている行列 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

X 内の点における cdf を評価します。

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];

2 次元平面内に 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 object. The axes object 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

結果を可視化するため、2 次元平面内に点が均等間隔で配置されているグリッドをはじめに作成します。

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 object. The axes object with xlabel x, ylabel y contains 2 objects of type contour, line.

多変量累積確率を計算する場合、一変量確率を計算するよりも非常に多くの計算量を必要とします。既定の設定では、関数 mvncdf はマシンの最大精度に満たない値まで計算し、オプションの 2 番目の出力として誤差の推定値を返します。このケースにおける推定誤差を表示します。

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

ランダムな点における多変量正規分布の cdf を評価し、cdf の計算に関連する推定誤差を表示します。

平均ベクトル mu および共分散行列 Sigma をもつ 5 次元の多変量正規分布から、4 つのランダムな点を生成します。

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);

X 内の点における cdf 値 p と、関連する推定誤差 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 行 d 列の数値行列を指定します。n は正の整数スカラー、d は単一の多変量正規分布の次元です。X の行は観測値 (点) に、列は変数 (座標) に対応します。

データ型: single | double

多変量正規分布の平均ベクトル。1 行 d 列の数値ベクトルまたは数値スカラーを指定します。d は多変量正規分布の次元です。mu がスカラーである場合、mvncdfX のサイズに一致するようにスカラーを複製します。

データ型: single | double

多変量正規分布の共分散行列。d 行 d 列の対称な正定値行列を指定します。d は多変量正規分布の次元です。共分散行列が対角行列であり、対角要素に分散が、非対角要素にゼロ共分散が格納されている場合、対角要素のみが格納されている 1 行 d 列のベクトルを Sigma として指定することもできます。

データ型: single | double

矩形の下限。1 行 d 列の数値ベクトルを指定します。

データ型: single | double

矩形の上限。1 行 d 列の数値ベクトルを指定します。

データ型: single | double

数値積分のオプション。構造体を指定します。引数 options は、次のパラメーターを任意に組み合わせて関数 statset を使用することにより作成します。

  • 'TolFun' — 最大絶対許容誤差。既定値は、d < 4 である場合は 1e-8、d ≥ 4 である場合は 1e-4 です。

  • 'MaxFunEvals' — d ≥ 4 である場合に許容される被積分関数の最大評価回数。既定値は 1e7 です。d < 4 である場合、'MaxFunEvals' は無視されます。

  • 'Display' — 表示出力レベル。'off' (既定)、'iter' または 'final' を選択できます。d < 4 である場合、'Display' は無視されます。

例: statset('TolFun',1e-7,'Display','final')

データ型: struct

出力引数

すべて折りたたむ

cdf の値。xlxu によって指定された矩形領域における確率を表す数値スカラーまたは n 行 1 列の数値ベクトルとして返されます。n は X の行数です。

絶対許容誤差。正の数値スカラーとして返されます。二変量および三変量分布の場合、既定の絶対許容誤差は 1e-8 です。4 次元以上の場合、既定の絶対許容誤差は 1e-4 です。詳細は、アルゴリズムを参照してください。

詳細

すべて折りたたむ

多変量正規分布

多変量正規分布は、一変量正規分布を 2 つ以上の変数に一般化したものです。平均ベクトル μ および共分散行列 Σ という 2 つのパラメーターがあり、これらは一変量正規分布の平均および分散パラメーターに類似しています。Σ の対角要素には各変数の分散が、Σ の非対角要素には変数間の共分散が格納されます。

d 次元多変量正規分布の確率密度関数 (pdf) は、次のようになります。

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

ここで、x と μ は 1 行 d 列のベクトル、Σ は d 行 d 列の対称な正定値行列です。mvnrnd のみが、(特異行列の可能性もある) 半正定値行列の Σ を受け入れます。Σ が特異行列である場合、pdf を同じ形式にすることはできません。

x で評価した多変量正規分布の累積分布関数 (cdf) は、多変量正規分布に従うランダムなベクトル v が、上限が次のように x によって定義される半無限の矩形に含まれる確率です。

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

多変量正規 cdf に閉形式はありませんが、mvncdf は cdf 値を数値的に計算できます。

ヒント

  • 1 次元の場合、Sigma は標準偏差ではなく分散です。たとえば、mvncdf(1,0,4)normcdf(1,0,2) と同じであり、4 は分散、2 は標準偏差です。

アルゴリズム

二変量分布と三変量分布の場合、mvncdf は、Drezner および Wesolowsky[1][2]と Genz[3]が開発した手法に基づいて、t 密度の変換に適応求積法を使用します。4 次元以上の場合、mvncdf は、Genz と Bretz[4][5]が開発した手法に基づいて、準モンテカルロ積分アルゴリズムを使用します。

参照

[1] Drezner, Z. “Computation of the Trivariate Normal Integral.” Mathematics of Computation. Vol. 63, 1994, pp. 289–294.

[2] Drezner, Z., and G. O. Wesolowsky. “On the Computation of the Bivariate Normal Integral.” Journal of Statistical Computation and Simulation. Vol. 35, 1989, pp. 101–107.

[3] Genz, A. “Numerical Computation of Rectangular Bivariate and Trivariate Normal and t Probabilities.” Statistics and Computing. Vol. 14, No. 3, 2004, pp. 251–260.

[4] Genz, A., and F. Bretz. “Numerical Computation of Multivariate t Probabilities with Application to Power Calculation of Multiple Contrasts.” Journal of Statistical Computation and Simulation. Vol. 63, 1999, pp. 361–378.

[5] Genz, A., and F. Bretz. “Comparison of Methods for the Computation of Multivariate t Probabilities.” Journal of Computational and Graphical Statistics. Vol. 11, No. 4, 2002, pp. 950–971.

[6] Kotz, S., N. Balakrishnan, and N. L. Johnson. Continuous Multivariate Distributions: Volume 1: Models and Applications. 2nd ed. New York: John Wiley & Sons, Inc., 2000.

拡張機能

バージョン履歴

R2006a で導入