Description Usage Arguments Details Value References Examples
Fit Bayesian Causal Forests
1 2 3 4 5 6  bcf(y, z, x_control, x_moderate = x_control, pihat, nburn, nsim, nthin = 1,
update_interval = 100, ntree_control = 200, sd_control = 2 * sd(y),
base_control = 0.95, power_control = 2, ntree_moderate = 50,
sd_moderate = sd(y), base_moderate = 0.25, power_moderate = 3, nu = 3,
lambda = NULL, sigq = 0.9, sighat = NULL, include_pi = "control",
use_muscale = TRUE, use_tauscale = TRUE)

y 
Response variable 
z 
Treatment variable 
x_control 
Design matrix for the "prognostic" function mu(x) 
x_moderate 
Design matrix for the covariatedependent treatment effects tau(x) 
pihat 
Length n estimates of 
nburn 
Number of burnin MCMC iterations 
nsim 
Number of MCMC iterations to save after burnin 
nthin 
Save every nthin'th MCMC iterate. The total number of MCMC iterations will be nsim*nthin + nburn. 
update_interval 
Print status every update_interval MCMC iterations 
ntree_control 
Number of trees in mu(x) 
sd_control 
SD(mu(x)) marginally at any covariate value (or its prior median if use_muscale=TRUE) 
base_control 
Base for tree prior on mu(x) trees (see details) 
power_control 
Power for the tree prior on mu(x) trees 
ntree_moderate 
Number of trees in tau(x) 
sd_moderate 
SD(tau(x)) marginally at any covariate value (or its prior median if use_tauscale=TRUE) 
base_moderate 
Base for tree prior on tau(x) trees (see details) 
power_moderate 
Power for the tree prior on tau(x) trees (see details) 
nu 
Degrees of freedom in the chisq prior on sigma^2 
lambda 
Scale parameter in the chisq prior on sigma^2 
sigq 
Calibration quantile for the chisq prior on sigma^2 
sighat 
Calibration estimate for the chisq prior on sigma^2 
include_pi 
Takes values "control", "moderate", "both" or "none". Whether to include pihat in mu(x) ("control"), tau(x) ("moderate"), both or none. Values of "control" or "both" are HIGHLY recommended with observational data. 
use_muscale 
Use a halfCauchy hyperprior on the scale of mu. 
use_tauscale 
Use a halfNormal prior on the scale of tau. 
Fits the Bayesian Causal Forest model (Hahn et. al. 2018): For a response variable y, binary treatment z, and covariates x,
y_i = μ(x_i, π_i) + τ(x_i, π_i)z_i + ε_i
where π_i is an (optional) estimate of the propensity score \Pr(Z_i=1  X_i=x_i) and ε_i \sim N(0,σ^2)
Some notes:
x_control and x_moderate must be numeric matrices. See e.g. the makeModelMatrix function in the dbarts package for appropriately constructing a design matrix from a data.frame
sd_control and sd_moderate are the prior SD(mu(x)) and SD(tau(x)) at a given value of x (respectively). If use_muscale = FALSE, then this is the parameter σ_μ from the original BART paper, where the leaf parameters have prior distribution N(0, σ_μ/m), where m is the number of trees. If use_muscale=TRUE then sd_control is the prior median of a half Cauchy prior for SD(mu(x)). If use_tauscale = TRUE, then sd_moderate is the prior median of a half Normal prior for SD(tau(x)).
By default the prior on σ^2 is calibrated as in Chipman, George and McCulloch (2008).
A list with elements
tau 

mu 

sigma 
Length 
Hahn, Murray, and Carvalho(2017). Bayesian regression tree models for causal inference: regularization, confounding, and heterogeneous effects. https://arxiv.org/abs/1706.09523. (Call citation("bcf") from the command line for citation information in Bibtex format.)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36  # data generating process
p = 3 #two control variables and one moderator
n = 250
#
set.seed(1)
x = matrix(rnorm(n*p), nrow=n)
# create targeted selection
q = 1*(x[,1]>(x[,2])) + 1*(x[,1]<(x[,2]))
# generate treatment variable
pi = pnorm(q)
z = rbinom(n,1,pi)
# tau is the true (homogeneous) treatment effect
tau = (0.5*(x[,3] > 3/4) + 0.25*(x[,3] > 0) + 0.25*(x[,3]>3/4))
# generate the response using q, tau and z
mu = (q + tau*z)
# set the noise level relative to the expected mean function of Y
sigma = diff(range(q + tau*pi))/8
# draw the response variable with additive error
y = mu + sigma*rnorm(n)
# If you didn't know pi, you would estimate it here
pihat = pnorm(q)
bcf_fit = bcf(y, z, x, x, pihat, nburn=2000, nsim=2000)
# Get posterior of treatment effects
tau_post = bcf_fit$tau
tauhat = colMeans(tau_post)
plot(tau, tauhat); abline(0,1)

Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.