【问题标题】:PYMC3 Seasonal VariablesPYMC3 季节性变量
【发布时间】:2018-01-30 02:24:43
【问题描述】:

我对 PYMC3 比较陌生,我正在尝试实现没有回归量的贝叶斯结构时间序列 (BSTS),例如 R 中拟合 here 的模型。模型如下:

我可以使用 GaussianRandomWalk 实现局部线性趋势,如下所示:

delta = pymc3.GaussianRandomWalk('delta',mu=0,sd=1,shape=99)
mu = pymc3.GaussianRandomWalk('mu',mu=delta,sd=1,shape=100)

但是,我不知道如何在 PYMC3 中编码季节性变量 (tau)。我需要滚动自定义随机游走课程还是有其他技巧?

【问题讨论】:

    标签: python bayesian pymc pymc3


    【解决方案1】:

    你可以使用

    w = pm.Normal('w', sd=sigma_tau, shape=S)
    tau = w - tt.concatenate([[0.], w.cumsum()[:-1]])
    

    根据数据,将cumsum 用于其他随机游走可能会更快,这通常会避免后验中的相关性,从而使采样器的工作更轻松。

    【讨论】:

    • 我不太清楚为什么这会给出正确形式的 tau,你能详细说明一下吗?无论如何,这会产生尺寸不匹配。如果我取 S = 12,则 tau 是 12 维向量,而 mu 是 100 维。这使我无法形成 y=pm.Normal('y',mu=mu+tau,sd=sigma_y,observed=y_train)。另外,我猜当您说步行的cumsum技巧时,您的意思是 u=pm.Normal('u',sd=sigma_delta) 和 delta=u+tt.concatenate([[0.],u.cumsum()[: -1]])?
    • 我愿意接受您的回复,以便您获得声誉,但我不能不澄清有关张量形状和形成 y 的说明(请参阅之前的评论)。
    猜你喜欢
    • 2017-12-14
    • 1970-01-01
    • 1970-01-01
    • 2019-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-24
    • 1970-01-01
    相关资源
    最近更新 更多