Helper Functions for Tabulating Biomarker Effects on Binary Response by Subgroup
Source:R/h_response_biomarkers_subgroups.R
      h_response_biomarkers_subgroups.RdHelper functions which are documented here separately to not confuse the user when reading about the user-facing functions.
Usage
h_rsp_to_logistic_variables(variables, biomarker)
h_logistic_mult_cont_df(variables, data, control = control_logistic())
h_tab_rsp_one_biomarker(df, vars)Arguments
- variables
 (named
listofstring)
list of additional analysis variables.- biomarker
 (
string)
the name of the biomarker variable.- data
 (
data.frame)
the dataset containing the variables to summarize.- control
 (named
list)
controls for the response definition and the confidence level produced bycontrol_logistic().- df
 (
data.frame)
results for a single biomarker, as part of what is returned byextract_rsp_biomarkers()(it needs a couple of columns which are added by that high-level function relative to what is returned byh_logistic_mult_cont_df(), see the example).- vars
 (
character)
the name of statistics to be reported amongn_tot(total number of patients per group),n_rsp(total number of responses per group),prop(total response proportion per group),or(odds ratio),ci(confidence interval of odds ratio) andpval(p value of the effect). Note, the statisticsn_tot,orandciare required.
Functions
h_rsp_to_logistic_variables(): helps with converting the "response" function variable list to the "logistic regression" variable list. The reason is that currently there is an inconsistency between the variable names accepted byextract_rsp_subgroups()andfit_logistic().h_logistic_mult_cont_df(): prepares estimates for number of responses, patients and overall response rate, as well as odds ratio estimates, confidence intervals and p-values, for multiple biomarkers in a given single data set.variablescorresponds to names of variables found indata, passed as a named list and requires elementsrspandbiomarkers(vector of continuous biomarker variables) and optionallycovariatesandstrat.h_tab_rsp_one_biomarker(): prepares a single sub-table given adf_subcontaining the results for a single biomarker.
Examples
# Testing dataset.
library(scda)
library(dplyr)
library(forcats)
library(rtables)
adrs <- synthetic_cdisc_data("latest")$adrs
adrs_labels <- formatters::var_labels(adrs)
adrs_f <- adrs %>%
  filter(PARAMCD == "BESRSPI") %>%
  mutate(rsp = AVALC == "CR")
formatters::var_labels(adrs_f) <- c(adrs_labels, "Response")
# This is how the variable list is converted internally.
h_rsp_to_logistic_variables(
  variables = list(
    rsp = "RSP",
    covariates = c("A", "B"),
    strat = "D"
  ),
  biomarker = "AGE"
)
#> $response
#> [1] "RSP"
#> 
#> $arm
#> [1] "AGE"
#> 
#> $covariates
#> [1] "A" "B"
#> 
#> $strata
#> [1] "D"
#> 
# For a single population, estimate separately the effects
# of two biomarkers.
df <- h_logistic_mult_cont_df(
  variables = list(
    rsp = "rsp",
    biomarkers = c("BMRKR1", "AGE"),
    covariates = "SEX"
  ),
  data = adrs_f
)
df
#>   biomarker              biomarker_label n_tot n_rsp prop        or       lcl
#> 1    BMRKR1 Continuous Level Biomarker 1   400   336 0.84 1.0573123 0.9715084
#> 2       AGE                          Age   400   336 0.84 0.9989522 0.9634618
#>        ucl conf_level      pval     pval_label
#> 1 1.150694       0.95 0.1968485 p-value (Wald)
#> 2 1.035750       0.95 0.9547035 p-value (Wald)
# If the data set is empty, still the corresponding rows with missings are returned.
h_coxreg_mult_cont_df(
  variables = list(
    rsp = "rsp",
    biomarkers = c("BMRKR1", "AGE"),
    covariates = "SEX",
    strat = "STRATA1"
  ),
  data = adrs_f[NULL, ]
)
#>   biomarker              biomarker_label n_tot n_tot_events median hr lcl ucl
#> 1    BMRKR1 Continuous Level Biomarker 1     0            0     NA NA  NA  NA
#> 2       AGE                          Age     0            0     NA NA  NA  NA
#>   conf_level pval     pval_label
#> 1       0.95   NA p-value (Wald)
#> 2       0.95   NA p-value (Wald)
# Starting from above `df`, zoom in on one biomarker and add required columns.
df1 <- df[1, ]
df1$subgroup <- "All patients"
df1$row_type <- "content"
df1$var <- "ALL"
df1$var_label <- "All patients"
# Internal function - h_tab_rsp_one_biomarker
if (FALSE) {
h_tab_rsp_one_biomarker(
  df1,
  vars = c("n_tot", "n_rsp", "prop", "or", "ci", "pval")
)
}