| olink_lmer_posthoc | R Documentation |
Similar to olink_lmer but performs a post-hoc analysis based on
a linear mixed model effects model using lmerTest::lmer and
emmeans::emmeans on proteins. See olink_lmer for details
of input notation.
olink_lmer_posthoc(
df,
check_log = NULL,
olinkid_list = NULL,
variable,
outcome = "NPX",
random,
model_formula,
effect,
effect_formula,
covariates = NULL,
mean_return = FALSE,
post_hoc_padjust_method = "tukey",
verbose = TRUE
)
df |
NPX data frame in long format with at least protein name (Assay), OlinkID, UniProt, 1-2 variables with at least 2 levels and subject identifier. |
check_log |
A named list returned by |
olinkid_list |
Character vector of OlinkID's on which to perform post hoc analysis. If not specified, all assays in df are used. |
variable |
Single character value or character array. Variables to test.
If |
outcome |
Character. The dependent variable. Default: NPX. |
random |
Single character value or character array. |
model_formula |
(optional) Symbolic description of the model to be
fitted in standard formula notation (e.g. |
effect |
Term on which to perform post-hoc. Character vector. Must be subset of or identical to variable. |
effect_formula |
(optional) A character vector specifying the names of
the predictors over which estimated marginal means are desired as defined in
the |
covariates |
Single character value or character array. Default: |
mean_return |
Boolean. If true, returns the mean of each factor level rather than the difference in means (default). Note that no p-value is returned for mean_return = TRUE and no adjustment is performed. |
post_hoc_padjust_method |
P-value adjustment method to use for post-hoc
comparisons within an assay. Options include |
verbose |
Boolean. Default: True. If information about removed samples, factor conversion and final model formula is to be printed to the console. |
The function handles both factor and numerical variables and/or covariates.
Differences in estimated marginal means are calculated for all pairwise
levels of a given variable. Degrees of freedom are estimated using
Satterthwaite’s approximation. The posthoc test for a numerical variable
compares the difference in means of the outcome variable (default:
NPX) for 1 standard deviation difference in the numerical variable,
e.g. mean NPX at mean(numerical variable) versus mean NPX at mean(numerical
variable) + 1*SD(numerical variable). The output tibble is arranged by
ascending Tukey adjusted p-values.
The variable, covariates, random, and/or model_formula arguments can
be used in the same way as in 'olink_lmer to specify the model
to be fitted.
A "tibble" containing the results of the pairwise comparisons between given variable levels for proteins specified in olinkid_list (or full df). Columns include:
Assay: "character" Protein symbol
OlinkID: "character" Olink specific ID
UniProt: "character" UniProt ID
Panel: "character" Name of Olink Panel
term: "character" term in model
contrast: "character" the groups that were compared
estimate: "numeric" difference in mean NPX between groups
conf.low: "numeric" confidence interval for the mean (lower end)
conf.high: "numeric" confidence interval for the mean (upper end)
Adjusted_pval: "numeric" adjusted p-value for the test
Threshold: "character" if adjusted p-value is significant or not (< 0.05)
if (rlang::is_installed(pkg = c("lme4", "lmerTest", "emmeans", "broom"))) {
#data
npx_df <- OlinkAnalyze::npx_data1 |>
dplyr::filter(
!grepl(
pattern = "control|ctrl",
x = .data[["SampleID"]],
ignore.case = TRUE
)
)
# check data
npx_df_check_log <- OlinkAnalyze::check_npx(
df = npx_df
)
# Results in model NPX ~ Time * Treatment + (1 | Subject)
lmer_results <- OlinkAnalyze::olink_lmer(
df = npx_df,
check_log = npx_df_check_log,
variable = c("Time", "Treatment"),
random = c("Subject")
)
# List of significant proteins for the interaction effect Time:Treatment
assay_list <- lmer_results |>
dplyr::filter(
.data[["Threshold"]] == "Significant"
& .data[["term"]] == "Time:Treatment"
) |>
dplyr::distinct(.data[["OlinkID"]]) |>
dplyr::pull()
# Run lmer posthoc on significant proteins
results_lmer_posthoc <- OlinkAnalyze::olink_lmer_posthoc(
df = npx_df,
check_log = npx_df_check_log,
olinkid_list = assay_list,
variable = c("Time", "Treatment"),
effect = "Time:Treatment",
random = "Subject",
verbose = TRUE
)
# Estimate treated vs untreated at each timepoint
results_lmer_posthoc <- OlinkAnalyze::olink_lmer_posthoc(
df = npx_df,
check_log = npx_df_check_log,
olinkid_list = assay_list,
model_formula = "NPX~Time*Treatment+(1|Subject)",
effect_formula = "pairwise~Treatment|Time",
verbose = TRUE
)
}
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.