Paper: 2608.11156 Authors: Pavel Averin, Theodoros Moysiadis, Ioannis Katakis Categories: stat.ML, cs.LG
The Gap
There are two large, well-developed literatures that rarely talk to each other.
On one side, constraint-based causal discovery. PC, FCI, and their variants (stable-PC, RFCI, PC-simple, and the anytime/conservative flavors) are studied as graph algorithms: correctness proofs assume an oracle that answers “is X independent of Y given Z?” perfectly. Consistency results are stated conditional on that oracle. Everything downstream, skeleton pruning and v-structure orientation, is treated as combinatorics.
On the other side, conditional independence testing as a statistics problem. Fisher’s z for partial correlation, G-square / chi-square on contingency tables, likelihood-ratio and residual-based regression tests, k-NN and mutual-information estimators (CMI, KCMI, mixed-KSG), kernel tests (KCIT, RCIT, RCoT, CDC), and the newer machine-learning constructions (CCIT, GCIT, CRT / holdout-randomization, classifier two-sample tests). Each comes with its own asymptotics, its own null calibration, and its own failure mode. And there is the uncomfortable theoretical result hanging over all of it: for continuous variables with no smoothness restrictions, there is no CI test that has both valid level and non-trivial power against every alternative. The oracle the graph algorithms assume cannot exist in general.
The gap this survey targets is the seam. Existing surveys either enumerate causal discovery algorithms (with a paragraph on “you need a CI test”) or enumerate CI tests as a standalone estimation problem (with a footnote on “these are used in causal discovery”). What is missing is a systematic mapping from test-level statistical properties to graph-level errors: power decay as the conditioning set grows, asymmetric consequences of type I versus type II error, and what happens when you run millions of correlated tests with no coherent multiplicity control. The biomedical framing sharpens it, because that is exactly where the assumptions break: mixed continuous/ordinal/binary variables, n in the hundreds, p in the thousands.
[Problem: PC / FCI correctness assumes a perfect CI oracle]
|
v
[Reality: every real test is biased in a specific direction]
|
+---------------+---------------+
| |
v v
[Assumption layer] [Six test families]
faithfulness partial-corr
i.i.d. sampling contingency-table
correct null calibration regression
no hidden confounders nearest-neighbor
(PC only) kernel
| ML-based
| |
+---------------+---------------+
v
[Method: taxonomy + robustness layers
+ error-propagation mapping]
|
v
[Evidence: literature synthesis +
R / Python library adoption audit]
|
v
[Conclusion: mixed-type CI without
discretization, small-n error control,
scalability = still open]
The Increment
One sentence: Before, choosing a CI test was a data-type lookup (“continuous, so use Fisher’s z”); after, it is an error-budget decision, because the survey makes explicit which graph structures each test’s specific weakness will destroy.
Core Mechanism
A survey’s “method” is its organizing scheme, so let’s be concrete about what the scheme does. Layer one is the taxonomy into six families, and the taxonomy axis is not “how the statistic is computed” but what the test actually assumes about the data-generating distribution. Partial correlation tests linearity plus (approximate) joint Gaussianity, and detects only linear dependence, so a monotone-but-nonlinear edge is silently deleted. Contingency-table tests are assumption-light on functional form but require discretization and blow up combinatorially: the cell count grows like the product of level counts across the conditioning set, so with three ternary conditioners you already have 27 strata to fill. Regression-based tests trade the distributional assumption for a model-specification assumption. Nearest-neighbor and mutual-information estimators are nonparametric but pay the curse of dimensionality in the conditioning set and typically need permutation or local-permutation schemes because their null distribution has no closed form. Kernel tests get near-universal consistency in exchange for kernel/bandwidth choices and, in the original form, cubic cost in n. ML-based tests recast CI as a prediction or generative-modeling problem and inherit whatever bias the learner has, plus a dependence on sample splitting.
Layer two is the robustness wrapper set, and this is the part I found most useful conceptually. The wrappers are largely orthogonal to the families: rank/copula transforms (making Fisher’s z work on ordinal and heavy-tailed data), shrinkage and regularized precision-matrix estimation (making partial correlation survive p > n), permutation and local permutation (getting a valid null without asymptotics), bootstrap and subsampling, stratification/pooling to fix sparse contingency cells, sample splitting and cross-fitting for the ML tests, and multiplicity control layered on top. A single “test” as used in practice is thus a family plus a stack of wrappers, and the survey’s point is that the wrappers change the error profile as much as the family does.
Layer three is the propagation account, and it is where the survey earns its keep. The critical asymmetry: in PC, the null hypothesis is independence, so a test with low power fails to reject and therefore declares independence and deletes the edge. Power decay with conditioning set size is thus not neutral noise, it is a systematic bias toward sparser skeletons at exactly the higher-order conditioning stages. Worse, deletion is not a local event: the conditioning set Z that produced the deletion is stored as Sepset(X,Y), and v-structure orientation asks whether the middle node sits in that sepset. So one under-powered test corrupts an edge and the record used to orient neighboring triples, and Meek’s rules then propagate the wrong arrowhead across the graph. Inflated type I error (falsely rejecting independence) has the opposite and more benign signature: a denser skeleton, more edges to test, and higher runtime, but fewer confidently wrong arrows.
raw data: mixed types, n ~ 10^2, p ~ 10^3
|
v
+--------------------------------------+
| LAYER 1 family = assumption set |
| |
| partial-corr .... linear + Gaussian |
| contingency ..... discrete, dense |
| regression ...... model correct |
| nearest-nbr ..... low-dim Z |
| kernel .......... bandwidth + O(n^3) |
| ML-based ........ learner bias |
+--------------------------------------+
|
v
+--------------------------------------+
| LAYER 2 robustness wrappers |
| rank / copula transform |
| shrinkage precision matrix |
| permutation, local permutation |
| bootstrap, subsampling |
| cell pooling, sample splitting |
| FWER / FDR control |
+--------------------------------------+
|
v
p-value vs alpha
|
+-----------+-----------+
| |
reject accept
(dependent) (independent)
| |
keep X - Y delete X - Y
| AND store Z as
| Sepset(X, Y)
| |
+-----------+-----------+
v
+--------------------------------------+
| LAYER 3 graph-level consequence |
| |
| low power ==> too-sparse skeleton |
| high type I ==> too-dense skeleton |
| bad sepset ==> wrong v-structure |
| | |
| v |
| Meek rules propagate |
| the error outward |
+--------------------------------------+
Here is the metaphor that made it click for me, and it is the one the paper’s biomedical framing invites: the CI test is a clinical lab assay, and the causal graph is the diagnosis.
Each of the six families is a different assay technology. Partial correlation is a cheap colorimetric strip: fast, reliable, but only detects one analyte in one chemical form. Contingency tables are manual cell counting under a microscope: no assumptions about mechanism, but you need enough cells in each field of view, and if you slice the sample into 27 fields you are counting three cells per field and reporting noise. Kernel tests are mass spectrometry: will detect essentially anything, expensive, and the answer depends on how you tuned the instrument. ML-based tests are a machine-learned image classifier: excellent where it was trained, quietly wrong outside that distribution.
Conditioning set size is the number of covariates you insist on matching before comparing patients. Match on age, and you still have hundreds of comparable patients. Match on age, sex, BMI, three comorbidities, and two medications, and you are comparing one patient to one patient. The assay is unchanged; the effective sample has evaporated. That is power decay, and the reason it bites in causal discovery specifically is the direction of the default: an inconclusive assay is read as “no association,” and “no association” means the doctor crosses a suspected mechanism off the list. The robustness wrappers are the lab’s calibration and controls: run the sample in triplicate (bootstrap), shuffle the labels to see what a null slide looks like (permutation), convert absolute readings to ranks so a miscalibrated machine still gives a valid comparison (rank transform), correct for the fact that you ran ten thousand assays today (FDR).
And the diagnosis logic is PC/FCI. A single false negative does not just remove one line from the chart. It gets written into the record as “we ruled this out while controlling for W,” and the next inference step reads that record to decide the direction of a neighboring relationship. One bad assay, propagated through the diagnostic protocol, yields a confidently stated causal claim that is backwards. That asymmetry, false negatives are structurally more damaging than false positives, is the survey’s central practical message.
Key Concepts
-
Conditional independence, and why the “conditional” part is brutal: Plain independence asks whether knowing X tells you anything about Y. Conditional independence asks a harder question: among people who are *identical on Z, does knowing X still tell you anything about Y? Ice cream sales and drowning deaths are dependent; among days with the same temperature, they are not. The computational cruelty is that “identical on Z” is a slicing operation. Each variable you add to Z multiplies the number of slices and divides your data among them. With continuous Z there are no exact matches at all, so every method has to fake it: assume a functional form (regression), assume linearity (partial correlation), find approximate neighbors (k-NN), or embed the conditional distribution in a function space (kernel). Every CI test is a different answer to “how do I pretend I have matched samples when I do not.”
-
Power decay with conditioning set size: Statistical power is the chance of catching a real dependence. It falls as Z grows, for reasons that differ by family but all reduce to shrinking effective sample size or growing degrees of freedom. Concretely: a genuine but modest dependence between two genes might be detected with an empty conditioning set at n = 200, survive conditioning on two variables, and become undetectable conditioning on five. PC tests conditioning sets in increasing order of size, so the tests it runs *late are the weak ones, and those are the ones deciding the subtle edges. If you have ever noticed that PC output gets suspiciously sparse as you raise the maximum conditioning-set depth, this is the mechanism.
-
Asymmetric error consequences (sepset poisoning): PC finds a v-structure X to Z back-from Y when X and Y are non-adjacent and Z is *not in the separating set that removed the X-Y edge. So the sepset is not bookkeeping, it is the evidence for orientation. Suppose the true separating set for X and Y is {Z, W}, but an under-powered test accepts independence given {W} alone. The edge is correctly removed, but the stored sepset omits Z, and the algorithm now sees a v-structure that does not exist and orients two arrowheads into Z. Meek’s rules then propagate those arrowheads. A single missing element in a single sepset can flip the causal direction of a whole neighborhood, which is why a test being “slightly conservative” is not a slightly worse outcome.
Framework Shift
Before (mainstream practice): After (this survey's framing):
pick algorithm: PC target: which graph
| features must be right?
v |
pick test by data type v
(continuous -> fisherz error budget:
discrete -> gsq FN cost vs FP cost
mixed -> discretize) |
| v
v choose family by
run, get a graph assumption match
| |
v v
worry about alpha add wrappers to patch
and nothing else the specific weakness
|
test = interchangeable v
black box run; read skeleton
density + sepsets as
CI test <--> graph diagnostics
connection: unexamined |
v
test = calibrated
instrument with a
known bias direction
CI test ==> graph
error: traced
From “which test matches my data type” to “which graph errors can I afford,” the core shift is treating the CI test as an instrument with a known bias direction rather than an interchangeable subroutine.
Expert Assessment
A caveat up front: I am working from the abstract and framing, so my read on how deeply the error-propagation analysis is developed versus merely asserted is provisional. That distinction is exactly what determines whether this is a good survey or a very good one.
Problem choice: Real gap, not manufactured. The disconnect between causal-discovery theory (oracle assumed) and practice (whichever test the library defaulted to) is genuine, and practitioners feel it as unexplained instability across CI-test choices. The biomedical scoping is honest rather than decorative, because mixed-type, small-n, high-p is precisely the regime where the standard advice fails. Where it sits in the trajectory: this is consolidation work arriving after a decade of test proliferation (kernel tests circa 2011 onward, ML-based tests circa 2017 onward) and after the theoretical bad news about the impossibility of a universally valid and powerful CI test. That is the right moment for a survey. The risk is that the field has partly moved on to score-based and continuous-optimization methods (GES, NOTEARS-family) and to differentiable or amortized causal discovery, where the CI test is not the bottleneck. The survey should say why constraint-based methods still matter, and the honest answer, that FCI handles latent confounders in a way score-based methods largely do not, deserves to be made loudly.
Method maturity: The six-family taxonomy is conventional and mostly matches what you would draw yourself. The genuinely valuable contribution is the separation of “family” from “robustness layer,” because that is not how the literature usually presents it, and it explains a lot of practical confusion, e.g. that rank-transformed Fisher’s z is a meaningfully different test from Fisher’s z but appears under the same name in software. The test-property to graph-error mapping is the other real contribution. My concern is depth: this mapping can be done rigorously (finite-sample bounds relating test error rates to expected structural Hamming distance, or an analysis of sepset error propagation through Meek’s rules), or it can be done as narrative. Narrative is still useful, but it is not a result. A simpler alternative the field keeps overlooking, and which a survey is well placed to advocate: instead of chasing better tests, use stability across resamples as the primary edge criterion, i.e. stability selection at the edge level. That sidesteps calibration problems entirely and is criminally under-adopted.
Experimental integrity: A survey with no unified benchmark inherits every incomparability in its sources. Reported power and runtime numbers across CI-test papers use different simulators, different graph densities, different noise, and different alpha, so a synthesis of them is a synthesis of apples and oranges. If the paper includes even a modest common-protocol experiment, say six families times the same simulated mixed-type graphs at n = 100/500/2000, that would be the single highest-value addition. The R/Python library-adoption audit is the most verifiable and most immediately useful part, and it also functions as a quiet critique: the gap between what the literature recommends and what pcalg, bnlearn, causal-learn, and friends actually expose by default is where practitioner behavior is really determined. Red flag to watch for: survey tables that report each method’s strengths from that method’s own paper. Self-reported performance in a comparison table is a systematic optimism bias.
Writing quality: The predictable corner-cutting in this genre is the “open challenges” section, which tends to be a list of things nobody solved, stated at a level of generality that generates no research. The three named challenges (mixed-type CI without discretization, small-sample error control, scalability) are the right three, but they are only useful if each comes with a concrete formulation and a proposed evaluation. The section I would most want rewritten is the propagation analysis: turn it from prose into a small set of worked micro-examples, three or four nodes, showing exactly which test error yields which wrong graph, with the sepset contents printed. That single change would move the paper from “well-organized reference” to “thing people cite when they explain why their PC output is wrong.” Also, the mixed-type problem deserves more than a challenge bullet, because discretization is the most common silent methodological failure in applied causal discovery, and copula/rank and mixed-KSG approaches are mature enough to be given a proper treatment rather than a mention.
Verdict: weak accept — the family-versus-wrapper decomposition and the test-error to graph-error framing are genuinely useful and under-served, but without a common-protocol benchmark it remains a well-organized reading list rather than a source of new evidence.
Takeaways
Things you can actually take and use:
-
The direction of the default matters more than the significance level. In any pipeline where “not significant” triggers a deletion or a rejection, low power is not conservatism, it is a systematic bias toward whatever the null implies. This generalizes far past causal discovery: feature-selection loops, automated data-quality gates, A/B test kill-switches. Ask “which way does an inconclusive test push my artifact?” before tuning alpha.
-
Separate the estimator from its robustness wrappers when naming things. “Fisher’s z” and “rank-transformed shrinkage Fisher’s z” have different assumption sets and different failure modes. Any codebase that logs only the test name is losing the information that explains its own results. Log the wrapper stack.
-
Effective sample size, not nominal sample size, is the quantity to track. In CI testing it is roughly n divided by the number of strata induced by Z. Compute it and refuse to run tests below a threshold, rather than letting the test silently return a meaningless p-value. Several PC implementations expose a maximum conditioning-set depth; the principled way to set it is from effective sample size, not from a round number.
-
Intermediate artifacts are diagnostics. The separating sets PC produces are usually discarded, but they are the evidence trail for every orientation. Dumping them and checking whether they look plausible, right size, sensible membership, is cheap and catches the sepset-poisoning failure mode. The general lesson: when an algorithm makes a decision based on internal bookkeeping, expose the bookkeeping.
-
Use library-adoption gaps as a research map. If the literature recommends a method and no mainstream library implements it, that is either a signal the method is impractical or a low-hanging contribution. Both are worth knowing before you start a project.
What is not here: no new test, no new bounds, no benchmark you can run. If you already know the CI-test landscape, read the taxonomy table and the library-adoption section and skip the rest.
论文: 2608.11156 作者: Pavel Averin, Theodoros Moysiadis, Ioannis Katakis 分类: stat.ML, cs.LG
缺口
有两条各自成熟、却很少对话的文献线。
一边是基于约束的因果发现。 PC、FCI 及其变体(stable-PC、RFCI、PC-simple、保守版与 anytime 版)被当作图算法来研究:一致性证明的前提是存在一个完美的”神谕”,能准确回答”给定 Z,X 与 Y 独立吗?”。 所有下游步骤——骨架剪枝、v-结构定向——都被当成组合问题处理。
另一边是把条件独立性检验当作统计问题。 偏相关的 Fisher’s z、列联表上的 G 方/卡方、基于似然比与残差的回归检验、k-NN 与互信息估计(CMI、KCMI、mixed-KSG)、核方法(KCIT、RCIT、RCoT、CDC),以及较新的机器学习构造(CCIT、GCIT、CRT/留出随机化、分类器双样本检验)。 每一类都有自己的渐近理论、自己的零分布校准、自己的失效方式。 而且头顶还悬着一个令人不适的理论结果:对连续变量、不加平滑性限制时,不存在既保持正确水平、又对所有备择假设有非平凡功效的条件独立性检验。 图算法假设的那个神谕,在一般情形下根本不存在。
这篇综述瞄准的缺口,是两者之间的接缝。 已有综述要么罗列因果发现算法(附一段”你需要一个 CI 检验”),要么把 CI 检验当作独立的估计问题罗列(附一句脚注”这些被用于因果发现”)。 缺的是一张从检验层统计性质到图层错误的系统映射:条件集增大时的功效衰减、第一类与第二类错误后果的不对称、以及在毫无连贯多重性控制的情况下跑上百万个相关检验会发生什么。 生物医学的定位让问题更尖锐,因为那正是假设崩塌的地方:连续/有序/二值混合变量,n 是几百,p 是几千。
[问题: PC / FCI 的正确性依赖完美 CI 神谕]
|
v
[现实: 每个真实检验都有特定方向的偏差]
|
+---------------+---------------+
| |
v v
[假设层] [六大检验家族]
因果忠实性 偏相关
独立同分布 列联表
零分布校准正确 回归
无隐藏混淆 (仅 PC) 最近邻
| 核方法
| 机器学习
+---------------+---------------+
v
[方法: 分类体系 + 鲁棒性层
+ 错误传导映射]
|
v
[证据: 文献综合 +
R / Python 库采纳情况审计]
|
v
[结论: 免离散化的混合类型 CI、
小样本错误控制、可扩展性
= 仍然开放]
增量
一句话: 以前选 CI 检验是查数据类型对照表(“连续型,那就 Fisher’s z”);这篇之后,它变成一次错误预算决策,因为综述明确指出了每种检验的具体弱点会摧毁图中的哪类结构。
核心机制
综述的”方法”就是它的组织方案,所以我们具体说这个方案做了什么。 第一层是六大家族的分类,而分类轴不是”统计量怎么算”,而是这个检验到底对数据生成分布假设了什么。 偏相关假设线性加(近似)联合高斯,只能检出线性依赖,于是单调但非线性的边会被无声删掉。 列联表对函数形式的假设很轻,但需要离散化,且组合爆炸:单元格数量随条件集各变量取值数相乘增长,三个三值条件变量就已经是 27 个层。 回归类检验把分布假设换成了模型指定正确的假设。 最近邻与互信息估计是非参数的,但要付条件集维数灾难的代价,且因为零分布没有闭式解,通常需要置换或局部置换方案。 核方法用核与带宽的选择、以及原始形式下 n 的三次复杂度,换来近乎普适的一致性。 机器学习类检验把 CI 重写成预测或生成建模问题,于是继承了学习器的全部偏差,还额外依赖样本切分。
第二层是鲁棒性包装层,这是我觉得概念上最有价值的部分。 这些包装与家族基本正交:秩/copula 变换(让 Fisher’s z 能用在有序和重尾数据上)、收缩与正则化精度矩阵估计(让偏相关在 p 大于 n 时存活)、置换与局部置换(不靠渐近就拿到有效零分布)、bootstrap 与子抽样、分层/合并以修补稀疏列联单元、面向 ML 检验的样本切分与交叉拟合,以及叠在最上层的多重性控制。 所以实践中所谓一个”检验”,其实是一个家族加一叠包装;综述的要点是,包装对错误画像的改变程度不亚于家族本身。
第三层是传导分析,这是这篇综述真正挣到饭钱的地方。 关键的不对称在于:PC 的零假设是独立,所以一个低功效的检验会拒绝失败,于是判定独立并删除这条边。 条件集增大导致的功效衰减因此不是中性噪声,而是在高阶条件阶段系统性地偏向更稀疏的骨架。 更糟的是,删边不是局部事件:促成删除的那个条件集 Z 会被存为 Sepset(X,Y),而 v-结构定向要问的正是中间节点是否落在这个 sepset 里。 所以一个功效不足的检验既毁了一条边,又污染了用于给邻近三元组定向的记录,随后 Meek 规则会把错误的箭头方向扩散到全图。 第一类错误膨胀(错误地拒绝独立)的signature 相反且温和得多:骨架更密、待检边更多、运行时间更长,但被自信地写错的箭头更少。
原始数据: 混合类型, n ~ 10^2, p ~ 10^3
|
v
+--------------------------------------+
| 第一层 家族 = 假设集合 |
| |
| 偏相关 ........ 线性 + 高斯 |
| 列联表 ........ 离散, 单元格要够密 |
| 回归 .......... 模型指定正确 |
| 最近邻 ........ Z 维度要低 |
| 核方法 ........ 带宽 + O(n^3) |
| 机器学习 ...... 学习器偏差 |
+--------------------------------------+
|
v
+--------------------------------------+
| 第二层 鲁棒性包装 |
| 秩 / copula 变换 |
| 收缩精度矩阵 |
| 置换, 局部置换 |
| bootstrap, 子抽样 |
| 单元格合并, 样本切分 |
| FWER / FDR 控制 |
+--------------------------------------+
|
v
p 值 vs alpha
|
+-----------+-----------+
| |
拒绝 接受
(相依) (独立)
| |
保留 X - Y 删除 X - Y
| 并把 Z 存为
| Sepset(X, Y)
| |
+-----------+-----------+
v
+--------------------------------------+
| 第三层 图层后果 |
| |
| 低功效 ==> 骨架过稀 |
| 高第一类 ==> 骨架过密 |
| sepset 错 ==> v-结构错 |
| | |
| v |
| Meek 规则把错误 |
| 向外传播 |
+--------------------------------------+
下面这个核喻让我一下想通了,而且它正是论文的生物医学定位所邀请的:CI 检验是一项临床化验,因果图是最终诊断。
六大家族是六种化验技术。 偏相关是廉价的比色试纸:快、稳,但只能检出一种分析物的一种化学形态。 列联表是显微镜下人工数细胞:对机制不做假设,但每个视野里得有足够多的细胞;如果你把样本切成 27 个视野,那就是每个视野数三个细胞、然后把噪声当结果报出去。 核方法是质谱:几乎什么都能检出来,昂贵,而且答案取决于你怎么调仪器。 机器学习类检验是训练出来的图像分类器:在训练分布内表现优异,出了分布就静悄悄地错。
条件集大小,就是你在比较病人之前坚持要匹配多少个协变量。 只匹配年龄,你还剩几百个可比病人。 匹配年龄、性别、BMI、三种合并症、两种用药,你就是拿一个病人跟一个病人比。 化验方法没变,变的是有效样本蒸发了。 这就是功效衰减;而它在因果发现里格外致命,原因在于默认值的方向:一个不确定的化验被读成”无关联”,而”无关联”意味着医生把一条可疑机制从清单上划掉。 鲁棒性包装就是实验室的校准与对照:一式三份跑(bootstrap)、打乱标签看空白片长什么样(置换)、把绝对读数换成秩使得仪器失准也仍能有效比较(秩变换)、以及修正你今天跑了一万个化验这件事(FDR)。
而诊断逻辑就是 PC/FCI。 一个假阴性并不只是从病历上抹去一行。 它会被写进记录:“我们在控制 W 的条件下排除了这一项”;下一步推断会读这条记录,用来决定邻近关系的方向。 一个坏化验,经诊断流程传导,产出的是一个说得斩钉截铁、方向却是反的因果结论。 这个不对称性——假阴性在结构上比假阳性危害更大——就是这篇综述最核心的实践信息。
关键概念
-
条件独立,以及”条件”二字为何残酷: 普通独立性问的是,知道 X 能否告诉你关于 Y 的任何信息。 条件独立问的是更难的问题:在Z 完全相同的个体之间,知道 X 还能否告诉你关于 Y 的信息? 冰淇淋销量和溺水死亡数是相依的;但在气温相同的日子之间,它们不相依。 计算上的残酷在于,“Z 相同”是一次切片操作。 每往 Z 里加一个变量,切片数就乘一次,你的数据就被切得更碎。 Z 连续时根本不存在精确匹配,所以所有方法都得假装:假设函数形式(回归)、假设线性(偏相关)、找近似邻居(k-NN),或把条件分布嵌进函数空间(核方法)。 每一个 CI 检验,都是对”我没有匹配样本,该怎么假装我有”的一种不同回答。
-
随条件集增大的功效衰减: 统计功效是抓住真实依赖的概率。 它随 Z 增大而下降,各家族的具体原因不同,但都归结为有效样本量缩小或自由度增长。 具体点说:两个基因之间一个真实但温和的依赖,在 n = 200、空条件集下能被检出,条件在两个变量上仍能存活,条件在五个变量上就检不出来了。 PC 按条件集大小递增来测试,所以它后期跑的那些检验恰恰是最弱的,而那些检验决定的正是那些微妙的边。 如果你注意到把最大条件集深度调大之后,PC 的输出稀疏得可疑,机制就在这里。
-
错误后果的不对称(sepset 污染): PC 判定 v-结构 X 指向 Z 反向连 Y 的条件是:X 与 Y 不相邻,且 Z 不在删掉 X-Y 边的那个分离集里。 所以 sepset 不是记账,它是定向的证据本身。 假设 X 与 Y 的真实分离集是 {Z, W},但一个功效不足的检验在仅给定 {W} 时就接受了独立。 边被正确删除了,但存下的 sepset 漏了 Z,算法于是看到一个不存在的 v-结构,把两个箭头都指向 Z。 接着 Meek 规则把这些箭头传播出去。 单个 sepset 里少一个元素,就能把一整片邻域的因果方向翻转——这就是为什么”检验略微保守”绝不是”结果略微变差”。
框架转变
之前(主流做法): 之后(本文框架):
选算法: PC 目标: 哪些图特征
| 必须是对的?
v |
按数据类型选检验 v
(连续 -> fisherz 错误预算:
离散 -> gsq 假阴代价 vs 假阳代价
混合 -> 离散化) |
| v
v 按假设匹配度
跑, 得到一张图 选家族
| |
v v
只操心 alpha 加包装以修补
其他不管 那个具体弱点
|
检验 = 可互换的 v
黑盒 跑; 把骨架密度
和 sepset 当诊断读
CI 检验 <--> 图 |
的关联: 未被审视 v
检验 = 偏差方向
已知的校准仪器
CI 检验 ==> 图错误:
可追踪
一句话:从”哪个检验匹配我的数据类型”到”我承担得起哪类图错误”,核心转变是把 CI 检验当成偏差方向已知的仪器,而不是可随意互换的子程序。
专家评审
先声明:我依据的是摘要与整体定位,所以关于错误传导分析究竟是被严格展开还是仅被断言,我的判断是暂定的。 而这个区别恰恰决定了这是一篇好综述还是一篇很好的综述。
选题眼光: 真缺口,不是人造的。 因果发现理论(假设神谕)与实践(用了库里默认的那个检验)之间的断裂是真实存在的,实践者感受到的表现就是:换个 CI 检验,结果就不稳,且无法解释。 生物医学定位是诚实的而非装饰性的,因为混合类型、小 n、高 p 正是标准建议失效的区间。 在轨迹上的位置:这是一篇整合性工作,出现在检验方法激增十年之后(核方法约自 2011 年起,ML 类约自 2017 年起),也出现在”不存在普适有效且有功效的 CI 检验”这一坏消息之后。 这是做综述的正确时机。 风险在于,领域部分注意力已经转向基于评分与连续优化的方法(GES、NOTEARS 系列)以及可微/摊销式因果发现,那里 CI 检验并非瓶颈。 综述应当讲清为什么基于约束的方法仍然重要;而诚实的答案是——FCI 处理隐变量混淆的能力是评分类方法大体不具备的——这一点值得说得更响。
方法成熟度: 六家族分类是常规的,基本就是你自己也会画出来的那张图。 真正有价值的贡献是把”家族”与”鲁棒性层”分离,因为文献通常不这么呈现,而这一分离解释了大量实践困惑:比如秩变换后的 Fisher’s z 与原始 Fisher’s z 已是实质不同的检验,但在软件里挂着同一个名字。 检验性质到图错误的映射是另一项真贡献。 我担心的是深度:这个映射可以做得严格(把检验错误率与期望结构汉明距离联系起来的有限样本界,或对 sepset 错误经 Meek 规则传播的分析),也可以做成叙述。 叙述仍然有用,但它不是结果。 还有一个领域一直忽略、而综述最有资格倡导的更简单方案:与其追求更好的检验,不如把跨重采样的稳定性作为主要的边判据,即边层面的 stability selection。 它整体绕开了校准问题,采纳率却低得离谱。
实验诚意: 没有统一基准的综述,会继承所有来源之间的不可比性。 各 CI 检验论文报告的功效与运行时间,用的是不同模拟器、不同图密度、不同噪声、不同 alpha,所以把它们综合起来就是把苹果和橘子综合起来。 如果论文包含哪怕一个规模不大的统一协议实验——比如六个家族在同一批模拟混合类型图上跑 n = 100/500/2000——那会是价值最高的单项增补。 R/Python 库采纳情况的审计是最可核验、也最立即有用的部分,同时它还起到一种安静的批评作用:文献推荐什么,与 pcalg、bnlearn、causal-learn 之类默认暴露什么,之间的落差才是真正决定实践者行为的东西。 需要警惕的信号:综述表格里各方法的优点直接抄自该方法自己的论文。 对比表中的自报成绩是一种系统性乐观偏差。
写作功力: 这个体裁可预见的偷懒之处是”开放挑战”一节,往往沦为一串没人解决的问题清单,抽象到无法激发任何研究。 点出的三个挑战(免离散化的混合类型 CI、小样本错误控制、可扩展性)选得对,但只有各自配上具体的问题形式化与评测方案才有用。 我最想让作者重写的是传导分析那部分:把它从散文变成一小组做透的微例子——三四个节点,明确展示哪个检验错误导致哪张错图,并把 sepset 的内容打印出来。 仅这一处改动,就能把论文从”组织良好的参考资料”变成”人们解释自己 PC 输出为何错时会引用的东西”。 另外,混合类型问题值得比一个挑战条目更多的篇幅,因为离散化是应用因果发现中最常见的静默方法学失误,而 copula/秩方法与 mixed-KSG 已经成熟到该被正式处理,而不是被顺口一提。
判决: 弱接收 — “家族 vs 包装”的分解与”检验错误到图错误”的框架确实有用且长期被忽视,但缺少统一协议的基准,它仍是一份组织良好的阅读清单,而非新证据的来源。
要点总结
真能拿走用起来的东西:
-
默认值的方向比显著性水平更重要。 在任何”不显著”就触发删除或拒绝的流水线里,低功效不是保守,而是系统性地偏向零假设所暗示的那一侧。 这个道理远远超出因果发现:特征选择循环、自动数据质量闸门、A/B 测试的熔断开关都适用。 调 alpha 之前,先问”一个不确定的检验会把我的产物推向哪边?”
-
给东西命名时,把估计量和它的鲁棒性包装分开。 “Fisher’s z” 和”秩变换 + 收缩的 Fisher’s z”有不同的假设集与不同的失效方式。 任何只记录检验名称的代码库,都丢掉了能解释自身结果的那部分信息。 把包装栈也记进日志。
-
要追踪的量是有效样本量,不是名义样本量。 在 CI 检验里,它大致等于 n 除以 Z 诱导出的层数。 把它算出来,低于阈值就拒绝执行该检验,而不是让检验静悄悄返回一个无意义的 p 值。 不少 PC 实现暴露了最大条件集深度参数;有原则的设法是按有效样本量来定,而不是随手取个整数。
-
中间产物就是诊断信息。 PC 产出的分离集通常被丢掉,但它们是每一次定向的证据链。 把它们导出来,检查是否合理(大小合适、成员说得通),成本极低,却能抓住 sepset 污染这种失效模式。 一般化的教训是:当算法基于内部记账做决策时,就把记账暴露出来。
-
把库的采纳落差当研究地图用。 如果文献推荐某方法而主流库都没实现,那要么是这方法不实用的信号,要么是一个低垂的贡献机会。 开项目之前,两者都值得知道。
这里没有的东西:没有新检验、没有新界、没有你能跑起来的基准。 如果你已经熟悉 CI 检验的版图,读分类表和库采纳那一节,其余可以跳过。