Asymptotic emergence of statistically supported false causal interpretation under unmeasured confounding¶
作者: Mark Louie F. Ramos
主题: 因果推断
相关性: 7/10
链接: https://arxiv.org/abs/2607.27593
一、领域脉络与小综述¶
这个方向是什么¶
本文讨论的根本问题是:在未观测混杂存在的情况下,数据驱动的因果发现(data-driven causal discovery)是否可能仅凭更多数据就收敛到正确的因果结构? 具体而言,当真实因果变量(如“吸烟基因”)不可观测,而研究者只能观测到与之相关的代理变量(如“吸烟行为”)时,随着样本量增大和观测变量集扩大,统计推断会越来越确信代理变量与结局之间的关联是“因果”的——尽管这种关联实际上完全由未观测的混杂驱动。本文的核心贡献是从渐近角度形式化刻画了这一现象,指出统计一致性与因果识别之间存在本质鸿沟:更多数据能提高对观测变量空间内真实关系的置信度,但无法保证识别出底层因果结构。
发展脉络(history)¶
作者在引言中引用的工作构成了一条清晰的逻辑链:
- 奠基工作:因果推断的基本原理
- Pearl (2014) 和 Hernán & Robins (2024) 确立了观测因果推断的核心原则:因果方法并不“发现”因果关系,而是假设一个因果结构(如DAG),然后在该假设下估计因果效应。这是整个领域的基石。
- Verma & Pearl (1991) 证明了不同因果模型可以是经验上不可区分的(empirically indistinguishable)——即观测数据本身无法唯一确定哪个因果结构生成了数据。这是因果发现的理论上限。
-
Greenland et al. (1999) 讨论了统计检验在观测因果分析中的角色:它们评估的是假设的因果模型的性质,而不是检验因果结构本身的有效性。
-
主要进展:未观测混杂的识别理论
-
Shpitser (2020) 系统处理了含隐变量的因果模型中的识别问题,给出了在什么条件下因果效应可以从观测数据中恢复(如通过后门准则、前门准则、工具变量等)。这是本文的直接技术背景——作者引用它来指出“如果存在未观测的混杂,因果效应一般无法从观测数据中恢复”。
-
当前frontier:假设报告与可重复性危机
- Tennant et al. (2021) 的系统综述发现,研究者在其DAG中编码的关于数据生成过程的假设常常是隐式的或报告不足的。这直接呼应了本文的核心论点:假设的明确性比统计推断本身更关键。
-
Wasserstein & Lazar (2016) 的ASA关于p值的声明被作者用来区分本文现象与p-hacking/数据挖掘等统计误用——本文讨论的是即使统计实践完全正确也会发生的问题。
-
本文的位置:作者将自己的贡献定位为“对未观测混杂理论讨论的一个互补视角”——不是提出新的识别条件,而是从渐近角度揭示一个被低估的后果:当真实因果变量不可观测时,更好的数据(更多样本、更多特征)反而会使错误的因果解释变得更“统计上可信”。
子线索聚类¶
这些被引文献大致落在两条子线索上:
-
线索A:因果识别的理论极限(Pearl 2014, Verma & Pearl 1991, Shpitser 2020)
这一簇关注的是:在给定观测数据分布的情况下,哪些因果量是可识别的?它们给出了识别性的充分必要条件,以及不同因果模型之间的等价类(Markov equivalence class)。本文的设定(真实因果变量不可观测)直接落在这条线索的“不可识别”情形中。 -
线索B:因果推断的实践与假设报告(Hernán & Robins 2024, Tennant et al. 2021, Greenland et al. 1999, Wasserstein & Lazar 2016)
这一簇关注的是:研究者实际上如何做因果推断?假设是否被充分报告?统计推断的局限性是什么?本文的讨论(“统计上支持但因果上错误的解释”)直接对话这条线索。
这个方向在追问的核心问题¶
- 识别性问题:在给定观测数据分布和假设的因果结构下,因果效应是否唯一确定?——已有成熟理论(Pearl, Shpitser)。
- 可检验的隐含条件:一个假设的因果结构是否对观测数据分布施加了可检验的约束(如条件独立性)?——已有工具(DAG的d-分离准则)。
- 统计推断的可靠性:给定一个可识别的因果量,如何构造一致估计和有效推断?——已有丰富的方法论(IPW, G-computation, DML等)。
- 本文追问的核心问题:当真实因果变量不可观测、但存在相关代理变量时,统计推断本身是否会“自动”支持错误的因果解释? 如果是,这种支持有多强?——本文给出了一个渐近答案:随着样本量和观测变量集增大,这种支持的概率趋近于1。
⚠️ 作者的framing(必须明确标注成“这是作者的说法”)¶
- 作者把缺口frame成什么:作者声称,已有文献虽然充分认识到未观测混杂会阻碍因果识别,但没有从渐近角度刻画“统计上支持但因果上错误的解释”必然出现的机制。作者说:“What my result makes explicit is that in this scenario, statistical principles will continue to apply on the estimators regardless if their estimands are truly causal, partial causal, or non-causal effects.” 也就是说,作者认为自己的贡献是把“未观测混杂导致因果不可识别”这个定性结论,升级为一个渐近定量结论:随着数据变好,错误的因果解释会以概率1出现。
- 哪些竞争路线被他淡化或回避了:
- 作者完全回避了proximal causal inference(Tchetgen Tchetgen et al., 2020)的路线——该路线通过使用负对照变量(negative controls) 来在未观测混杂下识别因果效应。如果存在合适的负对照,本文的悲观结论可能被缓解。作者在引言中完全没有提及这一支文献。
- 作者也回避了因果发现中的约束基方法(constraint-based causal discovery, e.g., PC algorithm)——这些方法通过条件独立性检验来学习DAG的等价类,在足够多条件下可以部分克服未观测混杂(如通过FCI算法)。作者没有讨论这些方法是否能在本文设定下避免错误结论。
- 作者还回避了敏感性分析的文献——敏感性分析可以量化未观测混杂需要多大才能推翻结论,这实际上是对本文“统计上支持但因果上错误”现象的一种量化应对。作者只在讨论中轻描淡写地提到“敏感性分析有助于量化……”,但没有深入讨论。
- 什么明显该被引/该存在、却没出现在intro里?
- Tchetgen Tchetgen, E. J., et al. (2020). Proximal causal inference. PNAS.——这是处理未观测混杂下因果识别的最前沿方法之一,直接相关。
- Spirtes, P., Glymour, C., & Scheines, R. (2000). Causation, Prediction, and Search.——因果发现的经典著作,讨论了未观测混杂下的发现问题。
- Robins, J. M. (1986). A new approach to causal inference in mortality studies...——G-computation的奠基工作,也是处理未观测混杂的重要框架。
- D'Amour, A. (2019). On multi-cause approaches to causal inference with unobserved confounding...——讨论了多原因设定下未观测混杂的识别问题,与本文的“多个代理变量”设定直接相关。
张力¶
未见明显对立引用。作者引用的所有工作都一致认为未观测混杂会阻碍因果识别,只是本文从渐近角度给出了一个更具体的刻画。没有发现被引工作之间在略不同条件下得出相反结论的情况。
二、最核心、最简单的例子 / 数学问题¶
第一步:把符号、模型、可观测数据交代清楚¶
符号: - \(V\):宇宙中所有变量的集合(无限大,包含所有潜在因果变量)。 - \(G_{\text{true}}\):在 \(V\) 上的真实有向无环图(DAG),刻画了所有变量之间的真实因果关系。 - \(O \subset V\):可观测变量的集合(研究者能测量到的变量)。 - \(X, Y \in V\):两个特定的变量。\(X \to Y\) 在 \(G_{\text{true}}\) 中成立(即 \(X\) 是 \(Y\) 的真实原因),且 \(X \notin O\)(即 \(X\) 不可观测)。\(\rho\) 是 \(X\) 对 \(Y\) 的总效应(total effect)。 - \(\{Z_j\}_{j=1}^\infty \subset O \setminus \{Y\}\):一列可观测的代理变量(proxy variables)。每个 \(Z_j\) 满足: - \(X \to Z_j\) 在 \(G_{\text{true}}\) 中成立(即 \(X\) 是 \(Z_j\) 的原因)。 - 不存在边 \(Z_j \to Y\) 在 \(G_{\text{true}}\) 中(即 \(Z_j\) 不是 \(Y\) 的原因)。 - \(\text{Cov}(X, Z_j) \neq 0\) 且 \(\text{Cov}(Z_j, Y) \neq 0\)(即 \(Z_j\) 与 \(X\) 和 \(Y\) 都相关,但仅通过 \(X\) 间接相关)。 - 每个 \(Z_j\) 都是候选焦点变量(candidate focal variable),即研究者可能将其视为潜在的因果变量。 - \(\{O_k\}_{k=1}^\infty\):递增的可观测变量子集序列,满足 \(\bigcup_k O_k \supset \{Z_1, Z_2, \dots\}\)(即随着 \(k\) 增大,越来越多的代理变量被纳入观测集)。 - \(n\):样本量。对于每个 \(k\),我们有 \(n\) 个 i.i.d. 样本来自 \((Y, O_k)\) 的边际分布。 - \(\mathcal{A}_{k,n}\):一个数据驱动的因果发现程序。它接收 \((Y, O_k)\) 的 \(n\) 个样本,对每个焦点变量 \(W_{i,k} \in O_k\) 执行: - 使用 \(\theta_i\) 的一致估计量(\(\theta_i\) 是 \(W_{i,k}\) 与 \(Y\) 之间的关联度量,在假设的DAG下被解释为因果效应)。 - 进行标准检验 \(H_0: \theta_i = 0\) vs \(H_1: \theta_i \neq 0\)。 - 如果拒绝 \(H_0\),则解释为“\(W_{i,k}\)(至少部分地)引起 \(Y\)”,前提是假设 \(W_{i,k}\) 与 \(Y\) 之间没有未观测混杂。
模型: - 数据生成机制由 \(G_{\text{true}}\) 和相应的结构方程模型(SEM)决定。具体形式未指定,但关键结构是:\(X \to Y\) 且 \(X \to Z_j\),且 \(Z_j\) 与 \(Y\) 之间没有直接边。 - 可观测数据 \((Y, O_k)\) 的联合分布是 \(G_{\text{true}}\) 的边际分布(对不可观测变量 \(X\) 和 \(V \setminus O_k\) 积分)。 - 研究者不知道 \(G_{\text{true}}\),而是假设一个DAG(通常包含 \(Y\) 和 \(O_k\) 中的变量),并在此假设下进行因果推断。
可观测数据: - 研究者实际能观测到的是:\(n\) 个 i.i.d. 样本 \(\{(Y_i, O_{k,i})\}_{i=1}^n\),其中 \(O_{k,i}\) 是第 \(i\) 个样本中 \(O_k\) 中所有变量的观测值。 - 不可观测的是:真实原因 \(X\),以及 \(V \setminus O_k\) 中的所有其他变量。 - 关键:研究者观测到的 \(Z_j\) 与 \(Y\) 之间的关联是真实的(因为 \(\text{Cov}(Z_j, Y) \neq 0\)),但这种关联完全由未观测的 \(X\) 驱动,不是因果关系。
第二步:讲最小内核¶
最简特例:考虑一个只有三个变量的世界: - 真实DAG:\(X \to Y\) 且 \(X \to Z\),其中 \(X\) 是未观测的混杂,\(Z\) 是可观测的代理变量,\(Y\) 是可观测的结局。没有其他变量。 - 可观测数据:\(\{(Y_i, Z_i)\}_{i=1}^n\),i.i.d. 来自某个联合分布。 - 研究者的目标:判断 \(Z\) 是否引起 \(Y\)。 - 研究者的程序 \(\mathcal{A}_n\):用 \(n\) 个样本检验 \(H_0: \text{Cov}(Z, Y) = 0\) vs \(H_1: \text{Cov}(Z, Y) \neq 0\)。如果拒绝,则结论为“\(Z\) 引起 \(Y\)”(假设没有未观测混杂)。
在这个特例下: - 由于 \(X \to Z\) 且 \(X \to Y\),且 \(X\) 是未观测的,我们有 \(\text{Cov}(Z, Y) \neq 0\)(因为 \(Z\) 和 \(Y\) 共享共同原因 \(X\))。 - 因此,真实参数 \(\theta = \text{Cov}(Z, Y) \neq 0\)。 - 使用一致估计量(如样本协方差 \(\hat{\theta}_n = \frac{1}{n-1} \sum_{i=1}^n (Z_i - \bar{Z})(Y_i - \bar{Y})\)),我们有 \(\hat{\theta}_n \xrightarrow{p} \theta \neq 0\)。 - 因此,对于任何显著性水平 \(\alpha > 0\),检验的势(power)趋近于1:\(\Pr(\text{拒绝 } H_0) \to 1\) 当 \(n \to \infty\)。 - 于是,\(\Pr(\mathcal{A}_n \text{ 得出结论 } Z \to Y) \to 1\) 当 \(n \to \infty\)。
这个最小内核说明了什么: - 统计推断本身是“正确”的:\(\text{Cov}(Z, Y) \neq 0\) 是真实的,检验正确地拒绝了 \(H_0\)。 - 但因果解释是“错误”的:\(Z\) 并不引起 \(Y\),关联完全由未观测的 \(X\) 驱动。 - 更多数据(更大的 \(n\))只会使错误的因果解释变得更“统计上确定”,而不是纠正它。
推广到一般情形:当有多个代理变量 \(\{Z_j\}\) 时,随着 \(k\) 增大(更多代理变量被纳入观测集),至少有一个 \(Z_j\) 会被检验,并且由于每个 \(Z_j\) 都与 \(Y\) 相关(通过 \(X\)),检验的势趋近于1。因此,对于足够大的 \(k\),\(\Pr(\mathcal{A}_{k,n} \text{ 得出结论 } Z_j \to Y) \to 1\) 当 \(n \to \infty\)。
三、这篇论文做了什么¶
三句话¶
- 研究了什么问题:在未观测混杂存在且真实因果变量不可观测的设定下,数据驱动的因果发现程序是否可能随着样本量和观测变量集增大而收敛到错误的因果解释?
- 核心工具/方法:通过一个形式化的渐近论证(基于一致估计和检验势的基本性质),刻画了“统计上支持但因果上错误的解释”必然出现的机制。
- 主要结论:当真实因果变量 \(X\) 不可观测但存在相关代理变量 \(\{Z_j\}\) 时,随着观测变量集扩大(\(k \to \infty\))和样本量增大(\(n \to \infty\)),因果发现程序 \(\mathcal{A}_{k,n}\) 以概率1得出结论“某个代理变量 \(Z_j\) 引起 \(Y\)”——尽管这个结论是因果上错误的。
关键设定与假设¶
在第二节最小记号的基础上,补全完整设定:
- 设定1(真实DAG):\(G_{\text{true}}\) 是 \(V\) 上的DAG,包含边 \(X \to Y\)。\(X \notin O\)。
- 设定2(代理变量):存在一列可观测变量 \(\{Z_j\}\),每个 \(Z_j\) 满足:
- \(X \to Z_j\) 在 \(G_{\text{true}}\) 中(即 \(Z_j\) 是 \(X\) 的后代)。
- 不存在 \(Z_j \to Y\) 在 \(G_{\text{true}}\) 中(即 \(Z_j\) 不是 \(Y\) 的原因)。
- \(\text{Cov}(X, Z_j) \neq 0\) 且 \(\text{Cov}(Z_j, Y) \neq 0\)(即 \(Z_j\) 与 \(X\) 和 \(Y\) 都相关)。
- 设定3(观测集递增):\(\{O_k\}\) 是 \(O\) 的递增子集,且 \(\bigcup_k O_k\) 包含所有 \(Z_j\)。
- 设定4(因果发现程序):\(\mathcal{A}_{k,n}\) 对每个焦点变量 \(W_{i,k} \in O_k\) 执行:
- 使用 \(\theta_i\) 的一致估计量(\(\theta_i\) 是 \(W_{i,k}\) 与 \(Y\) 之间的关联度量)。
- 进行标准检验 \(H_0: \theta_i = 0\) vs \(H_1: \theta_i \neq 0\)。
- 如果拒绝,则解释为“\(W_{i,k}\) 引起 \(Y\)”,假设没有未观测混杂。
- 假设(隐式):
- 估计量是一致的:\(\hat{\theta}_{i,n} \xrightarrow{p} \theta_i\)。
- 检验是标准的(如t检验、Wald检验),在 \(H_0\) 下渐近水平 \(\alpha\),在 \(H_1\) 下势趋近于1。
- 没有多重比较校正(或即使有,由于每个 \(Z_j\) 的关联是真实的,校正后的势仍然趋近于1)。
- 相比已有文献的放宽/强化:
- 放宽:本文不要求 \(Z_j\) 是 \(X\) 的直接原因或直接后果,只要求存在一条路径 \(X \to \cdots \to Z_j\) 且 \(Z_j\) 与 \(Y\) 相关。
- 强化:本文假设 \(Z_j\) 与 \(Y\) 之间的关联是非零的(\(\text{Cov}(Z_j, Y) \neq 0\)),这在实际中可能不总是成立(如果 \(X\) 对 \(Z_j\) 和 \(Y\) 的影响方向相反且大小相等,协方差可能为零)。作者没有讨论这种“抵消”情形。
主要结果¶
本文只有一个主要结果,即Claim:
Claim:对于足够大的 \(k\),\(\Pr(\mathcal{A}_{k,n} \text{ 得出结论 } Z_j \to Y) \xrightarrow{n \to \infty} 1\)。
证明路线(作者给出的证明非常简短,只有4个Statement):
- Statement 1:\(\Pr(W_k \in \{Z_1, Z_2, \dots\}) \xrightarrow{k \to \infty} 1\)。
-
理由:由于 \(\{O_k\}\) 递增且 \(\bigcup_k O_k\) 包含所有 \(Z_j\),对于足够大的 \(k\),至少有一个 \(Z_j\) 在 \(O_k\) 中。一旦 \(Z_j\) 被纳入 \(O_k\),它就成为候选焦点变量,被 \(\mathcal{A}_{k,n}\) 检验。
-
Statement 2:对于 \(\mathcal{A}_{k,n}\) 中感兴趣的 \(Z_j\),\(\text{Cov}(Z_j, Y) = \theta_i \neq 0\)。
-
理由:由设定4(代理变量的性质)直接得出。
-
Statement 3:\(\Pr(\mathcal{A}_{k,n} \text{ 拒绝 } H_0: \theta_i = 0) \xrightarrow{n \to \infty} 1\)。
-
理由:由统计势的定义和一致估计量的性质得出。由于 \(\theta_i \neq 0\),检验的势趋近于1。
-
Statement 4:对于足够大的 \(k\)(使得某个 \(Z_j \in O_k\)),\(\Pr(\mathcal{A}_{k,n} \text{ 得出结论 } Z_j \to Y) \xrightarrow{n \to \infty} 1\)。
- 理由:由Statement 3和设定6(如果检验拒绝,则解释为因果关系)直接得出。
技术难点:实际上,这个证明几乎没有技术难点——它只是将一致估计和检验势的基本性质与设定中的因果结构结合起来。真正的“技术贡献”在于形式化地指出了这个现象,而不是在证明技巧上。
必要条件: - 代理变量 \(Z_j\) 必须与 \(Y\) 相关(\(\text{Cov}(Z_j, Y) \neq 0\))。 - 估计量必须一致。 - 检验必须具有渐近势1。 - 研究者必须将“拒绝 \(H_0\)”解释为“因果关系”(即假设没有未观测混杂)。
证明路线与技术技巧¶
整体路线:作者的证明只有4步,如上所述。这是一个非常直接的论证,没有用到任何高级统计工具。
关键跳跃点:实际上没有“跳跃”——每一步都是直接推理。唯一的“跳跃”可能是从“检验拒绝 \(H_0\)”到“得出结论 \(Z_j \to Y\)”这一步,这依赖于研究者假设没有未观测混杂。作者在讨论中明确指出了这一点。
技术技巧点名:本文没有使用任何高级技术技巧。它只依赖于: - 一致估计量的定义(\(\hat{\theta}_n \xrightarrow{p} \theta\))。 - 检验势的基本性质(如果 \(\theta \neq 0\),则势 \(\to 1\))。 - 集合论的基本性质(递增序列的并集包含所有元素)。
评价:从技术角度看,本文的证明是极其简单的,几乎可以看作是一个“观察”(observation)而不是一个“定理”(theorem)。它的价值在于概念上的澄清,而不是技术上的突破。
真实例子与应用¶
本文为纯理论/无实证例子。作者没有提供任何模拟实验或真实数据分析来验证或说明其结论。讨论部分只是用文字描述了现象,没有量化结果。
🔎 结论是否比证明窄¶
是的,结论比证明窄。具体来说:
- 证明只覆盖了“存在一个 \(Z_j\) 被错误地认为引起 \(Y\)”,但作者在讨论中暗示了更广泛的结论:“strategies that seek to discover increasingly stable, data-driven DAGs through larger observational datasets can converge toward causal explanations that accurately capture associations in the observed data while incorrectly attributing causality to proxy variables”。然而,证明并没有处理多个代理变量同时被错误地认为引起 \(Y\) 的情形,也没有处理DAG学习(而不仅仅是单个因果关系的检验) 的情形。
- 证明假设了“没有未观测混杂”的假设被研究者接受,但作者在讨论中承认这个假设是“rigid”的。实际上,如果研究者使用更谨慎的因果发现方法(如FCI算法,它允许未观测混杂的存在),结论可能不成立。作者没有讨论这一点。
- 证明假设了 \(\text{Cov}(Z_j, Y) \neq 0\),但作者没有讨论如果某些 \(Z_j\) 与 \(Y\) 的协方差恰好为零(由于抵消效应)会发生什么。在这种情况下,检验可能不会拒绝 \(H_0\),从而避免错误的因果结论。作者在讨论中完全没有提及这种可能性。
- 证明没有考虑多重比较校正。如果研究者对多个 \(Z_j\) 同时进行检验并使用Bonferroni校正,势可能会降低。作者在讨论中声称“这不是p-hacking或数据挖掘的问题”,但多重比较校正确实是标准实践的一部分。作者没有论证即使使用校正,结论仍然成立。
具体语句:作者在讨论中说“This is not a statistical issue... it does not stem from poor practice of Type 1 error rate control like in issues of p-hacking, data dredging, cherry-picking, or failure to account for multiple comparisons”。然而,如果研究者确实进行了多重比较校正,那么对于每个单独的 \(Z_j\),检验的显著性水平会降低,势也会降低。虽然由于 \(\text{Cov}(Z_j, Y) \neq 0\),势仍然可能趋近于1(因为效应量固定且样本量增大),但作者没有正式论证这一点。这是一个窄结论:证明只在“没有多重比较校正”或“校正后势仍然趋近于1”的条件下成立。
四、开放问题¶
-
有限样本下的误判率刻画:本文只给出了渐近结果(\(n \to \infty\) 时概率趋近于1)。对于有限样本,误判率(错误地将 \(Z_j\) 判断为 \(Y\) 的原因的概率)是多少?它如何依赖于 \(\text{Cov}(X, Z_j)\)、\(\text{Cov}(Z_j, Y)\)、样本量 \(n\)、观测变量集大小 \(k\) 以及多重比较校正的严格程度?——扎根于本文的Claim(只给出了渐近结果,没有有限样本界)。
-
当某些代理变量与 \(Y\) 的协方差为零时的行为:如果存在 \(Z_j\) 使得 \(\text{Cov}(Z_j, Y) = 0\)(例如,由于 \(X\) 对 \(Z_j\) 和 \(Y\) 的影响方向相反且大小相等),那么检验不会拒绝 \(H_0\),从而避免错误的因果结论。这种“抵消”情形在实际中是否常见?能否通过设计观测集来利用这种抵消?——扎根于本文的设定4(假设所有 \(Z_j\) 都与 \(Y\) 相关)。
-
与proximal causal inference的对话:本文的悲观结论是否可以被proximal causal inference(Tchetgen Tchetgen et al., 2020)的方法所缓解?如果存在合适的负对照变量(negative controls),是否可以在未观测混杂下识别因果效应,从而避免本文描述的现象?——扎根于作者在引言中完全回避了proximal causal inference文献。
-
因果发现算法(如FCI)在本文设定下的表现:本文只考虑了“检验单个焦点变量与 \(Y\) 的关联”这种简单的因果发现程序。更复杂的因果发现算法(如FCI,它允许未观测混杂的存在)在本文设定下是否也会收敛到错误的DAG?如果是,需要什么条件才能避免?——扎根于作者在讨论中只提到了“data-driven DAGs”但没有具体讨论任何因果发现算法。
提醒:要确认第3条是否是真gap,建议去读Tchetgen Tchetgen et al. (2020) 的引言和结论,以及近5年关于proximal causal inference的综述(如Miao et al., 2022, JRSS-B)。如果这些文献都指向“负对照可以克服未观测混杂的识别问题”,那么本文的结论可能只在没有负对照的设定下成立——这本身就是一个有价值的边界条件。
Maintained by 陈星宇 · Homepage · Source on GitHub