算法介绍

在捕获了未观测变化因素的增广数据集上执行用于因果发现的 Peter-Clark 算法 (CD-NOD [1])。

用法

推荐使用 pydot 进行可视化。如果需要特定的标签名称,请参考此使用示例 (例如, ‘cg.draw_pydot_graph(labels=[“A”, “B”, “C”])’ 或 ‘GraphUtils.to_pydot(cg.G, labels=[“A”, “B”, "C"]))。

from causallearn.search.ConstraintBased.CDNOD import cdnod

# default parameters
cg = cdnod(data, c_indx)

# or customized parameters
cg = cdnod(data, c_indx, alpha, indep_test, stable, uc_rule, uc_priority, mvcdnod,
      correction_name, background_knowledge, verbose, show_progress)

# visualization using pydot
# note that the last node is the c_indx
cg.draw_pydot_graph()

# or save the graph
from causallearn.utils.GraphUtils import GraphUtils

pyd = GraphUtils.to_pydot(cg.G)
pyd.write_png('simple_test.png')

参数

data: numpy.ndarray, shape (n_samples, n_features)。数据,其中 n_samples 是样本数量,n_features 是特征数量。

c_indx: 捕获未观测变化因素的时间索引或领域索引。

alpha: 所需的显著性水平 (float),范围在 (0, 1) 之间。默认值: 0.05。

indep_test: 独立性检验方法函数。默认值: ‘fisherz’。

fisherz”: Fisher's Z 条件独立性检验。
  • chisq”: 卡方条件独立性检验。

  • gsq”: G 方条件独立性检验。

  • kci”: 基于核的条件独立性检验。(作为一种核方法,其复杂度与样本大小的立方成正比,因此如果样本大小不大,速度可能会很慢)。

  • mv_fisherz”: 缺失值 Fisher's Z 条件独立性检验。

  • (对于更高效的非参数检验,您可以尝试 FastKCI 和 RCIT。这两种实现都仍处于初步阶段,可能存在一些问题)。

stable: 如果为 True,运行稳定化的骨架发现 [3]。默认值: True。

uc_rule: 如何定向未受保护的碰撞点 (unshielded colliders)。默认值: 0。

0: 运行 uc_sepset。
  • 1: 运行 maxP [2]。通过额外的 CI 检验将未受保护的三元组 X-Y-Z 定向为碰撞点。

  • 2: 运行 definiteMaxP [2]。只定向骨架中的确定碰撞点,并跟踪所有确定非碰撞点。

  • uc_priority: 解决未受保护碰撞点之间冲突的规则。默认值: 2。

-1: uc_rule 中的默认值。
  • 0: 覆盖。

  • 1: 定向为双向边。

  • 2: 优先处理已存在的碰撞点。

  • 3: 优先处理更强的碰撞点。

  • 4: 优先处理更强*的碰撞点。

  • mvpc: 是否使用缺失值 PC。默认值 (CDNOD 推荐): False。

correction_name: 如果使用缺失值 PC,则进行缺失值校正。默认值: ‘MV_Crtn_Fisher_Z’

background_knowledge: class BackgroundKnowledge。根据指定的因果连接添加先验边。默认值: None。详细用法请参考其使用示例

verbose: 如果应打印详细输出,则为 True。默认值: False。

show_progress: 如果应在控制台中显示算法进度,则为 True。默认值: True。

返回值

cg : 一个 CausalGraph 对象,其中 cg.G.graph[j,i]=1 且 cg.G.graph[i,j]=-1 表示 i –> j;cg.G.graph[i,j] = cg.G.graph[j,i] = -1 表示 i — j;cg.G.graph[i,j] = cg.G.graph[j,i] = 1 表示 i <-> j。

Huang, B., Zhang, K., Zhang, J., Ramsey, J. D., Sanchez-Romero, R., Glymour, C., & Schölkopf, B. (2020). Causal Discovery from Heterogeneous/Nonstationary Data. J. Mach. Learn. Res., 21(89), 1-53.