【问题标题】:How to improve fit of Poisson Mixture Model in PyMC3?如何提高 PyMC3 中泊松混合模型的拟合度?
【发布时间】:2018-10-31 14:12:49
【问题描述】:

我有一些看起来像这样的数据:

我想尝试使用具有 2 个分量的泊松混合模型对这些数据进行建模。由于我是 PyMC3 的新手,因此我使用了此处的链接:PyMC3 GMM tutorial 和此处:PyMC3 Mixture API 尝试执行此操作。我的代码在这里:

with pm.Model() as model:
    lam1 = pm.Exponential('lam1', lam=1)
    lam2 = pm.Exponential('lam2', lam=1)
    pois1 = pm.Poisson.dist(mu=lam1)
    pois2 = pm.Poisson.dist(mu=lam2)
    w = pm.Dirichlet('w', a=np.array([1, 1]))
    like = pm.Mixture('like', w=w, comp_dists=[pois1, pois2], observed=data)
with model:
    trace = pm.sample(5000, n_init=10000, tune=10000, random_seed=SEED)[1000:]
with model:
    ppc_trace = pm.sample_ppc(trace, 5000, random_seed=SEED)
fig, ax = plt.subplots(figsize=(8, 6))
ax.hist(data, bins=30, normed=True,
        histtype='step', lw=2,
        label='Observed data')
ax.hist(ppc_trace['like'], bins=30, normed=True,
        histtype='step', lw=2,
        label='Posterior predictive distribution')
ax.legend(loc=1)
plt.show()

但是结果是这样的:

如何提高合身度?我试过摆弄 lambdas 无济于事。

【问题讨论】:

    标签: python-3.x statistics pymc3 mixture-model


    【解决方案1】:

    看起来您正在绘制参数的后验图。不要将此与基于模型的随机样本分布混淆。也就是说,应该清楚的是,橙色线不是蓝色线的“拟合”,而是指示组件参数的位置。我对 pymc 不熟悉,但也应该有一种方法可以真正从模型中采样,而不是对模型进行采样。另一种选择是读出后验的最大值(MAP 解决方案)并使用 numpy.random 函数进行采样。

    【讨论】:

      猜你喜欢
      • 2016-11-28
      • 2014-04-25
      • 2023-04-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-27
      • 2014-11-07
      相关资源
      最近更新 更多