Some of the non-proprietary work and exploration I did while at Perimeter
This repository contains research on causal inference using nonconvex quadratic programming (Gurobi) to estimate causal effects, test graphical model compatibility, and perform counterfactual reasoning when hidden confounders exist.
Transforms causal DAGs into counterfactual graphs to estimate causal intervention effects with hidden confounders. Nodes are "unpacked" into counterfactual versions (e.g.,
Key files:
unpacking_front_door_confounded.ipynb- Main implementation with full documentationGearingDemo_FrontDoorConfounded.py/ipynb- Alternative "gearing" approachinteruption_dag_dvirs*.ipynb- Interruption DAG scenarios
Tests if observed probability distributions are compatible with specific causal graph structures (Bell DAG). Determines whether correlations
Key files:
bell_compatibility_class.py- Reusable class for Bell compatibility testingBell Compatibility.ipynb- Full implementationLatent Var Min Card/- Find minimum cardinality of hidden variable needed
Creates copies of a causal DAG to derive new testable constraints on probability distributions. Used for compatibility testing and causal effect estimation by relating inflated graphs back to the original via constraints.
Key files:
ring_inflation_of_triangle_compatibility_matrix_form.ipynb- Triangle DAG ring inflationtriangle_inflation_do_cond_diff.ipynb- Estimating intervention effects using inflationcut_inflation_of_triangle_compatibility_test.ipynb- Alternative inflation schemes
Generates probability distributions compatible with specific DAG structures using deterministic strategies. Uses the 16 deterministic strategies for binary Bell scenarios as extremal points to create convex combinations.
Key files:
generating_compatible_dists_w_Bell.ipynb- Generate Bell-compatible distributionsgenerate_convex_points_for_funcs.ipynb- Generate extremal points (deterministic strategies)v_checker.py- Parameterized compatibility checker