量化交易平台Quantopian讲座(15)——多重比较偏差与P值篡改

多重比较偏差是统计学、数据科学,预测问题中普遍存在的一个问题。简单来说就是,同时进行的检验个数越多,得到你所期望的结果的概率就越大,如果你忽略了同时进行的试验中绝大多数均失败了的事实,可能就会得到谬误的结果。

典型场景
在一个由多组独立序列或变量的集合中,寻找可能的关系。为验证每个子集间是否存在关联,都需要进行一次试验。

在现实中,我们每做一个决策往往都需要使用假设检验,也经常会在不知情的情况下成为多重比较偏差的受害者。例如在感冒的时候,我们往往会尝试多种药物以缓解症状,当症状确实有所缓解时,你可能认为某种药物发挥了作用,但事实上可能只是所有药物都没有作用,只是症状本身就到了好转的时候。

本文就通过实验来对此进行说明:

实验:多重检验

这里我们使用pandas中的dataframe来存储数据,首先产生N组长度为T的随机数据来填充dataframe。

量化交易平台Quantopian讲座(15)——多重比较偏差与P值篡改_第1张图片
产生随机数据

量化交易平台Quantopian讲座(15)——多重比较偏差与P值篡改_第2张图片
随机数据

下面我们对这N组进行配对检验,计算其两两之间斯皮尔曼秩相关系数及p值,寻找其中小于置信水平0.05的组合。
量化交易平台Quantopian讲座(15)——多重比较偏差与P值篡改_第3张图片
示例代码

N组数据共有N(N-1)/2种组合,因为我们的数据完全是随机生成的,所以显然各组合之间是无关联的,同时因为置信水平为0.05(误报的概率),基于纯随机可认为p值超过置信水平的组合数=总组合数×0.05=9.5
期望达到置信水平的组合数

而实际通过len(significant_pairs)可以得到本例中的结果为14,可以看到一次实验的结果与期望值还是有较大的差异,但如果我们进行多次试验,最终的结果会渐进趋于期望值。
下面我们重复进行100次实验,来验证下上述结论:
量化交易平台Quantopian讲座(15)——多重比较偏差与P值篡改_第4张图片
重复100次实验

最终对100次结果求均值可以得到
100次实验结果均值

结论:可以看到100次实验的平均结果明显在趋于9.5的期望值了

p值图解

因为本例中所有元素均为随机生成的,所以p-值完全是随机均匀分布的,p-值本身不能说明其原始数据的任何特征。但因为其均匀分布的特性,可以得到p值低于你给定阈值的期望比例,给定的阈值越低,则因误通过检验的次数则越少。
接下来我们通过可视化的方式进行一次说明,首先修改试验函数的返回为p-值集合。

量化交易平台Quantopian讲座(15)——多重比较偏差与P值篡改_第5张图片
修改试验函数

首先进行10次试验,每组随机数据长度为100
示例代码

总共为45(10×9/2)组p值,得到如下图表:
量化交易平台Quantopian讲座(15)——多重比较偏差与P值篡改_第6张图片
p-值频度图

接来下进一步提高试验次数N为50
量化交易平台Quantopian讲座(15)——多重比较偏差与P值篡改_第7张图片
示例代码与对应图表

** 如我们所料,在试验次数增加后频度图变得非常均匀 **
接下来我们设置更小的截断值来看看对于试验结果有何影响
量化交易平台Quantopian讲座(15)——多重比较偏差与P值篡改_第8张图片
设置更小的截断值

均值变为了1.8,这与使用前文期望值公式得到的结果基本一致,期望值=(20×19/2)×0.01=1.9,设置更低的截断值会使得误报率降低。
更低的p值截断值会使得误报率降低,但是同时,也会使得我们获取正确关联关系的概率降低,所以经常需要在敏感性(倾向于发现关联)与特异性(倾向于拒绝关联)之间进行妥协,选择最合适的截断值。

降低多重比较偏见的影响

我们无法完全消除多重比较偏见,但是可以通过一些途径有效降低影响。

  1. 进行尽量少的试验
    这通常是最好的选择。不应当对于所有可用数据进行全量分析,而应该根据专业知识去设计一个合理的假设并对其进行检验。统计学/科学研究的过程存在一条黄金准则——遵循研究数据、提出假设、收集更多数据并基于新数据对于假设进行检验的步骤。
    注:请确保你提出假设的数据与对假设进行检验的不是一套数据
  2. 参数调整与邦费罗尼校正
    如果确实无法避免多次检验,那么只能对于p-值进行修正(对截断值增加校正因子),最为稳妥且常见的校正方法为邦费罗尼校正。

邦费罗尼校正
定义:如果在同一数据集上同时检验m独立的假设,那么用于每一假设的统计显著水平,应为仅检验一个假设时的显著水平的1/m。
原理简单解释:m次试验,截断值为α,那么mα为误报次数的截断值。如果使用α/m作为截断值,则就可以使得误报率回归到α(m×α/m)的水平。

下面对上述例子进行邦费罗尼校正:

量化交易平台Quantopian讲座(15)——多重比较偏差与P值篡改_第9张图片
邦费罗尼校正示例代码

结论:可以看到显著结果数量的平均值相对于之前低了很多,因为我们的数据是完全随机的,所以显著结果数量均值更低是更优的。

邦费罗尼校正简单且易于理解,但是也存在一些问题,首先它假设所有的检验都是独立的,同时也没有考虑数据的结构情况。当然,你可以设计一个更加优秀的校正因子,但是这又会给你的研究增添极大的复杂性。

如果你必须要使用多重检验,那么请保留一些数据用来做样本外检验,下面给出一个简单的流程示例:

  1. 假设数据集中存在10万中可能的关系
  2. 对于可能存在的关联,进行检验并选出通过检验的关联
  3. 通过保留的样本外数据对这些候选关联进行检验。因为候选关联不会太多,你可以选择邦费罗尼校正或者再进行一轮样本外数据检验。

p-值篡改

有意或无意地利用多重比较偏差被称为p-值篡改。这种情况非常常见,甚至是在学术圈。
概念还是很容易理解,进行多重校验但最终只关注其中有效的部分,就会把误报当做有效结论。请务必牢记,对于不同的模型、不同类型的试验,必须要在不同的数据集上进行检验。想象你花了整个夏天建立了一个预测玉米期货价格的模型,研究过程中尝试了50个不同的模型,才最终得到一个有效模型,但这会不会仅仅是运气呢?所以你必须使用样本外数据对其进行仔细的检验。

本文就到这里,感谢阅读,欢迎订阅。

你可能感兴趣的:(量化交易平台Quantopian讲座(15)——多重比较偏差与P值篡改)