The hardware and bandwidth for this mirror is donated by dogado GmbH, the Webhosting and Full Service-Cloud Provider. Check out our Wordpress Tutorial.
If you wish to report a bug, or if you are interested in having us mirror your free-software or open-source project, please feel free to contact us at mirror[@]dogado.de.

Exposure Adjusted Event Rate

This vignette explains how to calculate exposure-adjusted event rates (EAERs) and demonstrates the corresponding workflow in metalite.ae.

EAER formula explanation

EAER formula

\[ \begin{aligned} EAER_j (\text{EAER for } Trt_j) &= \frac{\text{total number of events for } Trt_j}{\text{total person-days for } Trt_j/(\text{exp factor})} \\ &= \frac{\text{total number of events for } Trt_j \times \text{exp factor}}{\text{total person-days for } Trt_j} \end{aligned} \]

The exposure factor depends on the requested adjustment unit. For example, an adjustment unit of 100 person-months gives:

\[ \begin{aligned} EAER_j (\text{100 person-months}) &= \frac{\text{total number of events for } Trt_j \times \text{exp factor} (=100\times30.4367)}{\text{total person-days for } Trt_j} \\ &= \frac{\text{total number of events for } Trt_j \times 3043.67}{\text{total person-days for } Trt_j} \end{aligned} \]

EAER for different types of AEs

The following examples define EAERs for three AE categories and three treatment groups: placebo (PBO), low dose (LD), and high dose (HD).

Any AE

\[ EAER_{PBO} (\text{100 person-months}) =\frac{\text{total number of AEs for PBO} \times 3043.67}{\text{total person-days for PBO}} \]

\[ EAER_{LD} (\text{100 person-months}) =\frac{\text{total number of AEs for Low Dose} \times 3043.67}{\text{total person-days for Low Dose}} \]

\[ EAER_{HD} (\text{100 person-months}) =\frac{\text{total number of AEs for High Dose} \times 3043.67}{\text{total person-days for High Dose}} \]

Serious AEs

\[ EAER_{PBO} (\text{100 person-months}) =\frac{\text{total number of SAEs for PBO} \times 3043.67}{\text{total person-days for PBO}} \]

\[ EAER_{LD} (\text{100 person-months}) =\frac{\text{total number of SAEs for Low Dose} \times 3043.67}{\text{total person-days for Low Dose}} \]

\[ EAER_{HD} (\text{100 person-months}) =\frac{\text{total number of SAEs for High Dose} \times 3043.67}{\text{total person-days for High Dose}} \]

Calculate EAERs

The following workflow prepares the analysis data and metadata, calculates the AE summary results with prepare_ae_summary(), and adds EAERs with extend_ae_summary_eaer(). Specify the treatment-duration variable with duration_var and the exposure unit with adj_unit.

library(metalite.ae)
adsl <- forestly::forestly_adsl
adae <- forestly::forestly_adae

adsl$TRT01A <- factor(
  adsl$TRT01A,
  levels = c("Xanomeline Low Dose", "Placebo"),
  labels = c("Low Dose", "Placebo")
)
adae$TRTA <- factor(
  adae$TRTA,
  levels = c("Xanomeline Low Dose", "Placebo"),
  labels = c("Low Dose", "Placebo")
)

analysis_plan <- metalite::plan(
  analysis = "ae_summary",
  population = "apat",
  observation = "wk12",
  parameter = "any;rel;ser"
)

meta <- metalite::meta_adam(observation = adae, population = adsl) |>
  metalite::define_plan(analysis_plan) |>
  metalite::define_population(
    name = "apat",
    var = c(
      "USUBJID", "SAFFL", "TRT01A", "TRTDUR",
      "SITEID", "SEX", "RACE", "AGE"
    ),
    group = "TRT01A",
    subset = SAFFL == "Y",
    label = "All Participants as Treated"
  ) |>
  metalite::define_observation(
    name = "wk12",
    var = c(
      "USUBJID", "SAFFL", "TRTA", "AEDECOD", "AEBODSYS", "AEREL",
      "AESER", "AEOUT", "AEACN", "AESDTH", "ASTDT", "AENDT"
    ),
    group = "TRTA",
    subset = SAFFL == "Y",
    label = "Weeks 0 to 12"
  ) |>
  metalite::define_parameter(
    name = "any",
    term1 = "",
    term2 = "",
    var = "AEDECOD",
    soc = "AEBODSYS",
    label = "All AEs"
  ) |>
  metalite::define_parameter(
    name = "rel",
    term1 = "Drug-Related",
    term2 = "",
    subset = AEREL %in% c("POSSIBLE", "PROBABLE"),
    var = "AEDECOD",
    soc = "AEBODSYS",
    label = "Drug-related AEs"
  ) |>
  metalite::define_parameter(
    name = "ser",
    term1 = "Serious",
    term2 = "",
    subset = AESER == "Y",
    var = "AEDECOD",
    soc = "AEBODSYS",
    label = "Serious AEs"
  ) |>
  metalite::define_analysis(
    name = "ae_summary",
    title = "Adverse Event Summary"
  ) |>
  metalite::meta_build()

x <- meta |>
  prepare_ae_summary(
    population = "apat",
    observation = "wk12",
    parameter = "any;rel;ser",
  ) |>
  extend_ae_summary_eaer(
    duration_var = "TRTDUR",
    adj_unit = "month"
  )

x
## List of 17
##  $ meta           :List of 7
##  $ population     : chr "apat"
##  $ observation    : chr "wk12"
##  $ parameter      : chr "any;rel;ser"
##  $ n              :'data.frame': 5 obs. of  3 variables:
##  $ order          : num [1:5] 1 100 200 300 400
##  $ group          : chr [1:3] "Low Dose" "Placebo" "Total"
##  $ reference_group: num 2
##  $ prop           :'data.frame': 5 obs. of  3 variables:
##  $ diff           :'data.frame': 5 obs. of  1 variable:
##  $ n_pop          :'data.frame': 1 obs. of  3 variables:
##  $ name           : chr [1:5] "Participants in population" "with one or more adverse events" "with no adverse events" "with drug-related{^a} adverse events" ...
##  $ prepare_call   : language prepare_ae_summary(meta = meta, population = "apat", observation = "wk12",      parameter = "any;rel;ser", )
##  $ total_exp      :'data.frame': 1 obs. of  3 variables:
##  $ event_num      :'data.frame': 3 obs. of  3 variables:
##  $ eaer           :'data.frame': 3 obs. of  3 variables:
##  $ adj_unit       : chr "month"

The calculated rates are stored in x$eaer:

x$eaer
##      Low Dose  Placebo       Total
## 1 159.1724513 71.46214 105.9769666
## 2 106.8467949 31.57630  61.1959386
## 3   0.3659137  0.00000   0.1439904

These binaries (installable software) and packages are in development.
They may not be fully stable and should be used with caution. We make no claims about them.
Health stats visible at Monitor.