多項確率分布関数
この例では、確率分布関数を使用した乱数の生成、多項分布の pdf の計算およびプロットの方法を示します。
手順 1. 分布パラメーターを定義する。
各結果の確率を含むベクトル p
を作成します。結果 1 の確率は 1/2、結果 2 の確率は 1/3、結果 3 の確率は 1/6 です。各実験の試行回数 n
は 5、実験の反復数 reps
は 8 です。
p = [1/2 1/3 1/6]; n = 5; reps = 8;
手順 2. 1 つの乱数を生成する。
1 回の試行の結果である多項分布から 1 つの乱数を生成します。
rng('default') % For reproducibility r = mnrnd(1,p,1)
r = 1×3
0 1 0
返されるベクトル r
には 3 つの要素が含まれ、起こりうる各結果のカウントが示されます。この 1 回の試行の結果が結果 2 です。
手順 3. 乱数の行列を生成する。
多項分布から乱数の行列を生成することもできます。この行列は、それぞれ複数の試行を含む複数の実験の結果を報告します。試行回数 n = 5
、反復数 reps = 8
の実験の結果を含む行列を生成します。
r = mnrnd(n,p,reps)
r = 8×3
1 1 3
3 2 0
1 1 3
0 4 1
5 0 0
1 2 2
3 1 1
3 1 1
生成された行列の各行には、 個の多項分布のビンそれぞれのカウントが含まれます。たとえば、最初の実験 (最初の行に対応する) では、5 回の試行のうちの 1 回が結果 1、5 回の試行のうちの 1 回が結果 2、5 回の試行のうちの 3 回が結果 3 となります。
手順 4. pdf を計算する。
多項関数はビン数を使用するため、可能性のある結果をすべて組み合わせた多次元配列を作成し、mnpdf
を使用して pdf を計算します。
count1 = 1:n; count2 = 1:n; [x1,x2] = meshgrid(count1,count2); x3 = n-(x1+x2); y = mnpdf([x1(:),x2(:),x3(:)],repmat(p,(n)^2,1));
手順 5. 確率密度関数をプロットする。
3 次元の棒グラフを作成し、結果の頻度の組み合わせごとに確率密度関数を可視化します。
y = reshape(y,n,n); bar3(y) set(gca,'XTickLabel',1:n); set(gca,'YTickLabel',1:n); xlabel('x_1 Frequency') ylabel('x_2 Frequency') zlabel('Probability Mass')
プロットは、起こり得る結果の組み合わせごとの確率質量を示しています。 は制約 により決定されるため、表示されません。