使用领域知识指定因果图#

在 DoWhy 中,我们使用 NetworkX 库来创建因果图。在下面的代码片段中,我们创建了一个链 X→Y→Z

>>> import networkx as nx
>>> causal_graph = nx.DiGraph([('X', 'Y'), ('Y', 'Z')])

networkx 图对象可以直接传递给 DoWhy 函数。或者,您可以使用 networkx 图的 GML 字符串表示来实例化 CausalModel

>>> from dowhy import CausalModel
>>> import networkx as nx
>>> model = CausalModel(
>>>    data=df, # some pandas dataframe
>>>    treatment="v0",
>>>    outcome="y",
>>>    graph="\n".join(nx.generate_gml(causal_graph))
>>> )

注意,根据因果任务的不同,图不需要完全指定。例如,对于 使用特定效应估计器进行效应估计(针对 ACE、中介效应等),可以提供一个部分图,表示对某些变量的先验知识。DoWhy 会自动将其余变量视为潜在混杂因素。或者,也可以提供识别目标因果量所需的变量名称,例如用于效应估计任务的工具变量或处理和结果的共同原因。

>>> model = CausalModel(
>>>    data=df, # some pandas dataframe
>>>    treatment="v0",
>>>    outcome="y",
>>>    common_causes=["w", "z"],
>>> )