Methods#
Andrey has 49 supported methods and 1 experimental method.
Start from your data#
| Data | Method | Graph | Families |
|---|---|---|---|
| Continuous Numbers on a scale, one column per variable | PC andrey.pc | CPDAG | Constraint-based 9 Score-based 13 Permutation-based 6 Functional causal models 7 Temporal causal discovery 8 Latent variables 4 Pairwise direction 3 |
| Categorical Labels, such as yes and no, coded as whole numbers | PC andrey.pc | CPDAG | Constraint-based 8 Score-based 8 Permutation-based 6 Temporal causal discovery 3 |
| Mixed Some columns numbers, some labels | PC andrey.pc | CPDAG | Constraint-based 8 Score-based 8 Permutation-based 6 Temporal causal discovery 3 |
| Missing values Some cells are empty | PC andrey.pc | CPDAG | Constraint-based 7 Score-based 4 Permutation-based 2 Temporal causal discovery 3 Pairwise direction 3 |
| Several environments Rows from experiments, interventions, or sites, each labeled | CD-NOD andrey.cdnod | CPDAG | Constraint-based 4 Score-based 5 Permutation-based 6 |
| Several datasets One table per group or time point, same columns | Multi-group DirectLiNGAM andrey.multi_ | DAG | Functional causal models 1 Temporal causal discovery 2 |
| Time series One row per time step | PCMCI andrey.pcmci | Temporal graph | Temporal causal discovery 8 |
| Two variables Which one causes the other? | ANM andrey.anm | Two-node DAG | Pairwise direction 3 |
Methods by family#
Constraint-based#
9 methods. Start with PC.
| Method | Data | Graph | Compared with |
|---|---|---|---|
PC andrey.pcGeneral-purpose structure learning from i.i.d. observational data | Continuous, categorical, mixed, missing values | CPDAG | causal-learn, gCastle, Tetrad, bnlearn, pcalg, and tigramite 0.1.0, 0.6.0, and 0.8.0 release cards |
FCI andrey.fciStructure learning that allows latent confounders and selection bias | Continuous, categorical, mixed, missing values, hidden causes | PAG | causal-learn 0.1.0 and 0.8.0 release cards |
GFCI andrey.gfciGES adjacencies, pruned by independence tests and oriented with FCI's rules | Continuous, categorical, mixed, several environments, hidden causes | PAG | Tetrad 0.7.0 release card |
CD-NOD andrey.cdnodConstraint-based discovery for data pooled from several domains or regimes | Continuous, categorical, mixed, missing values, several environments | CPDAG | causal-learn 0.7.0 release card |
FCI-JCI andrey.fci_FCI for data pooled from several domains or regimes, allowing hidden common causes | Continuous, categorical, mixed, missing values, several environments, hidden causes | PAG | pcalg 0.15.0 release card |
ICP andrey.icpInvariant causal prediction | Continuous, several environments | DAG | InvariantCausalPrediction 0.14.0 release card |
IAMB andrey.iambOne variable's Markov blanket (its parents, children, and children's other parents) by incremental association | Continuous, categorical, mixed, missing values | CPDAG | bnlearn 0.13.0 release card |
Inter-IAMB andrey.inter_One variable's Markov blanket by interleaved IAMB, which shrinks after every addition | Continuous, categorical, mixed, missing values | CPDAG | bnlearn 0.12.0 and 0.13.0 release cards |
MMPC andrey.mmpcOne variable's parents and children, undirected, by max-min parents and children | Continuous, categorical, mixed, missing values | Undirected graph | bnlearn 0.13.0 release card |
Score-based#
13 methods, 1 experimental. Start with GES.
| Method | Data | Graph | Compared with |
|---|---|---|---|
GES andrey.gesGreedy equivalence search | Continuous, categorical, mixed, missing values, several environments | CPDAG | Tetrad and causal-learn 0.6.0 and 0.7.0 release cards |
GIES andrey.giesGreedy interventional equivalence search | Continuous, categorical, mixed, several environments | CPDAG | pcalg 0.7.0 release card |
GnIES andrey.gniesGreedy noise-interventional equivalence search | Continuous, several environments | CPDAG | gnies 0.14.0 release card |
XGES andrey.xgesExtremely greedy equivalence search | Continuous, categorical, mixed | CPDAG | xges 0.3.0 release card |
AGES andrey.agesAggregative greedy equivalence search for linear-Gaussian data with weak edges | Continuous | CPDAG | pcalg 0.17.0 release card |
Hill climbing andrey.hcHill climbing over DAGs | Continuous, categorical, mixed, missing values, several environments | CPDAG | bnlearn and pgmpy 0.3.0 and 0.6.0 release cards |
Tabu search andrey.tabuTabu search over DAGs | Continuous, categorical, mixed, missing values, several environments | CPDAG | bnlearn 0.3.0 release card |
Exact search andrey.exact_Globally optimal score search over DAGs (A* or dynamic programming) | Continuous, categorical, mixed | CPDAG | causal-learn 0.7.0 release card |
CALM andrey.calmContinuous-optimization structure learning in the line of NOTEARS | Continuous | DAG | causal-learn 0.7.0 release card |
NOTEARS andrey.notearsLeast squares with an l1 penalty under the acyclicity equation tr(exp(W*W)) = d | Continuous, missing values | DAG | NOTEARS authors' code 0.17.0 release card |
DAGMA andrey.dagma ExperimentalLeast squares with an l1 penalty and a log-determinant acyclicity barrier lowered along a central path | Continuous | DAG | Not compared yet |
MMHC andrey.mmhcMax-min hill climbing | Continuous, categorical, mixed | CPDAG | bnlearn 0.12.0 and 0.13.0 release cards |
RSMAX2 andrey.rsmax2Conditional-independence tests keep the candidate pairs (restrict=mmpc, iamb, inter_iamb, or pc), then a score search (maximize=hc or tabu) searches DAGs whose edges join only those pairs | Continuous, categorical, mixed | CPDAG | bnlearn 0.12.0 and 0.13.0 release cards |
Permutation-based#
6 methods. Start with BOSS.
| Method | Data | Graph | Compared with |
|---|---|---|---|
BOSS andrey.bossBest-order score search | Continuous, categorical, mixed, missing values, several environments | CPDAG | causal-learn 0.1.0 and 0.8.0 release cards |
GRaSP andrey.graspGreedy relaxation of the sparsest permutation | Continuous, categorical, mixed, missing values, several environments | CPDAG | causal-learn 0.1.0 and 0.8.0 release cards |
BOSS-FCI andrey.boss_GFCI with BOSS in place of GES | Continuous, categorical, mixed, several environments, hidden causes | PAG | Tetrad 0.15.0 release card |
GRaSP-FCI andrey.grasp_GFCI with GRaSP in place of GES | Continuous, categorical, mixed, several environments, hidden causes | PAG | Tetrad 0.15.0 release card |
IGSP andrey.igspInterventional greedy sparsest permutation | Continuous, categorical, mixed, several environments | CPDAG | graphical-model-learning 0.14.0 release card |
UT-IGSP andrey.ut_Unknown-target interventional greedy sparsest permutation | Continuous, categorical, mixed, several environments | CPDAG | graphical-model-learning 0.14.0 release card |
Functional causal models#
7 methods. Start with DirectLiNGAM.
| Method | Data | Graph | Compared with |
|---|---|---|---|
DirectLiNGAM andrey.direct_DirectLiNGAM for linear non-Gaussian data | Continuous | DAG | causal-learn and lingam 0.1.0 and 0.4.1 release cards |
ICA-LiNGAM andrey.ica_ICA-based LiNGAM for linear non-Gaussian data | Continuous | DAG | causal-learn 0.1.0 release card |
Multi-group DirectLiNGAM andrey.multi_DirectLiNGAM fit jointly across >= 2 datasets sharing the same variables | Continuous, several datasets | DAG | lingam 0.7.0 release card |
CAM andrey.camCausal additive model (CAM) for nonlinear additive effects with additive noise | Continuous | DAG | CAM 0.13.0 release card |
RESIT andrey.resitRegression with subsequent independence test (RESIT) for nonlinear effects with additive noise of any distribution | Continuous | DAG | authors' R RESIT and lingam 0.13.0 release card |
SCORE andrey.score_SCORE for nonlinear effects with additive Gaussian noise | Continuous | DAG | SCORE authors' code 0.17.0 release card |
NoGAM andrey.nogamNoGAM for nonlinear effects with additive noise of any distribution | Continuous | DAG | dodiscover 0.17.0 release card |
Temporal causal discovery#
8 methods. Start with PCMCI.
| Method | Data | Graph | Compared with |
|---|---|---|---|
VARMA-LiNGAM andrey.varma_VARMA-LiNGAM for a single multivariate time series | Continuous, time series | Temporal graph | lingam 0.5.0 release card |
Longitudinal LiNGAM andrey.longitudinal_Longitudinal LiNGAM for panel data (the same units measured at several time points) | Continuous, several datasets, time series | Temporal graph | lingam 0.5.0 release card |
PCMCI andrey.pcmciPCMCI for a single multivariate time series | Continuous, categorical, mixed, missing values, time series | Temporal graph | tigramite 0.5.0 release card |
PCMCI+ andrey.pcmciplusPCMCI+ for a single multivariate time series | Continuous, categorical, mixed, missing values, time series | Temporal graph | tigramite 0.5.0 release card |
J-PCMCI+ andrey.jpcmciplusJ-PCMCI+ for time series from several datasets that differ through measured or hidden contexts | Continuous, several datasets, time series | Temporal graph | tigramite 0.15.0 release card |
LPCMCI andrey.lpcmciLPCMCI for a single multivariate time series with possible hidden common causes | Continuous, categorical, mixed, missing values, hidden causes, time series | Temporal graph | tigramite 0.5.0 release card |
Granger andrey.grangerGranger causality for a single multivariate time series | Continuous, time series | Temporal graph | causal-learn 0.5.0 release card |
DYNOTEARS andrey.dynotearsDYNOTEARS for a single multivariate time series | Continuous, time series | Temporal graph | CausalNex 0.14.0 release card |
Latent variables#
4 methods. Start with GIN.
| Method | Data | Graph | Compared with |
|---|---|---|---|
GIN andrey.ginGeneralized independent noise (GIN) for linear non-Gaussian models with latent variables | Continuous, hidden causes | DAG | Tetrad and causal-learn 0.7.0 release card |
RCD andrey.rcdRepetitive causal discovery (RCD) for linear non-Gaussian data with hidden common causes | Continuous, hidden causes | PAG | lingam 0.2.0 release card |
BottomUpParceLiNGAM andrey.bottom_BottomUpParceLiNGAM for linear non-Gaussian data with hidden common causes | Continuous, hidden causes | PAG | lingam 0.2.0 release card |
CAM-UV andrey.camuvCausal additive models with unobserved variables (CAM-UV) for nonlinear additive effects where some causes are hidden | Continuous, hidden causes | PAG | lingam and causal-learn 0.14.0 release card |
Pairwise direction#
3 methods. Start with ANM.
| Method | Data | Graph | Compared with |
|---|---|---|---|
ANM andrey.anmAdditive-noise-model pairwise direction test | Continuous, missing values, two variables | Two-node DAG | causal-learn 0.4.0 release card |
PNL andrey.pnlPost-nonlinear pairwise direction test | Continuous, missing values, two variables | Two-node DAG | causal-learn 0.4.0 release card |
LOCI andrey.lociLocation-scale-noise-model pairwise direction test | Continuous, missing values, two variables | Two-node DAG | LOCI authors' code 0.16.0 release card |