if (FALSE) {
# Simulate from a Poisson-AR2 model with a seasonal smooth
set.seed(1)
dat <- sim_mvgam(
T = 75,
n_series = 1,
prop_trend = 0.75,
trend_model = AR(p = 2),
family = poisson()
)
# Fit an appropriate model
mod_ar2 <- mvgam(
formula = y ~ s(season, bs = 'cc'),
trend_model = AR(p = 2),
family = poisson(),
data = dat$data_train,
newdata = dat$data_test,
chains = 2,
silent = 2
)
# Fit a less appropriate model
mod_rw <- mvgam(
formula = y ~ 1,
trend_model = RW(),
family = poisson(),
data = dat$data_train,
newdata = dat$data_test,
chains = 2,
silent = 2
)
# Compare Discrete Ranked Probability Scores for the testing period
fc_ar2 <- forecast(mod_ar2)
fc_rw <- forecast(mod_rw)
score_ar2 <- score(
object = fc_ar2,
score = 'drps'
)
score_rw <- score(
object = fc_rw,
score = 'drps'
)
sum(score_ar2$series_1$score)
sum(score_rw$series_1$score)
# Use rolling evaluation for approximate comparisons of 3-step ahead
# forecasts across the training period
compare_mvgams(
model1 = mod_ar2,
model2 = mod_rw,
fc_horizon = 3,
n_samples = 1000,
n_evaluations = 5
)
# A more appropriate comparison would be to use approximate
# leave-future-out CV to compare forecasts (see ?mvgam::lfo_cv())
}
Run the code above in your browser using DataLab