你接手了一桩“奶茶店口碑谜案”。店长怀疑“大杯奶茶更容易获得好评”,可你翻看账本时发现,熟客更爱点大杯,也天然更愿意打好评。如果把熟客身份、杯型和好评看成三个人物,表面线索乱成一团。真正要回答的问题不是“杯型和好评有没有关系”,而是“在知道顾客是不是熟客之后,杯型和好评还有关系吗”。这个提问方式,正是条件独立性检验。 G-test 就像一把“证据对质秤”:它把“两者无关”和“两者有关”两套剧本都写出来,再比对哪套更能解释账本上每一格的数字。当我们需要从一堆变量里还原因果网络时,就反复使用这把秤,把拿不出证据的关联线一条条剪掉——这正是基于约束的因果发现方法。 本文将带你从条件独立的基本概念走到 G-test 的公式、执行流程、因果发现应用与工程陷阱。你用侦探的眼睛看数据,就能少被表面的“同时出现”骗一次。

岗位关联

掌握 G-test,你便能在 AI 建模中识别虚假相关、控制混杂因子,并参与因果发现与可解释 AI 系统的核心设计。

目录
  1. 可视化演示
  2. 1. 条件独立性概念
  3. 2. G检验核心原理
  4. 3. 统计量与分布
  5. 4. 标准检验流程
  6. 5. 因果发现应用
  7. 6. 性能与优化
  8. 7. 实战案例与陷阱
  9. AI 应用场景
  10. Python 演示
  11. 常见误区
  12. 面试题

可视化演示

展示列联表G统计量计算、条件独立Z切断X-Y依赖、PC算法因果图边检验三阶段交互探索。

本节配有交互动效(进入视口后自动加载,约 3KB)。

G统计量与列联表 观测频数O与期望频数E对比 对数似然比衡量偏离程度 临界值3.84判断显著性 G = 2*Σ O·ln(O/E) G-test渐近服从卡方分布

1. 条件独立性概念

奶茶侦探社刚接到大单:店长怀疑“大杯更容易让顾客打好评”。翻开三个月账本,大杯订单的好评率确实高出不少。可老侦探拦住你:“先别急着下结论,熟客更喜欢点大杯,也更习惯好评。把熟客身份放进来再看。”这就是条件独立性问题的起点:杯型 X、好评 Y、熟客身份 Z。我们要问的是,给定 Z 后,X 与 Y 是否还相互依赖。

若每个熟客层内,点大杯的概率不随好评与否变化,就称 X 在给定 Z 下与 Y 条件独立,记作 \(X \perp\!\!\!\perp Y \mid Z\)。概率上等价于联合概率能按 Z 条件分解:

把客人按熟客身份分成两桌重新统计后,侦探看到两桌内部的趋势线都趋于平缓,便知道杯型与好评只是“同框”,并非“同谋”。

X⊥ ⁣ ⁣ ⁣⊥Y∣Z  ⟺  P(X,Y∣Z)=P(X∣Z)P(Y∣Z)\displaystyle X \perp\!\!\!\perp Y \mid Z \iff P(X,Y\mid Z) = P(X\mid Z)P(Y\mid Z)
条件独立公式的含义是:在 Z 的每一层里,知道 X 不会改变 Y 的分布。
  1. 符号含义\(X \perp\!\!\!\perp Y \mid Z\) 表示已知 Z 时 X 与 Y 条件独立。
    X⊥ ⁣ ⁣ ⁣⊥Y∣ZX \perp\!\!\!\perp Y \mid Z
  2. 联合概率\(P(X,Y\mid Z)\) 是在 Z 条件下 X 和 Y 同时发生的概率。
    P(X,Y∣Z)P(X,Y\mid Z)
  3. 乘积分解条件独立时,联合概率可拆成两个条件概率的乘积。
    P(X∣Z)P(Y∣Z)P(X\mid Z)P(Y\mid Z)
  4. 直观理解等式成立意味着在 Z 的每个取值层内,X 不携带关于 Y 的额外信息。
    P(X∣Z)=P(X∣Z,Y)P(X\mid Z) = P(X\mid Z, Y)

2. G检验核心原理

侦探不能只靠眼睛看散点,需要一把“证据秤”量化。G-test 从“剧本比较”出发:剧本 A 说杯型和好评在给定熟客身份后独立,剧本 B 说二者仍有关联。哪份剧本更擅长解释账本上每一格的顾客人数?G-test 用列联表整理数据,然后看“观测频数 O”与“独立假设下的期望频数 E”差距有多大。

如果独立剧本成立,每个格子的期望频数可以由边缘频数推算。G 统计量把每个格子的偏差按对数放大再求和:

侦探把两本“剧本”摆在桌上,G 就是“剧本 B 比剧本 A 多解释多少证据”的加分值。加分越高,独立剧本越可疑。

G=2∑i,j,kOijkln⁡(OijkEijk)\displaystyle G = 2\sum_{i,j,k} O_{ijk}\ln\left(\frac{O_{ijk}}{E_{ijk}}\right)
G 统计量是“两套剧本解释力差异”的浓缩:O 与 E 越接近,G 越小;相差越远,G 越大。
  1. 观测频数\(O_{ijk}\) 是第 k 层熟客中,第 i 种杯型与第 j 种好评状态的实际人数。
    OijkO_{ijk}
  2. 期望频数\(E_{ijk}\) 是假设条件独立时该格子应有的期望人数。
    EijkE_{ijk}
  3. 对数偏差\(\ln(O_{ijk}/E_{ijk})\) 衡量每格证据偏离独立的程度,偏离越大,对数的绝对值越大。
    ln⁡(OijkEijk)\ln\left(\frac{O_{ijk}}{E_{ijk}}\right)
  4. 二倍求和把所有格子的贡献累加并乘以 2,得到整份数据的“对质得分”。
    2∑i,j,k2\sum_{i,j,k}

3. 统计量与分布

G 值很高,但会不会只是巧合?统计学家发现,在样本量足够大、期望频数不太小时,G 统计量近似服从卡方分布。卡方分布由自由度决定,而自由度来自列联表的形状:每一层 Z 有 \(r_k\) 个行取值和 \(c_k\) 个列取值,每层贡献 \((r_k-1)(c_k-1)\) 个自由度,各层相加得到总自由度。

于是 p 值可以写成:

p 是侦探对“纯属巧合”的打分。p 越低,越有理由怀疑“有关联”不是偶然;p 很高,则证据尚不足以翻案。

p=1−Fχ∑k(rk−1)(ck−1)2(G)\displaystyle p = 1 - F_{\chi^2_{\sum_k (r_k-1)(c_k-1)}}(G)
p 值的意思是:如果“条件独立”这个剧本是真的,纯靠巧合得到当前 G 值这么极端证据的概率。
  1. 卡方分布\(\chi^2_{df}\) 是一族随自由度变化的“巧合分布”,自由度决定曲线的形状。
    χ∑k(rk−1)(ck−1)2\chi^2_{\sum_k (r_k-1)(c_k-1)}
  2. 自由度来源每个 \(r_k \times c_k\) 子表贡献 \((r_k-1)(c_k-1)\),把所有 Z 层相加。
    ∑k(rk−1)(ck−1)\sum_k (r_k-1)(c_k-1)
  3. 累积概率\(F_{\chi^2}(G)\) 表示巧合分布中得分不超过 G 的概率。
    Fχ2(G)F_{\chi^2}(G)
  4. 尾部概率用 1 减去累积概率,得到比 G 更极端的尾部面积,也就是 p 值。
    p=1−Fχ2(G)p = 1 - F_{\chi^2}(G)

4. 标准检验流程

一份标准的办案清单长什么样?首先设零假设 \(H_0: X \perp\!\!\!\perp Y \mid Z\),即给定 Z 后 X 与 Y 独立。然后对 Z 的每一层构建列联表,按边缘频数计算期望频数。最后把所有层的 G 相加,用总自由度查卡方分布得到 p 值,并与显著性水平 \(\alpha\) 比较。

期望频数的计算是核心步骤:

有了清单,侦探不会漏掉关键步骤。尤其要注意样本量:当某些格子的期望频数太小,卡方近似会失真,证据秤的刻度就不准了。

Eijk=ni⋅k n⋅jkn⋅⋅k\displaystyle E_{ijk} = \frac{n_{i\cdot k}\, n_{\cdot j k}}{n_{\cdot\cdot k}}
期望频数公式的含义是:在每一层 Z 中,用行总数乘以列总数、再除以该层总人数,得到“如果独立,应该有多少人”。
  1. 行边缘频数\(n_{i\cdot k}\) 是第 k 层中第 i 行的总人数。
    ni⋅kn_{i\cdot k}
  2. 列边缘频数\(n_{\cdot j k}\) 是第 k 层中第 j 列的总人数。
    n⋅jkn_{\cdot j k}
  3. 层内总人数\(n_{\cdot\cdot k}\) 是第 k 层的样本总数。
    n⋅⋅kn_{\cdot\cdot k}
  4. 乘积归一化行总数乘以列总数再除以层内总人数,得到独立假设下的期望格子人数。
    ni⋅k n⋅jkn⋅⋅k\frac{n_{i\cdot k}\, n_{\cdot j k}}{n_{\cdot\cdot k}}

5. 因果发现应用

单次检验只是一场对质;因果发现要做的是给所有嫌疑人画关系网。基于约束方法的核心思想是:如果 X 与 Y 在给定某些变量 S 后条件独立,那么因果图中就不该有连接 X 和 Y 的边。PC 算法从一张完全图出发,用条件独立性检验不断删除这样的边,先得到无向骨架,再通过 v 结构确定部分边的方向。

在骨架学习阶段,每一条边是否保留,取决于检验判定:

侦探一次一次地对质,每场都剪掉一条拿不出实据的关联线,最后剩下的嫌疑网络就是因果地图的起点。

若 p=1−Fχdf2(G)>α, 则接受 H0:X⊥ ⁣ ⁣ ⁣⊥Y∣S\displaystyle \text{若 } p = 1 - F_{\chi^2_{df}}(G) > \alpha,\ \text{则接受 } H_0: X \perp\!\!\!\perp Y \mid S
判定规则可以记忆为:p 值大于阈值,证据不足,删边;p 值小于阈值,保留边,等待后续方向判断。
  1. 零假设\(H_0: X \perp\!\!\!\perp Y \mid S\) 表示在给定候选条件集 S 后两变量独立。
    X⊥ ⁣ ⁣ ⁣⊥Y∣SX \perp\!\!\!\perp Y \mid S
  2. 显著性水平\(\alpha\) 是侦探允许的错怪风险,通常取 0.05 或 0.01。
    α\alpha
  3. 不拒绝条件\(p > \alpha\) 意味着没有足够证据反对独立,因此从图中删除该边。
    p>αp > \alpha
  4. 边删除结果反复执行后,剩下的边构成满足所有条件独立约束的最简骨架。
    G骨架=(V,E′)G_{\text{骨架}} = (V, E')

6. 性能与优化

变量一多,检验次数会爆炸式增长。幸运的是真实因果网通常很稀疏:大多数变量之间根本没有边。利用稀疏图特性,我们只对图中相邻的节点组合做 G-test,而不是对所有变量对做全组合检验,能省下大量计算。

小样本问题也常见。G 统计量的卡方近似依赖“期望频数不太小”:

侦探面对上千个嫌疑人,只对可能有关系的邻居深入调查,避开人海战术。人证太少时,宁可换更精细的验算方法,也不用一把失灵的证据秤。

当 min⁡i,j,kEijk≥5 时, G∼χdf2\displaystyle \text{当 } \min_{i,j,k} E_{ijk} \ge 5 \text{ 时,}\ G \sim \chi^2_{df}
这是经验法则:最小期望频数不小于 5 时,卡方近似才可靠;否则应改用 Fisher 精确检验或合并稀疏类别。
  1. 最小期望频数\(\min E_{ijk}\) 是所有格子中期望人数最小的那一个。
    min⁡i,j,kEijk\min_{i,j,k} E_{ijk}
  2. 经验阈值要求最小期望频数不小于 5,相当于证据秤的精度下限。
    ≥5\ge 5
  3. 近似分布满足条件后,G 的抽样分布近似为自由度 df 的卡方分布。
    G∼χdf2G \sim \chi^2_{df}
  4. 替代方案当近似条件不满足,Fisher 精确检验直接计算精确概率,代价是更慢。
    P(观测表)=(ni⋅nij)(n⋅jnij)(nnij)P(\text{观测表}) = \frac{\binom{n_{i\cdot}}{n_{ij}}\binom{n_{\cdot j}}{n_{ij}}}{\binom{n}{n_{ij}}}

7. 实战案例与陷阱

实战里,最经典的案例是营销归因:平台想判断“推送优惠券”与“用户复购”是否相关,但“用户活跃度”同时影响两者。直接看数据,优惠券和复购正相关;按活跃度分层后做 G-test,可能会发现二者条件独立,之前的关联只是混杂因子制造的假象。

陷阱也藏在多重检验里。因果发现可能对上万条候选边做检验,哪怕每条检验只有 5% 假阳性率,累积起来也会出现大量冤案。Bonferroni 校正把单次阈值收紧:

校正就像侦探组开会:案子上千件时,单个小概率事件并不稀奇,必须统一提高证据标准。否则,那些“碰巧显著”的关联线会让整张因果网变成冤案现场。

αadj=αm\displaystyle \alpha_{\text{adj}} = \frac{\alpha}{m}
Bonferroni 校正的含义是:总共要做 m 次检验,就把单次允许的错怪概率除以 m,从整体上控制假阳性。
  1. 单次显著水平\(\alpha\) 是每次检验默认的错误风险,通常为 0.05。
    α=0.05\alpha = 0.05
  2. 检验次数\(m\) 是整张因果图中计划执行的检验总数。
    mm
  3. 调整后阈值\(\alpha / m\) 让单次检验更严格,总次数越多,门槛越高。
    αadj=αm\alpha_{\text{adj}} = \frac{\alpha}{m}
  4. 效果校正后 p 值必须小于更小的阈值才算显著,从而控制家族错误率。
    p<αmp < \frac{\alpha}{m}

AI 应用场景

营销归因与用户增长

阶段:特征分析与数据可信层校验

解决的问题:运营团队常发现“发了优惠券的用户复购率更高”,但这个相关可能来自用户活跃度这个混杂因子。传统做法只算转化率差异,容易把虚假相关当成因果。用 G-test 对活跃度分层后检验“优惠券”与“复购”的条件独立性,能判断激励是否真的有效。

具体案例:某电商平台把用户按 30 天活跃天数分成低、中、高三层,每层内用 G-test 检验优惠券曝光与次日复购是否独立。结果 p 值远大于 0.05,说明分层后关联消失,团队避免了继续烧钱投放。

医学真实世界研究

阶段:观察性数据的混杂控制

解决的问题:电子病历中,药物与疗效的表面对应常被年龄、合并症干扰。G-test 可以按年龄组和合并症分层,检验药物组与对照组在每一层内是否与疗效独立,辅助临床决策。

具体案例:研究团队用电子病历数据检验“某降压药”与“心血管事件”的关系,按年龄和糖尿病史分层后做条件独立性检验,发现原本显著的关系在部分层内不再显著,为后续反事实模型提供了变量选择依据。

可解释AI因果结构学习

阶段:因果发现与模型解释

解决的问题:黑箱模型只能给出预测,无法回答“干预某个特征会怎样”。基于约束的因果发现用 G-test 筛选变量关系,再交给 PC 算法构建因果结构图,让 AI 的决策过程更可解释。

具体案例:某风控平台用 PC 算法分析用户特征,G-test 在每一步检查“收入”与“违约”在给定负债率后是否独立,最终生成的因果图帮助审核人员理解模型为什么拒绝贷款申请。

Python 演示

python58 行
import mathimport numpy as npimport pandas as pdfrom scipy.stats import chi2  def g_test_from_table(observed):    """输入二维观测频数表,返回 G 统计量、自由度、p 值与最小期望频数。"""    o = np.asarray(observed, dtype=float)    row_tot = o.sum(axis=1)    col_tot = o.sum(axis=0)    n = o.sum()    expected = np.outer(row_tot, col_tot) / n    g = 0.0    for i in range(o.shape[0]):        for j in range(o.shape[1]):            if o[i, j] > 0:                g += o[i, j] * math.log(o[i, j] / expected[i, j])    g *= 2.0    df = (o.shape[0] - 1) * (o.shape[1] - 1)    p = chi2.sf(g, df)    return g, df, p, expected.min()  def conditional_g_test(df, x, y, z):    """对 Z 的每一层分别做 G 检验,最后汇总 G 与自由度。"""    g_total = 0.0    df_total = 0    warnings = []    for z_val in sorted(df[z].unique()):        sub = df[df[z] == z_val]        ct = sub.groupby([x, y]).size().unstack(fill_value=0)        g_layer, df_layer, _, min_exp = g_test_from_table(ct.values)        g_total += g_layer        df_total += df_layer        if min_exp < 5:            warnings.append("z=%s 层期望频数偏小" % z_val)    p_total = chi2.sf(g_total, df_total)    return g_total, df_total, p_total, warnings  np.random.seed(7)n = 300z = np.repeat([0, 1], n // 2)x = np.where(z == 0, np.random.binomial(1, 0.2, n // 2),             np.random.binomial(1, 0.8, n // 2))y = np.where(z == 0, np.random.binomial(1, 0.3, n // 2),             np.random.binomial(1, 0.7, n // 2))df = pd.DataFrame({"x": x, "y": y, "z": z}) ct_all = df.groupby(["x", "y"]).size().unstack(fill_value=0)g_all, df_all, p_all, _ = g_test_from_table(ct_all.values)g_cond, df_cond, p_cond, warns = conditional_g_test(df, "x", "y", "z") print("无条件 G=%.1f df=%d p=%.4f" % (g_all, df_all, p_all))print("条件   G=%.1f df=%d p=%.4f" % (g_cond, df_cond, p_cond))if warns:    print("提示:", warns)
目的:模拟一个“X 与 Y 在给定 Z 后条件独立”的数据集,分别做无条件 G-test 和条件 G-test,直观展示引入 Z 后关联消失的过程。
  1. expected = np.outer(row_tot, col_tot) / n根据边缘频数算出独立假设下的期望人数。
  2. if o[i, j] > 0:观测为零时该格不贡献,避免对 0 取对数。
  3. df = (o.shape[0] - 1) * (o.shape[1] - 1)单个 2×2 表的自由度是 1。
  4. for z_val in sorted(df[z].unique())逐层控制 Z,再汇总证据。
  5. p_total = chi2.sf(g_total, df_total)用卡方分布右侧尾部得到 p 值。
  6. np.where(z == 0, ..., ...)让 X 和 Y 都依赖 Z,但给定 Z 后彼此独立。

常见误区

误区“我的 G-test 显示 p 值很小,所以 A 变量一定是 B 变量的原因,可以直接写进因果结论。”

正解G-test 只能判断“给定 Z 后 X 与 Y 是否还存在关联”,不能决定关联方向。X 可能影响 Y,Y 可能影响 X,也可能存在未观察到的混杂因子。因果方向还需要结合 PC 算法的 v 结构、干预实验或领域知识。类比侦探:两个人同时出现在现场,不等于谁捅了谁一刀。

为何常见:统计显著这个词自带“证据确凿”的暗示,初学者容易把相关显著性等同于因果决定性。

误区“这个检验 p 值只有 0.0001,比那个 p=0.04 的关系强多了。”

正解p 值度量的是“纯靠巧合得到当前证据的概率”,效应强弱要看 G 统计量、效应量或置信区间。样本量很大时,微弱但真实的关系也会得到极小 p 值。类比侦探:脚印数量多是巧合概率低,不代表脚印踩得深。

为何常见:p 值常用且直观,人们容易把“证据力度”与“效应大小”混为一谈。

误区“X 和 Y 的散点图一条直线明显向上,这关系还能假?”

正解Z 可能同时影响 X 和 Y,制造出虚假的相关。只有在 Z 的每一层内重新检验后,才能判断 X 与 Y 是否真的有关。奶茶店的“大杯与好评”就是典型:熟客身份让二者表面相关,分层后关联消失。

为何常见:人的直觉容易被全局趋势带走,忽略分层后可能完全不同的故事。

误区“G-test 有现成公式,样本再小也能算,算出 p 值就信。”

正解G 统计量只是近似服从卡方分布,期望频数小于 5 时近似效果很差。此时应改用 Fisher 精确检验,或合并稀疏类别以增大频数。证据太少时,再精密的秤也会失准。

为何常见:很多工具库不会强制报错,算出数值就让人误以为结果同样可靠。

误区“PC 算法跑完,凡是保留的边都是真实因果,我可以直接做决策。”

正解多次检验会产生大量假阳性,需要 Bonferroni 或 FDR 校正;同时保留的边只是“未排除关联”,方向未必正确。因果图是假设生成器,不是终极真相。一百次对质里,总有人会被冤枉。

为何常见:看到漂亮的因果图容易产生信任感,忽略了图背后的统计不确定性和选择偏差。

面试题

Q1. 条件独立性 \(X \perp\!\!\!\perp Y \mid Z\) 最准确的含义是?

单选题 · easy

  • A.X 与 Y 在任意条件下都无关
  • B.X 与 Y 之间不存在任何概率联系
  • C.给定 Z 后 X 与 Y 无残余关联← 正确答案
  • D.Z 同时受到 X 和 Y 的因果影响

答案:C。条件独立只承诺在 Z 的每个取值层内 X 与 Y 不关联,不排除整体相关。A 和 B 都误把条件独立理解成无条件无关,D 描述的是另一种因果结构。

Q2. G 统计量比较的是哪两种“剧本”?

单选题 · easy

  • A.样本均值与总体均值
  • B.独立模型与饱和模型← 正确答案
  • C.线性模型与对数模型
  • D.先验分布与后验分布

答案:B。G-test 的本质是似然比检验,比较“条件独立模型”与“允许任意关联的饱和模型”谁更能解释数据。A、C、D 与 G-test 的模型比较框架无关。

Q3. 若 p 值小于显著性水平 α,通常应?

单选题 · easy

  • A.认同原假设成立
  • B.认为样本量一定不足
  • C.直接断定存在因果效应
  • D.拒绝条件独立假设← 正确答案

答案:D。p < α 表示在独立假设下出现当前证据的概率很低,因此拒绝条件独立,认为存在条件关联。拒绝原假设不等于证明因果方向,也不代表样本量有问题。

Q4. G-test 中自由度主要由什么决定?

单选题 · mid

  • A.每层列联表的行列数与层数← 正确答案
  • B.样本总数和缺失值个数
  • C.G 统计量的大小
  • D.变量的单位选择

答案:A。每一层 Z 的 \(r_k \times c_k\) 子表贡献 \((r_k-1)(c_k-1)\) 个自由度,各层相加得到总自由度。样本量、G 值和单位都不影响自由度。

Q5. 在 PC 算法的骨架学习阶段,条件独立性检验用来?

单选题 · mid

  • A.估计因果效应大小
  • B.删除条件独立的边← 正确答案
  • C.判断边的方向
  • D.计算变量的方差

答案:B。PC 算法先从完全图出发,用条件独立性检验剪掉条件独立的边,得到无向骨架。方向判定发生在后续 v 结构阶段,效应大小估计不是该阶段任务。

Q6. 某个 2×2 层内期望频数最小值只有 3,最佳处理是?

单选题 · mid

  • A.直接使用卡方近似
  • B.把显著性水平设成 1
  • C.改用 Fisher 精确检验← 正确答案
  • D.删除所有数据

答案:C。期望频数小于 5 时卡方近似不可靠,Fisher 精确检验可以不依赖近似分布直接计算精确概率。B 和 D 都是粗暴处理,A 会歪曲结果。

Q7. 对 1000 次条件独立性检验做 Bonferroni 校正,α=0.05 时每次检验的阈值约为?

单选题 · hard

  • A.0.05
  • B.0.005
  • C.0.05×1000
  • D.0.0005← 正确答案

答案:D。Bonferroni 校正把 α 除以检验次数 m,得到单次阈值 \(0.05 / 1000 = 0.0005\)。A 未校正,B 是除以 10 的错误结果,C 方向完全反了。

Q8. 关于条件独立与无条件独立,正确的有?

多选题 · easy

  • A.无条件相关也可能条件独立← 正确答案
  • B.条件独立一定蕴含无条件独立
  • C.混杂变量可能制造虚假相关← 正确答案
  • D.条件独立能证明因果方向

答案:AC。混杂变量可以制造虚假相关,所以整体相关未必在分层后仍然存在,A、C 正确。条件独立并不蕴含无条件独立,B 错误;条件独立不能决定因果方向,D 错误。

Q9. G 检验近似卡方分布需要满足?

多选题 · mid

  • A.样本量足够大← 正确答案
  • B.期望频数不太小← 正确答案
  • C.每一层独立抽取← 正确答案
  • D.变量必须服从正态分布

答案:ABC。G-test 用于分类变量,不要求正态分布,D 错误。样本量足够大、期望频数不太小、各层样本独立是卡方近似可靠的前提。

Q10. 基于约束的因果发现中,以下做法正确的是?

多选题 · hard

  • A.用条件独立性检验删边← 正确答案
  • B.用 v 结构确定部分方向← 正确答案
  • C.对多次检验做多重校正← 正确答案
  • D.以 G 值大小直接排序因果强度

答案:ABC。基于约束方法的核心就是删边和定向,A、B 正确;多次检验需要校正以避免假阳性,C 正确。G 值仅反映关联证据强度,不能直接代表因果强度,D 错误。