python - 如何在 PyMC3 中随时间更新观察结果?

标签 python time-series pymc3

我正在自学 PyMC3,并且正在复制 this changepoint detection example 。我想通过随时间对 2 个不同泊松率参数的后验进行采样来扩展该示例。我将如何继续这样做?

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

我在文档或在线中找不到任何相关内容,因此我尝试仅替换变量,但随后收到“ValueError:变量名称更改点已存在。”。

TLDR;是否有一种有效的方法可以随着时间的推移更新观测值,并使用这些新观测值继续从先前的跟踪中采样?

最佳答案

您是否尝试用 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())

如有更多问题,请发帖至https://discourse.pymc.io与您的模型和(模拟)数据。我们更频繁地检查和回答我们的谈话。

关于python - 如何在 PyMC3 中随时间更新观察结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48517719/

相关文章:

python - pymc3 SQLite 后端,指定要跟踪的变量列表

python - pymc3 创建 pm.Normal 变量时出现无法解释的 TypeError

Python 2.x optionnal subparsers - 错误参数太少

python - 执行 .py python 会出现 apache 错误 2(内部服务器错误)

Python正则表达式搜索并替换所有打印语句

python - 如何将开始和结束日期记录转换为时间戳?

Python Mysql 加载文件中的数据

python - 将每日时间序列透视为 Pandas 中的周行

pandas - 从 pandas 的日期中提取周列

python - PyMC3 & Theano - Theano 代码在导入 pymc3 后停止工作