Main Content

負の対数尤度関数

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

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

分布のパラメーター族は、確率密度関数 (pdf) f(x|θ) を使用して指定できます。ここで、x は確率変数の結果、θ は分布パラメーターをそれぞれ表します。f(x|θ) を固定の x に対する θ の関数として見る場合、関数 f(x|θ) は、単一の結果 x に対するパラメーター θ の尤度です。同一分布に従う独立した無作為標本データ セット X に対するパラメーター θ の尤度は次のようになります。

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

任意の X について、MLE はすべての可能な θ における L(θ) を最大化します。数値アルゴリズムでは、対数尤度関数 log(L(θ)) を (等価的に) 最大化する 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)

Figure contains an axes object. The axes object contains 2 objects of type surface, contour.

関数 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

Figure contains an axes object. The axes object contains 3 objects of type surface, contour, line. One or more of the lines displays its values using only markers

参考

| | |

関連するトピック