library(bsts)
library(testthat)
data(shark)
logshark <- log1p(shark$Attacks)
seed <- 8675309
test_that("Poisson bsts", {
ss.level <- AddLocalLevel(list(), y = logshark)
model.level <- bsts(shark$Attacks, ss.level, niter = 500,
ping = 250, family = "poisson", seed = seed)
expect_that(model.level, is_a("bsts"))
expect_true(all(abs(model.level$state.contributions) < 10))
ss.level <- AddLocalLevel(list(), y = logshark)
model.level <- bsts(cbind(shark$Attacks, shark$Population / 1000),
state.specification = ss.level, niter = 500, family = "poisson",
ping = 250, seed = seed)
expect_true(all(abs(model.level$state.contributions) < 15))
ss <- AddLocalLinearTrend(list(), y = logshark)
model <- bsts(shark$Attacks, ss, niter = 500, family = "poisson", ping = 250,
seed = seed)
expect_that(model, is_a("bsts"))
expect_true(all(abs(model$state.contributions) < 10))
ss <- AddLocalLinearTrend(list(), logshark,
initial.level.prior = NormalPrior(0, .1),
initial.slope.prior = NormalPrior(.16, .1))
model <- bsts(shark$Attacks, ss, niter = 500, ping = 250,
family = "poisson", seed = seed)
expect_that(model, is_a("bsts"))
expect_true(all(abs(model$state.contributions) < 10))
ss.semi <- AddSemilocalLinearTrend(list(), y = logshark)
model.semi <- bsts(shark$Attacks, ss.semi, niter = 500,
ping = 250, family = "poisson", seed = seed)
expect_that(model.semi, is_a("bsts"))
expect_true(all(abs(model.semi$state.contributions) < 10))
ss.student <- AddStudentLocalLinearTrend(list(), y = logshark)
model.student <- bsts(shark$Attacks, ss.student, niter = 500,
ping = 250, family = "poisson", seed = seed)
expect_that(model.student, is_a("bsts"))
expect_true(all(abs(model.student$state.contributions) < 10))
## Add an unrelated predictor.
shark$x <- rnorm(nrow(shark))
shark.training <- shark[1:48,]
shark.test <- shark[49:54, ]
ss.reg <- AddLocalLinearTrend(list(), y = logshark)
ss.reg <- AddDynamicRegression(ss.reg, log1p(Attacks) ~ x, data = shark)
model <- bsts(cbind(shark.training$Attacks, shark.training$Population / 1000),
ss.reg, niter = 500, family = "poisson", seed = seed)
pred <- predict(model, newdata = shark.test, trials.or.exposure = max(model$exposure))
expect_that(pred, is_a("bsts.prediction"))
expect_equal(ncol(pred), 6)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.