Xoc*_*lli 1 python time-series pymc3
我正在自学 PyMC3,并且正在复制这个变更点检测示例。我想通过随时间对 2 个不同泊松率参数的后验采样来扩展示例。我该怎么做呢?
提供更多细节:如果我有y示例中的时间序列。我想先用观察采样y[0:2],然后y[0:3], y[0:4], ... , y[0:100]。我的目标是绘制mu0和mu1(泊松率参数)随时间 2..100 的分布。显然,我应该能够通过创建大约 98 个不同的模型并从每个模型中独立采样来做到这一点。但是,这似乎效率很低,我想知道是否有更好的方法来仅使用新观察更新模型并继续跟踪?
我在文档或在线找不到任何相关内容,因此我尝试仅替换变量,但随后出现“ValueError: Variable name changepoint already exists.”。
TLDR;有没有一种有效的方法可以随着时间的推移更新观察结果并使用这些新观察结果继续从先前的跟踪中采样?
小智 5
您是否尝试用 theano.shared 包装 y 并在每一步更新 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())
Run Code Online (Sandbox Code Playgroud)
如果您有更多问题,请将您的模型和(模拟)数据发布到https://discourse.pymc.io。我们更经常地检查和回答我们的话语。
| 归档时间: |
|
| 查看次数: |
840 次 |
| 最近记录: |