2012-02-23 68 views
0

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

@woodchips,谢谢你很多。一步一步,我试着去做你建议我的事情。首先,我实际上最大化了(-log(可能性)),这不是问题。我想我发现了这个问题,但如果我不打扰你,我仍然有一些问题。我有一个模型(param)在paramstart = p1中最大化。这个模型是为(-log(likelihood(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)像一个常数,所以我始终将估计参数作为起始值。我会很高兴,如果你有任何建议来调整。

+0

我认为你需要阅读演示和帮助fminsearch。 IT有很多如何使用它的例子。在这种情况下,似乎fminsearch不知道你想优化哪些参数。再看看例子,并遵循它们。 – 2012-02-24 13:25:02

+0

@woodchips,再次感谢。 – user1018331 2012-02-24 13:48:53

回答

2

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

当功能值在起点附近几乎没有变化时,它也有问题。也许切换到对数似然有帮助。

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

+0

谢谢你的回答。我会尝试你的提示。 – user1018331 2012-02-24 08:21:52

1

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

您可能需要深入一点,但即便如此,下一个测试是测试,我建议所有优化工具的用户都为他们的每一个问题做好准备,在他们将一个函数放入优化。评估你的目标在附近的几个点。它会产生显着不同的值吗?如果不是,那么看看为什么不。你是否创建了一个不平滑的目标来优化或零目标?即,在所提供的公差范围内为零?

如果确实产生了不同的值但仍然不收敛,请确保您知道如何正确调用优化器。对,就像以前从没有人犯过这个错误。这实际上是优化器失败的一个常见原因。

如果确实会产生不同的好值,并且您正在调用优化器,那么请考虑是否存在优化程序尝试分歧产生垃圾回收结果的区域。目标是产生复杂还是想象的结果?

+0

非常感谢你。如果我不打扰你,你能帮我拿我的筹码。我是在同一个问题下写的。 – user1018331 2012-02-24 12:37:39