回答:
さて、コーシーのPDFは次のとおりです:
θ ここで、は中央値であり、コーシーの平均値が定義されていないため、平均値ではありません。
これはあなたが得たものとまったく同じですが、ここでは中央値であり、平均ではありません。あなたの公式ではが中央値だと思います。U
次のステップでは、mleを見つけるために、
ここで、は変数であり、は既知の値です。方程式を解く必要がありますX I S Σ N iが= 1 2 (X I - θを)
つまり、です。この方程式を解くのは非常に難しいようです。したがって、ニュートンラプソン法が必要です。
微積分の本の多くはその方法について話していると思います
ニュートンラプソン法の式は、ように記述できます。
θは最初の推測です
は、対数尤度関数の1次導関数です。
は、対数尤度関数の2次導関数です。
からを取得できます次に、を、を取得して、を取得する...と間に大きな変化がなくなるまでこの反復を続ける ^ θ 1 ^ θ 1(1) ^ θ 2(1) ^ θ 3 ^ θ N ^ θ N - 1
以下は、コーシー分布のmleを取得するために書いたR関数です。
mlecauchy=function(x,toler=.001){ #x is a vector here
startvalue=median(x)
n=length(x);
thetahatcurr=startvalue;
# Compute first deriviative of log likelihood
firstderivll=2*sum((x-thetahatcurr)/(1+(x-thetahatcurr)^2))
# Continue Newton’s method until the first derivative
# of the likelihood is within toler of 0.001
while(abs(firstderivll)>toler){
# Compute second derivative of log likelihood
secondderivll=2*sum(((x-thetahatcurr)^2-1)/(1+(x-thetahatcurr)^2)^2);
# Newton’s method update of estimate of theta
thetahatnew=thetahatcurr-firstderivll/secondderivll;
thetahatcurr=thetahatnew;
# Compute first derivative of log likelihood
firstderivll=2*sum((x-thetahatcurr)/(1+(x-thetahatcurr)^2))
}
list(thetahat=thetahatcurr);
}
ここで、データが
x<-c(-1.94,0.59,-5.98,-0.08,-0.77)
mlecauchy(x,0.0001)
結果:
#$thetahat
#[1] -0.5343968
Rビルドイン関数を使用してmleを取得することもできます。
optimize(function(theta) -sum(dcauchy(x, location=theta, log=TRUE)), c(-100,100))
#we use negative sign here
結果:
#$minimum
#[1] -0.5343902
結果は、自家製のコードとほとんど同じです。
OK、必要に応じて、これを手作業で行いましょう。
最初に、データの中央値なると初期推定を取得します
中央値は
次に、
および
次に、を接続しつまり、中央値をと
つまり、を置き換えつまり、中央値ie
次にをおよびしてを取得すると、取得できます
さて、ここで止める必要があります。これらの値を手動で計算するのは面倒です。