get_causaleffect {BCDAG} | R Documentation |
Estimate total causal effects from the MCMC output
Description
This function provides causal effect estimates from the output of learn_DAG
Usage
get_causaleffect(learnDAG_output, targets, response, verbose = TRUE)
Arguments
learnDAG_output |
object of class |
targets |
numerical |
response |
numerical label of response variable |
verbose |
if |
Details
Output of learn_dag
function consists of S
draws from the joint posterior of DAGs and DAG-parameters in a zero-mean Gaussian DAG-model;
see the documentation of learn_DAG
for more details.
The total causal effect on a given variable of interest (response
) consequent to a joint intervention on a set of variables (targets
)
is defined according to Pearl's do-calculus theory and under the Gaussian assumption can be expressed as a function of parameters (D,L)
,
representing a (Cholesky) reparameterization of the covariance matrix.
Specifically, to each intervened variable a causal effect coefficient is associated and the posterior distribution of the latter can be recovered from posterior draws
of the DAG parameters returned by learn_DAG
. For each coefficient a sample of size S
from its posterior is available. If required, the only
Bayesian Model Average (BMA) estimate (obtained as the sample mean of the S
draws) can be returned by setting BMA = TRUE
.
Notice that, whenever implemented with collapse = FALSE
, learn_DAG
returns the marginal posterior distribution of DAGs only.
In this case, get_causaleffect
preliminarly performs posterior inference of DAG parameters by drawing samples from the posterior of (D,L)
.
Print, summary and plot methods are available for this function. print
returns the values of the prior hyperparameters used in the learnDAG function. summary
returns, for each causal effect parameter, the marginal posterior mean and quantiles for different \alpha
levels, and posterior probabilities of negative, null and positive causal effects. plot
provides graphical summaries (boxplot and histogram of the distribution) for the posterior of each causal effect parameter.
Value
An S3 object of class bcdagCE
containing S
draws from the joint posterior distribution of the p
causal effect coefficients, organized into an (S,p)
matrix, posterior means and credible intervals (under different (1-\alpha)
levels) for each causal effect coefficient, and marginal posterior probabilities of positive, null and negative causal effects.
Author(s)
Federico Castelletti and Alessandro Mascaro
References
J. Pearl (2000). Causality: Models, Reasoning, and Inference. Cambridge University Press, Cambridge.
F. Castelletti and A. Mascaro (2021) Structural learning and estimation of joint causal effects among network-dependent variables. Statistical Methods and Applications, Advance publication.
P. Nandy, M.H. Maathuis and T. Richardson (2017). Estimating the effect of joint interventions from observational data in sparse high-dimensional settings. Annals of Statistics 45(2), 647-674.
Examples
# Randomly generate a DAG and the DAG-parameters
q = 8
w = 0.2
set.seed(123)
DAG = rDAG(q = q, w = w)
outDL = rDAGWishart(n = 1, DAG = DAG, a = q, U = diag(1, q))
L = outDL$L; D = outDL$D
Sigma = solve(t(L))%*%D%*%solve(L)
n = 200
# Generate observations from a Gaussian DAG-model
X = mvtnorm::rmvnorm(n = n, sigma = Sigma)
# Run the MCMC (set S = 5000 and burn = 1000 for better results)
out_mcmc = learn_DAG(S = 500, burn = 100, a = q, U = diag(1,q)/n, data = X, w = w,
fast = TRUE, save.memory = FALSE)
head(out_mcmc$Graphs)
head(out_mcmc$L)
head(out_mcmc$D)
# Compute the BMA estimate of coefficients representing
# the causal effect on node 1 of an intervention on {3,4}
out_causal = get_causaleffect(learnDAG_output = out_mcmc, targets = c(3,4), response = 1)$post_mean
# Methods
print(out_causal)
summary(out_causal)
plot(out_causal)