PYMC3 季节性变量
Posted
技术标签:
【中文标题】PYMC3 季节性变量【英文标题】:PYMC3 Seasonal Variables 【发布时间】: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)。我需要滚动自定义随机游走课程还是有其他技巧?
【问题讨论】:
【参考方案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 的说明(请参阅之前的评论)。以上是关于PYMC3 季节性变量的主要内容,如果未能解决你的问题,请参考以下文章
从特定季节提取滞后数据,但仅针对特定数据集,如 R 中的变量所示