是 optimx() 提供了不正确的解决方案还是我错过了一个简单的点?谢谢!
我试图最大化一个非常简单的可能性。这是一个非参数似然,因为 F 的分布不是参数化的。相反,对于每个观察到xi
的 ,f(xi)=pi
因此log(Likelihood)=Sum(log(f(xi)))=Sum(log(pi))
。
我试图最大化的函数是:sum(log(pi))+lamda(sum(pi-1))
哪里sum(pi)=1
(即这是一个可以使用拉格朗日乘数解决的约束最大化问题)。
这个问题的答案是数据点的数量pi=1/n
在哪里。n
但是,optimx 似乎没有给出这个解决方案。有没有人有任何想法。如果n=2
,我最大化的功能是log(p1)+log(p2)+lamda(p1+p2-1)
。
这是我的代码和 R 的输出:
n=2
log.like=function(p)
{
lamda=p[n+1]
ll=0
for(i in 1:n){
temp = log(p[i])+lamda*p[i]-lamda/(n)
ll=ll+temp
}
return(-ll)
}
mle = optimx(c(0.48,.52,-1.5),
log.like,
lower=c(rep(0.1,2),-3),
upper=c(rep(.9,2),-1),
method = "L-BFGS-B")
> mle
par fvalues method fns grs itns conv KKT1 KKT2 xtimes
1 0.9, 0.9, -1.0 1.010721 L-BFGS-B 8 8 NULL 0 FALSE NA 0
方程的解n=2
是p1=p2=1/2
和lamda=-2
。但是,我在使用 optimx 时没有得到这个。任何想法?