knitr::opts_chunk$set( collapse = TRUE, comment = "#>", fig.path = "man/figures/figures-" ) library(TukeySens)
This package realizes the sensitivity analysis method based on Tukey's factorization, which allows flexible models for observed data and clean separation of the identified and unidentified parts of the sensitivity model. For theoretical details, please see the full paper. Specifically, TukeySens provides graphical tools that investigators can use to refine their sensitivity analyses and visualize the results.
To install the development version on GitHub make sure you have the package devtools
installed.
# install.packages("devtools") devtools::install_github("JiajingZ/TukeySens")
# load package library(TukeySens)
# Observed Pre-treatment Variables x = NHANES %>% select(-one_of("trt_dbp", "ave_dbp")) # Treatment trt = NHANES %>% select(trt_dbp) # Outcomes y = NHANES %>% select(ave_dbp) # Sensitivity Parameter Sequence gamma = seq(0.01, 0.1, by = 0.001) # plot caliplot(x, trt, y, gamma)
Based on the above plot, we may want to limit the magnitude of sensitivity parameter $\gamma_t$ with respect to body mass index (bmi), one of the most important predictors in terms of partial variance explained. Hence, we set $|\gamma_t| \ \leq \ 0.05$ for the following analysis.
Fit the BART outcome model. largest_gamma
is the absolute magnitude of the largest sensitivity parameter for Y(0) and Y(1). joint
is a logical which determines whether we infer Y(0) and Y(1) models independently or together.
# Observed data in treatment group NHANES_trt <- NHANES %>% dplyr::filter(trt_dbp == 1) x_trt <- NHANES_trt %>% select(-one_of("trt_dbp", "ave_dbp")) y_trt <- NHANES_trt %>% select(ave_dbp) # Observed data in control group NHANES_ctrl <- NHANES %>% dplyr::filter(trt_dbp == 0) x_ctrl <- NHANES_ctrl %>% select(-one_of("trt_dbp", "ave_dbp")) y_ctrl <- NHANES_ctrl %>% select(ave_dbp) tukey_out <- fit_outcome(x_trt, y_trt, x_ctrl, y_ctrl, largest_gamma = 0.05, joint=FALSE)
# Observed data in treatment group NHANES_trt <- NHANES %>% dplyr::filter(trt_dbp == 1) x_trt <- NHANES_trt %>% select(-one_of("trt_dbp", "ave_dbp")) y_trt <- NHANES_trt %>% select(ave_dbp) # Observed data in control group NHANES_ctrl <- NHANES %>% dplyr::filter(trt_dbp == 0) x_ctrl <- NHANES_ctrl %>% select(-one_of("trt_dbp", "ave_dbp")) y_ctrl <- NHANES_ctrl %>% select(ave_dbp) tukey_out <- fit_outcome(x_trt, y_trt, x_ctrl, y_ctrl, largest_gamma = 0.05, joint=FALSE)
We can plot a heatmap of the resulting model fit using the standard plot function with type="ate"
. Alternatively, we can visualize ribbon plots of the quantile treatment effects with type="ate"
. Note that in the current implementation QTE visualization can be slow for large datasets, since we are computing quantiles of n-component normal mixtures.
# ATE Heatmap plot(tukey_out, type="ate")
# Ribbon Plot of QTE gamma_select = rbind(c(0, 0), c(-0.03, 0.05), c(0.05, -0.02), c(-0.01, 0.01)) plot(tukey_out, type="qte", gamma_select = gamma_select)
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.