Biomarker Analysis Catalog - Stable
  • Stable
    • Dev
  1. Graphs
  2. RG
  3. RG3
  • Index

  • Tables
    • CPMT
      • CPMT1
      • CPMT2
        • CPMT2A
      • CPMT3
    • DT
      • DT1
        • DT1A
        • DT1B
        • DT1C
      • DT2
        • DT2A
    • TET
      • TET1
        • TET1A

  • Graphs
    • AG
      • AG1
    • DG
      • DG1
        • DG1A
        • DG1B
      • DG2
      • DG3
        • DG3A
      • DG4
    • KG
      • KG1
        • KG1A
        • KG1B
      • KG2
        • KG2A
      • KG3
      • KG4
        • KG4A
        • KG4B
      • KG5
        • KG5A
        • KG5B
    • RFG
      • RFG1
        • RFG1A
      • RFG2
        • RFG2A
        • RFG2B
        • RFG2C
      • RFG3
    • RG
      • RG1
        • RG1A
        • RG1B
        • RG1C
      • RG2
        • RG2A
      • RG3
        • RG3A
        • RG3B
    • SPG
      • SPG1
      • SPG2
    • RNAG
      • RNAG1
      • RNAG2
      • RNAG3
      • RNAG4
      • RNAG5
      • RNAG6
      • RNAG7
      • RNAG8
      • RNAG9
      • RNAG10
    • SFG
      • SFG1
        • SFG1A
        • SFG1B
      • SFG2
        • SFG2A
        • SFG2B
        • SFG2C
        • SFG2D
      • SFG3
        • SFG3A
      • SFG4
      • SFG5
        • SFG5A
        • SFG5B
        • SFG5C
      • SFG6
        • SFG6A
        • SFG6B
        • SFG6C
  1. Graphs
  2. RG
  3. RG3

RG3

Response Graphs Comparing BEP vs. Overall Population

RG

  • Setup
  • Plot
  • Session Info

The same setup as in RG1 is used.

For ggplot() used in all analyses, we add by = BMEASIFL in the aesthetics to support the calculation of proportions using geom_text(stat = "prop").

Code
library(tern)
library(ggplot2.utils)
library(dplyr)

adrs <- random.cdisc.data::cadrs %>%
  df_explicit_na() %>%
  mutate(
    AVALC = ordered(AVALC, levels = c("<Missing>", "NE", "PD", "SD", "PR", "CR")),
    AVALC_BIN = fct_collapse_only(
      AVALC,
      Yes = c("CR", "PR"),
      No = c("PD", "SD", "NE", "<Missing>")
    ),
    ARM_BIN = fct_collapse_only(
      ARM,
      Ctrl = c("B: Placebo"),
      Trt = c("A: Drug X", "C: Combination")
    )
  ) %>%
  filter(PARAMCD == "BESRSPI", BMEASIFL == "Y")

In this example we can use the facet_grid() layer with the margins = TRUE option to compare the responses between the biomarker evaluable population (BEP) and the overall population.

Code
graph <- ggplot(adrs, aes(BMEASIFL, fill = AVALC_BIN, by = BMEASIFL)) +
  geom_bar(position = "fill") +
  geom_text(stat = "prop", position = position_fill(.5), colour = "white") +
  scale_y_continuous(
    labels = scales::percent,
    name = "Proportion %"
  ) +
  scale_x_discrete(labels = NULL) +
  xlab(NULL)

graph +
  facet_grid(BEP01FL ~ ., margins = TRUE)

In this example we compare the responses across treatment arms between the biomarker evaluable population and the full population. We can add the option margins = TRUE option within the facet_grid() layer to obtain the responses across all treatment arms and their combination within each of the populations.

Code
graph +
  facet_grid(BEP01FL ~ ARM_BIN, margins = TRUE)

Code
sessionInfo()
R version 4.4.2 (2024-10-31)
Platform: x86_64-pc-linux-gnu
Running under: Ubuntu 24.04.1 LTS

Matrix products: default
BLAS:   /usr/lib/x86_64-linux-gnu/openblas-pthread/libblas.so.3 
LAPACK: /usr/lib/x86_64-linux-gnu/openblas-pthread/libopenblasp-r0.3.26.so;  LAPACK version 3.12.0

locale:
 [1] LC_CTYPE=en_US.UTF-8       LC_NUMERIC=C              
 [3] LC_TIME=en_US.UTF-8        LC_COLLATE=en_US.UTF-8    
 [5] LC_MONETARY=en_US.UTF-8    LC_MESSAGES=en_US.UTF-8   
 [7] LC_PAPER=en_US.UTF-8       LC_NAME=C                 
 [9] LC_ADDRESS=C               LC_TELEPHONE=C            
[11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C       

time zone: Etc/UTC
tzcode source: system (glibc)

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

other attached packages:
[1] dplyr_1.1.4         ggplot2.utils_0.3.2 ggplot2_3.5.1      
[4] tern_0.9.7          rtables_0.6.11      magrittr_2.0.3     
[7] formatters_0.5.10  

loaded via a namespace (and not attached):
 [1] generics_0.1.3           tidyr_1.3.1              EnvStats_3.0.0          
 [4] stringi_1.8.4            lattice_0.22-6           digest_0.6.37           
 [7] evaluate_1.0.3           grid_4.4.2               fastmap_1.2.0           
[10] jsonlite_1.9.0           Matrix_1.7-2             backports_1.5.0         
[13] survival_3.8-3           purrr_1.0.4              viridisLite_0.4.2       
[16] scales_1.3.0             codetools_0.2-20         Rdpack_2.6.2            
[19] cli_3.6.4                ggpp_0.5.8-1             nestcolor_0.1.3         
[22] rlang_1.1.5              rbibutils_2.3            munsell_0.5.1           
[25] splines_4.4.2            withr_3.0.2              yaml_2.3.10             
[28] tools_4.4.2              polynom_1.4-1            checkmate_2.3.2         
[31] colorspace_2.1-1         forcats_1.0.0            ggstats_0.8.0           
[34] broom_1.0.7              vctrs_0.6.5              R6_2.6.1                
[37] lifecycle_1.0.4          stringr_1.5.1            htmlwidgets_1.6.4       
[40] MASS_7.3-64              pkgconfig_2.0.3          pillar_1.10.1           
[43] gtable_0.3.6             glue_1.8.0               xfun_0.51               
[46] tibble_3.2.1             tidyselect_1.2.1         knitr_1.49              
[49] farver_2.1.2             htmltools_0.5.8.1        labeling_0.4.3          
[52] rmarkdown_2.29           random.cdisc.data_0.3.16 compiler_4.4.2          

Reuse

Copyright 2023, Hoffmann-La Roche Ltd.
RG2A
RG3A
Source Code
---
title: RG3
subtitle: Response Graphs Comparing BEP vs. Overall Population
categories: [RG]
---

------------------------------------------------------------------------

::: panel-tabset
{{< include setup.qmd >}}

## Plot

In this example we can use the `facet_grid()` layer with the `margins = TRUE` option to compare the responses between the biomarker evaluable population (BEP) and the overall population.

```{r}
graph <- ggplot(adrs, aes(BMEASIFL, fill = AVALC_BIN, by = BMEASIFL)) +
  geom_bar(position = "fill") +
  geom_text(stat = "prop", position = position_fill(.5), colour = "white") +
  scale_y_continuous(
    labels = scales::percent,
    name = "Proportion %"
  ) +
  scale_x_discrete(labels = NULL) +
  xlab(NULL)

graph +
  facet_grid(BEP01FL ~ ., margins = TRUE)
```

In this example we compare the responses across treatment arms between the biomarker evaluable population and the full population.
We can add the option `margins = TRUE` option within the `facet_grid()` layer to obtain the responses across all treatment arms and their combination within each of the populations.

```{r}
graph +
  facet_grid(BEP01FL ~ ARM_BIN, margins = TRUE)
```

{{< include ../../misc/session_info.qmd >}}
:::

Made with ❤️ by the Statistical Engineering Team StatisticalEngineering

  • License

  • Edit this page
  • Report an issue
Cookie Preferences