motivation

比较对照组C和实验组E之间cell_type composition是否有显著不同

zhihu对于以上检验问题,是否可以使用t-test?如果只关心composition检验,是否需要每个condition进行多次重复实验?

直觉

假设仅有两种细胞类型A1, A2, 实验组E由于受到处理, A2细胞类型显著增多。 此时对A1进行t test,则因A2比例增多而A1在基数中更显少,会得到A1显著下降的结论。但真实原因并非如此。怀疑假设可能是因为检验方法不当。

NOTE

这个例子实际上反应的是‘比例’这一观测值并不相互独立。

误用t检验: 从前提来看

构成比(composition)数据的重要特征

  1. 各类别比例总和为1
  2. p的取值范围为0-1

t test的前提 独立

  1. 对照-实验之间每个观测值都必须相互独立
  2. 比较值的取值范围应该是

假设希望比较对照组C和实验组E的cell_type compostion差异

这里的相互独立指的是

NOTE

这个前提相当于线性模型中的独立同方差假设。

由于composition需要满足和为1的假设,组内观测值并非相互独立。

composition服从什么分布?

在对照组C中的细胞类型i计数观测

可以看到

  • 是二项分布的缩放
  • compostion 并不连续,它的最小差距是
  • 可以看到均值和方差存在依赖关系:当p取0或1时,方差最小达到0,取0.5时方差最大。

结论

各比例数值并非相互独立,也不服从正态分布假定(取值范围,方差均值依赖)。如果希望得到 对照-实验组之间cell_type composition的差异显著性,对该问题使用t test是不合适的,应该使用卡方检验。

卡方检验

卡方分布

概率密度函数

pearson卡方检验

当观测次数足够多时

NOTE

卡方分布十分重要,因为所有“偏差的平方和”在正态近似条件下都会指向卡方分布。它是构建方差、拟合优度、列联表检验的基础。

适用范围

卡方检验使用前必须满足几个条件:

  • 分类变量(categorical)
  • 频数(counts),不是比例
  • 列联表中的期望频数 > 5(经典经验规则)
  • 观察值之间独立
  • 如果期望频数太小(例如:罕见细胞类型、marker 很少),Pearson 卡方检验不再可靠,应使用 Fisher exact test。

NOTE

关于“为什么构成比不能做 t 检验,而要使用卡方 / Fisher”,建议阅读:sc-best-preactices 其中详细解释了 compositional data(比例数据)的统计结构问题。

使用模拟抽样进行卡方检验

import numpy as np
 
obs = np.array([[30, 20],
                [10, 40]])
 
# 行列边缘和
row_sum = obs.sum(axis=1)
col_sum = obs.sum(axis=0)
N = obs.sum()
 
# 期望频数
expected = np.outer(row_sum, col_sum) / N
 
# Pearson 卡方统计量
chi_obs = ((obs - expected)**2 / expected).sum()
 
# 模拟
n_sim = 10000
chi_sim = []
 
for _ in range(n_sim):
    # 在原假设下模拟随机列联表
    sim = np.random.multinomial(N, col_sum/N)
    sim = sim.reshape(2, 2)
    sim_expected = np.outer(sim.sum(axis=1), sim.sum(axis=0)) / N
    chi_sim.append(((sim - sim_expected)**2 / sim_expected).sum())
 
chi_sim = np.array(chi_sim)
p_value = (chi_sim >= chi_obs).mean()
 
print("observed chi-square:", chi_obs)
print("Monte Carlo p-value:", p_value)

Fisher Exact Test

卡方检验需要列联表中最低频数>5, 如果不满足,则应该考虑使用该检验

Fisher 的模型假设:

  • 行和列边缘和固定
  • 只是交换元素(超几何分布

某一组基因(如某 cell type 的 marker)是否在一个 cluster 中显著富集?

clusternon-cluster
markerab
non-markercd

NOTE

ORA是富集分析最简单粗暴一种, 他只考虑显著/不显著.

质疑孟德尔: 过于完美的实验数据

Fisher 通过卡方分析重新审视孟德尔 9:3:3:1 的遗传实验数据,发现:

  1. 孟德尔的数据符合理论得“过于完美”。
  2. 卡方偏差小到几乎不可能由真实随机波动产生。

NOTE

假设检验不仅能发现“差异”,还能发现“不合理地缺乏差异”。

scGOD https://www.sc-best-practices.org/conditions/compositional.html

参考

常见医学论文统计学问题释疑 https://zhuanlan.zhihu.com/p/676144211 https://zhuanlan.zhihu.com/p/653120609