Nothing
get_lsmeans_example <- function() {
vars <- list(
response = "FEV1",
id = "USUBJID",
arm = "ARMCD",
visit = "AVISIT"
)
fit <- mmrm::mmrm(
formula = FEV1 ~ ARMCD * AVISIT + us(AVISIT | USUBJID),
data = mmrm_test_data
)
emmeans_res <- h_get_emmeans_res(
fit = fit,
vars = vars,
weights = "proportional"
)
list(
vars = vars,
fit = fit,
emmeans_res = emmeans_res
)
}
get_lsmeans_example_no_arm <- function() {
vars <- list(
response = "FEV1",
id = "USUBJID",
visit = "AVISIT"
)
fit <- mmrm::mmrm(
formula = FEV1 ~ AVISIT + us(AVISIT | USUBJID),
data = mmrm_test_data,
optimizer = "nlminb"
)
emmeans_res <- h_get_emmeans_res(
fit = fit,
vars = vars,
weights = "proportional"
)
list(
vars = vars,
fit = fit,
emmeans_res = emmeans_res
)
}
# h_get_emmeans_res ----
test_that("h_get_emmeans_res works as expected", {
vars <- list(
response = "FEV1",
id = "USUBJID",
arm = "ARMCD",
visit = "AVISIT"
)
fit <- mmrm::mmrm(
formula = FEV1 ~ ARMCD * AVISIT + us(AVISIT | USUBJID),
data = mmrm_test_data
)
weights <- "proportional"
result <- expect_silent(h_get_emmeans_res(
fit = fit,
vars = vars,
weights = weights
))
expect_list(result)
expect_class(result$object, "emmGrid")
expect_class(result$grid, "data.frame")
expect_named(result$grid, c("AVISIT", "ARMCD", "n"))
expect_identical(nrow(result$grid), nrow(result$object@grid))
datfull <- na.omit(fit$data)
assert_true(identical(nrow(datfull), length(fit$tmb_data$y_vector)))
ns <- datfull %>%
dplyr::group_by(ARMCD, AVISIT) %>%
dplyr::summarize(n_expected = dplyr::n())
compare_grid <- result$grid %>% dplyr::full_join(ns, by = join_by(AVISIT, ARMCD))
expect_identical(compare_grid$n, compare_grid$n_expected)
})
test_that("h_get_emmeans_res works as expected without arm variable", {
vars <- list(
response = "FEV1",
id = "USUBJID",
visit = "AVISIT"
)
fit <- mmrm::mmrm(
formula = FEV1 ~ AVISIT + us(AVISIT | USUBJID),
data = mmrm_test_data,
optimizer = "nlminb"
)
weights <- "proportional"
result <- expect_silent(h_get_emmeans_res(
fit = fit,
vars = vars,
weights = weights
))
expect_list(result)
expect_class(result$object, "emmGrid")
expect_class(result$grid, "data.frame")
expect_named(result$grid, c("AVISIT", "n"))
expect_identical(nrow(result$grid), nrow(result$object@grid))
})
# h_get_average_visit_specs ----
test_that("h_get_average_visit_specs works as expected", {
example <- get_lsmeans_example()
averages <- list(
"VIS1+3" = c("VIS1", "VIS3"),
"VIS2+4" = c("VIS2", "VIS4")
)
result <- expect_silent(h_get_average_visit_specs(
emmeans_res = example$emmeans_res,
vars = example$vars,
averages = averages,
fit = example$fit
))
expected <- list(
coefs = list(
"PBO.VIS1+3" = c(0.5, 0, 0.5, 0, 0, 0, 0, 0),
"TRT.VIS1+3" = c(0, 0, 0, 0, 0.5, 0, 0.5, 0),
"PBO.VIS2+4" = c(0, 0.5, 0, 0.5, 0, 0, 0, 0),
"TRT.VIS2+4" = c(0, 0, 0, 0, 0, 0.5, 0, 0.5)
),
grid = data.frame(
ARMCD = c("PBO", "TRT", "PBO", "TRT"),
AVISIT = c("VIS1+3", "VIS1+3", "VIS2+4", "VIS2+4"),
n = c(94L, 85L, 91L, 88L)
)
)
expect_identical(result, expected)
})
test_that("h_get_average_visit_specs gives error if not all visits are correct", {
example <- get_lsmeans_example()
averages <- list(
"VIS4+5" = c("VIS4", "VIS5") # VIS5 is not included in data.
)
expect_error(
h_get_average_visit_specs(
emmeans_res = example$emmeans_res,
vars = example$vars,
averages = averages,
fit = example$fit
),
"Must be a subset of {'VIS1','VIS2','VIS3','VIS4'}",
fixed = TRUE
)
})
test_that("h_get_average_visit_specs works as expected without arm", {
example <- get_lsmeans_example_no_arm()
averages <- list(
"VIS1+3" = c("VIS1", "VIS3"),
"VIS2+4" = c("VIS2", "VIS4")
)
result <- expect_silent(h_get_average_visit_specs(
emmeans_res = example$emmeans_res,
vars = example$vars,
averages = averages,
fit = example$fit
))
expected <- list(
coefs = list(
"VIS1+3" = c(0.5, 0, 0.5, 0),
"VIS2+4" = c(0, 0.5, 0, 0.5)
),
grid = data.frame(
AVISIT = c("VIS1+3", "VIS2+4"),
n = c(179L, 179L)
)
)
expect_identical(result, expected)
})
test_that("h_get_average_visit_specs uses number of patients with any of the averaged visits as n", {
skip_on_ci()
small_dat <- data.frame(
FEV1 = c(1, 2, 3, 4, 5, 6),
AVISIT = factor(c("V1", "V1", "V2", "V3", "V3", "V4")),
USUBJID = c("A", "B", "A", "C", "D", "A")
)
vars <- list(
response = "FEV1",
id = "USUBJID",
visit = "AVISIT"
)
fit <- mmrm::mmrm(
formula = FEV1 ~ AVISIT + ar1(AVISIT | USUBJID),
data = small_dat
)
emmeans_res <- h_get_emmeans_res(
fit = fit,
vars = vars,
weights = "proportional"
)
averages <- list(
"V1+3" = c("V1", "V3"),
"V2+4" = c("V2", "V4")
)
avg_specs <- h_get_average_visit_specs(
emmeans_res = emmeans_res,
vars = vars,
averages = averages,
fit = fit
)
result <- avg_specs$grid
expected <- data.frame(
AVISIT = c("V1+3", "V2+4"),
n = c(4L, 1L)
)
expect_identical(result, expected)
})
# h_get_spec_visit_estimates ----
test_that("h_get_spec_visit_estimates works as expected", {
example <- get_lsmeans_example()
specs <- list(
coefs = list(
"PBO.VIS1+3" = c(0.5, 0, 0.5, 0, 0, 0, 0, 0),
"TRT.VIS1+3" = c(0, 0, 0, 0, 0.5, 0, 0.5, 0)
),
grid = data.frame(
ARMCD = c("PBO", "TRT"),
AVISIT = c("VIS1+3", "VIS1+3"),
n = c(68L, 67L)
)
)
result <- expect_silent(h_get_spec_visit_estimates(
emmeans_res = example$emmeans_res,
specs = specs,
conf_level = 0.9
))
expected <- data.frame(
ARMCD = c("PBO", "TRT"),
AVISIT = c("VIS1+3", "VIS1+3"),
n = c(68L, 67L),
estimate = c(37.86, 41.91),
se = c(0.517, 0.541),
df = c(171.1, 171.9),
lower_cl = c(37, 41),
upper_cl = c(38.7, 42.8)
)
expect_equal(result, expected, tolerance = 1e-3)
})
test_that("h_get_spec_visit_estimates produces test results optionally", {
example <- get_lsmeans_example()
specs <- list(
coefs = list(
"PBO.VIS1+3" = c(0.5, 0, 0.5, 0, 0, 0, 0, 0),
"TRT.VIS1+3" = c(0, 0, 0, 0, 0.5, 0, 0.5, 0)
),
grid = data.frame(
ARMCD = c("PBO", "TRT"),
AVISIT = c("VIS1+3", "VIS1+3"),
n = c(68L, 67L)
)
)
result <- expect_silent(h_get_spec_visit_estimates(
emmeans_res = example$emmeans_res,
specs = specs,
conf_level = 0.9,
tests = TRUE
))
expected <- data.frame(
ARMCD = c("PBO", "TRT"),
AVISIT = c("VIS1+3", "VIS1+3"),
n = c(68L, 67L),
estimate = c(37.86, 41.91),
se = c(0.517, 0.541),
df = c(171.1, 171.9),
lower_cl = c(37, 41),
upper_cl = c(38.7, 42.8),
t_stat = c(73.2, 77.4),
p_value = c(4.5e-131, 1.5e-135)
)
expect_equal(result, expected, tolerance = 1e-3)
})
test_that("h_get_spec_visit_estimates works without arm", {
example <- get_lsmeans_example_no_arm()
specs <- list(
coefs = list(
"VIS1+3" = c(0.5, 0, 0.5, 0)
),
grid = data.frame(
AVISIT = "VIS1+3",
n = 129L
)
)
result <- expect_silent(h_get_spec_visit_estimates(
emmeans_res = example$emmeans_res,
specs = specs,
conf_level = 0.9
))
expect_snapshot_value(result, tolerance = 1e-3, style = "serialize")
})
# h_get_single_visit_estimates ----
test_that("h_get_single_visit_estimates works as expected", {
example <- get_lsmeans_example()
result <- expect_silent(h_get_single_visit_estimates(
emmeans_res = example$emmeans_res,
conf_level = 0.8
))
expect_snapshot_value(result, tolerance = 1e-3, style = "serialize")
})
test_that("h_get_single_visit_estimates works without arm", {
example <- get_lsmeans_example_no_arm()
result <- expect_silent(h_get_single_visit_estimates(
emmeans_res = example$emmeans_res,
conf_level = 0.8
))
expect_snapshot_value(result, tolerance = 1e-3, style = "serialize")
})
# h_get_relative_reduc_df ----
test_that("h_get_relative_reduc_df works as expected", {
example <- get_lsmeans_example()
estimates <- h_get_single_visit_estimates(
emmeans_res = example$emmeans_res,
conf_level = 0.8
)
result <- expect_silent(h_get_relative_reduc_df(
estimates = estimates,
vars = example$vars
))
expect_snapshot_value(result, tolerance = 1e-3, style = "serialize")
})
# h_single_visit_contrast_specs ----
test_that("h_single_visit_contrast_specs works as expected", {
example <- get_lsmeans_example()
result <- expect_silent(h_single_visit_contrast_specs(
emmeans_res = example$emmeans_res,
vars = example$vars
))
expected <- list(
coefs = list(
"TRT.VIS1" = c(-1, 0, 0, 0, 1, 0, 0, 0),
"TRT.VIS2" = c(0, -1, 0, 0, 0, 1, 0, 0),
"TRT.VIS3" = c(0, 0, -1, 0, 0, 0, 1, 0),
"TRT.VIS4" = c(0, 0, 0, -1, 0, 0, 0, 1)
),
grid = data.frame(
ARMCD = rep("TRT", 4),
AVISIT = c("VIS1", "VIS2", "VIS3", "VIS4")
)
)
expect_identical(result, expected)
})
# h_average_visit_contrast_specs ----
test_that("h_average_visit_contrast_specs works as expected", {
example <- get_lsmeans_example()
single_specs <- h_single_visit_contrast_specs(
emmeans_res = example$emmeans_res,
vars = example$vars
)
averages <- list(
"VIS1+3" = c("VIS1", "VIS3"),
"VIS2+4" = c("VIS2", "VIS4")
)
result <- expect_silent(h_average_visit_contrast_specs(
specs = single_specs,
averages = averages
))
expected <- list(
coefs = list(
"TRT.VIS1+3" = c(-0.5, 0, -0.5, 0, 0.5, 0, 0.5, 0),
"TRT.VIS2+4" = c(0, -0.5, 0, -0.5, 0, 0.5, 0, 0.5)
),
grid = data.frame(
ARMCD = c("TRT", "TRT"),
AVISIT = c("VIS1+3", "VIS2+4")
)
)
expect_identical(result, expected)
})
test_that("h_average_visit_contrast_specs works also for 3 arms and many visits", {
single_specs <- list(
coefs = list(
`ARM B.Week 4` = c(
-1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
), `ARM A.Week 4` = c(
-1,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
),
`ARM B.Week 8` = c(
0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0
), `ARM A.Week 8` = c(
0, -1,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0
), `ARM B.Week 12` = c(
0, 0, -1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
), `ARM A.Week 12` = c(
0,
0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0
), `ARM B.Week 16` = c(
0, 0, 0, -1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
), `ARM A.Week 16` = c(
0,
0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0
), `ARM B.Week 20` = c(
0, 0, 0, 0, -1, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
), `ARM A.Week 20` = c(
0,
0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
0, 0, 0
), `ARM B.Week 24` = c(
0, 0, 0, 0, 0, -1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
), `ARM A.Week 24` = c(
0,
0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
0, 0, 0
), `ARM B.Week 28` = c(
0, 0, 0, 0, 0, 0, -1, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
), `ARM A.Week 28` = c(
0,
0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
0, 0, 0
), `ARM B.Week 32` = c(
0, 0, 0, 0, 0, 0, 0, -1, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
), `ARM A.Week 32` = c(
0,
0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
0, 0, 0
), `ARM B.Week 36` = c(
0, 0, 0, 0, 0, 0, 0, 0, -1,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
), `ARM A.Week 36` = c(
0,
0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
0, 0, 0
), `ARM B.Week 40` = c(
0, 0, 0, 0, 0, 0, 0, 0, 0,
-1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
), `ARM A.Week 40` = c(
0,
0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,
0, 0, 0
), `ARM B.Week 44` = c(
0, 0, 0, 0, 0, 0, 0, 0, 0,
0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
), `ARM A.Week 44` = c(
0,
0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
0, 0, 0
), `ARM B.Week 48` = c(
0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
), `ARM A.Week 48` = c(
0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
1, 0, 0
), `ARM B.Week 52` = c(
0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
), `ARM A.Week 52` = c(
0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 1, 0
), `ARM B.Week 56` = c(
0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
), `ARM A.Week 56` = c(
0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, -1, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 1
)
), grid = data.frame(TRT01P = c(
"ARM B", "ARM A",
"ARM B", "ARM A", "ARM B", "ARM A", "ARM B", "ARM A", "ARM B",
"ARM A", "ARM B", "ARM A", "ARM B", "ARM A", "ARM B", "ARM A",
"ARM B", "ARM A", "ARM B", "ARM A", "ARM B", "ARM A", "ARM B",
"ARM A", "ARM B", "ARM A", "ARM B", "ARM A"
), AVISIT = c(
"Week 4",
"Week 4", "Week 8", "Week 8", "Week 12", "Week 12", "Week 16",
"Week 16", "Week 20", "Week 20", "Week 24", "Week 24", "Week 28",
"Week 28", "Week 32", "Week 32", "Week 36", "Week 36", "Week 40",
"Week 40", "Week 44", "Week 44", "Week 48", "Week 48", "Week 52",
"Week 52", "Week 56", "Week 56"
))
)
averages <- list("average of Week 40 & 44" = c("Week 40", "Week 44"))
result <- expect_silent(h_average_visit_contrast_specs(
specs = single_specs,
averages = averages
))
expected <- list(
coefs = list(
"ARM A.average of Week 40 & 44" = c(
0, 0, 0,
0, 0, 0, 0, 0, 0, -0.5, -0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0.5, 0, 0,
0
),
"ARM B.average of Week 40 & 44" = c(
0, 0, 0, 0, 0, 0, 0,
0, 0, -0.5, -0.5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0.5, 0.5,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
)
),
grid = data.frame(
TRT01P = c("ARM A", "ARM B"),
AVISIT = c("average of Week 40 & 44", "average of Week 40 & 44")
)
)
expect_identical(result, expected)
})
# get_mmrm_lsmeans ----
test_that("get_mmrm_lsmeans can calculate the LS mean results", {
vars <- list(
response = "FEV1",
id = "USUBJID",
arm = "ARMCD",
visit = "AVISIT"
)
fit <- mmrm::mmrm(
formula = FEV1 ~ ARMCD * AVISIT + us(AVISIT | USUBJID),
data = mmrm_test_data
)
conf_level <- 0.95
weights <- "proportional"
averages <- list(
"VIS1+3" = c("VIS1", "VIS3"),
"VIS2+4" = c("VIS2", "VIS4")
)
expect_silent(result <- get_mmrm_lsmeans(
fit = fit,
vars = vars,
conf_level = conf_level,
averages = averages,
weights = weights
))
expect_list(result)
expect_data_frame(result$estimates)
expect_data_frame(result$contrasts)
expect_identical(attr(result, "weights"), weights)
expect_identical(attr(result, "averages"), averages)
})
test_that("get_mmrm_lsmeans preserves combined arm levels.", {
vars <- list(
response = "FEV1",
id = "USUBJID",
arm = "ARMCD",
visit = "AVISIT"
)
fit <- mmrm::mmrm(
formula = FEV1 ~ ARMCD * AVISIT + us(AVISIT | USUBJID),
data = mmrm_test_data
)
result <- get_mmrm_lsmeans(
fit = fit,
vars = vars,
conf_level = 0.95,
weights = "proportional"
)
expect_identical(
levels(mmrm_test_data$ARMCD),
levels(result$estimates$ARMCD)
)
expect_identical(
levels(mmrm_test_data$ARMCD)[-1],
levels(result$contrasts$ARMCD)
)
})
test_that("get_mmrm_lsmeans works without arm", {
vars <- list(
response = "FEV1",
id = "USUBJID",
visit = "AVISIT"
)
fit <- mmrm::mmrm(
formula = FEV1 ~ AVISIT + us(AVISIT | USUBJID),
data = mmrm_test_data,
optimizer = "nlminb"
)
conf_level <- 0.95
weights <- "proportional"
averages <- list(
"VIS1+3" = c("VIS1", "VIS3"),
"VIS2+4" = c("VIS2", "VIS4")
)
expect_silent(result <- get_mmrm_lsmeans(
fit = fit,
vars = vars,
conf_level = conf_level,
averages = averages,
weights = weights
))
expect_list(result)
expect_data_frame(result$estimates)
expect_snapshot_value(result$estimates, tolerance = 1e-3, style = "serialize")
expect_null(result$contrasts)
})
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.