Reference

Methods#

Andrey has 49 supported methods and 1 experimental method.

Start from your data#

DataMethodGraphFamilies
Continuous
Numbers on a scale, one column per variable
PC andrey.pcCPDAGConstraint-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.pcCPDAGConstraint-based 8
Score-based 8
Permutation-based 6
Temporal causal discovery 3
Mixed
Some columns numbers, some labels
PC andrey.pcCPDAGConstraint-based 8
Score-based 8
Permutation-based 6
Temporal causal discovery 3
Missing values
Some cells are empty
PC andrey.pcCPDAGConstraint-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.cdnodCPDAGConstraint-based 4
Score-based 5
Permutation-based 6
Several datasets
One table per group or time point, same columns
Multi-group DirectLiNGAM andrey.multi_group_direct_lingamDAGFunctional causal models 1
Temporal causal discovery 2
Hidden causes
Some common causes are not measured
FCI andrey.fciPAGConstraint-based 3
Permutation-based 2
Temporal causal discovery 1
Latent variables 4
Time series
One row per time step
PCMCI andrey.pcmciTemporal graphTemporal causal discovery 8
Two variables
Which one causes the other?
ANM andrey.anmTwo-node DAGPairwise direction 3

Methods by family#

Constraint-based#

9 methods. Start with PC.

MethodDataGraphCompared with
PC andrey.pc
General-purpose structure learning from i.i.d. observational data
Continuous, categorical, mixed, missing valuesCPDAGcausal-learn, gCastle, Tetrad, bnlearn, pcalg, and tigramite
0.1.0, 0.6.0, and 0.8.0 release cards
FCI andrey.fci
Structure learning that allows latent confounders and selection bias
Continuous, categorical, mixed, missing values, hidden causesPAGcausal-learn
0.1.0 and 0.8.0 release cards
GFCI andrey.gfci
GES adjacencies, pruned by independence tests and oriented with FCI's rules
Continuous, categorical, mixed, several environments, hidden causesPAGTetrad
0.7.0 release card
CD-NOD andrey.cdnod
Constraint-based discovery for data pooled from several domains or regimes
Continuous, categorical, mixed, missing values, several environmentsCPDAGcausal-learn
0.7.0 release card
FCI-JCI andrey.fci_jci
FCI for data pooled from several domains or regimes, allowing hidden common causes
Continuous, categorical, mixed, missing values, several environments, hidden causesPAGpcalg
0.15.0 release card
ICP andrey.icp
Invariant causal prediction
Continuous, several environmentsDAGInvariantCausalPrediction
0.14.0 release card
IAMB andrey.iamb
One variable's Markov blanket (its parents, children, and children's other parents) by incremental association
Continuous, categorical, mixed, missing valuesCPDAGbnlearn
0.13.0 release card
Inter-IAMB andrey.inter_iamb
One variable's Markov blanket by interleaved IAMB, which shrinks after every addition
Continuous, categorical, mixed, missing valuesCPDAGbnlearn
0.12.0 and 0.13.0 release cards
MMPC andrey.mmpc
One variable's parents and children, undirected, by max-min parents and children
Continuous, categorical, mixed, missing valuesUndirected graphbnlearn
0.13.0 release card

Score-based#

13 methods, 1 experimental. Start with GES.

MethodDataGraphCompared with
GES andrey.ges
Greedy equivalence search
Continuous, categorical, mixed, missing values, several environmentsCPDAGTetrad and causal-learn
0.6.0 and 0.7.0 release cards
GIES andrey.gies
Greedy interventional equivalence search
Continuous, categorical, mixed, several environmentsCPDAGpcalg
0.7.0 release card
GnIES andrey.gnies
Greedy noise-interventional equivalence search
Continuous, several environmentsCPDAGgnies
0.14.0 release card
XGES andrey.xges
Extremely greedy equivalence search
Continuous, categorical, mixedCPDAGxges
0.3.0 release card
AGES andrey.ages
Aggregative greedy equivalence search for linear-Gaussian data with weak edges
ContinuousCPDAGpcalg
0.17.0 release card
Hill climbing andrey.hc
Hill climbing over DAGs
Continuous, categorical, mixed, missing values, several environmentsCPDAGbnlearn and pgmpy
0.3.0 and 0.6.0 release cards
Tabu search andrey.tabu
Tabu search over DAGs
Continuous, categorical, mixed, missing values, several environmentsCPDAGbnlearn
0.3.0 release card
CALM andrey.calm
Continuous-optimization structure learning in the line of NOTEARS
ContinuousDAGcausal-learn
0.7.0 release card
NOTEARS andrey.notears
Least squares with an l1 penalty under the acyclicity equation tr(exp(W*W)) = d
Continuous, missing valuesDAGNOTEARS authors' code
0.17.0 release card
DAGMA andrey.dagma Experimental
Least squares with an l1 penalty and a log-determinant acyclicity barrier lowered along a central path
ContinuousDAGNot compared yet
MMHC andrey.mmhc
Max-min hill climbing
Continuous, categorical, mixedCPDAGbnlearn
0.12.0 and 0.13.0 release cards
RSMAX2 andrey.rsmax2
Conditional-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, mixedCPDAGbnlearn
0.12.0 and 0.13.0 release cards

Permutation-based#

6 methods. Start with BOSS.

MethodDataGraphCompared with
BOSS andrey.boss
Best-order score search
Continuous, categorical, mixed, missing values, several environmentsCPDAGcausal-learn
0.1.0 and 0.8.0 release cards
GRaSP andrey.grasp
Greedy relaxation of the sparsest permutation
Continuous, categorical, mixed, missing values, several environmentsCPDAGcausal-learn
0.1.0 and 0.8.0 release cards
BOSS-FCI andrey.boss_fci
GFCI with BOSS in place of GES
Continuous, categorical, mixed, several environments, hidden causesPAGTetrad
0.15.0 release card
GRaSP-FCI andrey.grasp_fci
GFCI with GRaSP in place of GES
Continuous, categorical, mixed, several environments, hidden causesPAGTetrad
0.15.0 release card
IGSP andrey.igsp
Interventional greedy sparsest permutation
Continuous, categorical, mixed, several environmentsCPDAGgraphical-model-learning
0.14.0 release card
UT-IGSP andrey.ut_igsp
Unknown-target interventional greedy sparsest permutation
Continuous, categorical, mixed, several environmentsCPDAGgraphical-model-learning
0.14.0 release card

Functional causal models#

7 methods. Start with DirectLiNGAM.

MethodDataGraphCompared with
DirectLiNGAM andrey.direct_lingam
DirectLiNGAM for linear non-Gaussian data
ContinuousDAGcausal-learn and lingam
0.1.0 and 0.4.1 release cards
ICA-LiNGAM andrey.ica_lingam
ICA-based LiNGAM for linear non-Gaussian data
ContinuousDAGcausal-learn
0.1.0 release card
Multi-group DirectLiNGAM andrey.multi_group_direct_lingam
DirectLiNGAM fit jointly across >= 2 datasets sharing the same variables
Continuous, several datasetsDAGlingam
0.7.0 release card
CAM andrey.cam
Causal additive model (CAM) for nonlinear additive effects with additive noise
ContinuousDAGCAM
0.13.0 release card
RESIT andrey.resit
Regression with subsequent independence test (RESIT) for nonlinear effects with additive noise of any distribution
ContinuousDAGauthors' R RESIT and lingam
0.13.0 release card
SCORE andrey.score_matching
SCORE for nonlinear effects with additive Gaussian noise
ContinuousDAGSCORE authors' code
0.17.0 release card
NoGAM andrey.nogam
NoGAM for nonlinear effects with additive noise of any distribution
ContinuousDAGdodiscover
0.17.0 release card

Temporal causal discovery#

8 methods. Start with PCMCI.

MethodDataGraphCompared with
VARMA-LiNGAM andrey.varma_lingam
VARMA-LiNGAM for a single multivariate time series
Continuous, time seriesTemporal graphlingam
0.5.0 release card
Longitudinal LiNGAM andrey.longitudinal_lingam
Longitudinal LiNGAM for panel data (the same units measured at several time points)
Continuous, several datasets, time seriesTemporal graphlingam
0.5.0 release card
PCMCI andrey.pcmci
PCMCI for a single multivariate time series
Continuous, categorical, mixed, missing values, time seriesTemporal graphtigramite
0.5.0 release card
PCMCI+ andrey.pcmciplus
PCMCI+ for a single multivariate time series
Continuous, categorical, mixed, missing values, time seriesTemporal graphtigramite
0.5.0 release card
J-PCMCI+ andrey.jpcmciplus
J-PCMCI+ for time series from several datasets that differ through measured or hidden contexts
Continuous, several datasets, time seriesTemporal graphtigramite
0.15.0 release card
LPCMCI andrey.lpcmci
LPCMCI for a single multivariate time series with possible hidden common causes
Continuous, categorical, mixed, missing values, hidden causes, time seriesTemporal graphtigramite
0.5.0 release card
Granger andrey.granger
Granger causality for a single multivariate time series
Continuous, time seriesTemporal graphcausal-learn
0.5.0 release card
DYNOTEARS andrey.dynotears
DYNOTEARS for a single multivariate time series
Continuous, time seriesTemporal graphCausalNex
0.14.0 release card

Latent variables#

4 methods. Start with GIN.

MethodDataGraphCompared with
GIN andrey.gin
Generalized independent noise (GIN) for linear non-Gaussian models with latent variables
Continuous, hidden causesDAGTetrad and causal-learn
0.7.0 release card
RCD andrey.rcd
Repetitive causal discovery (RCD) for linear non-Gaussian data with hidden common causes
Continuous, hidden causesPAGlingam
0.2.0 release card
BottomUpParceLiNGAM andrey.bottom_up_parce_lingam
BottomUpParceLiNGAM for linear non-Gaussian data with hidden common causes
Continuous, hidden causesPAGlingam
0.2.0 release card
CAM-UV andrey.camuv
Causal additive models with unobserved variables (CAM-UV) for nonlinear additive effects where some causes are hidden
Continuous, hidden causesPAGlingam and causal-learn
0.14.0 release card

Pairwise direction#

3 methods. Start with ANM.

MethodDataGraphCompared with
ANM andrey.anm
Additive-noise-model pairwise direction test
Continuous, missing values, two variablesTwo-node DAGcausal-learn
0.4.0 release card
PNL andrey.pnl
Post-nonlinear pairwise direction test
Continuous, missing values, two variablesTwo-node DAGcausal-learn
0.4.0 release card
LOCI andrey.loci
Location-scale-noise-model pairwise direction test
Continuous, missing values, two variablesTwo-node DAGLOCI authors' code
0.16.0 release card