因果建模的Python代码。
项目描述
y0
y0
(发音为“why not?”)是因果推理的Python代码。
💪 入门指南
表示概率表达式
y0
有一个功能齐全的内部领域特定语言,用于表示概率表达式
from y0.dsl import P, A, B
# The probability of A given B
expr_1 = P(A | B)
# The probability of A given not B
expr_2 = P(A | ~B)
# The joint probability of A and B
expr_3 = P(A, B)
它也可以用于操作表达式
from y0.dsl import P, A, B, Sum
P(A, B).marginalize(A) == Sum[A](P(A, B))
P(A, B).conditional(A) == P(A, B) / Sum[A](P(A, B))
DSL对象可以用str()
转换为字符串,并使用y0.parser.parse_y0()
解析回对象。
DSL的完整演示可以在这个Jupyter Notebook中找到
表示因果关系
y0
在 networkx
的基础上构建了一个关于非循环有向混合图的抽象,可用于建模因果关系。
from y0.graph import NxMixedGraph
from y0.dsl import X, Y, Z1, Z2
# Example from:
# J. Pearl and D. Mackenzie (2018)
# The Book of Why: The New Science of Cause and Effect.
# Basic Books, p. 240.
napkin = NxMixedGraph.from_edges(
directed=[
(Z2, Z1),
(Z1, X),
(X, Y),
],
undirected=[
(Z2, X),
(Z2, Y),
],
)
y0
在 y0.examples
中包含了许多 Pearl、Shpitser、Bareinboim 等人编写的预编写示例。
进行微积分计算
y0
提供了许多在过去 15 年出版物中尚未实现算法的实际实现,包括:
算法 | 参考文献 |
---|---|
标识符 | Shpitser 和 Pearl,2006 |
标识符 | Shpitser 和 Pearl,2008 |
标识符 | Shpitser 和 Pearl,2012 |
标识符 | Shpitser 和 Pearl,2012 |
替代结果 | Tikka 和 Karvanen,2018 |
将算法应用于 ADMG 和因果查询以生成一个表示在 DSL 中的估计量
from y0.dsl import P, X, Y
from y0.examples import napkin
from y0.algorithm.identify import Identification, identify
# TODO after ID* and IDC* are done, we'll update this interface
query = Identification.from_expression(graph=napkin, query=P(Y @ X))
estimand = identify(query)
assert estimand == P(Y @ X)
🚀 安装
可以从 PyPI 安装最新版本
$ pip install y0
可以直接从 GitHub 安装最新代码和数据
$ pip install git+https://github.com/y0-causal-inference/y0.git
👐 贡献
贡献,无论是提交问题、提交拉取请求还是分叉,都是受欢迎的。有关参与更多信息,请参阅 CONTRIBUTING.md。
👋 属性
⚖️ 许可证
本包中的代码根据 BSD-3-Clause 许可证 许可。
📖 引用
在我们发布有关 y0
的应用说明之前,您可以通过我们的 Zenodo 记录引用此软件(也请参见上面的徽章)。
@software{y0,
author = {Charles Tapley Hoyt and
Jeremy Zucker and
Marc-Antoine Parent},
title = {y0-causal-inference/y0},
month = jun,
year = 2021,
publisher = {Zenodo},
version = {v0.1.0},
doi = {10.5281/zenodo.4950768},
url = {https://doi.org/10.5281/zenodo.4950768}
}
🙏 支持者
该项目已得到几家组织的支持(按字母顺序排列)
💰 资金
Y0 因果推理引擎的开发得到了以下资助
资助机构 | 计划 | 拨款 |
---|---|---|
DARPA | 自动化科学知识提取(ASKE) | HR00111990009 |
PNNL 数据模型收敛计划 | 用于分析安全约束单元计划的替代结果因果关系和机器学习方法(SCY0) | 90001 |
DARPA | 自动化科学知识提取和建模(ASKEM) | HR00112220036 |
🍪 Cookiecutter
此包是用 @audreyfeldroy 的 cookiecutter 包以及 @cthoyt 的 cookiecutter-python-package 模板创建的。
🛠️ 开发
请参阅开发者说明
README 的最后一部分是为那些想要通过编写代码贡献来参与的人。
开发者安装
要在开发模式下安装,请使用以下命令
$ git clone git+https://github.com/y0-causal-inference/y0.git
$ cd y0
$ pip install -e .
❓ 测试
在克隆存储库并使用 pip install tox
安装 tox
后,可以从 tests/
文件夹中重复运行单元测试
$ tox
此外,这些测试会在每次提交时自动重新运行,使用的是 GitHub Action。
📦 制作发行版
在开发模式下安装包并使用 pip install tox
安装 tox
后,在 tox.ini
中的 finish
环境中包含创建新发行版的命令。在 shell 中运行以下命令
$ tox -e finish
此脚本执行以下操作
- 使用 BumpVersion 将
setup.cfg
和src/y0/version.py
中的版本号切换为不带-dev
后缀 - 将代码打包成 tar 归档和 wheel
- 使用
twine
上传到 PyPI。请确保配置了.pypirc
文件,以避免在此步骤中需要手动输入 - 推送到 GitHub。您需要创建一个与版本提升提交关联的发行版。
- 将版本提升到下一个补丁版本。如果您进行了重大更改并希望通过次级版本提升版本,请在之后使用
tox -e bumpversion minor
。
项目详情
下载文件
下载适合您平台文件的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。
源分布
构建分布
y0-0.2.11.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 076d5bcd8c0bf0ad48b0a1ee226b3eaea85f5be9000ebd69325daf9fbdb94172 |
|
MD5 | a390afb6df2634ac16d8a2698e2a511d |
|
BLAKE2b-256 | 4453d398db0662d53e32ba4428df7a00627e5aa619d337d62830536ac93df807 |
y0-0.2.11-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 64d724307f8c9a962ffa10f1b573d8fbb7722ba8e63855874e48a0752097db74 |
|
MD5 | be7fa7bff6f73ff9f2ab934c8d9c694c |
|
BLAKE2b-256 | d430c1fd18139043bcfc6dad855251f4891d381f0cfc735a5675781ee228c72b |