ドキュメンテーション

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

fitdist

データへの確率分布オブジェクトの近似

構文

pd = fitdist(x,distname)
pd = fitdist(x,distname,Name,Value)
[pdca,gn,gl] = fitdist(x,distname,'By',groupvar)
[pdca,gn,gl] = fitdist(x,distname,'By',groupvar,Name,Value)

説明

pd = fitdist(x,distname) は、distname で指定された分布を列ベクトル x 内のデータに近似して、確率分布オブジェクトを作成します。

pd = fitdist(x,distname,Name,Value) は、1 つまたは複数の名前と値のペア引数で指定された追加オプションを使用して、確率分布オブジェクトを作成します。たとえば、打ち切りデータを示すか、反復近似アルゴリズムの制御パラメーターを指定できます。

[pdca,gn,gl] = fitdist(x,distname,'By',groupvar) は、distname で指定された分布をグループ化変数 groupvar に基づいて x 内のデータに近似して、確率分布オブジェクトを作成します。近似確率分布オブジェクトの cell 配列 pdca、グループ ラベルの cell 配列 gn およびグループ化変数レベルの cell 配列 gl を返します。

[pdca,gn,gl] = fitdist(x,distname,'By',groupvar,Name,Value) は、1 つまたは複数の名前と値のペア引数で指定された追加オプションを使用する上記の出力引数を返します。たとえば、打ち切りデータを示すか、反復近似アルゴリズムの制御パラメーターを指定できます。

すべて折りたたむ

標本データを読み込みます。患者の体重データを含むベクトルを作成します。

load hospital
x = hospital.Weight;

正規分布をデータに近似することにより、正規分布オブジェクトを作成します。

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

  Normal distribution
       mu =     154   [148.728, 159.272]
    sigma = 26.5714   [23.3299, 30.8674]

パラメーター推定の横にある区間は分布パラメーターの 95% 信頼区間です。

分布の確率密度関数をプロットします。

x_values = 50:1:250;
y = pdf(pd,x_values);
plot(x_values,y,'LineWidth',2)

標本データを読み込みます。患者の体重データを含むベクトルを作成します。

load hospital
x = hospital.Weight;

カーネル分布をデータに近似することにより、カーネル分布オブジェクトを作成します。Epanechnikov カーネル関数を使用します。

pd = fitdist(x,'Kernel','Kernel','epanechnikov')
pd = 
  KernelDistribution

    Kernel = epanechnikov
    Bandwidth = 14.3792
    Support = unbounded

分布の確率密度関数をプロットします。

x_values = 50:1:250;
y = pdf(pd,x_values);
plot(x_values,y)

標本データを読み込みます。患者の体重データを含むベクトルを作成します。

load hospital
x = hospital.Weight;

正規分布をデータに近似することにより、患者の性別でグループ化された、正規分布オブジェクトを作成します。

gender = hospital.Sex;
[pdca,gn,gl] = fitdist(x,'Normal','By',gender)
pdca = 1x2 cell array
    {1x1 prob.NormalDistribution}    {1x1 prob.NormalDistribution}

gn = 2x1 cell array
    {'Female'}
    {'Male'  }

gl = 2x1 cell array
    {'Female'}
    {'Male'  }

cell 配列 pdca には、各性別グループに 1 つずつ、2 つの確率分布オブジェクトが含まれます。cell 配列 gn には、2 つのグループ ラベルが含まれています。cell 配列 gl には、2 つのグループ レベルが含まれています。

cell 配列 pdca の各分布を表示して、平均値 mu と患者の性別でグループ化された標準偏差 sigma を比較します。

female = pdca{1}  % Distribution for females
female = 
  NormalDistribution

  Normal distribution
       mu = 130.472   [128.183, 132.76]
    sigma = 8.30339   [6.96947, 10.2736]

male = pdca{2}  % Distribution for males
male = 
  NormalDistribution

  Normal distribution
       mu = 180.532   [177.833, 183.231]
    sigma = 9.19322   [7.63933, 11.5466]

分布ごとに確率密度関数を計算します。

x_values = 50:1:250;
femalepdf = pdf(female,x_values);
malepdf = pdf(male,x_values);

性別の体重分布を視覚的に比較するために確率密度関数をプロットします。

figure
plot(x_values,femalepdf,'LineWidth',2)
hold on
plot(x_values,malepdf,'Color','r','LineStyle',':','LineWidth',2)
legend(gn,'Location','NorthEast')
hold off

標本データを読み込みます。患者の体重データを含むベクトルを作成します。

load hospital
x = hospital.Weight;

カーネル分布をデータに近似することにより、患者の性別でグループ化された、カーネル分布オブジェクトを作成します。三角カーネル関数を使用します。

gender = hospital.Sex;
[pdca,gn,gl] = fitdist(x,'Kernel','By',gender,'Kernel','triangle');

cell 配列 pdca の各分布を表示して、各性別のカーネル分布を確認します。

female = pdca{1}  % Distribution for females
female = 
  KernelDistribution

    Kernel = triangle
    Bandwidth = 4.25894
    Support = unbounded

male = pdca{2}  % Distribution for males
male = 
  KernelDistribution

    Kernel = triangle
    Bandwidth = 5.08961
    Support = unbounded

分布ごとに確率密度関数を計算します。

x_values = 50:1:250;
femalepdf = pdf(female,x_values);
malepdf = pdf(male,x_values);

性別の体重分布を視覚的に比較するために確率密度関数をプロットします。

figure
plot(x_values,femalepdf,'LineWidth',2)
hold on
plot(x_values,malepdf,'Color','r','LineStyle',':','LineWidth',2)
legend(gn,'Location','NorthEast')
hold off

入力引数

すべて折りたたむ

列ベクトルとして指定される入力データ。fitdistx 内の NaN 値を無視します。また、打ち切りベクトルまたは頻度ベクトルに NaN 値が含まれる場合、fitdist では x 内の対応する値を無視します。

データ型: double

分布名。以下のいずれかの文字ベクトルまたは string スカラーを指定します。distname で指定された分布により、返される確率分布オブジェクトのタイプが決まります。

分布名説明分布オブジェクト
'Beta'ベータ分布BetaDistribution
'Binomial'二項分布BinomialDistribution
'BirnbaumSaunders'バーンバウム・サンダース分布BirnbaumSaundersDistribution
'Burr'ブール分布BurrDistribution
'Exponential'指数分布ExponentialDistribution
'ExtremeValue'極値分布ExtremeValueDistribution
'Gamma'ガンマ分布GammaDistribution
'GeneralizedExtremeValue'一般化極値分布GeneralizedExtremeValueDistribution
'GeneralizedPareto'一般化パレート分布GeneralizedParetoDistribution
'HalfNormal'半正規分布HalfNormalDistribution
'InverseGaussian'逆ガウス分布InverseGaussianDistribution
'Kernel'カーネル分布KernelDistribution
'Logistic'ロジスティック分布LogisticDistribution
'Loglogistic'対数ロジスティック分布LoglogisticDistribution
'Lognormal'対数正規分布LognormalDistribution
'Nakagami'仲上分布NakagamiDistribution
'NegativeBinomial'負の二項分布NegativeBinomialDistribution
'Normal'正規分布NormalDistribution
'Poisson'ポアソン分布PoissonDistribution
'Rayleigh'レイリー分布RayleighDistribution
'Rician'ライス分布RicianDistribution
'Stable'安定分布StableDistribution
'tLocationScale't 位置-スケール分布tLocationScaleDistribution
'Weibull'ワイブル分布WeibullDistribution

グループ化変数。categorical 配列、logical ベクトル、数値ベクトル、文字配列、string 配列、または文字ベクトルの cell 配列を指定します。グループ化変数内の各一意の値が 1 つのグループを定義します。

Gender が文字ベクトルの cell 配列であり、'Male' および 'Female' という値が格納されている場合、Gender をグループ化変数として使用すると、性別で分布をデータにあてはめることができます。

複数のグループ化変数を使用するには、グループ化変数の cell 配列を指定します。観測値は、指定されたすべてのグループ化変数の共通の値をもつ場合、同じグループに配置されます。

たとえば、Smoker は、非喫煙者の値が 0、喫煙者の値が 1 の logical ベクトルである場合、{Gender,Smoker} という cell 配列を指定すると、観測値は Male Smoker、Male Nonsmoker、Female Smoker および Female Nonsmoker という 4 つのグループに分割されます。

例: {Gender,Smoker}

データ型: categorical | logical | single | double | char | string | cell

名前と値のペアの引数

オプションの引数 Name,Value のコンマ区切りペアを指定します。Name は引数名で、Value は対応する値です。Name は引用符で閉じなければなりません。Name1,Value1,...,NameN,ValueN のように、複数の名前と値のペアの引数を任意の順序で指定できます。

例: fitdist(x,'Kernel','Kernel','triangle') は、三角カーネル関数を使用してカーネル分布オブジェクトを x 内のデータに近似します。

打ち切りデータの論理フラグ。'Censoring' と、入力ベクトル x と同じサイズの論理値のベクトルで構成されるコンマ区切りのペアで指定します。x 内の対応する要素が右側打ち切り観測値である場合、この値は 1 になります。対応する要素が正確な観測値である場合は 0 になります。既定値は 0 のベクトルで、すべての観測値が正確であることを示します。

fitdist は、この打ち切りベクトルのどの NaN 値も無視します。また、xNaN 値または頻度ベクトルにより、fitdist は打ち切りベクトルの対応する値を無視します。

この引数は、distname'BirnbaumSaunders''Burr''Exponential''ExtremeValue''Gamma''InverseGaussian''Kernel''Logistic''Loglogistic''Lognormal''Nakagami''Normal''Rician''tLocationScale' または 'Weibull' である場合のみ有効です。

データ型: logical

観測の頻度。'Frequency' と、入力ベクトル x と同じサイズの非負の整数値のベクトルで構成されるコンマ区切りのペアで指定します。頻度ベクトルの各要素は、x の対応する要素の頻度を指定します。既定値は 1 のベクトルで、x の各値が一度しか現れないことを示します。

fitdist はこの頻度ベクトル内の NaN の値を、近似計算によってすべて無視します。また、xNaN 値または打ち切りベクトルにより、fitdist は頻度ベクトルの対応する値を無視します。

データ型: single | double

反復近似アルゴリズムの制御パラメーター。'Options' と、statset を使用して作成する構造体で構成されるコンマ区切りのペアとして指定します。

データ型: 構造体

二項分布の試行回数。'NTrials' と正の整数値で構成されるコンマ区切りのペアとして指定します。このオプションを使用するには、distname'Binomial' として指定しなければなりません。

データ型: single | double

一般化パレート分布のしきい値パラメーター。'Theta' とスカラー値で構成されるコンマ区切りのペアとして指定します。このオプションを使用するには、distname'GeneralizedPareto' として指定しなければなりません。

データ型: single | double

半正規分布の位置パラメーター。'mu' とスカラー値で構成されるコンマ区切りのペアとして指定します。このオプションを使用するには、distname'HalfNormal' として指定しなければなりません。

データ型: single | double

カーネル平滑化のタイプ。'Kernel' と、以下のいずれかで構成されるコンマ区切りのペアとして指定します。

  • 'normal'

  • 'box'

  • 'triangle'

  • 'epanechnikov'

このオプションを使用するには、distname'Kernel' として指定しなければなりません。

カーネル密度のサポート。'Support''unbounded''positive'、または 2 要素ベクトルから構成されるコンマ区切りのペアとして指定します。

'unbounded'密度は、実数直線全体に拡張できます。
'positive'密度は正の値に制限されます。

または、密度のサポートのために、有限の下限および上限を指定する 2 要素ベクトルを指定できます。

このオプションを使用するには、distname'Kernel' として指定しなければなりません。

データ型: single | double | char | string

カーネル平滑化ウィンドウの帯域幅。'Width' とスカラー値で構成されるコンマ区切りのペアとして指定します。fitdist で使用される既定値は、正規分布の密度を推定するのに最適ですが、複数の最頻値のような特徴量を示すものには、より小さい値を選択してもかまいません。このオプションを使用するには、distname'Kernel' として指定しなければなりません。

データ型: single | double

出力引数

すべて折りたたむ

確率分布。確率分布オブジェクトとして返されます。distname で指定された分布で、返される確率分布オブジェクトのクラス タイプが決まります。

distname で指定されるタイプの確率分布オブジェクト。cell 配列として返されます。

グループ ラベル。文字ベクトルの cell 配列として返されます。

グループ化変数レベル。各グループ化変数に対して 1 つずつの列が含まれている文字ベクトルの cell 配列として返されます。

アルゴリズム

関数 fitdist は、最尤推定法を使用してほとんどの分布を近似します。2 つの例外は、打ち切りされていないデータを含む正規分布と対数正規分布です。

  • 打ち切りされていない正規分布の場合、sigma パラメーターの推定値は、分散の不偏推定の平方根です。

  • 打ち切りされていない対数正規分布の場合、sigma パラメーターの推定値は、データの対数の分散の不偏推定の平方根です。

代替機能

アプリケーション

Distribution Fitter アプリは、ワークスペースからデータをインポートするためのグラフィカル ユーザー インターフェイスを開き、そのデータに確率分布を対話的にあてはめます。その後、分布を確率分布オブジェクトとしてワークスペースに保存できます。Distribution Fitter アプリを開くには、distributionFitter を使用するか、[アプリ] タブの [Distribution Fitter] をクリックします。

参照

[1] Johnson, N. L., S. Kotz, and N. Balakrishnan. Continuous Univariate Distributions. Vol. 1, Hoboken, NJ: Wiley-Interscience, 1993.

[2] Johnson, N. L., S. Kotz, and N. Balakrishnan. Continuous Univariate Distributions. Vol. 2, Hoboken, NJ: Wiley-Interscience, 1994.

[3] Bowman, A. W., and A. Azzalini. Applied Smoothing Techniques for Data Analysis. New York: Oxford University Press, 1997.

R2009a で導入