我有一个关于使用bsts包的问题。一般来说,我的问题是我的方法是否可行。因为我的坚持 MAPE 比我在我的整体中使用的所有其他方法都要糟糕得多。
这是我的代码。
library("bsts")
library("ggplot2")
library("reshape")
# split into test and train ------------------------------------------------------
date <- as.Date("2017-06-04")
horizon <- 105
model.data$DATUM <- as.Date(model.data$DATUM)
xtrain <- model.data[model.data$DATUM <= date,]
xtest <- model.data[model.data$DATUM > date,]
# building the first model ------------------------------------------------------
ss <- list()
ss <- AddSemilocalLinearTrend(ss, xtrain$ITEMS)
ss <- AddSeasonal(ss,xtrain$ITEMS,nseasons = 52,
season.duration = 7)
# V7 is a dummy variable for the one outlier
fit <- bsts(ITEMS ~ V7 ,
data = xtrain,
seed = 100,
state.specification = ss,
niter = 1500)
# validation --------------------------------------------------------------------
burn <- SuggestBurn(0.1,fit)
fcast.holdout <- predict(fit,
newdata = xtest,
h = horizon,
burn = burn)
validation.time <- data.frame("semi.local.linear.bsts" = as.numeric(fcast.holdout$mean),
"actual" = model.data[model.data$DATUM > date,"ITEMS"],
"datum" = model.data[model.data$DATUM > date,"DATUM"])
a <- melt(validation.time,id.vars = c("datum"))
ggplot(data = a,
aes(x = datum, y = value, group = variable,color = variable))+
geom_point()+
geom_line()
plot(fcast.holdout)
数据可以在这里找到。数据是一家零售店的每日销售数据。稍后我想包含一些您也可以在示例数据中找到的虚拟变量。
对我来说,主要问题是:
是否正确定义了季节性部分?我的数据中有一个年度季节性,还有一个每周模式。但是在验证图中我找不到每周模式。








