# h_within_or_between ----
test_that("h_within_or_between works as expected", {
x_matrix <- cbind(
"(Intercept)" = 1,
"AGE" = c(10, 10, 10, 20, 20, 20, 30, 30, 30, 40, 10, 20),
"VISIT" = c(1, 2, 3, 1, 2, 3, 1, 2, 3, 1, 4, 2),
"SLOW" = c(1, 2, 3, 1, 1, 1, 1, 1, 1, 1, 1, 1)
)
subject_ids <- factor(c(1, 1, 1, 2, 2, 2, 3, 3, 3, 4, 1, 2))
result <- expect_silent(h_within_or_between(x_matrix, subject_ids))
expected <- c("(Intercept)" = "intercept", "AGE" = "between", "VISIT" = "within", "SLOW" = "within")
expect_identical(result, expected)
})
# h_df_bw_calc ----
test_that("h_df_bw_calc works as expected for the vignette example", {
object <- get_mmrm()
result <- expect_silent(h_df_bw_calc(object))
expect_list(result)
expect_named(result, c("coefs_between_within", "ddf_between", "ddf_within"))
expect_identical(result$ddf_between, 192L)
expect_identical(result$ddf_within, 334L)
expect_character(result$coefs_between_within)
expect_snapshot(result$coefs_between_within)
})
test_that("h_df_bw_calc works as expected for a model with only intercept", {
object <- mmrm(
formula = FEV1 ~ us(AVISIT | USUBJID),
data = fev_data
)
result <- expect_silent(h_df_bw_calc(object))
# Here 197 subjects and 537 observations in total (same as in vignette example) but p1 = p2 = 0.
# Therefore:
expect_identical(result$ddf_between, 196L)
expect_identical(result$ddf_within, 340L)
})
# h_df_min_bw ----
test_that("h_df_min_bw works as expected", {
object <- get_mmrm()
bw_calc <- h_df_bw_calc(object)
coefs <- coef(object)
is_involved <- setNames(logical(length(coefs)), names(coefs))
is_involved["AVISITVIS2"] <- TRUE
result <- expect_silent(h_df_min_bw(bw_calc, is_involved))
expect_identical(result, bw_calc$ddf_within)
is_involved["RACEWhite"] <- TRUE
result <- expect_silent(h_df_min_bw(bw_calc, is_involved))
expect_identical(result, bw_calc$ddf_between)
})
test_that("h_df_min_bw also works without names (because contrast might not have names)", {
object <- get_mmrm()
bw_calc <- h_df_bw_calc(object)
is_involved <- logical(length(coef(object)))
is_involved[1L] <- TRUE
result <- expect_silent(h_df_min_bw(bw_calc, is_involved))
expect_int(result)
})
# h_df_1d_bw ----
test_that("h_df_1d_bw works as expected for a model with only intercept", {
object <- mmrm(
formula = FEV1 ~ us(AVISIT | USUBJID),
data = fev_data
)
result <- expect_silent(h_df_1d_bw(object, 1))
expect_list(result)
expect_equal(result$est, 42.8338, tolerance = 1e-4)
expect_equal(result$se, 0.3509, tolerance = 1e-4)
expect_identical(result$df, 340L)
expect_equal(result$t_stat, 122.07, tolerance = 1e-4)
expect_true(result$p_val < 0.0001)
})
test_that("h_df_1d_bw works as expected for univariate linear combination contrasts", {
object <- mmrm(
formula = FEV1 ~ ARMCD + RACE + us(AVISIT | USUBJID),
data = fev_data
)
contrast <- c(0, 0, 1, -1)
result <- expect_silent(h_df_1d_bw(object, contrast))
expected_df <- 193L # Because non-zero entries correspond to RACE which is a between-variable.
expect_identical(result$df, expected_df)
contrast <- c(1, 0, -1, 0)
result <- expect_silent(h_df_1d_bw(object, contrast))
expected_df <- 193L # Because mixed with intercept does not change the minimum.
expect_identical(result$df, expected_df)
})
test_that("h_df_1d_bw works as expected for singular fits", {
dat <- fev_data
dat$ones <- 1
object <- mmrm(
formula = FEV1 ~ ones + us(AVISIT | USUBJID),
data = dat
)
object2 <- mmrm(
formula = FEV1 ~ us(AVISIT | USUBJID),
data = fev_data
)
result <- expect_silent(h_df_1d_bw(object, 1))
expected <- expect_silent(h_df_1d_bw(object2, 1))
expect_identical(result, expected)
})
# h_df_md_bw ----
test_that("h_df_md_bw works as expected - between effect", {
skip_if_r_devel_linux_clang()
object <- get_mmrm()
contrast <- matrix(data = 0, nrow = 2, ncol = length(component(object, "beta_est")))
contrast[1, 2] <- contrast[2, 3] <- 1
result <- expect_silent(h_df_md_bw(object, contrast))
expect_list(result)
expect_identical(result$num_df, 2L)
expect_identical(result$denom_df, 192L)
expect_equal(result$f_stat, 36.91, tolerance = 1e-3)
expect_true(result$p_val < 0.0001)
})
test_that("h_df_md_bw works as expected - within effect", {
skip_if_r_devel_linux_clang()
object <- get_mmrm()
contrast <- matrix(data = 0, nrow = 2, ncol = length(component(object, "beta_est")))
contrast[1, 6] <- contrast[2, 7] <- 1
result <- expect_silent(h_df_md_bw(object, contrast))
expect_list(result)
expect_identical(result$num_df, 2L)
expect_identical(result$denom_df, 334L)
expect_equal(result$f_stat, 80.96, tolerance = 1e-3)
expect_true(result$p_val < 0.0001)
})
test_that("h_df_md_bw works as expected - both effects", {
skip_if_r_devel_linux_clang()
object <- get_mmrm()
contrast <- matrix(data = 0, nrow = 2, ncol = length(component(object, "beta_est")))
contrast[1, 2] <- contrast[2, 3] <- contrast[1, 6] <- contrast[2, 7] <- 1
result <- expect_silent(h_df_md_bw(object, contrast))
expect_list(result)
expect_identical(result$num_df, 2L)
expect_identical(result$denom_df, 192L)
expect_equal(result$f_stat, 117.65, tolerance = 1e-3)
expect_true(result$p_val < 0.0001)
})
test_that("h_df_md_bw works as expected for rank deficient model", {
skip_if_r_devel_linux_clang()
object <- get_mmrm_rank_deficient()
contrast <- matrix(data = 0, nrow = 2, ncol = length(component(object, "beta_est")))
contrast[1, 2] <- contrast[2, 3] <- 1
result <- expect_silent(h_df_md_bw(object, contrast))
object2 <- get_mmrm()
expected <- expect_silent(h_df_md_bw(object2, contrast))
expect_identical(result, expected)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.