编程序的时候没注意,谢谢Rtist提醒(用nlm的时候应该对ln(L)加上负号)。opalcat写公式的时候暂时可以别写这么多下标嘛:)
对数似然函数:
<br />
fnk=function(x){<br />
j=1:k<br />
a=x[1]<br />
b=x[2]<br />
c=x[3] <br />
fj=a+b*(j/(k+1))^(-c) <br />
sum(log(fj)+(1/fj)*z[j])<br />
}<br />
k=3 <br />
n=193<br />
z=rexp(n)<br />
nlm(fnk, c(0.1,0.1,0.1))<br />
这次运行的结果看起来有点正常了,呵呵
随便贴出两次模拟的结果(对于k=3的情况):
<br />
> nlm(fnk, c(0.1,0.1,0.1)) <br />
$minimum<br />
[1] 1.357899<br />
<br />
$estimate<br />
[1] 2.4623473 -2.8091129 -0.7203819<br />
<br />
$gradient<br />
[1] -3.616152e-06 -3.408888e-06 1.289606e-06<br />
<br />
$code<br />
[1] 3<br />
<br />
$iterations<br />
[1] 75<br />
<br />
> nlm(fnk, c(0.1,0.1,0.1)) <br />
$minimum<br />
[1] 3.026111<br />
<br />
$estimate<br />
[1] 1.617115 -59.429488 -13.508146<br />
<br />
$gradient<br />
[1] 0.0303167704 0.0006762601 -0.0109424297<br />
<br />
$code<br />
[1] 4<br />
<br />
$iterations<br />
[1] 100<br />