4

我正在用一个简单的多级模型尝试 PyMC3。当同时使用假数据和真实数据时,随机效应分布的轨迹相互移动(见下图),并且似乎是同一轨迹的偏移量。这是 NUTS 的预期伪影还是表明我的模型存在问题?

这是真实数据的跟踪图:

轨迹图

这是模型的IPtyhon 笔记本和用于创建假数据的函数。这是相应的要点

4

1 回答 1

2

我希望这会根据 alpha 上的组均值分布发生。如果您考虑一下,如果组均值发生变化,它将以相同程度影响所有 alpha。您可以通过针对某些 alpha 绘制组均值轨迹的散点图来确认这一点。由于组均值和方差与单个 RV 之间存在这些复杂的相互依赖性,分层模型通常对大多数采样者来说是困难的。有关这方面的更多信息,请参见http://arxiv.org/abs/1312.0906

在您的特定情况下,跟踪对我来说并不太令人担忧,尤其是在迭代 1000 次之后。所以您可能只是将它们丢弃为老化并记住您有一些采样噪声,但总体上可能得到了正确的后验。此外,您可能希望执行后验预测检查,以查看模型是否可以重现您感兴趣的数据中的模式。

或者,您可以尝试使用 估计更好的粗麻布pm.find_hessian(),例如https://github.com/pymc-devs/pymc/blob/3eb2237a8005286fee32776c304409ed9943cfb3/pymc/examples/hierarchical.py#L51

我还发现这篇论文看起来很有趣(尚未阅读但在 PyMC3 中实现可能很酷):arxiv-web3.library.cornell.edu/pdf/1406.3843v1.pdf

于 2014-09-15T10:51:30.090 回答