MATLAB の mvnpdf()関数
このチュートリアルでは、MATLAB の mvnpdf()
関数を使用して、多変量正規分布の確率密度関数を評価する方法について説明します。
MATLAB で mvnpdf()
関数を使用する
2つ以上の変数への単変量正規分布の一般化バージョンの多変量正規分布。多変量正規分布には、共分散行列と平均ベクトルを含む、単変量正規分布と同様の 2つのパラメーターがあります。
共分散行列の非対角要素には変数間の共分散が含まれ、共分散行列の対角要素には各変数の分散が含まれます。MATLAB では、mvnpdf()
関数を使用して、多変量正規分布の確率密度関数を見つけます。
mvnpdf()
関数には、以下の 3つの構文があります。
構文:
output = mvnpdf(input)
output = mvnpdf(input, mu)
output = mvnpdf(input, mu, sigma)
output = mvnpdf(input)
は、確率密度関数を、次元 m の多変量正規分布を含む入力行列の n 行 1 列
のベクトルとして返します。この関数は、n 行 m 列の次元に沿った各入力マトリックス行で出力を評価します。
output = mvnpdf(input, mu)
は、多変量正規分布の平均値を定義する mu
変数に従って確率密度関数を返します。3 番目の構文には、多変量正規分布の共分散を定義する変数 sigma
も含まれます。
output = mvnpdf(input, mu, sigma)
で、sigma
の値のみを指定し、デフォルト値の mu
を使用する場合は、の値として空のベクトルを渡すことができます。mu
変数を 2 番目の引数として、sigma
の値を 3 番目の引数として設定します。mvnrnd()
関数を使用して、ランダムな数値を含む多変量正規分布行列を作成できます。
ランダムな多変量正規分布を作成するには、mvnrnd()
関数内で mu
および sigma
変数の値を渡す必要があります。mvnrnd()
関数内の 3 番目の引数として数を定義することにより、出力マトリックスの行数を設定することもできます。
たとえば、mrnrnd()
関数を使用して多変量正規分布のランダム行列を作成し、mvnpdf()
関数を使用してその確率密度関数を見つけましょう。
サンプルコード:
mu_v = zeros(1,4);
Sigma_m = eye(4);
rng('default')
random_mvn = mvnrnd(mu_v,Sigma_m,6)
out_pdf = mvnpdf(random_mvn)
出力:
random_mvn =
0.5377 -0.4336 0.7254 1.4090
1.8339 0.3426 -0.0631 1.4172
-2.2588 3.5784 0.7147 0.6715
0.8622 2.7694 -0.2050 -1.2075
0.3188 -1.3499 -0.1241 0.7172
-1.3077 3.0349 1.4897 1.6302
out_pdf =
0.0057
0.0016
0.0000
0.0002
0.0074
0.0000
zeros()
関数を使用して mu
変数のベクトルを作成し、eye()
関数を使用して sigma
変数のマトリックスを作成し、rng()
関数を使用してランダムを制御しました番号ジェネレーターであり、再現性のためにデフォルトに設定しています。上記の出力は、多変量正規分布のランダム行列と確率密度関数値を含むベクトルを示しています。
別の平均値に従って、特定のポイントで確率密度関数を見つけたいとします。mu
変数の平均値は、mvnpdf()
関数内の 2 番目の引数として定義できます。
mu
マトリックスサイズは、多変量正規分布の入力マトリックスサイズと同じである必要があります。
特定のポイントでの異なる共分散値に従って確率密度関数を見つけたいとします。sigma
変数の共分散値は、mvnpdf()
関数内の 3 番目の引数として定義できます。
sigma
マトリックスの列数は、多変量正規分布入力マトリックスの列数と同じである必要があります。同じポイントで確率密度関数を見つけたい場合は、mu
変数内で同じポイントを繰り返すことができます。デフォルトでは、mu
変数はゼロのベクトルであり、sigma
変数は 1 のマトリックス。
mvnpdf()
関数の詳細については、このリンクを確認してください。mvnrnd()
関数については、このリンクを確認してください。