多重比较学习笔记
多重比较是指在进行多组实验的时候,对于每一组实验都进行单独的假设检验,进而产生大量的p值。然而,由于多次检验会增加“假阳性”(False Positive)的风险,因此需要采用多重比较校正方法来控制错误率,从而减少假阳性的情况发生。本篇文章将介绍多重比较的相关知识,包括Bonferroni校正、Benjamini-Hochberg校正等方法,以及如何使用Python进行多重比较分析。
Bonferroni校正
Bonferroni校正是一种经典的多重比较校正方法,该方法通过将每个单独检验的显著性水平除以所进行的总检验数来限制整体错误率。例如,如果进行了10次独立的假设检验,并且希望将整体错误率限制在0.05以下,那么将每个检验的显著性水平除以10就可以得到修正后的显著性水平,即0.005。
Bonferroni校正的优点是非常保守,可以在很大程度上减少假阳性的风险。但是,其缺点也很明显,就是当需要进行大量的单独假设检验时,修正后的显著性水平可能会非常严格,导致失去了检验的敏感性。
Benjamini-Hochberg校正
与Bonferroni校正相比,Benjamini-Hochberg校正更加灵活。该方法首先按照原始的p值从小到大进行排序,然后计算每个p值对应的排名 r r r,并将其除以总检验数 n n n,得到一个统计量 q = r / n q=r/n q=r/n。接下来,对于每个 p i p_i pi,计算一个临界 q q q值: i ∗ α / n i * \alpha / n i∗α/n,其中 α \alpha α表示期望的整体错误率。在所有 p i p_i pi中,找到最大的 i i i使得 p i ≤ i ∗ α / n p_i \leq i * \alpha / n pi≤i∗α/n,则显著性判定的阈值为 p i p_i pi。
Benjamini-Hochberg校正的优点是可以在保证整体错误率不超过期望值的前提下,尽可能地提高检验的敏感性。但是,该方法并不能保证控制每个单独假设检验的错误率。
Python进行多重比较分析
多重比较分析是在进行多组数据比较时需要考虑的一些问题,如控制误差率,避免假阳性等。在Python中可以使用多种方法进行多重比较的控制,下面是一些示例代码:
- Bonferroni校正方法
Bonferroni校正方法是一种简单的多重比较控制方法,可以保证整体显著性水平不超过预设的显著性水平。代码实现如下:
alpha = 0.05 # 预设显著性水平
n_comparisons = 10 # 数据组数
alpha_bonf = alpha / n_comparisons # Bonferroni校正后的显著性水平
# 进行数据比较及判断
for i in range(n_comparisons):
p_value = compare_data(i)
if p_value < alpha_bonf:
print(f"数据组{i+1}显著不同")
- False Discovery Rate (FDR)校正方法
FDR校正方法是一种常用的多重比较控制方法,可以控制假阳性率。代码实现如下:
alpha = 0.05 # 预设显著性水平
n_comparisons = 10 # 数据组数
# 进行数据比较并获得p值列表
p_values = [compare_data(i) for i in range(n_comparisons)]
# FDR校正
p_values_sorted = sorted(p_values)
for i in range(n_comparisons):
p_value = p_values_sorted[i]
fdr = (i+1) * alpha / n_comparisons
if p_value < fdr:
print(f"数据组{i+1}显著不同")
- Benjamini-Hochberg校正方法
Benjamini-Hochberg校正方法是一种基于FDR校正的改进方法,可以更好地控制假阳性率。代码实现如下:
alpha = 0.05 # 预设显著性水平
n_comparisons = 10 # 数据组数
# 进行数据比较并获得p值列表
p_values = [compare_data(i) for i in range(n_comparisons)]
# Benjamini-Hochberg校正
p_values_sorted = sorted(p_values)
for i in range(n_comparisons):
p_value = p_values_sorted[i]
bh = (i+1) * alpha / n_comparisons
if p_value < bh:
print(f"数据组{i+1}显著不同")
以上代码仅为示例代码,具体应用中需要根据实际情况进行修改。
总结
本篇文章介绍了多重比较的相关知识,包括Bonferroni校正、Benjamini-Hochberg校正等方法,以及如何使用Python进行多重比较分析。在实际应用中,需要根据具体的数据特点和研究需求选择适当的多重比较方法,从而减少假阳性的风险,提高研究结果的可信度。