基于核的条件独立性 (KCI) 检验和独立性检验

基于核的条件独立性 (KCI) 检验和独立性检验 [1]。用于检验 x 和 y 在给定 Z 的条件下是否条件独立或无条件独立。对于无条件独立性检验,Z 被设置为空集。

用法

from causallearn.utils.cit import CIT
kci_obj = CIT(data, "kci") # construct a CIT instance with data and method name
pValue = kci_obj(X, Y, S)

上面的代码使用默认参数运行 KCI。如果您想指定 KCI 的某些参数,可以通过例如以下方式进行,

kci_obj = CIT(data, "kci", kernelZ='Polynomial', approx=False, est_width='median', ...)

有关 KCI 检验参数选项的更多详细信息,请参阅 KCI.py

请注意,自发布 v0.1.2.8 以来,我们已将独立性检验从函数重构为类。这实现了速度提升和更灵活的参数指定。

对于用户,您可能需要相应地调整您的代码。具体来说,如果您是

  • 端到端运行基于约束的算法:那么您无需更改任何内容。旧代码仍然兼容。例如,

from causallearn.search.ConstraintBased.PC import pc
from causallearn.utils.cit import kci
cg = pc(data, 0.05, kci)
  • 显式计算检验的 p 值:那么您需要声明 kci_obj,然后像上面那样调用它,而不是像以前那样使用 kci(data, X, Y, condition_set)。请注意,现在 causallearn.utils.cit.kci 是一个字符串 "kci",而不是一个函数。

有关(条件)独立性检验实现的更多详细信息,请参阅 CIT.py

参数

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

method: 字符串, “kci”。

kwargs:

  • 用于指定 KCI 的参数,包括

    KernelX/Y/Z (condition_set): ['Gaussian', 'Linear', 'Polynomial']。(对于 'Polynomial',默认次数为 2。目前,用户可以通过设置 'class PolynomialKernel()' 的 'degree' 来更改。)

    est_width: 设置高斯核的核带宽。
    • ‘empirical’:使用经验规则设置核带宽(默认)。

    • ‘median’:使用中位数技巧设置核带宽。

    polyd: 多项式核次数(默认为 2)。

    kwidthx/y/z: 数据 x/y/z 的核带宽(标准差 sigma)。

    以及更多: 详情请参阅 KCI.py

  • 或者用于 CIT 的高级用法,例如 cache_path。请参阅 高级用法

返回值

p: p 值。