Perform GLM-based association testing between a specified outcome and features from exposures, omics, latent factors, or GO PCs. Automatically adjusts for covariates and supports both Gaussian and binomial models.
Usage
run_association(
expomicset,
outcome,
source = c("omics", "exposures", "factors"),
covariates = NULL,
feature_set = NULL,
log_trans = TRUE,
top_n = NULL,
family = "gaussian",
correction_method = "fdr",
action = "add",
min_genes = 10,
feature_col = NULL,
mirna_assays = NULL
)Arguments
- expomicset
A
MultiAssayExperimentobject containing data and metadata.- outcome
The outcome variable name (must be in
colData).- source
Source of features to test. One of
"omics","exposures","factors".- covariates
Optional vector of covariate names to include in the model.
- feature_set
Optional character vector of exposure or GO terms to test.
- log_trans
Optional boolean value dictating whether or not to log2 transform omics features.
- top_n
Optional integer: if using omics source, select top
nmost variable features.- family
GLM family;
"gaussian"or"binomial".- correction_method
Method for p-value adjustment (default:
"fdr").- action
If
"add"(default), saves results to metadata; else returns results as list.- min_genes
Minimum number of genes required to compute GO PCs.
- feature_col
If using GO PCs, the column in
rowDatafor matching gene symbols or IDs.- mirna_assays
Optional character vector of assays to exclude when extracting GO terms.
Value
If action = "add", returns updated MultiAssayExperiment.
Otherwise, returns a list of:
results_df: tidy summary of associationscovariates: the covariates usedmodel_data: model matrix used in the GLMs
Examples
#' # create example data
mae <- make_example_data(
n_samples = 10,
return_mae = TRUE
)
#> Ensuring all omics datasets are matrices with column names.
#> Creating SummarizedExperiment objects.
#> Creating MultiAssayExperiment object.
#> MultiAssayExperiment created successfully.
# run association tests
mae <- mae |>
run_association(
source = "exposures",
feature_set = c("exposure_pm25", "exposure_no2"),
outcome = "smoker",
covariates = c("age"),
family = "binomial"
)
#> Running GLMs.
#> Warning: glm.fit: algorithm did not converge
#> Warning: glm.fit: fitted probabilities numerically 0 or 1 occurred