Я все еще изучаю PYMC3, но не могу найти в документации ничего по следующей проблеме. Рассмотрим модель временных рядов байесовской структуры (BSTS) из этого вопроса без сезонности. Это можно смоделировать в PYMC3 следующим образом:
import pymc3, numpy, matplotlib.pyplot
# generate some test data
t = numpy.linspace(0,2*numpy.pi,100)
y_full = numpy.cos(5*t)
y_train = y_full[:90]
y_test = y_full[90:]
# specify the model
with pymc3.Model() as model:
grw = pymc3.GaussianRandomWalk('grw',mu=0,sd=1,shape=y_train.size)
y = pymc3.Normal('y',mu=grw,sd=1,observed=y_train)
trace = pymc3.sample(1000)
y_mean_pred = pymc3.sample_ppc(trace,samples=1000,model=model)['y'].mean(axis=0)
fig = matplotlib.pyplot.figure(dpi=100)
ax = fig.add_subplot(111)
ax.plot(t,y_full,c='b')
ax.plot(t[:90],y_mean_pred,c='r')
matplotlib.pyplot.show()
Теперь я хотел бы предсказать поведение для следующих 10 временных шагов, то есть y_test. Я также хотел бы включить заслуживающие доверия регионы над этой областью, образующие байесовский конус, например, см. здесь . К сожалению, механизм производства колбочек в вышеупомянутом звене немного расплывчат. В более традиционной модели AR можно было узнать средние коэффициенты регрессии и вручную расширить среднюю кривую. Однако в этой модели BSTS нет очевидного способа сделать это. В качестве альтернативы, если бы были регрессоры, я мог бы использовать theano.shared и обновить его более мелкой / расширенной сеткой для импутации и экстраполяции с помощью sample_ppc, но это не совсем вариант в этой настройке. Возможно, sample_ppc здесь отвлекает, но неясно, как еще поступить. Любая помощь приветствуется.