Description Usage Arguments Details Value Author(s) References See Also Examples
Fits a collection of treatment and response models using the Bayesian Additive Regresssion Trees (BART) algorithm, producing estimates of treatment effects.
1 2 3 4 5 6 7 8 9 10 11 | bartc(response, treatment, confounders, data, subset, weights,
method.rsp = c("bart", "p.weight", "tmle"),
method.trt = c("none", "glm", "bart", "bart.xval"),
estimand = c("ate", "att", "atc"),
group.by = NULL,
commonSup.rule = c("none", "sd", "chisq"),
commonSup.cut = c(NA_real_, 1, 0.05),
args.rsp = list(), args.trt = list(),
p.scoreAsCovariate = TRUE, use.rbart = FALSE,
keepCall = TRUE, verbose = TRUE,
...)
|
response |
A vector of the continuous outcome variable, or a reference to such in the |
treatment |
A vector of the binary treatment variable, or a reference to |
confounders |
A matrix or data frame of covariates to be used in estimating the treatment and response model.
Can also the right-hand-side of a formula (e.g. |
data |
An optional data frame or named list containing the |
subset |
An optional vector using to subset the data. Can refer to |
weights |
An optional vector of population weights used in model fitting and estimating the treatment
effect. Can refer to |
method.rsp |
A character string specifying which method to use when fitting the response surface and estimating
the treatment effect. Options are: |
method.trt |
A character string specifying which method to use when fitting the treatment assingment mechanism,
or a vector/matrix of propensity scores. Character string options are: |
estimand |
A character string specifying which causal effect to target. Options are |
group.by |
An optional factor that, when present, causes the treatment effect estimate to be calculated within each group. |
commonSup.rule |
Rule for exclusion of observations lacking in common support. Options are |
commonSup.cut |
Cuttoffs for |
p.scoreAsCovariate |
A logical such that when |
use.rbart |
Logical specifying the use of |
keepCall |
A logical such that when |
verbose |
A logical that when |
args.rsp,args.trt,... |
Further arguments to the treatment and response model fitting algorithms. Arguments passed to the main
function as ... will be used in both models. |
bartc
represents a collection of methods that primarily use the Bayesian Additive Regression Trees
(BART) algorithm to estimate causal treatment effects with binary treatment variables and continuous
outcomes. This requires models to be fit to the response surface (distribution of the response as a
function of treatment and confounders, p(Y(1), Y(0) | X) and optionally for treatment assignment
mechanism (probability of receiving treatment, i.e. propensity score, Pr(Z = 1 | X)). The response surface
model is used to impute counterfactuals, which may then be adjusted together with the propensity score to
produce estimates of effects.
Similar to lm
, models can be specified symbolically. When the data
term is present,
it will be added to the search path for the response
, treatment
, and confounders
variables. The confounders must be specified devoid of any "left hand side", as they appear in both of the
models.
Response Surface
The response surface methods included are:
"bart"
- use BART to fit the response surface and produce individual estimates
Y(1)^hat_i and Y(0)^hat_i. Treatment effect estimates are
obtained by averaging the difference of these across the population of interest.
"p.weight"
- individual effects are esimated as in "bart"
, but treatment effect estimates
are obtained by using a propensity score weighted average. For the average treatment effect on the
treated, these weights are p(z_i | x_i) / (∑ z / n). For ATC, replace z with 1 - z.
For ATE, "p.weight"
is equal to "bart"
.
"tmle"
- individual effects are esimated as in "bart"
and a weighted average is taken
as in "p.weight"
, however the response surface estimates and propensity scores are corrected
by using the Targetted Minimum Loss based Estimation method.
Treatment Assignment
The treatment assignment models are:
"none"
- no modeling is doing. Only applies when using response method "bart"
and
p.scoreAsCovariate
is FALSE
.
"glm"
- fit a binomial generalized linear model with logistic link and confounders included
as linear terms.
"bart"
- fit a binary BART directly to the treatment using all the confounders.
"bart.xval"
- use the xbart
function to perform cross validation on the node
prior sensitivity (for that method, k
) before fitting a final model.
Finally, a vector or matrix of propensity scores can be supplied. Propensity score matrices should have a number of rows equal to the number of observations in the data and a number of columns equal to the number of posterior samples.
Common Support Rules
Common support, or that the probability of receiving all treatment conditions is non-zero within every area of
the covariate space (P(Z = 1 | X = x) > 0 for all x in the inferential sample), can be enforced by
excluding observations with high posterior uncertainty. bartc
supports two common support rules through
commonSup.rule
argument:
"sd"
- observations are cut from the inferential sample if:
s_i^f(1-z) > m_z + a * sd(s_j^f(z)),
where s_i^f(1-z) is the posterior
standard deviation of the predicted counterfactual for observation i, s_j^f(z) is the posterior
standard deviation of the prediction for the observed treatment condition of objservation j,
sd(s_j^f(z)) is the empirical standard deviation of those quantities, and
m_z = max_j s_j^f(z) for all j in the same treatment group,
i.e. Z_j = z. a is a constant to be passed in using commonSup.cut
and its default is 1.
"chisq"
- observations are cut from the inferential sample if:
s_i^f(1-z) / s_i^f(z))^2 > q_α, where
s_i are as above and q_α, is the upper α percentile of a χ^2
distribution with one degree of freedom, corresponding to a null hypothesis of equal variance. The default
for α is 0.05, and it is specified using the commonSup.cut
parameter.
Special Arguments
Some default arguments are unconvential or are passed in a unique fashion.
If n.chains
is missing, unlike in bart2
a default of 10 is used.
For method.trt == "bart.xval"
, any of the parameters accepted by both xbart
and bart2
can be passed as a list in args.trt
and the first value will be used
in the crossvalidation step and the second for the fit itself.
For method.rsp == "tmle"
, a special arg.trt
of posteriorOfTMLE
determines
if the TMLE correction should be applied to each posterior sample (TRUE
), or just the
posterior mean (FALSE
).
Missing Data
Missingness is allowed only in the response. If some response values are NA
, the BART models will be
trained just for where data are available and those values will be used to make predictions for the missing
observations. Missing observations are not used when calculating statistics for assessing common support,
although they may still be excluded on those grounds. Further, missing observations may not be compatible
with response method "tmle"
.
bartc
returns an object of class bartcFit
. Information about the object can be derived
by using methods summary
, plot_sigma
, plot_est
,
plot_indiv
, and plot_support
. Numerical quantities are recovered with the
fitted
and extract
generics.
Objects of class bartcFit
are lists containing items:
|
character string specifying the method used to fit the response surface |
|
character string specifying the method used to fit the treatment assignment mechanism |
|
character string specifying the targetted causal effect |
|
object containing the fitted response model |
|
|
|
object containing the fitted treatment model |
|
optional factor vector containing the groups in which treatment effects are estimated |
|
matrix or array of posterior samples of the treatment effect estimate |
|
matrix or array of posterior samples of the individual treatment effects |
|
the vector of propensity scores used as a covariate in the response model, when applicable |
|
matrix or array of posterior samples of the propensity score, when applicable |
|
character string giving the name of the treatment variable in the data
of |
|
vector of treatment assignments |
|
how |
|
number of independent posterior sampler chains in response model |
|
common support rule used for suppressing observations |
|
common support parameter used to set cutoff when suppression observations |
|
vector of standard deviations of individual posterior predictors for observed treatment conditions |
|
vector of standard deviations of individual posterior predictors for counterfactuals |
|
logical vector expressing which observations are used when estimating treatment effects |
Vincent Dorie: vdorie@gmail.com.
Chipman, H., George, E. and McCulloch R. (2006) Bayesian Ensemble Learning. Proceedings of the 19th International Conference on Neural Information Processing Systems, 265–272. Cambridge, MA: MIT Press. http://papers.nips.cc/paper/3084-bayesian-ensemble-learning.pdf.
Hill, J. L. (2011) Bayesian Nonparametric Modeling for Causal Inference. Journal of Computational and Graphical Statistics 20(1), 217–240. Taylor & Francis. https://doi.org/10.1198/jcgs.2010.08162.
Hill, J. L. and Su Y. S. (2013) Assessing Lack of Common Support in Causal Inference Using Bayesian Nonparametrics: Implications for Evaluating the Effect of Breastfeeding on Children's Cognitive Outcomes The Annals of Applied Statistics 7(3), 1386–1420. https://www.jstor.org/stable/23566478.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | ## fit a simple linear model
n <- 100L
beta.z <- c(.75, -0.5, 0.25)
beta.y <- c(.5, 1.0, -1.5)
sigma <- 2
set.seed(725)
x <- matrix(rnorm(3 * n), n, 3)
tau <- rgamma(1L, 0.25 * 16 * rgamma(1L, 1 * 32, 32), 16)
p.score <- pnorm(x %*% beta.z)
z <- rbinom(n, 1, p.score)
mu.0 <- x %*% beta.y
mu.1 <- x %*% beta.y + tau
y <- mu.0 * (1 - z) + mu.1 * z + rnorm(n, 0, sigma)
fit <- bartc(y, z, x, n.samples = 100L)
summary(fit)
## example to show refitting under the common support rule
fit2 <- refit(fit, commonSup.rule = "sd")
fit3 <- bartc(y, z, x, subset = fit2$commonSup.sub, n.samples = 100L)
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.