Causal discovery identifies causal relationships from data by learning a causal directed acyclic graph (DAG). Unlike prediction, it asks what causes what, using statistical constraints and explicit assumptions rather than treating associations as interventions. section 1.0 section 4.6
Common discovery strategies include:
- Constraint-based algorithms infer graph structure from conditional independences in the data. section 4.6.1
- Score-based algorithms compare DAGs as explanatory models and seek high goodness-of-fit scores. section 4.6.1
- Continuous-optimization methods relax the discrete DAG search space, while prior knowledge constrains possible edges. section 4.6.1
- Experimental data can improve discovery when intervened variables are identified explicitly. section 4.6.1
The central reasoning pattern is to use causal structure to predict conditional independence. If observed variables violate an independence implied by a candidate DAG, the DAG becomes harder to defend. Faithfulness connects observed independences to d-separations, but Markov-equivalent DAGs can remain indistinguishable, and latent variables can produce serious errors. section 4.1 section 4.7
Blood type and conditional independence
A paternal grandfather’s blood type is an indirect cause of a grandchild’s blood type, yet becomes conditionally independent of it after conditioning on the father’s blood type. This illustrates the kind of constraint discovery algorithms can test. section 4.1
Figure 4.1 Causality induces conditional independence. Your blood type is conditionally independent of your paternal grandfather’s blood type (an indirect cause), given your father’s blood type (a direct cause).
Use the blood-type DAG to visualize how a direct cause blocks information from an indirect ancestor. section 4.1
Treat discovery as exploratory data analysis within a human-led DAG-building workflow, not as an automatic replacement for domain knowledge, model criticism, or downstream causal inference. In Python, PyWhy tools such as causal-learn and DoDiscover provide starting points. section 4.6.4 section 4.6.1
