基于核的条件独立性 (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 值。