causaleffect {BCDAG}R Documentation

Compute causal effects between variables


This function computes the total joint causal effect on variable response consequent to an intervention on variables targets for a given a DAG structure and parameters (D,L)


causaleffect(targets, response, L, D)



numerical vector with labels of target nodes


numerical label of response variable


(q,q) matrix of regression-coefficient parameters


(q,q) diagonal matrix of conditional-variance parameters


We assume that the joint distribution of random variables X_1, \dots, X_q is zero-mean Gaussian with covariance matrix Markov w.r.t. a Directed Acyclic Graph (DAG). In addition, the allied Structural Equation Model (SEM) representation of a Gaussian DAG-model allows to express the covariance matrix as a function of the (Cholesky) parameters (D,L), collecting the conditional variances and regression coefficients of the SEM.

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).


The joint total causal effect, represented as a vector of same length of targets


Federico Castelletti and Alessandro Mascaro


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.


# Randomly generate a DAG and the DAG-parameters
q = 8
w = 0.2
DAG = rDAG(q = q, w = w)
outDL = rDAGWishart(n = 1, DAG = DAG, a = q, U = diag(1, q))
L = outDL$L; D = outDL$D
# Total causal effect on node 1 of an intervention on {5,6}
causaleffect(targets = c(6,7), response = 1, L = L, D = D)
# Total causal effect on node 1 of an intervention on {5,7}
causaleffect(targets = c(5,7), response = 1, L = L, D = D)

[Package BCDAG version 1.0.0 Index]