我对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)感到茫然。我是否需要滚动自定义随机游走类或是否还有其他技巧?
答案 0 :(得分:0)
您可以使用
w = pm.Normal('w', sd=sigma_tau, shape=S)
tau = w - tt.concatenate([[0.], w.cumsum()[:-1]])
根据数据,将cumsum
用于其他随机游走也可能更快,这通常可以避免后验中的相关性,这使得采样器的生活更加轻松。