ドキュメンテーション

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

mlecov

最尤推定量の漸近共分散

説明

acov = mlecov(params,data,'pdf',pdf) は、カスタム確率密度関数 pdf で指定された分布に対して、パラメーターの最尤推定量の漸近共分散行列の近似を返します。

mlecov は、観測された data から、最尤推定 params での対数尤度のヘッシアンへの有限差分近似を計算し、そのヘッセ行列の負の逆数を返します。

acov = mlecov(params,data,'pdf',pdf,'cdf',cdf) は、カスタムな確率密度関数 pdf および累積分布関数 cdf によって指定された分布について acov を返します。

acov = mlecov(params,data,'logpdf',logpdf) は、カスタムな対数確率密度関数 logpdf によって指定された分布について acov を返します。

acov = mlecov(params,data,'logpdf',logpdf,'logsf',logsf) は、カスタムな対数確率密度関数 logpdf およびカスタムな対数生存時間関数 logsf によって指定された分布について acov を返します。

acov = mlecov(params,data,'nloglf',nloglf) は、カスタムな負の対数尤度関数 nloglf によって指定された分布について acov を返します。

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

すべて折りたたむ

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

load carbig

ベクトル Weight には 406 台の自動車の重量が示されます。

MATLAB® エディターで、対数正規分布の確率密度関数 (pdf) を返す関数を作成します。現在の作業フォルダーにファイルを lognormpdf.m として保存します。

function newpdf = lognormpdf(data,mu,sigma)
newpdf = exp((-(log(data)-mu).^2)/(2*sigma^2))./(data*sigma*sqrt(2*pi));

カスタム定義の分布のパラメーター musigma を推定します。

phat = mle(Weight,'pdf',@lognormpdf,'start',[4.5 0.3])
phat =

    7.9600    0.2804

パラメーター推定の近似共分散行列を計算します。

acov = mlecov(phat,Weight,'pdf',@lognormpdf)
acov =

   1.0e-03 *

    0.1937   -0.0000
   -0.0000    0.0968

推定値の標準誤差を推定します。

se = sqrt(diag(acov))
se =

    0.0139
    0.0098

mu と sigma の推定値の標準誤差はそれぞれ 0.0139 と 0.0098 です。

MATLAB エディターで、ベータ分布の対数確率密度関数を返す関数を作成します。現在の作業フォルダーにファイルを betalogpdf.m として保存します。

function logpdf = betalogpdf(x,a,b)
logpdf = (a-1)*log(x)+(b-1)*log(1-x)-betaln(a,b);

パラメーター 1.23 および 3.45 をもつベータ分布から標本データを生成し、シミュレーションを実行したデータを使用してパラメーターを推定します。

rng('default')
x = betarnd(1.23,3.45,25,1);
phat = mle(x,'dist','beta')
phat =

    1.1213    2.7182

パラメーター推定の近似共分散行列を計算します。

acov = mlecov(phat,x,'logpdf',@betalogpdf)
acov =

    0.0810    0.1646
    0.1646    0.6074

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

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 です。

パラメーター推定の近似共分散行列を計算します。

acov = mlecov(phat,ReadmissionTime,...
'logpdf',custlogpdf,'logsf',custlogsf,'Censoring',Censored)
acov = 2×2

    0.5653    0.0102
    0.0102    0.0163

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

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

パラメーター推定の分散を計算します。

acov = mlecov(phat,ReadmissionTime,'nloglf',custnloglf)
acov = 2.1374e-04

標準誤差を計算します。

sqrt(acov)
ans = 0.0146

入力引数

すべて折りたたむ

パラメーター推定。スカラー値またはスカラー値のベクトルとして指定します。これらのパラメーター推定は最尤推定でなければなりません。たとえば、mle で返されるパラメーター推定を指定できます。

データ型: single | double

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

データ型: single | double

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

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

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

例: @newpdf

データ型: function_handle

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

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

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

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

例: @newcdf

データ型: function_handle

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

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

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

例: @customlogpdf

データ型: function_handle

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

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

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

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

例: @logsurvival

データ型: function_handle

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

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

params分布パラメーター値のベクトル
dataデータのベクトル
cens打ち切り値のブール ベクトル
freq整数のデータの頻度のベクトル

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

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

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

例: @negloglik

データ型: function_handle

名前と値のペアの引数

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

例: 'Censoring',cens,'Options',opt は、mlecov がベクトル cens から打ち切りデータ情報を読み取って、新しいオプション構造体 opt に従って実行することを指定します。

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

打ち切りデータの場合は、cdfpdf または logsflogpdf を指定するか、打ち切りで考慮する nloglf を定義しなければなりません。

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

例: 'Censoring',Censored

データ型: logical

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

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

例: 'Frequency',Freq

データ型: single | double

有限差分ヘッセ計算の数値オプション。'Options' と、statset で返される構造体で構成されるコンマ区切りのペアとして指定します。

新しい名前で設定したオプションを名前と値のペア引数で使用できます。適用可能な statset パラメーターは以下のとおりです。

パラメーター
'GradObj'

既定値は 'off' です。

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

'DerivStep'

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

ヘッセ計算の有限差分で使われる相対ステップ サイズ。スカラーまたは params と同じサイズです。'GradObj''on' の場合、既定値よりも小さい値が適切です。

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

データ型: 構造体

出力引数

すべて折りたたむ

漸近共分散行列の近似。p 行 p 列の行列として返されます。ここで p は params のパラメーターの数です。

詳細

すべて折りたたむ

生存時間関数

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

参考

R2006a より前に導入