使用bsts模型和更新的olddata进行预测

时间:2017-08-01 22:49:37

标签: r bayesian

我使用2年的每周历史数据构建了一个bsts模型。我能够预测将模型与现有的训练数据一起使用。为了模仿生产中模型可能发生的过程,我创建了一个xts对象,将2年的数据向前移动一周。当我尝试使用此数据集进行预测时(在predict.bsts中填充olddata参数),我收到以下错误:

  

terms.default(object)中的错误:没有术语组件或属性

我意识到我可能在这里做了一些愚蠢的事情,但是在预测时我们还没能找到任何使用olddata值的例子。感谢您提供的任何帮助。

由于

dat = xts(fcastdat$SumScan_units,order.by = fcastdat$enddate)
traindat = window(dat, start=as.Date("2015-01-03"), end=as.Date("2016-12-26"))

ss = AddLocalLevel(list(), traindat)
ss = AddSeasonal(ss, traindat, nseasons = 52)

holidays = c("EasterSunday", "USMothersDay", "IndependenceDay", "MemorialDay", "LaborDay", "Thanksgiving", "Christmas")

ss = AddNamedHolidays(ss, named.holidays = holidays, traindat)

model_loclev_seas_hol = bsts(traindat, state.specification = ss, niter = 500, ping=50, seed=1289)
burn = SuggestBurn(0.1, model_loclev_seas_hol)

pred_len = 5

pred = predict.bsts(model_ll_seas_hol, horizon = pred_len, burn = burn, quantiles = c(.025, .975))

begdt = index(traindat[1]) + 7

enddt = index(traindat[length(traindat)]) + 7

predseries = window(dat, start=as.Date(begdt), end=as.Date(enddt))

pred2 = predict.bsts(model_ll_seas_hol, horizon=pred_len, burn=burn, olddata = predseries,quantiles = c(.025, .975))

0 个答案:

没有答案