我使用Matlab-fminsearch为二项分布函数建立了负最大似然模型。我没有收到任何错误通知,但是我想要估计的参数,总是采用起始值。显然,这是一个错误。我知道我问的是一个非常笼统的问题。但有没有可能任何人都犯了同样的错误,并知道如何处理它呢?非常感谢,
@woodchips,非常感谢。一步一步地,我试着按照你的建议去做。首先,我实际上最大化了(-log(可能性)),这不是问题所在。我想我发现了问题所在,但如果我不打扰你的话,我还有一些问题要问。我在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)就像一个常量,这就是为什么我总是把起始值作为估计参数。我会很高兴,如果你有任何建议来调整。
发布于 2012-02-24 06:14:14
您可以尝试调整一些选项。我会从算法开始。
当函数值实际上没有在你的起点附近改变时,这也是有问题的。也许切换到类似于原木的模式会有所帮助。
我总是使用fminunc或fmincon。它们还允许提供Hessian (通常比“估计”值更好)或“典型值”,这样算法就不会在不可行的区域花费时间。
发布于 2012-02-24 17:56:07
实际上,你永远不应该最大化一个似然函数,而应该总是最大化该函数的对数,这几乎总是正确的。否则,浮点问题几乎总是会破坏问题。您的优化在同一点开始和停止是一个很好的指标,这就是问题所在。
您可能需要更深入地挖掘上面的内容,但即便如此,我建议所有使用优化工具的用户在将函数抛入优化器之前,都应该针对每个问题执行下一个测试。评估你的目标附近的几个点。它产生了显著不同的值吗?如果不是,那么看看为什么不是。你是在创建一个优化的非平滑目标,还是一个零目标?也就是说,零到提供的公差内?
如果它确实产生了不同的值,但仍然不收敛,那么请确保您知道如何正确地调用优化器。是啊,没错,好像从来没有人犯过这样的错误。这实际上是优化器失败的一个非常常见的原因。
如果它确实产生了不同的好值,并且您对优化器的调用是正确的,那么考虑优化器试图偏离的区域是否会产生垃圾结果。目标是生成复杂的结果还是虚构的结果?
https://stackoverflow.com/questions/9422041
复制相似问题