Skip to content
/ pqp Public

A high-performance implementation of Shpitser's ID algorithm for causal identification in Rust

License

Notifications You must be signed in to change notification settings

leo-ware/pqp

Repository files navigation

PQP

The name pqp is short for Pourquoi pas?. This phrase is French for why not?, because "Why not?" was the question we asked ourselves when we found there was no maintained, open-source package for structural causal modeling in Python. The package provides a convenient interface for causal modeling along with routines for identification, estimation, and visualization.

Installation

The package can be installed from PyPi using pip:

pip install pqp

Basic Usage

from pqp.graph import Graph
from pqp.variable import make_vars

# create variables
x, y, z = make_vars("xyz")

# the backdoor model
g = Graph([
    x <= z,
    y <= z,
    y <= x,
])

# identification
causal_estimand = ATE(y, {x: 1}, {x: 0})
estimator = g.identify(causal_estimand)
print(estimator)

# >>> E_(y) [ Σ_(z) [ [P(x = 1, y, z) * P(z) / P(x = 1, z)] ] ] - E_(y) [ Σ_(z) [ [P(x = 0, y, z) * P(z) / P(x = 0, z)] ] ]

Further Reading

For more information, see the documentation at https://leo-ware.github.io/pqp/.

The source code is available at https://github.com/leo-ware/pqp.

About

This package was created by Leo Ware as part of his undergraduate capstone project at Minerva University.

About

A high-performance implementation of Shpitser's ID algorithm for causal identification in Rust

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages