tests/testthat/test-simulate.R

suppressPackageStartupMessages({
    library(dplyr)
})


test_that("simulate data", {
    # Show that the function respects the seed and that

    set.seed(120)
    x <- simulate_test_data()

    set.seed(120)
    y <- simulate_test_data(
        n = 200,
        sd = c(3, 5, 7),
        cor = c(0.1, 0.7, 0.4),
        mu = list(
            int = 10,
            age = 3,
            sex = 2,
            trt = c(0, 4, 8),
            visit = c(0, 1, 2)
        )
    )

    set.seed(121)
    z <- simulate_test_data()

    expect_true(identical(x, y))
    expect_false(identical(x, z))


    # Show that we can recover known values
    set.seed(3918)
    dat <- simulate_test_data(
        n = 4000,
        sd = c(1, 2, 3),
        cor = c(0, 0, 0.),
        mu = list(
            int = 10,
            age = 3,
            sex = 2,
            trt = c(0, 8, 17),
            visit = c(0, 3, 6)
        )
    )

    mod <- lm(data = dat, outcome ~ age + sex + group * visit)

    m <- coef(mod)
    v <- sqrt(diag(vcov(mod)))

    lci <- m - qnorm(0.99) * v
    uci <- m + qnorm(0.99) * v

    real <- c(10, 3, 2, 0, 3, 6, 8, 17)

    expect_true(all(lci <= real & real <= uci))
})



test_that("vcov", {
    actual <- as_vcov(c(1, 2), 0)
    expected <- matrix(c(1, 0, 0, 4), byrow = TRUE, nrow = 2)
    expect_equal(actual, expected)


    actual <- as_vcov(c(2, 4), 0.5)
    expected <- matrix(c(4, 4, 4, 16), byrow = TRUE, nrow = 2)
    expect_equal(actual, expected)


    actual <- as_vcov(c(2, 4, 8), c(0.4, 0.5, 0.6))
    expected <- matrix(
        c(4, 3.2, 8,
          3.2, 16, 19.2,
          8, 19.2, 64),
        byrow = TRUE,
        nrow = 3
    )
    expect_equal(actual, expected)
})
insightsengineering/rbmi documentation built on Feb. 28, 2025, 3:34 a.m.