fitdist
データへの確率分布オブジェクトの近似
構文
説明
は、1 つ以上の名前と値のペア引数で指定された追加オプションを使用して、確率分布オブジェクトを作成します。たとえば、打ち切りデータを示すか、反復近似アルゴリズムの制御パラメーターを指定できます。pd
= fitdist(x
,distname
,Name,Value
)
例
データへの正規分布の当てはめ
正規分布を標本データに当てはめ、ヒストグラムおよび分位数-分位数プロットを使用して、この当てはめを検証します。
データ ファイル patients.mat
から患者の体重を読み込みます。
load patients
x = Weight;
正規分布をデータに近似することにより、正規分布オブジェクトを作成します。
pd = fitdist(x,'Normal')
pd = NormalDistribution Normal distribution mu = 154 [148.728, 159.272] sigma = 26.5714 [23.3299, 30.8674]
この分布オブジェクト表示には、パラメーターの平均 (mu
)、標準偏差 (sigma
)、および 95% 信頼区間に対するパラメーター推定が含まれます。
pd
のオブジェクト関数を使用して、分布の評価と乱数の生成を実行できます。サポートされるオブジェクト関数を表示します。
methods(pd)
Methods for class prob.NormalDistribution: cdf gather icdf iqr mean median negloglik paramci pdf plot proflik random std truncate var
たとえば、関数 paramci
を使用して、95% 信頼区間を取得します。
ci95 = paramci(pd)
ci95 = 2×2
148.7277 23.3299
159.2723 30.8674
有意水準 (Alpha
) を指定して、異なる信頼水準の信頼区間を取得します。99% の信頼区間を計算します。
ci99 = paramci(pd,'Alpha',.01)
ci99 = 2×2
147.0213 22.4257
160.9787 32.4182
分布の確率密度関数の値を評価して、プロットします。
x_values = 50:1:250; y = pdf(pd,x_values); plot(x_values,y)
関数 histfit
を使用して、正規分布当てはめによるヒストグラムを作成します。histfit
は、fitdist
を使用して分布をデータに当てはめます。
histfit(x)
ヒストグラムは、データに 2 つの最頻値があることと、正規分布当てはめの最頻値がこの 2 つの最頻値の間にあることを示しています。
qqplot
を使用して、当てはめた分布の理論的な分位数値に対する標本データ x
の分位数の分位数-分位数プロットを作成します。
qqplot(x,pd)
プロットでは直線になっていないので、データは正規分布に従わないことがわかります。
データへのカーネル分布の当てはめ
データ ファイル patients.mat
から患者の体重を読み込みます。
load patients
x = 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)
正規分布をグループ化されたデータに近似する
データ ファイル patients.mat
から患者の体重および性別を読み込みます。
load patients
x = Weight;
正規分布をデータに近似することにより、患者の性別でグループ化された、正規分布オブジェクトを作成します。
[pdca,gn,gl] = fitdist(x,'Normal','By',Gender)
pdca=1×2 cell array
{1x1 prob.NormalDistribution} {1x1 prob.NormalDistribution}
gn = 2x1 cell
{'Male' }
{'Female'}
gl = 2x1 cell
{'Male' }
{'Female'}
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 = 180.532 [177.833, 183.231] sigma = 9.19322 [7.63933, 11.5466]
male = pdca{2} % Distribution for males
male = NormalDistribution Normal distribution mu = 130.472 [128.183, 132.76] sigma = 8.30339 [6.96947, 10.2736]
分布ごとに確率密度関数を計算します。
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
カーネル分布をグループ化されたデータに当てはめる
データ ファイル patients.mat
から患者の体重および性別を読み込みます。
load patients
x = Weight;
カーネル分布をデータに近似することにより、患者の性別でグループ化された、カーネル分布オブジェクトを作成します。三角カーネル関数を使用します。
[pdca,gn,gl] = fitdist(x,'Kernel','By',Gender,'Kernel','triangle');
cell 配列 pdca
の各分布を表示して、各性別のカーネル分布を確認します。
female = pdca{1} % Distribution for females
female = KernelDistribution Kernel = triangle Bandwidth = 5.08961 Support = unbounded
male = pdca{2} % Distribution for males
male = KernelDistribution Kernel = triangle Bandwidth = 4.25894 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
入力引数
x
— 入力データ
列ベクトル
列ベクトルとして指定される入力データ。fitdist
は x
内の NaN
値を無視します。また、打ち切りベクトルまたは頻度ベクトルに NaN
値が含まれている場合、fitdist
は x
内の対応する値を無視します。
データ型: double
distname
— 分布名
文字ベクトル | string スカラー
分布名。以下のいずれかの文字ベクトルまたは string スカラーを指定します。distname
で指定された分布により、返される確率分布オブジェクトのタイプが決まります。
groupvar
— グループ化変数
categorical 配列 | logical ベクトルまたは数値ベクトル | 文字配列 | string 配列 | 文字ベクトルの cell 配列
グループ化変数。categorical 配列、logical ベクトル、数値ベクトル、文字配列、string 配列、または文字ベクトルの cell 配列を指定します。グループ化変数内の各一意の値が 1 つのグループを定義します。
Gender
が文字ベクトルの cell 配列であり、'Male'
および 'Female'
という値が格納されている場合、Gender
をグループ化変数として使用すると、性別で分布をデータに当てはめることができます。
複数のグループ化変数を使用するには、グループ化変数の cell 配列を指定します。観測値は、指定されたすべてのグループ化変数の共通の値をもつ場合、同じグループに配置されます。
たとえば、Smoker
は、非喫煙者の値が 0
、喫煙者の値が 1
の logical ベクトルである場合、{Gender,Smoker}
という cell 配列を指定すると、観測値は次の 4 つのグループに分割されます。Male Smoker、Male Nonsmoker、Female Smoker および Female Nonsmoker。
例: {Gender,Smoker}
データ型: categorical
| logical
| single
| double
| char
| string
| cell
名前と値の引数
オプションの引数のペアを Name1=Value1,...,NameN=ValueN
として指定します。ここで Name
は引数名、Value
は対応する値です。名前と値の引数は他の引数の後に指定しなければなりませんが、ペアの順序は重要ではありません。
R2021a より前では、名前と値をそれぞれコンマを使って区切り、Name
を引用符で囲みます。
例: fitdist(x,'Kernel','Kernel','triangle')
は、三角カーネル関数を使用してカーネル分布オブジェクトを x
内のデータに近似します。
Censoring
— 打ち切りデータの論理フラグ
0
(既定値) | 論理値のベクトル
打ち切りデータの logical フラグ。入力ベクトル x
と同じサイズの logical 値のベクトルで指定します。x
内の対応する要素が右側打ち切り観測値である場合、この値は 1
になります。対応する要素が正確な観測値である場合は 0
になります。既定値は 0
のベクトルで、すべての観測値が正確であることを示します。
fitdist
は、この打ち切りベクトルのどの NaN
値も無視します。また、x
または頻度ベクトルに NaN
値が含まれている場合、fitdist
は打ち切りベクトル内の対応する値を無視します。
この引数は、distname
が 'BirnbaumSaunders'
、'Burr'
、'Exponential'
、'ExtremeValue'
、'Gamma'
、'InverseGaussian'
、'Kernel'
、'Logistic'
、'Loglogistic'
、'Lognormal'
、'Nakagami'
、'Normal'
、'Rician'
、'tLocationScale'
または 'Weibull'
である場合のみ有効です。
データ型: logical
Frequency
— 観測頻度
1
(既定値) | 非負の整数値のベクトル
観測の頻度。入力ベクトル x
と同じサイズである非負の整数値のベクトルで指定します。頻度ベクトルの各要素は、x
の対応する要素の頻度を指定します。既定値は 1
のベクトルで、x
の各値が一度しか現れないことを示します。
fitdist
は、この頻度ベクトルの NaN
値をすべて無視します。また、x
または打ち切りベクトルに NaN
値が含まれている場合、fitdist
は頻度ベクトル内の対応する値を無視します。
データ型: single
| double
Options
— 制御パラメーター
構造体
反復近似アルゴリズムの制御パラメーター。statset
を使用して作成する構造体として指定します。
データ型: struct
NTrials
— 二項分布の試行回数
1 (既定値) | 正の整数値
二項分布の試行回数。正の整数値として指定します。
この引数は、distname
が 'Binomial'
である場合 (二項分布) のみ有効です。
例: 'Ntrials',10
データ型: single
| double
Kernel
— カーネル分布のカーネル平滑化タイプ
'normal'
(既定値) | 'box'
| 'triangle'
| 'epanechnikov'
カーネル分布のカーネル平滑化タイプ。次のいずれかを指定します。
'normal'
'box'
'triangle'
'epanechnikov'
このオプションを使用するには、distname
を 'Kernel'
として指定しなければなりません。
Support
— カーネル分布のカーネル密度サポート
'unbounded'
(既定値) | 'positive'
| 2 要素ベクトル
カーネル分布のカーネル密度サポート。'unbounded'
、'positive'
、または 2 要素ベクトルとして指定します。
値 | 説明 |
---|---|
'unbounded' | 密度は、実数直線全体に拡張できます。 |
'positive' | 密度は正の値に制限されます。 |
または、密度のサポートのために、有限の下限および上限を指定する 2 要素ベクトルを指定できます。
このオプションを使用するには、distname
を 'Kernel'
として指定しなければなりません。
データ型: single
| double
| char
| string
Width
— カーネル分布のカーネル平滑化ウィンドウの帯域幅
スカラー値
カーネル分布のカーネル平滑化ウィンドウの帯域幅。スカラー値を指定します。fitdist
で使用される既定値は、正規分布の密度を推定するのに最適ですが、複数の最頻値のような特徴量を示すものには、より小さい値を選択してもかまいません。このオプションを使用するには、distname
を 'Kernel'
として指定しなければなりません。
データ型: single
| double
出力引数
pd
— 確率分布
確率分布オブジェクト
確率分布。確率分布オブジェクトとして返されます。distname
で指定された分布で、返される確率分布オブジェクトのクラス タイプが決まります。distname
値および対応する確率分布オブジェクトのリストについては、distname
を参照してください。
pdca
— 確率分布オブジェクト
cell 配列
distname
で指定されるタイプの確率分布オブジェクト。cell 配列として返されます。distname
値および対応する確率分布オブジェクトのリストについては、distname
を参照してください。
gn
— グループ ラベル
文字ベクトルの cell 配列
グループ ラベル。文字ベクトルの cell 配列として返されます。
gl
— グループ化変数レベル
文字ベクトルの cell 配列
グループ化変数レベル。各グループ化変数に対して 1 つずつの列が含まれている文字ベクトルの cell 配列として返されます。
アルゴリズム
関数 fitdist
は、最尤推定法を使用してほとんどの分布を近似します。2 つの例外は、打ち切りされていないデータを含む正規分布と対数正規分布です。
打ち切りされていない正規分布の場合、sigma パラメーターの推定値は、分散の不偏推定の平方根です。
打ち切りされていない対数正規分布の場合、sigma パラメーターの推定値は、データの対数の分散の不偏推定の平方根です。
代替機能
分布フィッター アプリは、ワークスペースからデータをインポートするためのグラフィカル ユーザー インターフェイスを開き、そのデータに確率分布を対話的に当てはめます。その後、分布を確率分布オブジェクトとしてワークスペースに保存できます。分布フィッター アプリを開くには、
distributionFitter
を使用するか、[アプリ] タブの [分布フィッター] をクリックします。分布を左側打ち切りデータ、二重打ち切りデータ、または区間打ち切りデータに当てはめるため、
mle
を使用します。関数mle
を使用して最尤推定値を確認し、関数makedist
を使用して確率分布オブジェクトを作成できます。例については、二重打ち切りデータの MLE の計算を参照してください。
参照
[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.
拡張機能
C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。
使用上の注意事項および制限事項:
以下の構文がサポートされます。
コード生成では、グループ化変数pd
= fitdist(x
,distname
)pd
= fitdist(x
,distname
,Name,Value
)'By',groupvar
と関連する出力引数pdca
、gn
、gl
を含む構文がサポートされません。fitdist
は、ベータ分布、指数分布、極値分布、対数正規分布、正規分布およびワイブル分布のコード生成をサポートします。distname
の値は'Beta'
、'Exponential'
、'ExtremeValue'
、'Lognormal'
、'Normal'
または'Weibull'
が可能です。distname
の値はコンパイル時の定数でなければなりません。
x
、'Censoring'
および'Frequency'
の値にNaN
の値を含めてはなりません。コード生成はベータ分布の
'Frequency'
の値を無視します。必要な度数がx
の値に設定されるように、'Frequency'
の値を指定せずに、重複する値を手動でx
に追加します。コード生成では次の入力引数がサポートされません。
groupvar
、NTrials
、Theta
、mu
、Kernel
、Support
およびWidth
。名前と値のペアの引数に含まれる名前はコンパイル時の定数でなければなりません。
pd
の次のオブジェクト関数はコード生成をサポートします。cdf
、icdf
、iqr
、mean
、median
、pdf
、std
、truncate
およびvar
。
コード生成の詳細については、コード生成の紹介および確率分布オブジェクトのコードの生成を参照してください。
GPU 配列
Parallel Computing Toolbox™ を使用してグラフィックス処理装置 (GPU) 上で実行することにより、コードを高速化します。
使用上の注意事項および制限事項:
入力引数
distname
は'Rician'
または'Stable'
として指定できません。
詳細は、GPU での MATLAB 関数の実行 (Parallel Computing Toolbox)を参照してください。
バージョン履歴
R2009a で導入
MATLAB コマンド
次の MATLAB コマンドに対応するリンクがクリックされました。
コマンドを MATLAB コマンド ウィンドウに入力して実行してください。Web ブラウザーは MATLAB コマンドをサポートしていません。
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)