Implementation of ID* and IDC*
After a very long (almost two year) road, we have implemented a complete ID* and IDC* algorithm. This is based on Shpitser and Pearl, 2012, however it fixes several issues with the original algorithm returning incorrect results.
What's Changed
- Generalize P() function by @cthoyt in #57
- Small updates by @cthoyt in #58
- Update graph I/O and mutation algorithms by @cthoyt in #59
- More graph improvements to support ID/IDC by @cthoyt in #60
- Improve canonicalization algorithm by @cthoyt in #63
- Update type hints by @cthoyt in #64
- Add safe constructors by @cthoyt in #65
- Add canonicalized expression equals test by @cthoyt in #66
- Pre-ID updates by @cthoyt in #67
- Implement the ID and IDC algorithms by @cthoyt in #46
- Implement bracket notation for probabilities with L2 interventions by @cthoyt in #68
- Add y0 DSL output and generalize P() by @cthoyt in #61
- Update draw graph by @cthoyt in #77
- Expose distribution properties through probability DSL object by @cthoyt in #82
- Enforce graphs are only on variables by @cthoyt in #90
- Update expression in line 1 of identification by @cthoyt in #89
- Add zero element to DSL by @cthoyt in #96
- ⭐ Stars for everyone by @cthoyt in #98
- Update marginalize and conditional functions in DSL by @cthoyt in #100
- Add predicate to counterfactual variables for checking tautologies by @cthoyt in #101
- Fix graph types in design algorithm by @cthoyt in #107
- Add definition of "expression complexity" by @cthoyt in #105
- Add 3.10 testing by @cthoyt in #91
- Add generic simulation with Linear SCM by @cthoyt in #108
- Make counterfactual variables' interventions' star status explicit by @cthoyt in #111
- Refactor falsifications module by @cthoyt in #113
- Update notebooks by @cthoyt in #117
- Blacken notebooks by @cthoyt in #119
- Update packaging and meta by @cthoyt in #118
- Added ASKEM grant by @djinnome in #126
- Fix tox.ini by @cthoyt in #129
- Better canonicalize ordering by @cthoyt in #131
- Add parallel worlds and counterfactual graphs by @cthoyt in #128
- Automate testing notebooks by @cthoyt in #132
- Counterfactual notebook by @djinnome in #133
- Improve d-separation by @cthoyt in #135
- Improve term canonicalization by @cthoyt in #138
- Update minimum version to 3.10 by @cthoyt in #141
- Handle overlapping interventions by @cthoyt in #142
- Add tests for self-intervention by @cthoyt in #143
- Fix bug in conditional() by @cthoyt in #144
- Project cleanup by @cthoyt in #146
- Update default graph draw by @cthoyt in #147
- Implement ID* and IDC* by @djinnome in #140
Full Changelog: v0.1.0...v0.2.0