Our evolution as a species made a huge step forward when we understood the relationships between causes and effects. These associations may be trivial for some events, but they are not in complex scenarios. To rigorously prove that some occurrences are caused by others, causal theory and causal inference were formalized, introducing the $do$-operator and its associated rules. The main goal of this report is to review and implement in Python some algorithms to compute conditional and non-conditional causal queries from observational data. To this end, we first present some basic background knowledge on probability and graph theory, before introducing important results on causal theory, used in the construction of the algorithms. We then thoroughly study the identification algorithms presented by Shpitser and Pearl in 2006, explaining our implementation in Python alongside. The main identification algorithm can be seen as a repeated application of the rules of $do$-calculus, and it eventually either returns an expression for the causal query from experimental probabilities or fails to identify the causal effect, in which case the effect is non-identifiable. We introduce our newly developed Python library and give some usage examples.
翻译:当我们理解因果关系和因果之间的关系时,我们作为一个物种的进化迈出了一大步。这些关联对某些事件来说可能微不足道,但并不是复杂的情况。为了严格证明某些事件是由其他事件引起的,我们正式确定了因果理论和因果推论,引入了美元操作者及其相关规则。本报告的主要目的是在Python中审查并实施一些算法,从观察数据中计算出有条件和无条件的因果问题。为此,我们首先介绍一些关于概率和图表理论的基本背景知识,然后介绍用于构建这些事件的因果理论的重要结果。然后我们透彻研究Shpitser和Pearl在2006年提出的鉴别算法,解释我们在Python的算法。主要鉴定算法可以被看作是反复应用$do-culus规则,最终可以追溯实验概率的因果查询的表达方式,或者无法确定因果关系,在这种情况下,我们介绍了我们新开发的Python图书馆,并提供了一些使用的实例。