--- title: "Subgroup Analysis for Specific AE" output: rmarkdown::html_vignette vignette: > %\VignetteEngine{knitr::rmarkdown} %\VignetteIndexEntry{Subgroup Analysis for Specific AE} %\VignetteEncoding{UTF-8} --- ```{r, include=FALSE} knitr::opts_chunk$set( comment = "#>", collapse = TRUE, out.width = "100%", dpi = 150 ) ``` ```{r} library(metalite.ae) ``` ## Overview The AE specific subgroup analysis aims to provide tables to summarize details of adverse events by subgroup. The development of AE specific subgroup analysis involves exported functions: - `prepare_ae_specific_subgroup()`: prepare analysis raw datasets. - `format_ae_specific_subgroup()`: prepare analysis (mock) outdata with proper format. - `tlf_ae_specific_subgroup()`: transfer (mock) output dataset to RTF table. ### Analysis preparation The `prepare_ae_specific_subgroup()` function is designed to be used for multiple purposes. The input of the function is a `meta` object created by the metalite package. ```{r} meta <- meta_ae_example() ``` The output of the function is an `outdata` object containing a list of analysis raw datasets. Key arguments are `subgroup_var`, `subgroup_header`, and `display_subgroup_total`. ```{r} outdata <- prepare_ae_specific_subgroup( meta, population = "apat", observation = "wk12", parameter = "rel", subgroup_var = "SEX", subgroup_header = c("TRTA", "SEX"), display_subgroup_total = TRUE ) ``` ```{r} outdata ``` The output dataset contains commonly used statistics within each `subgroup_var`. ```{r} outdata$out_all$F outdata$out_all$M outdata$out_all$Total ``` The variable is indexed by the order of `outdata$group` and `outdata$subgroup` within each `subgroup_var`. ```{r} outdata$group outdata$subgroup ``` The row is indexed by the order of `name` within each `subgroup_var` analysis output. ```{r} head(data.frame(outdata$out_all$Total$order, outdata$out_all$Total$name)) ``` - `n_pop`: participants in population within each `subgroup_var`. ```{r} outdata$out_all$F$n_pop outdata$out_all$M$n_pop outdata$out_all$Total$n_pop ``` - `n`: number of subjects with AE within each `subgroup_var`. ```{r} head(outdata$out_all$F$n) head(outdata$out_all$M$n) head(outdata$out_all$Total$n) ``` - `prop`: proportion of subjects with AE within each `subgroup_var`. ```{r} head(outdata$out_all$F$prop) head(outdata$out_all$M$prop) head(outdata$out_all$Total$prop) ``` - `diff`: risk difference compared with the `reference_group` within each `subgroup_var`. ```{r} head(outdata$out_all$Total$diff) ``` ### Format output After we have the raw analysis results, we can use `format_ae_specific_subgroup()` to prepare the outdata to create RTF tables. ```{r} tbl <- outdata |> format_ae_specific_subgroup() head(tbl$tbl) ``` We can hide the total column: ```{r} tbl <- outdata |> format_ae_specific_subgroup(display = c("n", "prop")) head(tbl$tbl) ``` Adding risk difference: ```{r} tbl <- outdata |> format_ae_specific_subgroup(display = c("n", "prop", "diff")) head(tbl$tbl) ``` ### Mock data preparation We can also use `format_ae_specific_subgroup()` to create mock output data. The purpose of the `mock` argument is not to create a comprehensive mock table template, but a handy way to help users create a mock table that mimics the exact output layout. Additional work is required to develop a flexible mock table generation tool (for example, a dedicated mock table generation package). ```{r} tbl <- outdata |> format_ae_specific_subgroup(mock = FALSE) head(tbl$tbl) ``` ### RTF tables By using `tlf_ae_specific_subgroup()`, we can transfer the output from `format_ae_specific_subgroup()` to an RTF or PDF table. ```{r} outdata |> format_ae_specific_subgroup() |> tlf_ae_specific_subgroup( meddra_version = "24.0", source = "Source: [CDISCpilot: adam-adsl; adae]", path_outtable = "rtf/ae0specific0sub0gender1.rtf" ) ``` ```{r, out.width = "100%", out.height = "400px", echo = FALSE, fig.align = "center"} knitr::include_graphics("pdf/ae0specific0sub0gender1.pdf") ```