# Graph-Misspecification

We compute the maximum and minium values of a causal query that require as input an assumed ground truth causal graph in the setting where there is uncertainty about which causal graph is the correct one.
The maximum and minimum over the set of "plausible" or "allowed" causal graphs provide the range in which the true value could lie.

## Code Description
The main code is in the folder `src`. There are three methods currently implemented for the linear case
- `lagrangian.py`: Uses the lagrangian optimization-based method with a continuous acyclicity constraint
- `brute_force.py`: Just a brute force search over all methods. A baseline methods
- `probabilistic_dag.py`: The DP-DAG method which is guaranteed to search only over DAGs

The `run_single_comparison.py` runs all of the three above methods for the linear case with `brute_force` running last. The results are stored in an .npz file for later analysis.

For the non-linear case, we only have `non_linear.py`, which uses the lagrangian-based method.
