Applies a transformation to selected numeric exposure variables in the
colData of a MultiAssayExperiment to improve their normality
(e.g., log, Box-Cox, sqrt). Transformation results and normality
statistics are stored in metadata for tracking.
Arguments
- expomicset
 A
MultiAssayExperimentobject containing exposure variables incolData.- exposure_cols
 Optional character vector of exposure variable names to transform. If
NULL, uses exposures found inmetadata(expomicset)$quality_control$normality$norm_df$exposure.- transform_method
 Character. Transformation method to apply. Options:
"none": no transformation"log2": log base 2 transformation"x_1_3": cube-root transformation"sqrt": square-root transformation"boxcox_best": data-driven Box-Cox approximation with heuristic labeling
Value
A MultiAssayExperiment object with transformed exposures
in colData, and transformation details stored in:
metadata(expomicset)$quality_control$transformation$norm_df: Shapiro-Wilk test resultsmetadata(expomicset)$quality_control$transformation$norm_summary: Summary of normalitymetadata(expomicset)$codebook: Updated with transformation info per variablemetadata(expomicset)$summary$steps: Updated with step record
Details
For transform_method = "boxcox_best", the function automatically shifts
values to be strictly positive and chooses from a discrete set of
transformations (e.g., 1/x, log(x), x^2)
based on estimated Box-Cox lambda. Each variable may receive a
different transformation.
Examples
# Create example data
mae <- make_example_data(
    n_samples = 20,
    return_mae = TRUE
)
#> Ensuring all omics datasets are matrices with column names.
#> Creating SummarizedExperiment objects.
#> Creating MultiAssayExperiment object.
#> MultiAssayExperiment created successfully.
# Test for normality
mae <- mae |>
    run_normality_check() |>
    transform_exposure(
        exposure_cols = c("age", "bmi", "exposure_pm25"),
        transform_method = "boxcox_best"
    )
#> Checking Normality Using Shapiro-Wilk Test
#> 2 Exposure Variables are Normally Distributed
#> 2 Exposure Variables are NOT Normally Distributed
#> Applying the boxcox_best transformation.