This build of the adaptMT
package provides necessary modifications for using
AdaPT with gradient boosted trees via the xgboost
library. Please see our pre-print, Application of post-selection inference to multi-omics data yields insights into the etiologies of human diseases for details
regarding our implementation. An updated tutorial to using both the adapt_xgboost
and adapt_xgboost_cv
functions will be available soon. The goal is to integrate the functionality of these modifications into the original adaptMT
package that is available on the CRAN.
Use the following to install the package with the updates:
# install.packages("devtools")
devtools::install_github("ryurko/adaptMT")
The rest of the README proceeds as the original README.
This package implements Adaptive P-Value Thresholding in the paper: AdaPT: An interactive procedure for multiple testing with side information. It includes both a framework that allows the user to specify any algorithm to learn local FDR and a pool of convenient functions that implement specific algorithms:
adapt()
provides a generic framework of AdaPT permitting any learning algorithm;adapt_glm()
,adapt_gam()
andadapt_glmnet()
provide convenient wrappers of AdaPT using Generalized Linear Models (GLM), Generalized Additive Models (GAM) and L1-penalized GLMs;
Install the adaptMT package then read vignette("adapt_demo", package = "adaptMT").
# install.packages("devtools")
devtools::install_github("lihualei71/adaptMT")
If one wants to access the vignette, run the following code to build the vignette. This might update other related packages and please be patient if so.
devtools::install_github("lihualei71/adaptMT", build_vignettes = TRUE)
We illustrate the usage of adaptMT package using the example discussed in Section 5.1 of the paper AdaPT: An interactive procedure for multiple testing with side information.
# Load package
library("adaptMT")
# Load data
data(estrogen)
pvals <- as.numeric(estrogen$pvals)
x <- data.frame(x = as.numeric(estrogen$ord_high))
# Define the exponential family for AdaPT (Section 4)
dist <- beta_family()
# Run adapt_glm
library("splines")
formulas <- paste0("ns(x, df = ", 6:10, ")")
res <- adapt_glm(x = x, pvals = pvals, pi_formulas = formulas,
mu_formulas = formulas, dist = dist, nfits = 10)
# Plot the threshold curve and the level curves of local FDR
plot_1d_thresh(res, alpha = 0.1, "P-Value Thresholds")
plot_1d_lfdr(res, alpha = 0.1, "Level Curves of Local FDR Estimates")