# h_get_kr_comp ----
test_that("h_get_kr_comp works as expected on ar1 ungrouped mmrm", {
fit <- mmrm(FEV1 ~ ARMCD + ar1(AVISIT | USUBJID), data = fev_data, reml = TRUE, method = "Kenward-Roger")
expect_snapshot_tolerance(fit$kr_comp)
})
test_that("h_get_kr_comp works as expected on ar1 grouped mmrm", {
fit <- mmrm(FEV1 ~ ARMCD + ar1(AVISIT | SEX / USUBJID), data = fev_data, reml = TRUE, method = "Kenward-Roger")
expect_snapshot_tolerance(fit$kr_comp)
})
test_that("h_get_kr_comp works as expected on ar1h ungrouped mmrm", {
fit <- mmrm(FEV1 ~ ARMCD + ar1h(AVISIT | USUBJID), data = fev_data, reml = TRUE, method = "Kenward-Roger")
expect_snapshot_tolerance(fit$kr_comp)
})
test_that("h_get_kr_comp works as expected on ar1h grouped mmrm", {
fit <- mmrm(FEV1 ~ ARMCD + ar1h(AVISIT | SEX / USUBJID), data = fev_data, reml = TRUE, method = "Kenward-Roger")
expect_snapshot_tolerance(fit$kr_comp)
})
test_that("h_get_kr_comp works as expected on cs ungrouped mmrm", {
fit <- mmrm(FEV1 ~ ARMCD + cs(AVISIT | USUBJID), data = fev_data, reml = TRUE, method = "Kenward-Roger")
expect_snapshot_tolerance(fit$kr_comp)
})
test_that("h_get_kr_comp works as expected on cs grouped mmrm", {
fit <- mmrm(FEV1 ~ ARMCD + cs(AVISIT | SEX / USUBJID), data = fev_data, reml = TRUE, method = "Kenward-Roger")
expect_snapshot_tolerance(fit$kr_comp)
})
test_that("h_get_kr_comp works as expected on csh ungrouped mmrm", {
fit <- mmrm(FEV1 ~ ARMCD + csh(AVISIT | USUBJID), data = fev_data, reml = TRUE, method = "Kenward-Roger")
expect_snapshot_tolerance(fit$kr_comp)
})
test_that("h_get_kr_comp works as expected on csh grouped mmrm", {
fit <- mmrm(FEV1 ~ ARMCD + csh(AVISIT | SEX / USUBJID), data = fev_data, reml = TRUE, method = "Kenward-Roger")
expect_snapshot_tolerance(fit$kr_comp)
})
test_that("h_get_kr_comp works as expected on toep ungrouped mmrm", {
fit <- mmrm(FEV1 ~ ARMCD + toep(AVISIT | USUBJID), data = fev_data, reml = TRUE, method = "Kenward-Roger")
expect_snapshot_tolerance(fit$kr_comp)
})
test_that("h_get_kr_comp works as expected on toep grouped mmrm", {
fit <- mmrm(FEV1 ~ ARMCD + toep(AVISIT | SEX / USUBJID), data = fev_data, reml = TRUE, method = "Kenward-Roger")
expect_snapshot_tolerance(fit$kr_comp)
})
test_that("h_get_kr_comp works as expected on toeph ungrouped mmrm", {
fit <- mmrm(FEV1 ~ ARMCD + toeph(AVISIT | USUBJID), data = fev_data, reml = TRUE, method = "Kenward-Roger")
expect_snapshot_tolerance(fit$kr_comp)
})
test_that("h_get_kr_comp works as expected on toeph grouped mmrm", {
fit <- mmrm(FEV1 ~ ARMCD + toeph(AVISIT | SEX / USUBJID), data = fev_data, reml = TRUE, method = "Kenward-Roger")
expect_snapshot_tolerance(fit$kr_comp)
})
test_that("h_get_kr_comp works as expected on us ungrouped mmrm", {
fit <- mmrm(FEV1 ~ ARMCD + us(AVISIT | USUBJID), data = fev_data, reml = TRUE, method = "Kenward-Roger")
expect_snapshot_tolerance(fit$kr_comp)
})
test_that("h_get_kr_comp works as expected on us grouped mmrm", {
fit <- mmrm(FEV1 ~ ARMCD + us(AVISIT | SEX / USUBJID), data = fev_data, reml = TRUE, method = "Kenward-Roger")
expect_snapshot_tolerance(fit$kr_comp)
})
test_that("h_get_kr_comp works as expected on adh ungrouped mmrm", {
fit <- mmrm(FEV1 ~ ARMCD + adh(AVISIT | USUBJID), data = fev_data, reml = TRUE, method = "Kenward-Roger")
expect_snapshot_tolerance(fit$kr_comp)
})
test_that("h_get_kr_comp works as expected on adh grouped mmrm", {
fit <- mmrm(FEV1 ~ ARMCD + adh(AVISIT | SEX / USUBJID), data = fev_data, reml = TRUE, method = "Kenward-Roger")
expect_snapshot_tolerance(fit$kr_comp)
})
test_that("h_get_kr_comp works as expected on ad ungrouped mmrm", {
fit <- mmrm(FEV1 ~ ARMCD + ad(AVISIT | USUBJID), data = fev_data, reml = TRUE, method = "Kenward-Roger")
expect_snapshot_tolerance(fit$kr_comp)
})
test_that("h_get_kr_comp works as expected on ad grouped mmrm", {
fit <- mmrm(FEV1 ~ ARMCD + ad(AVISIT | SEX / USUBJID), data = fev_data, reml = TRUE, method = "Kenward-Roger")
expect_snapshot_tolerance(fit$kr_comp)
})
test_that("h_get_kr_comp works as expected on spatial mmrm", {
fit <- mmrm(
FEV1 ~ ARMCD + sp_exp(VISITN, VISITN2 | USUBJID),
data = fev_data, reml = TRUE,
method = "Kenward-Roger"
)
expect_snapshot_tolerance(fit$kr_comp)
})
test_that("h_get_kr_comp works as expected on grouped spatial mmrm", {
fit <- mmrm(
FEV1 ~ ARMCD + sp_exp(VISITN, VISITN2 | SEX / USUBJID),
data = fev_data, reml = TRUE,
method = "Kenward-Roger"
)
expect_snapshot_tolerance(fit$kr_comp)
})
# df_1d ----
## auto-regressive ----
### kr ----
test_that("kr give similar results as SAS for ar1", {
fit <- mmrm(FEV1 ~ ARMCD + ar1(AVISIT | USUBJID), data = fev_data, method = "Kenward-Roger")
res <- df_1d(fit, contrast = c(0, 1))
expected <- c(0.95865439662225, 188.46934887972)
expect_equal(res$df, expected[2], tolerance = 1e-4)
expect_equal(res$se, expected[1], tolerance = 1e-4)
})
## kr linear ----
test_that("kr linear give similar results as SAS for ar1", {
fit <- mmrm(
FEV1 ~ ARMCD + ar1(AVISIT | USUBJID),
data = fev_data, method = "Kenward-Roger", vcov = "Kenward-Roger-Linear"
)
res <- df_1d(fit, contrast = c(0, 1))
expected <- c(0.96058142305176, 188.46934887972)
expect_equal(res$df, expected[2], tolerance = 1e-4)
expect_equal(res$se, expected[1], tolerance = 1e-4)
})
## Heterogeneous auto-regressive ----
### kr ----
test_that("kr give similar results as SAS for ar1h", {
fit <- mmrm(FEV1 ~ ARMCD + ar1h(AVISIT | USUBJID), data = fev_data, method = "Kenward-Roger")
res <- df_1d(fit, contrast = c(0, 1))
expected <- c(0.7590316099633, 188.225339095373)
expect_equal(res$df, expected[2], tolerance = 1e-4)
expect_equal(res$se, expected[1], tolerance = 1e-2)
})
### kr linear ----
test_that("kr linear give similar results as SAS for ar1h", {
fit <- mmrm(
FEV1 ~ ARMCD + ar1h(AVISIT | USUBJID),
data = fev_data, method = "Kenward-Roger", vcov = "Kenward-Roger-Linear"
)
res <- df_1d(fit, contrast = c(0, 1))
expected <- c(0.75924807546934, 188.225339095373)
expect_equal(res$df, expected[2], tolerance = 1e-4)
expect_equal(res$se, expected[1], tolerance = 1e-3)
})
## compound symmetry ----
### kr ----
test_that("kr give similar results as SAS for cs", {
fit <- mmrm(FEV1 ~ ARMCD + cs(AVISIT | USUBJID), data = fev_data, method = "Kenward-Roger")
res <- df_1d(fit, contrast = c(0, 1))
expected <- c(0.7964696053595, 177.038485931223)
expect_equal(res$df, expected[2], tolerance = 1e-4)
expect_equal(res$se, expected[1], tolerance = 1e-3)
})
### kr linear ----
test_that("kr linear give similar results as SAS for cs", {
fit <- mmrm(
FEV1 ~ ARMCD + cs(AVISIT | USUBJID),
data = fev_data, method = "Kenward-Roger", vcov = "Kenward-Roger-Linear"
)
res <- df_1d(fit, contrast = c(0, 1))
expected <- c(0.7964696053595, 177.038485931223)
expect_equal(res$df, expected[2], tolerance = 1e-4)
expect_equal(res$se, expected[1], tolerance = 1e-4)
})
## Heterogeneous compound symmetry ----
### kr ----
test_that("kr give similar results as SAS for csh", {
fit <- mmrm(FEV1 ~ ARMCD + csh(AVISIT | USUBJID), data = fev_data, method = "Kenward-Roger")
res <- df_1d(fit, contrast = c(0, 1))
expected <- c(0.67414806011886, 190.737701349941)
expect_equal(res$df, expected[2], tolerance = 1e-3)
expect_equal(res$se, expected[1], tolerance = 1e-2)
})
### kr linear ----
test_that("kr linear give similar results as SAS for csh", {
fit <- mmrm(
FEV1 ~ ARMCD + csh(AVISIT | USUBJID),
data = fev_data, method = "Kenward-Roger", vcov = "Kenward-Roger-Linear"
)
res <- df_1d(fit, contrast = c(0, 1))
expected <- c(0.67403858183242, 190.737701349941)
expect_equal(res$df, expected[2], tolerance = 1e-3)
expect_equal(res$se, expected[1], tolerance = 1e-2)
})
## Heterogeneous ante-dependence ----
### kr ----
test_that("kr give similar results as SAS for adh", {
fit <- mmrm(FEV1 ~ ARMCD + adh(AVISIT | USUBJID), data = fev_data, method = "Kenward-Roger")
res <- df_1d(fit, contrast = c(0, 1))
expected <- c(0.66172017349971, 162.393385281755)
expect_equal(res$df, expected[2], tolerance = 1e-3)
expect_equal(res$se, expected[1], tolerance = 1e-2)
})
### kr linear ----
test_that("kr linear give similar results as SAS for adh", {
fit <- mmrm(
FEV1 ~ ARMCD + adh(AVISIT | USUBJID),
data = fev_data, method = "Kenward-Roger", vcov = "Kenward-Roger-Linear"
)
res <- df_1d(fit, contrast = c(0, 1))
expected <- c(0.66158550758897, 162.393385281755)
expect_equal(res$df, expected[2], tolerance = 1e-3)
expect_equal(res$se, expected[1], tolerance = 1e-3)
})
## Toeplitz ----
### kr ----
test_that("kr give similar results as SAS for toep", {
fit <- mmrm(FEV1 ~ ARMCD + toep(AVISIT | USUBJID), data = fev_data, method = "Kenward-Roger")
res <- df_1d(fit, contrast = c(0, 1))
expected <- c(0.87839805519623, 160.027408337368)
expect_equal(res$df, expected[2], tolerance = 1e-3)
expect_equal(res$se, expected[1], tolerance = 1e-2)
})
### kr linear
test_that("kr linear give similar results as SAS for toep", {
fit <- mmrm(
FEV1 ~ ARMCD + toep(AVISIT | USUBJID),
data = fev_data, method = "Kenward-Roger", vcov = "Kenward-Roger-Linear"
)
res <- df_1d(fit, contrast = c(0, 1))
expected <- c(0.87839805519623, 160.027408337368)
expect_equal(res$df, expected[2], tolerance = 1e-3)
expect_equal(res$se, expected[1], tolerance = 1e-3)
})
## Heterogeneous Toeplitz ----
### kr ----
test_that("kr give similar results as SAS for toeph", {
fit <- mmrm(FEV1 ~ ARMCD + toeph(AVISIT | USUBJID), data = fev_data, method = "Kenward-Roger")
res <- df_1d(fit, contrast = c(0, 1))
expected <- c(0.72543828853831, 180.062730071701)
expect_equal(res$df, expected[2], tolerance = 1e-3)
expect_equal(res$se, expected[1], tolerance = 1e-2)
})
### kr linear
test_that("kr linear give similar results as SAS for toeph", {
fit <- mmrm(
FEV1 ~ ARMCD + toeph(AVISIT | USUBJID),
data = fev_data, method = "Kenward-Roger", vcov = "Kenward-Roger-Linear"
)
res <- df_1d(fit, contrast = c(0, 1))
expected <- c(0.72537324518435, 180.062730071701)
expect_equal(res$df, expected[2], tolerance = 1e-3)
expect_equal(res$se, expected[1], tolerance = 1e-3)
})
## Unstructured ----
### kr ----
test_that("kr give similar results as SAS for unstructured", {
# Please note that in SAS, for unstructure covariance, Kenward-Roger and Kenward-Roger-Linear
# are identical because in their parameterization the second order derivatives are zero matrices.
# In `mmrm`, we are using different parameterization so the second order derivatives are non-zero.
# This will lead to differences in Kenward-Roger and Kenward-Roger-Linear.
fit <- mmrm(FEV1 ~ ARMCD + us(AVISIT | USUBJID), data = fev_data, method = "Kenward-Roger")
res <- df_1d(fit, contrast = c(0, 1))
expected <- c(0.66124382270307, 160.733266403768)
expect_equal(res$df, expected[2], tolerance = 1e-3)
expect_equal(res$se, expected[1], tolerance = 1e-1)
})
### kr linear
test_that("kr linear give similar results as SAS for unstructured", {
fit <- mmrm(
FEV1 ~ ARMCD + us(AVISIT | USUBJID),
data = fev_data, method = "Kenward-Roger", vcov = "Kenward-Roger-Linear"
)
res <- df_1d(fit, contrast = c(0, 1))
expected <- c(0.66124382270307, 160.73326640376)
expect_equal(res$df, expected[2], tolerance = 1e-3)
expect_equal(res$se, expected[1], tolerance = 1e-3)
})
## Spatial Exponential ----
### kr
test_that("kr give similar results as SAS for spatial exponential", {
fit <- mmrm(
FEV1 ~ ARMCD + sp_exp(VISITN, VISITN2 | USUBJID),
data = fev_data, method = "Kenward-Roger", vcov = "Kenward-Roger-Linear"
)
res <- df_1d(fit, contrast = c(0, 1))
expected <- c(0.90552903839818, 195.584197921463)
expect_equal(res$df, expected[2], tolerance = 1e-3)
expect_equal(res$se, expected[1], tolerance = 1e-3)
})
### kr linear
test_that("kr linear give similar results as SAS for spatial exponential", {
fit <- mmrm(
FEV1 ~ ARMCD + sp_exp(VISITN, VISITN2 | USUBJID),
data = fev_data, method = "Kenward-Roger", vcov = "Kenward-Roger-Linear"
)
res <- df_1d(fit, contrast = c(0, 1))
expected <- c(0.90527620094771, 195.584197921463)
expect_equal(res$df, expected[2], tolerance = 1e-3)
expect_equal(res$se, expected[1], tolerance = 1e-3)
})
# h_df_1d_kr ----
test_that("h_df_1d_kr works as expected in the standard case", {
object_mmrm_kr <- get_mmrm_kr()
expect_snapshot_tolerance(h_df_1d_kr(object_mmrm_kr, c(0, 1)))
expect_snapshot_tolerance(h_df_1d_kr(object_mmrm_kr, c(1, 1)))
})
# h_df_md_kr ----
test_that("h_df_md_kr works as expected in the standard case", {
object_mmrm_kr <- get_mmrm_kr()
expect_snapshot_tolerance(h_df_md_kr(object_mmrm_kr, matrix(c(0, 1, 1, 0), nrow = 2)))
expect_snapshot_tolerance(h_df_md_kr(object_mmrm_kr, matrix(c(0, -1, 1, 0), nrow = 2)))
})
# h_kr_df ----
test_that("h_kr_df works as expected in the standard case", {
object_mmrm_kr <- get_mmrm_kr()
kr_comp <- object_mmrm_kr$kr_comp
w <- component(object_mmrm_kr, "theta_vcov")
v_adj <- object_mmrm_kr$beta_vcov_adj
expect_snapshot_tolerance(
h_kr_df(v0 = object_mmrm_kr$beta_vcov, l = matrix(c(0, 1), nrow = 1), w = w, p = kr_comp$P),
style = "deparse"
)
})
# h_var_adj ----
test_that("h_var_adj works as expected in the standard case for Kenward-Roger", {
object_mmrm_kr <- get_mmrm_kr()
expect_snapshot_tolerance(h_var_adj(
v = object_mmrm_kr$beta_vcov,
w = component(object_mmrm_kr, "theta_vcov"),
p = object_mmrm_kr$kr_comp$P,
q = object_mmrm_kr$kr_comp$Q,
r = object_mmrm_kr$kr_comp$R,
linear = TRUE
))
})
test_that("h_var_adj works as expected in the standard case for Kenward-Roger-Linear", {
object_mmrm_kr <- get_mmrm_kr()
expect_snapshot_tolerance(h_var_adj(
v = object_mmrm_kr$beta_vcov,
w = component(object_mmrm_kr, "theta_vcov"),
p = object_mmrm_kr$kr_comp$P,
q = object_mmrm_kr$kr_comp$Q,
r = object_mmrm_kr$kr_comp$R,
linear = FALSE
))
})
# df_md ----
test_that("df_md works as expected for Kenward-Roger", {
object_mmrm_kr <- get_mmrm_kr()
contrast <- matrix(c(0, 1, 1, 0), nrow = 2)
result <- expect_silent(df_md(object_mmrm_kr, contrast))
expected <- list(
num_df = 2L,
denom_df = 188.65,
f_stat = 3913.72,
p_val = 2.576e-154
)
expect_equal(
result,
expected,
tolerance = 1e-4
)
})
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.