我使用名为emcee
的python包来使函数适合某些数据点。拟合看起来很棒,但是当我想在每一步绘制每个参数的值时,我得到了这个:
在他们的例子中(具有不同的功能和数据点),他们得到了这个:
为什么我的功能会如此快速地收敛,为什么它在开始时会有那种奇怪的形状。我使用似然和后验概率来应用MCMC。即使拟合看起来非常好,函数参数的误差也非常小(比实际值小10 ^ 10),我认为这是因为随机游走。知道怎么解决吗?这是他们的拟合代码:http://dan.iel.fm/emcee/current/user/line/我使用了相同的代码,对我的数据点和拟合函数进行了明显的修改。
答案 0 :(得分:3)
我不会说你的函数比你链接到的emcee
线条拟合示例收敛得更快。在示例中,步行者几乎立即开始探索参数空间中最可能的值,而在您的情况下,需要超过200次迭代才能达到高概率区域。
跟踪图中的跳跃看起来像是老化。这是MCMC采样算法的一个共同特征,在这种算法中,你的步行者将获得远离后部大部分的起点,然后必须找到它的方法。看起来在你的情况下,似然函数是相当平滑的,所以你只需要一百次左右的迭代就可以实现这一点,让你的函数成为你所讨论的“怪异形状”。
如果你能更好地约束出发点,那就这样做;如果没有,您可以考虑在进行进一步分析之前丢弃此初始长度(有关烧录长度的讨论,请参阅here和here。)
至于错误是否真实,你需要检查得到的后验模型,因为实际参数值与其不确定性的比率在此没有发言权。例如,如果我们使用您的关联example并将b
的真实值更改为10 ^ 10,则生成的错误将小十个数量级,同时保持完全有效。