PYMC3 Seasonal Variables

2019-04-30 08:50发布

I'm relatively new to PYMC3 and I'm trying to implement a Bayesian Structure Time Series (BSTS) without regressors, for instance the model fit here in R. The model is as follows:

model

I can implement the local linear trend using a GaussianRandomWalk as follows:

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

However, I'm at a loss for how to encode the seasonal variable (tau) in PYMC3. Do I need to roll a custom random walk class or is there some other trick?

1条回答
来,给爷笑一个
2楼-- · 2019-04-30 09:41

You can use

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

Depending on the data it might also be faster to use cumsum for the other random walks, that often avoids correlations in the posterior, which makes life easier for the sampler.

查看更多
登录 后发表回答