Metadata-Version: 2.1
Name: PyPCAlg
Version: 1.0.1
Summary: A Python implementation of the original PC algorithm.
Home-page: https://github.com/Black-Swan-ICL/PyPCAlg
Author: K. M-H
Author-email: kmh.pro@protonmail.com
License: MIT
Platform: UNKNOWN
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.9
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Scientific/Engineering :: Information Analysis
Classifier: Intended Audience :: Science/Research
Classifier: Intended Audience :: Financial and Insurance Industry
Requires-Python: >=3.9
Description-Content-Type: text/markdown
Requires-Dist: numpy (>=1.22.0)
Requires-Dist: pandas
Requires-Dist: matplotlib
Requires-Dist: scikit-learn
Requires-Dist: pingouin

# PyPCAlg

This repository contains a Python implementation of the original PC algorithm.

# Structure of the package

Folder **examples** contains examples of small dimensional graphs (i.e. with 
a low number of nodes) to test the PC algorithm on. 

The exhaustive lists of the (conditional) independence relationships 
satisfied by these examples (assuming both the causal Markov condition and 
causal Faithfulness) have been worked out. They are contained in files :
- examples/true_independence_relationships_graph_1.csv,
- examples/true_independence_relationships_graph_2.csv,
- examples/true_independence_relationships_graph_3.csv, and
- examples/true_independence_relationships_graph_4.csv.

In practice, the results of the PC algorithm depend on the statistical 
tests of (conditional) independence that we use. Considering the high 
number of statistical (conditional) independence tests carried out by the PC 
algorithm (even on graphs of moderate sizes), it is inevitable that some of 
these statistical tests will be erroneous (that is the whole problem of 
Multiple Hypothesis Testing). 

By providing the lists of (conditional) independence relationships satisfied 
by the examples, we make it possible to check whether the implementation of 
the PC algorithm itself is correct (indeed, things are as if we had at our 
disposal statistical tests of unconditional/conditional dependence that 
always return a correct result : no type I error, no type II error).


