最大可能性fminsearch

时间:2012-02-23 21:59:59

标签: matlab math

我使用Matlab-fminsearch作为二项式分布函数的负最大似然模型。我没有得到任何错误通知,但我想要估计的参数,始终采用起始值。显然,有一个错误。我知道我问了一个完全普遍的问题。但有可能是任何人都有同样的错误并且知道如何处理它吗? 非常感谢,

@woodchips,非常感谢你。一步一步,我试着做你建议我的事。首先,我实际上最大化了(-log(可能性)),这不是问题。我想我发现了问题,但如果我不打扰你,我还有一些问题。我有一个模型(param)在paramstart = p1中最大化。该模型是为(-log(可能性(F)))构建的,而我的F是矢量化函数,如F(t,Z,X,T,param,m2,m3,k,l)。我有一个数据,如(tdata,kdata,ldata),X,T是网格,Z是这个网格上的一个函数,(m1,m2,m3)给出了参数。当我想看到F的值时(tdata, Z,X,T,m1,m2,m3,kdata,ldata),我得到了很好的输出。但我认为fminsearch接受F(tdata,Z,X,T,p,m2,m3,kdata,ldata)就像一个常数,并且为什么我总是将估计参数作为起始值。如果你有任何建议可以调整,我会很高兴。

2 个答案:

答案 0 :(得分:2)

您可以尝试调整一些选项。我从算法开始。

当功能值实际上没有围绕起点变化时,它也存在问题。也许改用log-possiblehood有帮助。

我总是使用fminuncfmincon。它们还允许提供Hessian(通常优于“估计”)或“典型值”,因此算法不会花费时间在不可行的区域。

答案 1 :(得分:1)

实际上,您永远不应该最大化似然函数,但总是最大化该函数的日志。浮点问题几乎总是会破坏问题。您的优化在同一点开始和停止是一个很好的指标,这就是问题所在。

您可能需要比上面更深入地挖掘,但即便如此,下一个测试是测试我建议所有优化工具用户为他们的每个问题做的事情,在他们将函数抛入优化器之前。评估您在附近的几个点的目标。它会产生显着不同的值吗?如果没有,那么看看为什么不。您是在创建一个非平滑的目标来优化还是零目标?即,零到供应的公差范围内?

如果它确实产生不同的值但仍未收敛,那么请确保您知道如何正确调用优化程序。是的,没错,就像之前没有人犯过这个错误一样。这实际上是优化器失败的常见原因。

如果它确实产生了变化的良好值,并且您正在正确地调用优化器,那么请考虑优化器是否正在尝试分散哪些区域产生垃圾结果。目标产生复杂或虚构的结果吗?