CausationEntropy: Pythonic Optimal Causation Entropy
Kevin Slote, Jeremie Fish, Erik Bollt
TL;DR
The paper addresses the need for accessible causal discovery from dynamical systems using Optimal Causation Entropy (oCSE). It introduces a Pythonic open-source implementation, CausationEntropy, that integrates oCSE with modular entropy estimators and forward/backward discovery passes. Version 1.1 adds new synthetic data generators, plotting tools, and support for Gaussian, kNN, geometric-kNN, KDE, and Poisson estimators, with a streamlined workflow that outputs a directed multigraph and edge statistics, including $p$-values from shuffle tests. The MIT-licensed package, accompanied by extensive documentation, notebooks, and testing, aims to serve as a benchmark tool for causal discovery in complex dynamical systems.
Abstract
Optimal Causation Entropy (oCSE) is a robust causal network modeling technique that reveals causal networks from dynamical systems and coupled oscillators, distinguishing direct from indirect paths. CausationEntropy is a Python package that implements oCSE and several of its significant optimizations and methodological extensions. In this paper, we introduce the version 1.1 release of CausationEntropy, which includes new synthetic data generators, plotting tools, and several advanced information-theoretical causal network discovery algorithms with criteria for estimating Gaussian, k-nearest neighbors (kNN), geometric k-nearest neighbors (geometric-kNN), kernel density (KDE) and Poisson entropic estimators. The package is easy to install from the PyPi software repository, is thoroughly documented, supplemented with extensive code examples, and is modularly structured to support future additions. The entire codebase is released under the MIT license and is available on GitHub and through PyPi Repository. We expect this package to serve as a benchmark tool for causal discovery in complex dynamical systems.
