Skip to contents

Teal Module: Teal module for Mixed Model Repeated Measurements (MMRM) analysis

Usage

tm_a_mmrm(
  label,
  dataname,
  parentname = ifelse(inherits(arm_var, "data_extract_spec"),
    teal.transform::datanames_input(arm_var), "ADSL"),
  aval_var,
  id_var,
  arm_var,
  visit_var,
  cov_var,
  arm_ref_comp = NULL,
  paramcd,
  method = teal.transform::choices_selected(c("Satterthwaite", "Kenward-Roger",
    "Kenward-Roger-Linear"), "Satterthwaite", keep_order = TRUE),
  conf_level = teal.transform::choices_selected(c(0.95, 0.9, 0.8), 0.95, keep_order =
    TRUE),
  plot_height = c(700L, 200L, 2000L),
  plot_width = NULL,
  pre_output = NULL,
  post_output = NULL,
  basic_table_args = teal.widgets::basic_table_args(),
  ggplot2_args = teal.widgets::ggplot2_args()
)

Arguments

label

(character)
menu item label of the module in the teal app.

dataname

(character)
analysis data used in teal module.

parentname

(character)
parent analysis data used in teal module, usually this refers to ADSL.

aval_var

(choices_selected or data_extract_spec)
object with all available choices and preselected option for the analysis variable.

id_var

(choices_selected or data_extract_spec)
object specifying the variable name for subject id.

arm_var

(choices_selected or data_extract_spec)
object with all available choices and preselected option for variable names that can be used as arm_var. It defines the grouping variable(s) in the results table. If there are two elements selected for arm_var, second variable will be nested under the first variable.

visit_var

(choices_selected or data_extract_spec)
object with all available choices and preselected option for variable names that can be used as visit variable. Must be a factor in dataname.

cov_var

(choices_selected or data_extract_spec)
object with all available choices and preselected option for the covariates variables.

arm_ref_comp

optional, (list)
If specified it must be a named list with each element corresponding to an arm variable in ADSL and the element must be another list (possibly with delayed teal.transform::variable_choices() or delayed teal.transform::value_choices() with the elements named ref and comp that the defined the default reference and comparison arms when the arm variable is changed.

paramcd

(choices_selected or data_extract_spec)
variable value designating the studied parameter.

method

(choices_selected)
object with all available choices and preselected option for the adjustment method.

conf_level

(choices_selected)
object with all available choices and preselected option for the confidence level, each within range of (0, 1).

plot_height

optional, (numeric)
a vector of length three with c(value, min, max). Specifies the height of the main plot and renders a slider on the plot to interactively adjust the plot height.

plot_width

optional, (numeric)
a vector of length three with c(value, min, max). Specifies the width of the main plot and renders a slider on the plot to interactively adjust the plot width.

pre_output

optional, (shiny.tag)
with text placed before the output to put the output into context. For example a title.

post_output

optional, (shiny.tag)
with text placed after the output to put the output into context. For example the shiny::helpText() elements are useful.

basic_table_args

optional, (basic_table_args)
object created by teal.widgets::basic_table_args() with settings for the module table. The argument is merged with option teal.basic_table_args and with default module arguments (hard coded in the module body).

For more details, see the vignette: vignette("custom-basic-table-arguments", package = "teal.widgets").

ggplot2_args

optional, (ggplot2_args)
object created by teal.widgets::ggplot2_args() with settings for all the plots or named list of ggplot2_args objects for plot-specific settings. List names should match the following:
c("default", "lsmeans", "diagnostic"). The argument is merged with option teal.ggplot2_args and with default module arguments (hard coded in the module body).
For more details, see the help vignette:
vignette("custom-ggplot2-arguments", package = "teal.widgets").

Note

The ordering of the input data sets can lead to slightly different numerical results or different convergence behavior. This is a known observation with the used package lme4. However, once convergence is achieved, the results are reliable up to numerical precision.

Examples

adsl <- tmc_ex_adsl
adqs <- tmc_ex_adqs %>%
  dplyr::filter(ABLFL != "Y" & ABLFL2 != "Y") %>%
  dplyr::filter(AVISIT %in% c("WEEK 1 DAY 8", "WEEK 2 DAY 15", "WEEK 3 DAY 22")) %>%
  dplyr::mutate(
    AVISIT = as.factor(AVISIT),
    AVISITN = rank(AVISITN) %>%
      as.factor() %>%
      as.numeric() %>%
      as.factor() # making consecutive numeric factor
  )

arm_ref_comp <- list(
  ARMCD = list(
    ref = "ARM B",
    comp = c("ARM A", "ARM C")
  )
)

app <- init(
  data = cdisc_data(
    cdisc_dataset("ADSL", adsl),
    cdisc_dataset("ADQS", adqs)
  ),
  modules = modules(
    tm_a_mmrm(
      label = "MMRM",
      dataname = "ADQS",
      aval_var = choices_selected(c("AVAL", "CHG"), "AVAL"),
      id_var = choices_selected(c("USUBJID", "SUBJID"), "USUBJID"),
      arm_var = choices_selected(c("ARM", "ARMCD"), "ARM"),
      visit_var = choices_selected(c("AVISIT", "AVISITN"), "AVISIT"),
      arm_ref_comp = arm_ref_comp,
      paramcd = choices_selected(
        choices = value_choices(adqs, "PARAMCD", "PARAM"),
        selected = "FKSI-FWB"
      ),
      cov_var = choices_selected(c("BASE", "AGE", "SEX", "BASE:AVISIT"), NULL)
    )
  )
)
#> [INFO] 2023-05-31 23:41:25.7238 pid:3043 token:[] teal.modules.clinical Initializing tm_a_mmrm
if (interactive()) {
  shinyApp(app$ui, app$server)
}