Baseline algorithms and analytics tools for Causal Discovery.
Project description
CausalDisco 🪩
CausalDisco provides baseline algorithms and analytics tools for Causal Discovery in Python. The package can be installed by running pip install CausalDisco. Additional information can be found in the documentation.
Baseline Algorithms
Find the following baseline algorithms in CausalDisco/baselines.py
- R²-SortnRegress
- Var-SortnRegress
- Random-SortnRegress
Analytics Tools
Find the following analytics tools in CausalDisco/analytics.py
- R²-sortability
- Var-sortability
- order_alignment
Sources
If you find our algorithms useful please consider citing
- Beware of the Simulated DAG!
- A Scale-Invariant Sorting Criterion to Find a Causal Order in Additive Noise Models.
@inproceedings{reisach2023scale,
title = {{A Scale-Invariant Sorting Criterion to Find a Causal Order in Additive Noise Models}},
author = {Alexander G. Reisach and Myriam Tami and Christof Seiler and Antoine Chambaz and Sebastian Weichwald},
booktitle = {{Advances in Neural Information Processing Systems 36 (NeurIPS)}},
year = {2023},
doi = {10.48550/arXiv.2303.18211},
}
@inproceedings{reisach2021beware,
title = {{Beware of the Simulated DAG! Causal Discovery Benchmarks May Be Easy to Game}},
author = {Alexander G. Reisach and Christof Seiler and Sebastian Weichwald},
booktitle = {{Advances in Neural Information Processing Systems 34 (NeurIPS)}},
year = {2021},
doi = {10.48550/arXiv.2102.13647},
}
A Simple Example
# --- sample data from a linear SCM:
import numpy as np
from scipy import linalg
d = 10
W = np.diag(np.ones(d-1), 1)
X = np.random.randn(10000, d).dot(linalg.inv(np.eye(d) - W))
X_std = (X - np.mean(X, axis=0))/np.std(X, axis=0)
# --- run analytics and print results:
from CausalDisco.analytics import (
var_sortability,
r2_sortability,
snr_sortability
)
print(
f'True\n{W}\n'
f'var-sortability={var_sortability(X, W):.2f}\n'
f'R^2-sortability={r2_sortability(X, W):.2f}\n'
f'SNR-sortability={snr_sortability(X, W):.2f}'
)
# --- run baselines and print results:
from CausalDisco.baselines import (
random_sort_regress,
var_sort_regress,
r2_sort_regress
)
print(
f'True\n{W}\n'
'--- randomRegress ---\n'
f'Recovered:\n{1.0*(random_sort_regress(X)!=0)}\n'
f'Recovered standardized:\n{1.0*(random_sort_regress(X_std)!=0)}\n'
'--- varSortnRegress ---\n'
f'Recovered:\n{1.0*(var_sort_regress(X)!=0)}\n'
f'Recovered standardized:\n{1.0*(var_sort_regress(X_std)!=0)}\n'
'--- r2SortnRegress ---\n'
f'Recovered:\n{1.0*(r2_sort_regress(X)!=0)}\n'
f'Recovered standardized:\n{1.0*(r2_sort_regress(X_std)!=0)}\n'
)
Shout out to Anne Helby Petersen for coming up with the "causal disco" naming idea first (check out her causalDisco package providing tools for causal discovery on observational data in R).
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file causaldisco-0.2.2.tar.gz.
File metadata
- Download URL: causaldisco-0.2.2.tar.gz
- Upload date:
- Size: 6.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b5bc43d19645c962a105b6cf36eb02a48dd0767f5e6ca30b0d7cd78ff3784887
|
|
| MD5 |
b8d0936f8710ffc932ba8eb3e30caabe
|
|
| BLAKE2b-256 |
9c0527191e869ff76fdee572a3f2158203273782e4b3bcdb1477e52a617db5c8
|
File details
Details for the file causaldisco-0.2.2-py2.py3-none-any.whl.
File metadata
- Download URL: causaldisco-0.2.2-py2.py3-none-any.whl
- Upload date:
- Size: 8.2 kB
- Tags: Python 2, Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0aee31f8022fe030eb3493e144f0ed6cb750896e4be7064e153f64a3f362ffa3
|
|
| MD5 |
e6398f12d8718b14a1fac86baf508011
|
|
| BLAKE2b-256 |
84fa178fc0105c4da6b570ef47cfd37152c9fd0f8bd3f371e09c09afc15f91fb
|