| meta.transport {causaleffect} | R Documentation |
Derive a transport formula for a causal effect between a target domain and multiple source domains
Description
This function returns an expression for the transport formula of a causal effect between a target domain and multiple source domains. The formula is returned for the interventional distribution of the set of variables (y) given the intervention on the set of variables (x). The multiple source domains are given as a list of selection diagrams (D). If the effect is non-transportable, an error is thrown describing the graphical structure that witnesses non-transportability. The vertices of any diagram in (D) that correspond to selection variables must have a description parameter of a single character "S" (shorthand for "selection").
Usage
meta.transport(y, x, D, expr = TRUE, simp = TRUE,
steps = FALSE, primes = FALSE, stop_on_nonid = TRUE)
Arguments
y |
A character vector of variables of interest given the intervention. |
x |
A character vector of the variables that are acted upon. |
D |
A list of |
expr |
A logical value. If |
simp |
A logical value. If |
steps |
A logical value. If |
primes |
A logical value. If |
stop_on_nonid |
A logical value. If |
Value
If steps = FALSE, A character string or an object of class probability that describes the transport formula. Otherwise, a list as described in the arguments.
Author(s)
Santtu Tikka
References
Bareinboim E., Pearl J. 2013b Meta-Transportability of Causal Effects: A Formal Approach. Proceedings of the 16th International Conference on Artificial Intelligence and Statistics, 135–143.
See Also
parse.graphml, get.expression, transport, generalize
Examples
library(igraph)
# Selection diagram corresponding to the first source domain.
# We set simplify = FALSE to allow multiple edges.
d1 <- graph.formula(X -+ Z, W_1 -+ W_2, W_2 -+ Z,
W_3 -+ Z, X -+ W_3, W_2 -+ X, Z -+ Y, # Observed edges
S_1 -+ X, S_2 -+ W_2, S_3 -+ W_3, S_4 -+ Y, # Edges related to selection variables
X -+ W_3, W_3 -+ X, X -+ W_2, W_2 -+ X, X -+ W_1,
W_1 -+ X, W_1 -+ Z, Z -+ W_1, simplify = FALSE)
# Here the bidirected edges are set to be unobserved in the selection diagram d1.
# This is denoted by giving them a description attribute with the value "U".
# The first 7 edges are observed and the next 4 are related to the selection variables.
# The rest of the edges are unobserved.
d1 <- set.edge.attribute(d1, "description", 12:19, "U")
# The variables "S_1", "S_2", "S_3" and "S_4" are selection variables.
# This is denoted by giving them a description attribute with the value "S".
d1 <- set.vertex.attribute(d1, "description", 7:10, "S")
# Selection diagram corresponding to the second
# source domain is constructed in a similar fashion.
d2 <- graph.formula(X -+ Z, W_1 -+ W_2, W_2 -+ Z, W_3 -+ Z,
X -+ W_3, W_2 -+ X, Z -+ Y, # Observed edges
S_1 -+ X, S_2 -+ W_2, S_3 -+ W_1,
S_4 -+ Y, S_5 -+ Z, # Edges related to selection variables
X -+ W_3, W_3 -+ X, X -+ W_2, W_2 -+ X, X -+ W_1,
W_1 -+ X, W_1 -+ Z, Z -+ W_1, simplify = FALSE)
d2 <- set.edge.attribute(d2, "description", 13:20, "U")
d2 <- set.vertex.attribute(d2, "description", 7:11, "S")
# We combine the diagrams as a list.
d.comb <- list(d1, d2)
meta.transport(y = "Y", x = "X", D = d.comb)