context("Test simulation functions")
test_that("Test that rpexp works", {
expect_identical(length(rpexp(n = 1, rate = 1, t = 0)), 1L)
expect_error(rpexp(n = 1, rate = 1, t = c(0, 1)))
expect_error(rpexp(n = 1, rate = 1, t = 1))
expect_error(rpexp(n = 1, rate = c(1, 1, 1), t = c(0, 2, 1)))
expect_identical(rpexp(n=0, rate = 1, t = 0), numeric(0))
expect_identical(length(rpexp(n=c(1, 3), rate = 1, t = 0)), 2L)
})
test_that("Simulation function works", {
suppressWarnings(RNGversion("3.5.0"))
set.seed(24032018)
# standard data
df <- cbind.data.frame(x1 = runif (3, -3, 3), x2 = runif (3, 0, 6))
sim_df <- sim_pexp(~ -3.5 - 0.5 * x1 + sqrt(x2), df, cut = 0:10)
expect_data_frame(sim_df, nrows = 3, ncols = 5)
expect_identical(round(sim_df$time, 2), c(1.38, 7.14, 3.02))
# time-dependent covariates
rng_z <- function(nz) {
as.numeric(arima.sim(n = nz, list(ar = c(.8, -.6))))
}
tz1 <- 1:10
df <- df %>% add_tdc(tz1, rng_z)
# simulate data with cumulative effect
sim_df <- sim_pexp(
formula = ~ -3.5 - 0.5 * x1 + sqrt(x2) |
fcumu(t, tz1, z.tz1,
f_xyz = function(t, tz, z) {
-1 * cos(t / 10 * pi) *
0.8 * (dnorm(z, 1.5, 2) + 1.5 * dnorm(z, 7.5, 1)) *
15 * dnorm(t - tz, 8, 10)
},
ll_fun = function(t, tz) t >= tz),
data = df,
cut = 0:10)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.