MVPC (MVPC)
Module name |
|
Package |
|
Version |
d901361 |
Language |
|
Docs |
|
Paper |
|
Graph type |
|
MCMC |
No |
Edge constraints |
|
Data type |
C, D |
Data missingness |
|
Intervention type |
|
Docker |
Missing Value PC
Abstract: Missing data are ubiquitous in many domains such as healthcare. When these data entries are not missing completely at random, the (conditional) independence relations in the observed data may be different from those in the complete data generated by the underlying causal process. Consequently, simply applying existing causal discovery methods to the observed data may lead to wrong conclusions. In this paper, we aim at developing a causal discovery method to recover the underlying causal structure from observed data that are missing under different mechanisms, including missing completely at random (MCAR), missing at random (MAR), and missing not at random (MNAR). With missingness mechanisms represented by missingness graphs (m-graphs), we analyze conditions under which additional correction is needed to derive conditional independence/dependence relations in the complete data. Based on our analysis, we propose Missing Value PC (MVPC), which extends the PC algorithm to incorporate additional corrections. Our proposed MVPC is shown in theory to give asymptotically correct results even on data that are MAR or MNAR. Experimental results on both synthetic data and real healthcare applications illustrate that the proposed algorithm is able to find correct causal relations even in the general case of MNAR.
GitHub: In this repository, we provide the implementation of Missing Value PC (MVPC) for both linear Gaussian and binary cases. MVPC is a framework of causal discovery in the presence of different missingness mechanisms, including missing completely at random (MCAR), missing at random (MAR), and missing not at random (MNAR). MVPC is based on the PC algorithm and contains two methods for correcting wrong results produced by missing value issues, Permutation-based Correction (PermC) and Density Ratio Weighted (DRW) correction method. More details can be found in the paper Tu et al.[1] and the long paper version Tu et al.[2]. The implementation is based on the R package pcalg.
Example
Config file: mvpc.json
Command:
snakemake --cores all --use-singularity --configfile workflow/rules/structure_learning_algorithms/mvpc/mvpc.json
Fig. 44 and Fig. 45 show FP/P vs. TP/P for pattern graphs and skeletons based on 3 datsets corresponding to 3 realisations of a 20-variables random Gaussian SEM, with an average indegree of 4. Each dataset contains 10000 samples and contains data that is missing not at random (MNAR) and was sampled using mvpc_gen_data.
Fig. 44 FP/P vs. TP/P. for pattern graphs
Fig. 45 FP/P vs. TP/P. for skeletons
Some fields described
corrMethodgaussCItest.drw, gaussCItest.permc, binCItest.drw, binCItest.permcedgeConstraintsName of the JSON file containing Edge constraintsindepTestgaussCItest, binCItest, gaussCItest.td, binCItest.td
Example JSON
[
{
"id": "mvpc",
"alpha": [
0.001,
0.01,
0.05,
0.1
],
"indepTest": "gaussCItest.td",
"corrMethod": "gaussCItest.permc",
"NAdelete": true,
"mmax": "Inf",
"u2pd": "relaxed",
"skelmethod": "stable",
"conservative": false,
"majrule": true,
"solveconfl": true,
"numCores": 1,
"verbose": false,
"timeout": null,
"edgeConstraints": null
}
]