## Test simulate() methods
data(smallAges)
smallAges$Error[1] <- 1.1
sw <- scam(Date ~ s(Depth, k = 5, bs = "mpd"),
data = smallAges,
weights = 1 / smallAges$Error, gamma = 1.4
)
test_that("simulate() works with a gam", {
sims <- simulate(m_gam, nsim = 5, seed = 42)
expect_identical(nrow(sims), 1000L)
expect_identical(ncol(sims), 5L)
expect_message(
sims <- simulate(m_gam,
nsim = 5, seed = 42,
newdata = su_eg1
),
"Use of the `newdata` argument is deprecated.
Instead, use the data argument `data`.\n"
)
expect_identical(nrow(sims), 1000L)
expect_identical(ncol(sims), 5L)
})
test_that("simulate() works with a gamm", {
sims <- simulate(m_gamm, nsim = 5, seed = 42)
expect_identical(nrow(sims), 1000L)
expect_identical(ncol(sims), 5L)
})
## monotonic spline age-depth model using scam() from pkg scam
test_that("simulate() works with a scam", {
sims <- simulate(sw, nsim = 5, seed = 42)
expect_identical(nrow(sims), 12L)
expect_identical(ncol(sims), 5L)
sims <- simulate(sw, nsim = 5, seed = 42, data = smallAges)
expect_identical(nrow(sims), 12L)
expect_identical(ncol(sims), 5L)
})
test_that("simulate() works with no .Random.seed", {
rm(".Random.seed", envir = globalenv())
sims <- simulate(m_gam, nsim = 5, seed = 42)
expect_identical(nrow(sims), 1000L)
expect_identical(ncol(sims), 5L)
rm(".Random.seed", envir = globalenv())
sims <- simulate(m_gamm, nsim = 5, seed = 42)
expect_identical(nrow(sims), 1000L)
expect_identical(ncol(sims), 5L)
rm(".Random.seed", envir = globalenv())
sims <- simulate(sw, nsim = 5, seed = 42)
expect_identical(nrow(sims), 12L)
expect_identical(ncol(sims), 5L)
})
test_that("simulate() works with out a seed", {
sims <- simulate(m_gam, nsim = 5)
expect_identical(nrow(sims), 1000L)
expect_identical(ncol(sims), 5L)
sims <- simulate(m_gamm, nsim = 5)
expect_identical(nrow(sims), 1000L)
expect_identical(ncol(sims), 5L)
sims <- simulate(sw, nsim = 5)
expect_identical(nrow(sims), 12L)
expect_identical(ncol(sims), 5L)
})
test_that("simulate() fails if we don't have an rd function", {
skip_on_cran()
## Example from ?twlss
n <- 400
## Simulate data...
dat <- data_sim("eg1", n = n, dist = "poisson", scale = 0.2, seed = 3)
dat <- withr::with_seed(3, {
transform(dat, y = rTweedie(exp(f), p = 1.3, phi = 0.5)) ## Tweedie y
})
## Fit a fixed p Tweedie, with wrong link ...
m <- gam(
list(
y ~ s(x0) + s(x1) + s(x2) + s(x3),
~1,
~1
),
family = twlss(), data = dat
)
expect_error(simulate(m),
"Don't yet know how to simulate from family <twlss>",
fixed = TRUE
)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.