---
title: CMHT01
subtitle: Cochran-Mantel-Haenszel (CMH) Summary
---
------------------------------------------------------------------------
{{< include ../../_utils/envir_hook.qmd >}}
```{r setup, echo = FALSE, warning = FALSE, message = FALSE}
library(tern)
library(dplyr)
adsl <- random.cdisc.data::cadsl
adqs <- random.cdisc.data::cadqs
# Ensure character variables are converted to factors and empty strings and NAs are explicit missing levels.
adsl <- df_explicit_na(adsl)
adqs <- df_explicit_na(adqs)
```
```{r include = FALSE}
webr_code_labels <- c("setup")
```
{{< include ../../_utils/webr_no_include.qmd >}}
## Output
::::: panel-tabset
## Table of Single Parameter
::: {.panel-tabset .nav-justified group="webr"}
## {{< fa regular file-lines sm fw >}} Preview
```{r variant1, test = list(result_v1 = "result")}
anl_01 <- adqs %>%
filter(PARAMCD == "FKSI-FWB" & AVISIT == "WEEK 1 DAY 8") %>%
mutate(is_rsp = PCHG > 15) %>%
mutate(ARM = relevel(ARM, ref = "A: Drug X")) %>%
var_relabel(ARM = "Description of Planned Arm") %>%
mutate(strata = interaction(STRATA1, STRATA2, drop = TRUE))
lyt_01 <- basic_table(show_colcounts = TRUE) %>%
split_cols_by(var = "ARM", ref_group = "A: Drug X") %>%
estimate_proportion(vars = "is_rsp", table_names = "est_prop") %>%
estimate_proportion_diff(
var_labels = "Unstratified Analysis",
vars = "is_rsp",
show_labels = "visible",
table_names = "est_prop_diff"
) %>%
test_proportion_diff(vars = "is_rsp", table_names = "test_prop") %>%
estimate_odds_ratio(vars = "is_rsp", table_names = "est_or") %>%
estimate_proportion_diff(
var_labels = "Stratified Analysis",
vars = "is_rsp",
show_labels = "visible",
method = "cmh",
variables = list(strata = "strata"),
table_names = "est_prop_diff_strat"
) %>%
test_proportion_diff(
vars = "is_rsp",
method = "cmh",
variables = list(strata = "strata"),
table_names = "test_prop_strat"
) %>%
estimate_odds_ratio(
vars = "is_rsp",
variables = list(strata = "strata", arm = "ARM"),
table_names = "est_or_strat"
)
result <- build_table(
lyt = lyt_01,
df = anl_01,
alt_counts_df = adsl
)
result
```
```{r include = FALSE}
webr_code_labels <- c("variant1")
```
{{< include ../../_utils/webr.qmd >}}
:::
## Table of Multiple Parameters
::: {.panel-tabset .nav-justified group="webr"}
## {{< fa regular file-lines sm fw >}} Preview
```{r variant2, test = list(result_v2 = "result")}
anl_02 <- adqs %>%
filter(AVISIT == "WEEK 1 DAY 8") %>%
mutate(is_rsp = PCHG > 15) %>%
mutate(PARAM = droplevels(PARAM)) %>%
mutate(ARM = relevel(ARM, ref = "A: Drug X")) %>%
var_relabel(ARM = "Description of Planned Arm") %>%
mutate(strata = interaction(STRATA1, STRATA2, drop = TRUE))
var_labels(anl_02)["PARAM"] <- "Parameter"
split_fun <- drop_split_levels
lyt_02 <- basic_table(show_colcounts = TRUE) %>%
split_cols_by(var = "ARM", ref_group = "A: Drug X") %>%
split_rows_by(
var = "PARAM",
split_fun = split_fun,
label_pos = "topleft",
split_label = obj_label(anl_02$PARAM)
) %>%
estimate_proportion(vars = "is_rsp", table_names = "est_prop") %>%
estimate_proportion_diff(
var_labels = "Unstratified Analysis",
vars = "is_rsp",
show_labels = "visible",
table_names = "est_prop_diff"
) %>%
test_proportion_diff(vars = "is_rsp", table_names = "test_prop") %>%
estimate_odds_ratio(vars = "is_rsp", table_names = "est_or") %>%
estimate_proportion_diff(
var_labels = "Stratified Analysis",
vars = "is_rsp",
show_labels = "visible",
method = "cmh",
variables = list(strata = "strata"),
table_names = "est_prop_diff_strat"
) %>%
test_proportion_diff(
vars = "is_rsp",
method = "cmh",
variables = list(strata = "strata"),
table_names = "test_prop_strat"
) %>%
estimate_odds_ratio(
vars = "is_rsp",
variables = list(strata = "strata", arm = "ARM"),
table_names = "est_or_strat"
)
result <- build_table(
lyt = lyt_02,
df = anl_02,
alt_counts_df = adsl
)
result
```
```{r include = FALSE}
webr_code_labels <- c("variant2")
```
{{< include ../../_utils/webr.qmd >}}
:::
## Data Setup
```{r setup}
#| code-fold: show
```
:::::
{{< include ../../_utils/save_results.qmd >}}
## `teal` App
::: {.panel-tabset .nav-justified}
## {{< fa regular file-lines fa-sm fa-fw >}} Preview
```{r teal, opts.label = c("skip_if_testing", "app")}
library(teal.modules.clinical)
## Data reproducible code
data <- teal_data()
data <- within(data, {
ADSL <- random.cdisc.data::cadsl
ADRS <- random.cdisc.data::cadrs
})
datanames <- c("ADSL", "ADRS")
names(data) <- datanames
join_keys(data) <- default_cdisc_join_keys[datanames]
## Reusable Configuration For Modules
ADRS <- data[["ADRS"]]
arm_ref_comp <- list(
ARMCD = list(ref = "ARM B", comp = c("ARM A", "ARM C")),
ARM = list(ref = "B: Placebo", comp = c("A: Drug X", "C: Combination"))
)
## Setup App
app <- init(
data = data,
modules = modules(
tm_t_binary_outcome(
label = "Responders",
dataname = "ADRS",
paramcd = choices_selected(
choices = value_choices(ADRS, "PARAMCD", "PARAM"),
selected = "BESRSPI"
),
arm_var = choices_selected(
choices = variable_choices(ADRS, c("ARM", "ARMCD", "ACTARMCD")),
selected = "ARM"
),
arm_ref_comp = arm_ref_comp,
strata_var = choices_selected(
choices = variable_choices(ADRS, c("SEX", "BMRKR2")),
select = NULL
)
)
)
)
shinyApp(app$ui, app$server)
```
{{< include ../../_utils/shinylive.qmd >}}
:::
{{< include ../../repro.qmd >}}