0

我使用一个调用emcee来将函数拟合到某些数据点的 python 包。拟合看起来很棒,但是当我想在每一步绘制每个参数的值时,我得到了这个:

在此处输入图像描述

在他们的示例中(具有不同的功能和数据点),他们得到了:

在此处输入图像描述

为什么我的函数收敛得这么快,为什么一开始的形状那么奇怪。我使用可能性和后验概率应用 MCMC。即使拟合看起来非常好,函数参数的误差也非常小(比实际值小 10^10),我认为这是因为随机游走。知道如何解决吗?这是他们的拟合代码: http: //dan.iel.fm/emcee/current/user/line/我使用了相同的代码,对我的数据点和拟合函数进行了明显的修改。

4

1 回答 1

4

我不会说您的函数比emcee您链接到的线拟合示例收敛得更快。在示例中,步行者几乎立即开始探索参数空间中最可能的值,而在您的情况下,它需要 200 多次迭代才能到达高概率区域。

跟踪图中的跳跃看起来像老化。这是 MCMC 采样算法的一个共同特征,其中你的步行者被给予远离大部分后部的起点,然后必须找到通往它的路。在您的情况下,似然函数看起来相当平滑,因此您只需要一百次左右的迭代即可实现这一点,从而使您的函数具有您所说的“奇怪形状”。

如果你能更好地约束起点,就这样做;如果没有,您可能会考虑在进行进一步分析之前丢弃此初始长度(有关老化长度的讨论,请参见此处此处)。

至于误差是否真实,你需要检查得到的后验模型,因为实际参数值与其不确定性的比率在这方面没有发言权。例如,如果我们采用您的链接示例并将真实值更改b为 10^10,则生成的误差将小十个数量级,同时保持完全有效。

于 2016-09-27T12:52:32.553 回答