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
- p的取值范围为0-1
t test的前提 独立
- 对照-实验之间每个观测值都必须相互独立
- 比较值的取值范围应该是
假设希望比较对照组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 中显著富集?
| cluster | non-cluster | |
|---|---|---|
| marker | a | b |
| non-marker | c | d |
NOTE
ORA是富集分析最简单粗暴一种, 他只考虑显著/不显著.
质疑孟德尔: 过于完美的实验数据
Fisher 通过卡方分析重新审视孟德尔 9:3:3:1 的遗传实验数据,发现:
- 孟德尔的数据符合理论得“过于完美”。
- 卡方偏差小到几乎不可能由真实随机波动产生。
NOTE
假设检验不仅能发现“差异”,还能发现“不合理地缺乏差异”。
scGOD https://www.sc-best-practices.org/conditions/compositional.html
参考
常见医学论文统计学问题释疑 https://zhuanlan.zhihu.com/p/676144211 https://zhuanlan.zhihu.com/p/653120609