ドキュメンテーション

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

mle

説明

phat = mle(data) は、ベクトル data 内の標本データを使用して、正規分布のパラメーターに対する最尤推定 (MLE) を返します。

phat = mle(data,'distribution',dist) は、dist で指定された分布に対するパラメーター推定を返します。

phat = mle(data,'pdf',pdf,'start',start) は、確率密度関数 pdf で指定されたカスタム分布に対するパラメーター推定を返します。初期パラメーター値 start も指定しなければなりません。

phat = mle(data,'pdf',pdf,'start',start,'cdf',cdf) は、確率密度関数 pdf およびカスタム累積分布関数 cdf で指定されたカスタム分布に対するパラメーター推定を返します。

phat = mle(data,'logpdf',logpdf,'start',start) は、対数確率密度関数 logpdf で指定されたカスタム分布に対するパラメーター推定を返します。初期パラメーター値 start も指定しなければなりません。

phat = mle(data,'logpdf',logpdf,'start',start,'logsf',logsf) は、対数確率密度関数 logpdf およびカスタム対数生存時間関数 logsfで指定されたカスタム分布に対するパラメーター推定を返します。

phat = mle(data,'nloglf',nloglf,'start',start) は、負の対数尤度関数 nloglf で指定されたカスタム分布に対するパラメーター推定を返します。初期パラメーター値 start も指定しなければなりません。

phat = mle(___,Name,Value) は、前の構文の入力引数のいずれかと、名前と値のペアの引数を使用して、オプションを指定します。たとえば、打ち切られたデータ、観測値の頻度、信頼度を指定できます。

[phat,pci] = mle(___) は、パラメーターの 95% の信頼区間も返します。

すべて折りたたむ

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

load carbig

変数 MPG には、さまざまな自動車モデルのガロンあたりの走行マイル数が含まれます。

MPG データのヒストグラムを描画します。

 histogram(MPG)

分布はやや右に歪んでいます。正規分布などの対称分布は適切な近似にならない場合があります。

MPG データのブール型 XII 分布のパラメーターを推定します。

phat = mle(MPG,'distribution','burr')
phat = 1×3

   34.6447    3.7898    3.5722

スケール パラメーター α の最尤推定値は 34.6447 です。ブール型 XII 分布の 2 つの形状パラメーター c および k の推定値は、それぞれ 3.7898 および 3.5722 です。

自由度が 8、非心度パラメーターが 3 の非心カイ二乗分布から、サイズが 1000 の標本データを生成します。

rng default % for reproducibility
x = ncx2rnd(8,3,1000,1);

標本データから非心カイ二乗分布のパラメーターを推定します。これを行うため、入力引数 pdf を使用して非心カイ二乗 pdf をカスタム定義します。

[phat,pci] = mle(x,'pdf',@(x,v,d)ncx2pdf(x,v,d),'start',[1,1])
phat = 1×2

    8.1052    2.6693

pci = 2×2

    7.1121    1.6025
    9.0983    3.7362

自由度の推定値は 8.1052、非心度パラメーターの推定値は 2.6693 です。自由度の 95% の信頼区間は (7.1121,9.0983)、非心度パラメーターは (1.6025,3.7362) です。この信頼区間には、真のパラメーター値 8 および 3 が含まれています。

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

load(fullfile(matlabroot,'examples','stats','readmissiontimes.mat'));

このデータには、100 人の患者の再入院時間を示す ReadmissionTime が含まれています。列ベクトル Censored には各患者の打ち切り情報が含まれ、1 は打ち切られた観測を示し、0 は正確な再入院時間が観測されることを示します。このデータは、シミュレーションされたものです。

カスタム確率密度および累積分布関数を定義します。

custpdf = @(data,lambda) lambda*exp(-lambda*data);
custcdf = @(data,lambda) 1-exp(-lambda*data);

打ち切れらた標本データのカスタム分布のパラメーター lambda を推定します。

phat = mle(ReadmissionTime,'pdf',custpdf,'cdf',custcdf,'start',0.05,'Censoring',Censored)
phat = 0.1096

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

load(fullfile(matlabroot,'examples','stats','readmissiontimes.mat'));

このデータには、100 人の患者の再入院時間を示す ReadmissionTime が含まれています。列ベクトル Censored には各患者の打ち切り情報が含まれ、1 は打ち切られた観測を示し、0 は正確な再入院時間が観測されることを示します。このデータは、シミュレーションされたものです。

カスタム対数確率密度および生存時間関数を定義します。

custlogpdf = @(data,lambda,k) log(k)-k*log(lambda)+(k-1)*log(data)-(data/lambda).^k;
custlogsf = @(data,lambda,k) -(data/lambda).^k;

打ち切れらた標本データのカスタム分布のパラメーター lambda および k を推定します。

phat = mle(ReadmissionTime,'logpdf',custlogpdf,'logsf',custlogsf,...
    'start',[1,0.75],'Censoring',Censored)
phat = 1×2

    9.2090    1.4223

カスタム定義の分布のスケール パラメーターと形状パラメーターはそれぞれ 9.2090 と 1.4223 です。

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

load(fullfile(matlabroot,'examples','stats','readmissiontimes.mat'));

このデータには、100 人の患者の再入院時間を示す ReadmissionTime が含まれています。このデータは、シミュレーションされたものです。

負の対数尤度関数を定義します。

custnloglf = @(lambda,data,cens,freq) - length(data)*log(lambda) + nansum(lambda*data);

定義された分布のパラメーターを推定します。

phat = mle(ReadmissionTime,'nloglf',custnloglf,'start',0.05)
phat = 0.1462

試行回数 n = 20 および成功確率 p = 0.75 の二項分布から 100 個のランダムな観測値を生成します。

data = binornd(20,0.75,100,1);

シミュレーションを実行した標本データを使用して成功確率と 95% の信頼限界を推定します。

[phat,pci] = mle(data,'distribution','binomial','alpha',.05,'ntrials',20)
phat = 0.7615
pci = 2×1

    0.7422
    0.7800

成功確率の推定値は 0.7615 であり、95% 信頼区間の下限と上限は 0.7422 と 0.78 です。この区間は、データのシミュレーションの実行に使用される真の値に対応します。

自由度が 10、非心度パラメーターが 5 の非心カイ二乗分布から、サイズが 1000 の標本データを生成します。

rng default % for reproducibility
x = ncx2rnd(10,5,1000,1);

非心度パラメーターは 5 に固定されるとします。標本データから非心カイ二乗分布の自由度を推定します。これを行うため、入力引数 pdf を使用して非心カイ二乗 pdf をカスタム定義します。

[phat,pci] = mle(x,'pdf',@(x,v,d)ncx2pdf(x,v,5),'start',1)
phat = 9.9307
pci = 2×1

    9.5626
   10.2989

非心度パラメーターの推定値は 9.9307、95% 信頼区間は 9.5626 と 10.2989 です。この信頼区間には、真のパラメーター値 10 が含まれています。

非心度パラメーターが 8、スケール パラメーターが 5 のライス分布から、サイズが 1000 の標本データを生成します。まず、ライス分布を作成します。

r = makedist('Rician','s',8,'sigma',5);

次に、作成した分布から標本データを生成します。

rng default % For reproducibility
x = random(r,1000,1);

スケール パラメーターが既知であると仮定して、非心度パラメーターを標本データから推定します。mle を使用してこれを行うには、ライス確率密度関数をカスタム定義しなければなりません。

[phat,pci] = mle(x,'pdf',@(x,s,sigma) pdf('rician',x,s,5),'start',10)
phat = 7.8953
pci = 2×1

    7.5405
    8.2501

非心度パラメーターの推定値は 7.8953、95% 信頼区間は 7.5404 と 8.2501 です。この信頼区間には、真のパラメーター値 8 が含まれています。

データのスケールに適合させるためスケール パラメーターをカイ二乗分布に追加し、近似させます。まず、自由度が 5 のカイ二乗分布からサイズが 1000 の標本データを生成し、100 という係数でスケーリングします。

rng default % For reproducibility
x = 100*chi2rnd(5,1000,1);

自由度とスケーリング係数を推定します。これを行うため、入力引数 pdf を使用してカイ二乗確率密度関数をカスタム定義します。密度関数では、データを s でスケーリングするために係数 1/s が必要です。

[phat,pci] = mle(x,'pdf',@(x,v,s)chi2pdf(x/s,v)/s,'start',[1,200])
phat = 1×2

    5.1079   99.1681

pci = 2×2

    4.6862   90.1215
    5.5297  108.2146

自由度の推定値は 5.1079、スケールの推定値は 99.1681 です。自由度の 95% の信頼区間は (4.6862,5.5279)、スケール パラメーターは (90.1215,108.2146) です。この信頼区間には、真のパラメーター値 5 および 100 が含まれています。

入力引数

すべて折りたたむ

mle で分布パラメーターの推定に使用する標本データ。ベクトルとして指定します。

データ型: single | double

パラメーターを推定する分布タイプ。次のいずれかとして指定します。

dist説明パラメーター 1パラメーター 2パラメーター 3パラメーター 4
'Bernoulli'ベルヌーイ分布p: それぞれの試行での成功の確率
'Beta'ベータ分布a: 1 番目の形状パラメーターb: 2 番目の形状パラメーター
'bino' または 'Binomial'二項分布n: 試行回数p: それぞれの試行での成功の確率
'BirnbaumSaunders'バーンバウム・サンダース分布β: スケール パラメーターγ: 形状パラメーター
'Burr'ブール型 XII 分布α: スケール パラメーターc: 1 番目の形状パラメーターk: 2 番目の形状パラメーター
'Discrete Uniform' または 'unid'一様分布 (離散)n: 最大観測可能値
'exp' または 'Exponential'指数分布μ: 平均値
'ev' または 'Extreme Value'極値分布μ: 位置パラメーターσ: スケール パラメーター
'gam' または 'Gamma'ガンマ分布a: 形状パラメーターb: スケール パラメーター
'gev' または 'Generalized Extreme Value'一般化極値分布k: 形状パラメーターσ: スケール パラメーターμ: 位置パラメーター
'gp' または 'Generalized Pareto'一般化パレート分布k: テール インデックス (形状) パラメーターσ: スケール パラメーターθ: しきい値 (位置) パラメーター
'geo' または 'Geometric'幾何分布p: 確率パラメーター
'hn' または 'Half Normal'半正規分布μ: 位置パラメーターσ: スケール パラメーター
'InverseGaussian'逆ガウス分布μ: スケール パラメーターλ: 形状パラメーター
'Logistic'ロジスティック分布μ: 平均値σ: スケール パラメーター
'LogLogistic'対数ロジスティック分布μ: 対数値の平均σ: 対数値のスケール パラメーター
'logn' または 'LogNormal'対数正規分布μ: 対数値の平均σ: 対数値の標準偏差
'Nakagami'仲上分布μ: 形状パラメーターω: スケール パラメーター
'nbin' または 'Negative Binomial'負の二項分布r: 成功の回数p: 1 回の試行での成功の確率
'norm' または 'Normal'正規分布μ: 平均値σ: 標準偏差
'poiss' または 'Poisson'ポアソン分布λ: 平均値
'rayl' または 'Rayleigh'レイリー分布b: スケール パラメーター
'Rician'ライス分布s: 非心度パラメーターσ: スケール パラメーター
'Stable'安定分布α: 1 番目の形状パラメーターβ: 2 番目の形状パラメーターγ: スケール パラメーターδ: 位置パラメーター
'tLocationScale't 位置-スケール分布μ: 位置パラメーターσ: スケール パラメーターν: 形状パラメーター
'unif' または 'Uniform'一様分布 (連続)a: 下限端点 (最小)b: 上限端点 (最大)
'wbl' または 'Weibull'ワイブル分布a: スケール パラメーターb: 形状パラメーター

例: 'rician'

カスタム確率分布関数。@ を使用して作成された関数ハンドルとして指定します。

このカスタム関数は、ベクトル data と 1 つまたは複数の個別の分布パラメーターを入力パラメーターとして受け入れ、確率密度値のベクトルを返します。

たとえば、カスタム確率密度関数の名前が newpdf の場合、mle で次のように関数ハンドルを指定することができます。

例: @newpdf

データ型: function_handle

カスタム累積分布関数。@ を使用して作成された関数ハンドルとして指定します。

このカスタム関数は、ベクトル data と 1 つまたは複数の個別の分布パラメーターを入力パラメーターとして受け入れ、累積確率値のベクトルを返します。

データが打ち切られ、'Censoring' 名前と値のペア引数を使用している場合は、cdfpdf と共に定義しなければなりません。'Censoring' が存在しない場合、pdf を使用しているときに cdf を指定する必要はありません。

たとえば、カスタム累積分布関数の名前が newcdf の場合、mle で次のように関数ハンドルを指定することができます。

例: @newcdf

データ型: function_handle

カスタム対数確率密度関数。@ を使用して作成された関数ハンドルとして指定します。

このカスタム関数は、ベクトル data と 1 つまたは複数の個別の分布パラメーターを入力パラメーターとして受け入れ、対数確率値のベクトルを返します。

たとえば、カスタム対数確率密度関数の名前が customlogpdf の場合、mle で次のように関数ハンドルを指定することができます。

例: @customlogpdf

データ型: function_handle

カスタム対数生存時間関数@ を使用して作成された関数ハンドルとして指定します。

このカスタム関数は、ベクトル data と 1 つまたは複数の個別の分布パラメーターを入力パラメーターとして受け入れ、対数生存確率値のベクトルを返します。

データが打ち切られ、'Censoring' 名前と値のペア引数を使用している場合は、logsflogpdf と共に定義しなければなりません。'Censoring' が存在しない場合、logpdf を使用しているときに logsf を指定する必要はありません。

たとえば、カスタム対数生存時間関数の名前が logsurvival の場合、mle で次のように関数ハンドルを指定することができます。

例: @logsurvival

データ型: function_handle

カスタムの負の対数尤度関数。@ を使用して作成された関数ハンドルとして指定します。

このカスタム関数は、次の入力引数を受け入れます。

params分布パラメーター値のベクトル。mlestart の要素の数からパラメーターの数を検出します。
dataデータのベクトル。
cens打ち切り値のブール ベクトル。
freq整数のデータの頻度のベクトル。

nloglf は、'Censoring' または 'Frequency' の名前と値のペア引数を使用しなくても、4 つの引数すべてを受け入れなければなりません。'nloglf' を作成して、その場合の引数 censfreq を無視できます。

nloglf はスカラーの負の対数尤度値を返し、オプションで負の対数尤度勾配ベクトル ('Options''GradObj' フィールドを参照) を返します。

カスタムの負の対数尤度関数の名前が negloglik の場合、mle で次のように関数ハンドルを指定することができます。

例: @negloglik

データ型: function_handle

カスタム関数の初期パラメーター値。スカラー値またはスカラー値のベクトルとして指定します。

start を使用するのは、カスタム分布を近似するとき、つまり pdfcdflogpdflogsf または nloglf の入力引数を使用している場合です。

例: 0.05

例: [100,2]

データ型: single | double

名前と値のペアの引数

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

例: 'Censoring',Cens,'Alpha',0.01,'Options',Opt は、mle が配列 Cens で指定された打ち切りデータの分布に対するパラメーターを推定して、パラメーター推定の 99% の信頼限界を計算し、構造体 Opt で指定されたアルゴリズム制御パラメーターを使用することを指定します。

打ち切りのインジケーター。'Censoring' と、data と同じサイズの論理値配列で構成されるコンマ区切りのペアで指定します。右側打ち切りの観測値の場合は 1、完全に観測された観測値の場合は 0 を使用します。既定の設定では、すべての観測値が完全に観測されます。

たとえば、打ち切りデータ情報が Censored という名前のバイナリ配列内にある場合、次のように打ち切りデータを指定することができます。

例: 'Censoring',Censored

mle は、以下の分布について打ち切りをサポートします。

バーンバウム・サンダース
ブール
指数
極値
ガンマ
逆ガウス
カーネル
対数ロジスティック
ロジスティック
対数正規
仲上
正規
ライス
t 位置-スケール
ワイブル

データ型: logical

観測の頻度。'Frequency' と、非負の整数カウントを含む data と同じサイズの配列で構成されるコンマ区切りのペアで指定します。既定の設定では、data の 1 つの要素に対して 1 つの観測値です。

たとえば、観測頻度が Freq という名前の配列に格納される場合、次のように頻度を指定できます。

例: 'Frequency',Freq

データ型: single | double

推定パラメーター pci の信頼区間の有意水準。'Alpha' と範囲 (0,1) 内のスカラー値から構成されるコンマ区切りのペアとして指定します。pci の信頼度は 100(1-Alpha)% です。既定の設定では、95% の信頼区間に対して 0.05 です。

たとえば、99% の信頼限界の場合は、次のように信頼度を指定できます。

例: 'Alpha',0.01

データ型: single | double

data の対応する要素の試行回数。'Ntrials' と、data と同じサイズのスカラーまたはベクトルで構成されるコンマ区切りのペアで指定します。

二項分布にのみ適用されます。

例: 'Ntrials',total

データ型: single | double

半正規分布の位置パラメーター。'mu' とスカラー値で構成されるコンマ区切りのペアとして指定します。

半正規分布のみに適用されます。

例: 'mu',1

データ型: single | double

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

すべての分布に適用可能ではありません。

'Options' 名前と値のペア引数を使用して、カスタム分布を近似するときに最尤最適化の詳細を制御します。パラメーター名と既定値には、「statset('mlecustom')」と入力します。新しい名前で設定したオプションを名前と値のペアの引数で使用できます。mle は、カスタム分布の近似について次の statset のパラメーターを解釈します。

パラメーター
'GradObj'

既定値は 'off' です。

2 番目の出力として負の対数尤度の勾配ベクトルを返すための、nloglf 入力引数で与えられたカスタム関数を fmincon が予測できるかどうかを示す、'on''off' の文字列です。

mle は、fminsearch を使用している場合、'GradObj' を無視します。

'DerivStep'

既定値は eps^(1/3) です。

start と同じサイズのスカラーまたはベクトルとして指定される相対差は、fmincon を使用する場合の有限差分による導関数近似で使われ、'GradObj''off'になります。

mle は、fminsearch を使用している場合、'DerivStep' を無視します。

'FunValCheck'

既定の設定は 'on' です。

mle が妥当性に対するカスタムな分布関数で出力された値をチェックするかどうかを示す 'on''off' の文字列です。

適切な開始点を選択しないと、適切なエラー チェックなしで記述されている場合、これらの関数は、NaN、無限値または範囲外の値を返すことがあります。

'TolBnd'

既定値は 1e-6 です。

fmincon を使用する場合の上限と下限のオフセットです。

mle は、厳密な不等式 (すなわち、開境界) として上限と下限を扱います。fmincon では、TolBnd で指定した上限と下限から挿入される閉じた境界を作成することにより近似されます。

例: 'Options',statset('mlecustom')

データ型: 構造体

分布パラメーターの下限。'Lowerbound' と、start と同じサイズのベクトルで構成されるコンマ区切りのペアで指定します。

この名前と値のペア引数は、pdfcdflogpdflogcdf または nloglf 入力引数を使用している場合にのみ有効です。

例: 'Lowerbound',0

データ型: single | double

分布パラメーターの上限。'Upperbound' と、start と同じサイズのベクトルで構成されるコンマ区切りのペアで指定します。

この名前と値のペア引数は、pdfcdflogpdflogsf または nloglf 入力引数を使用している場合にのみ有効です。

例: 'Upperbound',1

データ型: single | double

mle が尤度を最大化する際に使用する最適化関数。'Optimfun' と、'fminsearch' または 'fmincon' のいずれかで構成されるコンマ区切りのペアとして指定します。

既定の設定は 'fminsearch' です。

Optimization Toolbox™ が利用可能な場合のみ 'fmincon' を指定できます。

'Optimfun' 名前と値のペア引数は、カスタム分布を近似するとき、つまり pdfcdflogpdflogsf または nloglf 入力引数を使用している場合のみ有効です。

例: 'Optimfun','fmincon'

出力引数

すべて折りたたむ

パラメーター推定。スカラー値または行ベクトルとして返されます。

パラメーター推定の信頼区間。パラメーターの数、つまり phat のサイズに応じて列ベクトルまたは行列として返されます。

pci は 2 行 k 列の行列であり、k は mle で推定するパラメーターの数です。pci の 1 番目の行と 2 番目の行はそれぞれ、信頼限界の上限と下限を示します。

詳細

すべて折りたたむ

生存時間関数

生存時間関数とは、時間の関数としての生存の確率です。これは生存時間関数とも呼ばれます。この関数は、個体の生存時間が特定の値を超える確率を示します。累積分布関数 F(t) は、生存時間が特定の時点以下である確率で、連続分布の生存時間関数 S(t) は、累積分布関数の補数です。 S(t) = 1 – F(t).

ヒント

分布関数を指定すると、mle で反復最大化アルゴリズムを使用してパラメーター推定を計算します。一部のモデルやデータにおいて開始点の選択が適切でないと、mle は大域的最大値ではなく局所的最適値に収束したり、収束がすべて失敗する可能性があります。対数尤度が大域的最大値近くで適合する場合であっても、多くの場合、アルゴリズムの収束には開始点の選択が重要です。特に、初期パラメーター値が MLE から離れている場合、分布関数のアンダーフローによって対数尤度が無制限になってしまうことがあります。

R2006a より前に導入