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

負の対数尤度関数

Statistics and Machine Learning Toolbox™ の分布にサポートされている負の対数尤度関数は、すべて explike のように like で終わります。各関数は、分布のパラメーター族を表します。入力引数は、データが従う分布族の特定のメンバーを指定する一連のパラメーター値です。データが指定されると、関数はパラメーターの負の対数尤度を返します。

最尤推定量 (MLE) を求めるには、負の対数尤度関数を最適化問題の目的関数として使用し、MATLAB® 関数 fminsearch または Optimization Toolbox™ や Global Optimization Toolbox の関数を使用して解くことができます。これらの関数により、探索アルゴリズムの選択と、アルゴリズムの実行に対する低水準の制御を行うことができます。一方、関数 mle と、normfitgamfit などの fit で終わる分布近似関数は、あらかじめ設定されているアルゴリズムを使用し、そのオプションは関数 statset によって設定されるものに限られます。

尤度は、条件付きの確率密度です。分布のパラメーター族は、関数 f(x,a) を使用して指定できます。x と a はそれぞれ確率変数およびパラメーターを表します。a を固定した場合、関数は x における確率密度関数 (pdf) f(x|a) です。x を固定した場合、関数はパラメーター a の "尤度" f(a|x) です。独立した無作為標本データセット X に対するパラメーターの結合尤度は、次のようになります。

L(θ)=xXf(x|θ).

任意の X について、MLE はすべての可能な a における L(a) を最大化します。数値アルゴリズムでは、対数尤度関数 log(L(a)) を (等価的に) 最大化する MLE を求めます。対数は、小さな値になると思われる尤度の積を対数の和に変換します。これで、計算において 0 との区別が容易になります。便宜上、Statistics and Machine Learning Toolbox の負の対数尤度関数は、この和の "負" の値を返します。これは、最適化アルゴリズムでは一般に最大値ではなく最小値を求めるからです。

負の対数尤度関数を使用した MLE の計算

この例では、関数 gamlike および fminsearch を使用して MLE を求める方法を示します。

関数 gamrnd を使用して、特定のガンマ分布から無作為標本を生成します。

rng default;  % For reproducibility
a = [1,2];
X = gamrnd(a(1),a(2),1e3,1);

関数 gamlike を使用して、与えられた X に対する a の近傍における尤度表面を可視化します。

mesh = 50;
delta = 0.5;
a1 = linspace(a(1)-delta,a(1)+delta,mesh);
a2 = linspace(a(2)-delta,a(2)+delta,mesh);
logL = zeros(mesh); % Preallocate memory
for i = 1:mesh
    for j = 1:mesh
        logL(i,j) = gamlike([a1(i),a2(j)],X);
    end
end
 
[A1,A2] = meshgrid(a1,a2);
surfc(A1,A2,logL)

関数 fminsearch を使用して、尤度表面の最小値を求めます。

LL = @(u)gamlike([u(1),u(2)],X); % Likelihood given X
MLES = fminsearch(LL,[1,2])
MLES = 1×2

    0.9980    2.0172

関数 gamfit によって返される推定値と MLES を比較します。

ahat = gamfit(X)
ahat = 1×2

    0.9980    2.0172

MLESahat の間で各パラメーターの差は 1e-4 より小さくなっています。

MLE を表面プロットに追加します。

hold on
plot3(MLES(1),MLES(2),LL(MLES),'ro','MarkerSize',5,'MarkerFaceColor','r')
view([-60 40]) % Rotate to show the minimum

参考

| | |

関連するトピック