An Interface to Specify Causal Graphs and Compute Bounds on Causal Effects
Analyze the causal graph and effect to determine constraints and objec...
Recursive function to get the last name in a list
An Interface to Specify Causal Graphs and Compute Bounds on Causal Eff...
Check conditions on causal problem
Check whether any of the observable constraints implied by the causal ...
Check conditions on query
Sample from a Dirichlet distribution
Sample a distribution of observable probabilities that satisfy the cau...
Simulate bounds
Check linearity of objective function implied by a causal model and ef...
Check for paths from from to to
Check constraints
Create a structural causal model from a graph or a set of response fun...
Translate target effect to vector of response variables
Create linear causal problem from causal model and effect
Translate response functions into matrix of counterfactuals
Translate regular DAG to response functions
Find all paths in a causal model
Define default effect for a given graph
Check conditions on digraph
Initialize an igraph object for use with causaloptim
Convert bounds string to a function
Latex bounds equations
Recursive function to translate an effect list to a path sequence
Compute a bound on the average causal effect
Run the optimizer to obtain symbolic bounds
Parse text that defines a the constraints
Parse text that defines a causal effect
Plot the analyzed graph object
Plot the graph from the causal problem with a legend describing attrib...
Print relevant information about the causal model
Print the causal problem
Shiny interface to specify network structure and compute bounds
Update the effect in a linearcausalproblem object
When causal quantities are not identifiable from the observed data, it still may be possible to bound these quantities using the observed data. We outline a class of problems for which the derivation of tight bounds is always a linear programming problem and can therefore, at least theoretically, be solved using a symbolic linear optimizer. We extend and generalize the approach of Balke and Pearl (1994) <doi:10.1016/B978-1-55860-332-5.50011-0> and we provide a user friendly graphical interface for setting up such problems via directed acyclic graphs (DAG), which only allow for problems within this class to be depicted. The user can then define linear constraints to further refine their assumptions to meet their specific problem, and then specify a causal query using a text interface. The program converts this user defined DAG, query, and constraints, and returns tight bounds. The bounds can be converted to R functions to evaluate them for specific datasets, and to latex code for publication. The methods and proofs of tightness and validity of the bounds are described in a paper by Sachs, Jonzon, Gabriel, and Sjölander (2022) <doi:10.1080/10618600.2022.2071905>.