set.seed(8675309)
library(bsts)
SimulateDirmData <- function(observation.sd = 1, trend.sd = .1,
time.dimension = 100, nobs.per.period = 3,
xdim = 4) {
trend <- cumsum(rnorm(time.dimension, 0, trend.sd))
total.sample.size <- nobs.per.period * time.dimension
predictors <- matrix(rnorm(total.sample.size * xdim),
nrow = total.sample.size)
coefficients <- rnorm(xdim)
expanded.trend <- rep(trend, each = nobs.per.period)
response <- expanded.trend + predictors %*% coefficients + rnorm(
total.sample.size, 0, observation.sd)
timestamps <- seq.Date(from = as.Date("2008-01-01"), len = time.dimension, by = "day")
extended.timestamps <- rep(timestamps, each = nobs.per.period)
return(list(response = response,
predictors = predictors,
timestamps = extended.timestamps,
trend = trend,
coefficients = coefficients))
}
data <- SimulateDirmData()
ss <- AddLocalLevel(list(), data$response,
sigma.prior = SdPrior(sigma.guess = 0.1, sample.size = 1))
model <- dirm(data$response ~ data$predictors, ss, niter = 50,
timestamps = data$timestamps, seed = 8675309, expected.model.size = 20)
model2 <- dirm(response ~ predictors, ss, niter = 50, data = data,
timestamps = data$timestamps, seed = 8675309, expected.model.size = 20)
test_that("Models are identical", {
expect_that(model, is_a("DynamicIntercept"))
expect_that(model$coefficients, is_a("matrix"))
expect_true(all(model$coefficients == model2$coefficients))
expect_true(all(model$sigma.obs == model2$sigma.obs))
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.