如何在PyMC3中随时间更新观测值?

2024-06-16 20:21:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在自学PyMC3,我正在复制this changepoint detection example。我想通过对两个不同的泊松速率参数随时间的变化进行采样来扩展这个例子。我该怎么做?在

更详细一点:如果我有示例中的时间序列y。我想先用观察来取样y[0:2],然后y[0:3]y[0:4]。。。,y[0:100]。我的目标是绘制mu0和{}(泊松速率参数)随时间2..100的分布图。 显然,我应该能够通过创建大约98个不同的模型并从每个模型中独立地进行采样来做到这一点。然而,这似乎是相当低效的,我想知道是否有更好的方法用新的观测值更新模型并继续跟踪?在

我在文档或在线上找不到任何相关的东西,所以我试着替换变量,但是我得到一个“ValueError:Variable name changepoint already exists.”。在

有没有一种有效的方法可以随着时间的推移更新观测值,并用这些新的观测值继续从以前的记录道取样?在


Tags: 方法模型示例参数速率example时间序列
1条回答
网友
1楼 · 发布于 2024-06-16 20:21:35

你试过用一个theano.共享每一步都更新y值?比如:

yshared = theano.shared(y[0:2])
with pm.Model() as m:
    # setup model
    y_obs = pm.SOMEDISTRIBUTION('',..., observed=yshared)
# inference
with m:
    trace.append(pm.sample())
# update value
yshared.set_value(y[0:3])
# inference again
with m:
    trace.append(pm.sample())

如果您有更多问题,请将您的模型和(模拟)数据发布到https://discourse.pymc.io。我们更经常地检查和回答我们的话语。在

相关问题 更多 >