对撞机#
- colliders(G)[source]#
生成表示图
G
中对撞机的 3 节点元组。在有向无环图 (DAG) 中,如果你有三个节点 A、B 和 C,并且存在从 A 到 C 以及从 B 到 C 的边,那么 C 就是一个对撞机 [1]。在因果图设置中,这意味着事件 A 和 B 都“导致”了 C,并且即使 A 和 B 之间没有直接的因果关系,以 C 为条件也会在 A 和 B 之间产生关联。
- 参数:
- G图
一个 networkx
DiGraph
对象。
- 生成:
- 对撞机的 3 元组表示
每个对撞机都是一个包含父节点、对撞机节点和另一个父节点的 3 元组。
- 抛出:
- NetworkXNotImplemented
如果
G
是无向图。
另见
说明
此函数最初是为 DAG 设计的,但它也适用于循环图。由于循环因果图文献中也提到了对撞机 [2],因此此函数允许使用循环图。如果你需要输入图是无环的,建议像示例中那样进行测试。
参考文献
[2]A Hyttinen, P.O. Hoyer, F. Eberhardt, M J ̈arvisalo, (2013) “Discovering cyclic causal models with latent variables: a general SAT-based procedure”, UAI’13: Proceedings of the Twenty-Ninth Conference on Uncertainty in Artificial Intelligence, pg 301–310, doi:10.5555/3023638.3023669
示例
>>> G = nx.DiGraph([(1, 2), (0, 4), (3, 1), (2, 4), (0, 5), (4, 5), (1, 5)]) >>> nx.is_directed_acyclic_graph(G) True >>> list(nx.dag.colliders(G)) [(0, 4, 2), (0, 5, 4), (0, 5, 1), (4, 5, 1)]