ドキュメンテーション

最新のリリースでは、このページがまだ翻訳されていません。 このページの最新版は英語でご覧になれます。

確率分布の操作

確率分布は、本来の母集団に関する仮定に基づく理論上の分布です。確率分布は、確率変数が特定の離散値をもつ事象、あるいは指定の連続値の範囲に収まる事象に対して確率を与えます。

Statistics and Machine Learning Toolbox™ には、確率分布を処理する方法がいくつか用意されています。

Statistics and Machine Learning Toolbox でサポートされている分布の一覧については、サポートされている分布を参照してください。

カスタム分布の確率オブジェクトを定義してから、Distribution Fitter アプリまたは確率オブジェクト関数 (pdfcdficdfrandom など) を使用して、分布の評価や乱数の生成などを行うことができます。詳細については、Distribution Fitter アプリの使用によるカスタム分布の定義を参照してください。また、関数ハンドルを使用してカスタム分布を定義し、関数 mle を使用して最尤推定を求めることもできます。たとえば、カスタム分布を打ち切りデータに近似するを参照してください。

確率分布オブジェクト

確率分布オブジェクトを使用すると、確率分布による標本データへのあてはめと、パラメーター値の指定によって分布を定義できます。その後、分布オブジェクトに対してさまざまな解析を実行できます。

確率分布オブジェクトの作成

fitdist を使用して確率分布オブジェクトで標本データを近似することにより、標本データから確率分布のパラメーターを推定します。指定した単一のパラメトリック分布またはノンパラメトリック分布を標本データにあてはめることができます。また、グループ化変数に基づいて、同じタイプの複数の分布を標本データにあてはめることもできます。fitdist は、標本データから分布パラメーターを推定するために、ほとんどの分布には最尤推定法 (MLE) を使用します。詳細とその他の構文オプションについては、fitdist を参照してください。

また、makedist を使用してパラメーター値を指定することにより確率分布オブジェクトを作成することもできます。

確率分布オブジェクトの処理

確率分布オブジェクトを作成すると、オブジェクト関数を使用して以下を行うことができます。

  • 分布パラメーターに対して信頼区間を計算する (paramci)。

  • 平均値 (mean)、中央値 (median)、四分位数間範囲 (iqr)、分散 (var)、標準偏差 (std) などの要約統計を計算する。

  • 確率密度関数 (pdf) を評価する。

  • 累積分布関数 (cdf) または累積分布逆関数 (icdf) を評価する。

  • 分布について負の対数尤度 (negloglik) とプロファイル尤度関数 (proflik) を計算する。

  • 分布から乱数を生成する (random)。

  • 下限と上限を指定して分布を打ち切る (truncate)。

確率分布オブジェクトの保存

確率分布オブジェクトを .MAT ファイルに保存するには、次のようにします。

  • ツールバーで [ワークスペースの保存] をクリックします。確率分布オブジェクトも含めて、ワークスペース内にあるすべての変数が保存されます。

  • ワークスペース ブラウザーで確率分布オブジェクトを右クリックして、[名前を付けて保存] を選択します。選択した確率分布オブジェクトのみが保存されます。ワークスペース内にある他の変数は保存されません。

また、コマンド ラインで関数 save を使用して確率分布オブジェクトを直接保存できます。save は、ファイル名を選択し、保存する確率分布オブジェクトを指定できます。オブジェクト (または他の変数) を指定しなかった場合、確率分布オブジェクトを含めて、ワークスペース内にあるすべての変数が、指定したファイル名で MATLAB® によって保存されます。詳細とその他の構文オプションについては、save を参照してください。

確率分布オブジェクトの使用による分布の解析

この例では、確率分布オブジェクトを使用した、近似分布に対する多段階解析の実施方法を示します。

この解析では、次のことを行う方法を示します。

  • 120 人の学生の試験の成績が含まれている標本データに確率分布をあてはめる (fitdistを使用)。

  • 試験の成績の平均値を計算する (meanを使用)。

  • 近似分布の pdf のプロットを重ねて試験成績データのヒストグラムをプロットする (plotpdfを使用)。

  • 上位 10% の成績の学生について境界を計算する (icdfを使用)。

  • あてはめた確率分布オブジェクトを保存する (save を使用)。

標本データを読み込みます。

load examgrades

標本データは 120 行 5 列の行列で、試験の成績が格納されています。試験の得点は 0 ~ 100 のスケールです。

試験成績データの 1 列目が含まれているベクトルを作成します。

x = grades(:,1);

fitdist を使用して確率分布オブジェクトを作成することにより、正規分布で標本データを近似します。

pd = fitdist(x,'Normal')
pd = 
  NormalDistribution

  Normal distribution
       mu = 75.0083   [73.4321, 76.5846]
    sigma =  8.7202   [7.7391, 9.98843]

fitdist は、NormalDistribution 型の確率分布オブジェクト pd を返します。このオブジェクトには、近似した正規分布について推定したパラメーター値 mu および sigma が含まれています。パラメーター推定の横にある区間は分布パラメーターの 95% 信頼区間です。

近似分布オブジェクト pd を使用して、学生の試験成績の平均値を計算します。

m = mean(pd)
m = 75.0083

試験成績の平均値は、fitdist で推定した mu パラメーターと等しくなります。

試験成績のヒストグラムをプロットします。あてはめた正規分布と実際の試験成績を視覚的に比較するため、あてはめた pdf のプロットを重ねます。

x_pdf = [1:0.1:100];
y = pdf(pd,x_pdf);
 
figure
histogram(x,'Normalization','pdf')
line(x_pdf,y)

近似分布の pdf は、試験成績のヒストグラムと同じ形状になっています。

累積分布逆関数 (icdf) を使用して、学生の試験成績の上位 10% の境界を判別します。この境界は、確率分布の cdf が 0.9 に等しくなる値と同じです。つまり、90% の試験成績はこの境界値以下になります。

A = icdf(pd,0.9)
A = 86.1837

近似分布に基づくと、10% の学生の試験成績は 86.1837 より高くなっています。同様に、90% の学生は試験成績が 86.1837 以下です。

近似した確率分布 pd を、myobject.mat という名前のファイルとして保存します。

save('myobject.mat','pd')

確率分布関数

分布特有の関数を使用して確率分布を処理することもできます。これらの関数は、乱数の生成、ループ内またはスクリプト内での要約統計の計算、cdf または pdf を関数ハンドル (MATLAB)として別の関数に渡す操作に便利です。これらの関数は、単一のパラメーター セットだけでなく、パラメーター値の配列についての計算の実行にも使用できます。サポートされている確率分布の一覧については、サポートされている分布を参照してください。

分布特有の関数の使用による分布の解析

この例では、分布特有の関数を使用した、近似分布に対する多段階解析の実施方法を示します。

この解析では、次のことを行う方法を示します。

  • 120 人の学生の試験の成績が含まれている標本データに確率分布をあてはめる (normfitを使用)。

  • 近似分布の pdf のプロットを重ねて試験成績データのヒストグラムをプロットする (plotnormpdfを使用)。

  • 上位 10% の成績の学生について境界を計算する (norminvを使用)。

  • save を使用して、推定した分布パラメーターを保存します。

確率分布オブジェクトを使用して、同じ解析を実行できます。確率分布オブジェクトの使用による分布の解析を参照してください。

標本データを読み込みます。

load examgrades

標本データは 120 行 5 列の行列で、試験の成績が格納されています。試験の得点は 0 ~ 100 のスケールです。

試験成績データの 1 列目が含まれているベクトルを作成します。

x = grades(:,1);

normfit を使用して、正規分布オブジェクトを標本データにあてはめます。

[mu,sigma,muCI,sigmaCI] = normfit(x)
mu = 75.0083
sigma = 8.7202
muCI = 2×1

   73.4321
   76.5846

sigmaCI = 2×1

    7.7391
    9.9884

関数 normfit は、正規分布パラメーターの推定値およびパラメーター推定値の95%信頼区間を返します。

試験成績のヒストグラムをプロットします。あてはめた正規分布と実際の試験成績を視覚的に比較するため、あてはめた pdf のプロットを重ねます。

x_pdf = [1:0.1:100];
y = normpdf(x_pdf,mu,sigma);
 
figure
histogram(x,'Normalization','pdf')
line(x_pdf,y)

近似分布の pdf は、試験成績のヒストグラムと同じ形状になっています。

正規累積分布逆関数を使用して、学生の試験成績の上位 10% の境界を判別します。この境界は、確率分布の cdf が 0.9 に等しくなる値と同じです。つまり、90% の試験成績はこの境界値以下になります。

A = norminv(0.9,mu,sigma)
A = 86.1837

近似分布に基づくと、10% の学生の試験成績は 86.1837 より高くなっています。同様に、90% の学生は試験成績が 86.1837 以下です。

推定した分布パラメーターを、myparameter.mat という名前のファイルに保存します。

save('myparameter.mat','mu','sigma')

関数ハンドルとしての確率分布関数の使用

この例では、確率分布関数 normcdf をカイ二乗適合度検定 (chi2gof) で関数ハンドルとして使用する方法を示します。

この例では、入力ベクトル x に含まれている標本データが正規分布に由来しており、この正規分布ではパラメーター µ および σ がそれぞれ標本データの平均 (mean) および標準偏差 (std) に等しいという帰無仮説を検定します。

rng('default') % For reproducibility
x = normrnd(50,5,100,1);
h = chi2gof(x,'cdf',{@normcdf,mean(x),std(x)})
h = 0

h = 0 という結果は、5% という既定の有意水準で chi2gof が帰無仮説を棄却しなかったことを示しています。

次の例では、確率分布関数をスライス サンプラー (slicesample) で関数ハンドルとして使用する方法を示します。この例では、normpdf を使用して 2,000 個の値がある無作為標本を標準正規分布から生成し、生成された値のヒストグラムをプロットします。

rng('default') % For reproducibility
x = slicesample(1,2000,'pdf',@normpdf,'thin',5,'burnin',1000);
histogram(x)

このヒストグラムは、normpdf を使用した場合に生成される無作為標本が標準正規分布になることを示しています。

normpdf ではなく指数分布 pdf の確率分布関数 (exppdf) を関数ハンドルとして渡した場合、slicesampleµ が 1 に等しいという既定パラメーター値の指数分布から 2,000 個の無作為標本を生成します。

rng('default') % For reproducibility
x = slicesample(1,2000,'pdf',@exppdf,'thin',5,'burnin',1000);
histogram(x)

このヒストグラムは、exppdf を使用した場合に生成される無作為標本が指数分布になることを示しています。

確率分布アプリおよびユーザー インターフェイス

アプリとユーザー インターフェイスを使用すると、パラメトリックおよびノンパラメトリックな確率分布を処理するための対話型のアプローチが可能となります。

Distribution Fitter アプリ

Distribution Fitter アプリでは、対話的に確率分布をデータにあてはめることができます。さまざまなタイプのプロットを表示し、信頼限界の計算、およびデータの近似を評価できます。また、近似からデータを除外することもできます。データを保存し、近似をワークスペースに確率分布オブジェクトとしてエクスポートして、さらに解析を行うことができます。

Distribution Fitter アプリを読み込むには、[アプリ] タブを使用するか、コマンド ウィンドウで「distributionFitter」と入力します。詳細は、Distribution Fitter アプリを使用したデータのモデリングを参照してください。

確率分布関数ツール

確率分布関数ユーザー インターフェイスでは、確率分布を視覚的に調べることができます。確率分布関数ユーザー インターフェイスを読み込むには、コマンド ウィンドウで「disttool」と入力します。

乱数発生ツール

乱数発生ユーザー インターフェイスでは、指定した分布から乱数データを発生させ、結果をワークスペースにエクスポートできます。このツールを使用すると、パラメーターと標本サイズの変更が分布に与える影響を調べることができます。

乱数発生ユーザー インターフェイスでは、分布のパラメーター値の設定と下限および上限の変更を行うこと、同じサイズおよびパラメーターを使用して同じ分布から別の標本を抽出すること、および詳しく解析するために無作為標本をワークスペースにエクスポートすることができます。ダイアログ ボックスにより、標本に名前を付けることができます。

参考

| | | |

関連するトピック