Main Content

normfit

正規パラメーターの推定

説明

[muHat,sigmaHat] = normfit(x) は、x 内の標本データに対して正規分布の推定パラメーター (平均 muHat と標準偏差 sigmaHat) を返します。muHat は標本平均、sigmaHat は分散の不偏推定量の平方根です。

[muHat,sigmaHat,muCI,sigmaCI] = normfit(x) は、さらに、平均および標準偏差のパラメーター推定に対する 95% 信頼区間をそれぞれ配列 muCI および sigmaCI に返します。

[muHat,sigmaHat,muCI,sigmaCI] = normfit(x,alpha) は、信頼区間の信頼水準が 100(1–alpha)% であることを指定します。

[___] = normfit(x,alpha,censoring) は、x 内の各値を右側打ち切りするかどうかを指定します。右側打ち切りの観測値を 1、完全に観測される観測値を 0 で示す logical ベクトル censoring を使用します。打ち切りを行う場合、muHatsigmaHat は最尤推定量 (MLE) です。

[___] = normfit(x,alpha,censoring,freq) は、観測値の頻度または重みを指定します。

[___] = normfit(x,alpha,censoring,freq,options) は、打ち切りを伴う MLE の計算に使用する反復アルゴリズム normfit の最適化オプションを指定します。options を作成するには、関数 statset を使用します。

alphacensoring および freq について [] を渡すと、既定値を使用できます。

すべて折りたたむ

平均 3 および標準偏差 5 をもつ正規分布から 1000 個の正規乱数を生成します。

rng('default') % For reproducibility
x = normrnd(3,5,[1000,1]);

パラメーター推定と 99% 信頼区間を求めます。

[muHat,sigmaHat,muCI,sigmaCI] = normfit(x,0.01)
muHat = 2.8368
sigmaHat = 4.9948
muCI = 2×1

    2.4292
    3.2445

sigmaCI = 2×1

    4.7218
    5.2989

muHat は標本平均、sigmaHat は分散の不偏推定量の平方根です。muCIsigmaCI にはそれぞれ、平均および標準偏差のパラメーターに対する 99% 信頼区間が格納されます。1 行目は下限、2 行目は上限です。

normfit を使用して、打ち切りがあるデータ セットの MLE を求めます。statsetを使用して、打ち切られたデータの MLE を計算するために normfit で使用する反復アルゴリズムのオプションを指定してから、再度 MLE を求めます。

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

load lightbulb

データの 1 列目には、2 種類の電球の寿命 (時間単位) が含まれています。2 列目には、電球が蛍光灯と白熱灯のどちらであるかを示すバイナリ変数が含まれています。1 は電球が蛍光灯であることを、0 は白熱灯であることを示します。3 列目には打ち切り情報が含まれます。ここで、0 は電球が故障するまで観測されることを示し、1 はアイテム (電球) が打ち切られることを示します。

蛍光灯電球のインデックスを求めます。

idx = find(lightbulb(:,2) == 0);

寿命が正規分布に従うと仮定し、正規分布のパラメーターの MLE を求めます。normfit の 2 番目の入力引数では、信頼水準を指定します。[] を渡して、既定値 0.05 を使用します。3 番目の入力引数では、打ち切り情報を指定します。

censoring = lightbulb(idx,3) == 1;
[muHat1,sigmaHat1] = normfit(lightbulb(idx,1),[],censoring)
muHat1 = 9.4966e+03
sigmaHat1 = 3.0640e+03

正規分布のパラメーターを推定するために関数 normfit が使用する既定のアルゴリズム パラメーターを表示します。

statset('normfit')
ans = struct with fields:
          Display: 'off'
      MaxFunEvals: 200
          MaxIter: 100
           TolBnd: 1.0000e-06
           TolFun: 1.0000e-08
       TolTypeFun: []
             TolX: 1.0000e-08
         TolTypeX: []
          GradObj: []
         Jacobian: []
        DerivStep: []
      FunValCheck: []
           Robust: []
     RobustWgtFun: []
           WgtFun: []
             Tune: []
      UseParallel: []
    UseSubstreams: []
          Streams: {}
        OutputFcn: []

異なる名前を使用してオプションを保存します。結果の表示方法 (Display) と目的関数の終了許容誤差 (TolFun) を変更します。

options = statset('normfit');
options.Display = 'final';
options.TolFun = 1e-10;

または、関数 statset の名前と値のペアの引数を使用してアルゴリズム パラメーターを指定できます。

options = statset('Display','final','TolFun',1e-10);

新しいアルゴリズム パラメーターで MLE を求めます。

[muHat2,sigmaHat2] = normfit(lightbulb(idx,1),[],censoring,[],options)
Successful convergence: Norm of gradient less than OPTIONS.TolFun
muHat2 = 9.4966e+03
sigmaHat2 = 3.0640e+03

normfit は、最後の反復に関するレポートを表示します。

関数 normfit は、打ち切りを行わずに標本平均と分散の不偏推定量の平方根を求めます。標本平均は平均パラメーターの MLE に等しくなりますが、分散の不偏推定量の平方根は標準偏差パラメーターの MLE に等しくなりません。

normfit を使用して正規分布のパラメーターを求め、MLE に変換し、normlike を使用して推定値の負の対数尤度を比較します。

標準正規分布から 100 個の正規乱数を生成します。

rng('default') % For reproducibility
n = 100;
x = normrnd(0,1,[n,1]);

標本平均と分散の不偏推定量の平方根を求めます。

[muHat,sigmaHat] = normfit(x)
muHat = 0.1231
sigmaHat = 1.1624

分散の不偏推定量の平方根を標準偏差パラメーターの MLE に変換します。

sigmaHat_MLE = sqrt((n-1)/n)*sigmaHat
sigmaHat_MLE = 1.1566

n が大きい場合、sigmaHatsigmaHat_MLE の差は無視できます。

または、関数 mle を使用して MLE を求めることができます。

phat = mle(x)
phat = 1×2

    0.1231    1.1566

phat(1)phat(2) はそれぞれ、平均および標準偏差パラメーターの MLE です。

関数 normlike を使用して、MLE の対数尤度 (muHatsigmaHat_MLE) が不偏推定量の対数尤度 (muHatsigmaHat) より大きいことを確認します。

logL = -normlike([muHat,sigmaHat],x)
logL = -156.4424
logL_MLE = -normlike([muHat,sigmaHat_MLE],x)
logL_MLE = -156.4399

入力引数

すべて折りたたむ

ベクトルとして指定される標本データ。

データ型: single | double

信頼区間の有意水準。範囲 (0,1) のスカラーを指定します。信頼水準は 100(1—alpha)% です。alpha は、真の値が信頼区間に含まれない確率です。

例: 0.01

データ型: single | double

x 内の各値の打ち切りのインジケーター。x と同じサイズの logical ベクトルを指定します。右側打ち切りの観測値については 1、完全に観測される観測値については 0 を使用します。

既定は、すべての観測値が完全に観測されることを示す 0 の配列です。

データ型: logical

観測値の頻度または重み。x と同じサイズの非負のベクトルを指定します。通常、入力引数 freq には x 内の対応する要素に対する非負の整数カウントを含めますが、任意の非負値を含めることができます。

打ち切りがあるデータ セットに対する重み付き MLE を取得するには、x 内の観測値の個数に対して正規化した観測値の重みを指定します。

既定は、x の各要素に対して観測値が 1 つずつあることを示す、1 の配列です。

データ型: single | double

最適化オプション。構造体を指定します。options は、打ち切られたデータの MLE を計算するために normfit が使用する反復アルゴリズムの制御パラメーターを決定します。

options を作成するには、関数 statset を使用するか、次の表に記載されているフィールドと値が含まれている構造体配列を作成します。

フィールド名既定値
Display

アルゴリズムで表示される情報量。

  • 'off' — 何の情報も表示しません。

  • 'final' — 最終出力を表示します。

'off'
MaxFunEvals

許容される目的関数評価の最大回数。正の整数を指定します。

200
MaxIter

許容される最大反復回数。正の整数を指定します。

100
TolBnd

標準偏差パラメーターの推定値の下限。正のスカラーを指定します。

平均および標準偏差パラメーターの推定値の範囲はそれぞれ [–Inf,Inf] および [TolBnd,Inf] です。

1e-6
TolFun

目的関数の値の終了許容誤差。正のスカラーを指定します。

1e-8
TolX

パラメーターの終了許容誤差。正のスカラーを指定します。

1e-8

コマンド ウィンドウで「statset('normfit')」と入力して、normfit が構造体 options で受け入れるフィールドの名前と既定値を表示することもできます。

例: statset('Display','final','MaxIter',1000) は、反復アルゴリズムの結果の最終情報を表示し、許容される最大反復回数を 1000 に変更するよう指定します。

データ型: struct

出力引数

すべて折りたたむ

正規分布の平均パラメーターの推定値。スカラーとして返されます。

  • 打ち切りがない場合、muHat は標本平均です。

  • 打ち切りがある場合、muHat は MLE です。重み付き MLE を計算するには、freq を使用して観測値の重みを指定します。

正規分布の標準偏差パラメーターの推定値。スカラーとして返されます。

  • 打ち切りがない場合、sigmaHat は分散の不偏推定量の平方根です。打ち切りがない場合の MLE を計算するには、関数 mle を使用します。

  • 打ち切りがある場合、sigmaHat は MLE です。重み付き MLE を計算するには、freq を使用して観測値の重みを指定します。

正規分布の平均パラメーターの信頼区間。100(1–alpha)% 信頼区間の下限と上限が含まれている 2 行 1 列の列ベクトルとして返されます。

1 行目と 2 行目はそれぞれ、信頼区間の下限と上限に対応します。

正規分布の標準偏差パラメーターの信頼区間。100(1–alpha)% 信頼区間の下限と上限が含まれている 2 行 1 列の列ベクトルとして返されます。

1 行目と 2 行目はそれぞれ、信頼区間の下限と上限に対応します。

アルゴリズム

normfit は、信頼区間を計算するため、打ち切られていないデータについては厳密法を、打ち切られたデータについては Wald 法を使用します。厳密法では、t 分布とカイ二乗分布に基づいて、打ち切られていない標本を正確にカバーします。

代替機能

normfit は正規分布専用の関数です。Statistics and Machine Learning Toolbox™ には、さまざまな確率分布をサポートする汎用関数 mlefitdist および paramci分布フィッター アプリもあります。

  • mle は、さまざまな確率分布のパラメーターについて MLE と信頼区間を返します。確率分布名またはカスタム確率密度関数を指定できます。

  • 関数 fitdist または分布フィッター アプリを使用して分布をデータに当てはめることにより、NormalDistribution 確率分布オブジェクトを作成します。オブジェクト プロパティ mu および sigma にはパラメーター推定が格納されます。パラメーター推定の信頼区間を取得するには、オブジェクトを paramci に渡します。

参照

[1] Evans, M., N. Hastings, and B. Peacock. Statistical Distributions. 2nd ed. Hoboken, NJ: John Wiley & Sons, Inc., 1993.

[2] Lawless, J. F. Statistical Models and Methods for Lifetime Data. Hoboken, NJ: Wiley-Interscience, 1982.

[3] Meeker, W. Q., and L. A. Escobar. Statistical Methods for Reliability Data. Hoboken, NJ: John Wiley & Sons, Inc., 1998.

拡張機能

C/C++ コード生成
MATLAB® Coder™ を使用して C および C++ コードを生成します。

バージョン履歴

R2006a より前に導入