凛冬将至

从简单的例子开始

0%

威尔逊置信区间

二项分布的概率$p$的置信区间、置信度和样本量之间的关系,可以用正态区间来统计,但在样本量较小是正态置信区间往往有准确性较差。因此在小样本下可以用威尔逊置信区间。

正态置信区间

$p$是伯努利实验的成功率(样本正例比例),$n$是样本数量或实验次数。$z$表示对应某个置信水平的$z$统计量,一般情况下,在95%的置信水平下,$z$统计量的值为1.96

置信度 z分数
99% 2.576
98% 2.326
95% 1.96
90% 1.645

可以看到,当$n$的值足够大时,这个下限值会趋向$\hat p$。如果n非常小(投票人很少),这个下限值会大大小于$\hat p$。

但是,它只适用于样本较多的情况(np > 5 且 n(1 − p) > 5),对于小样本,它的准确性很差

威尔逊区间

1927年,美国数学家 Edwin Bidwell Wilson提出了一个修正公式,被称为“威尔逊区间”,很好地解决了小样本的准确性问题。

实际代码

应用1特征修正

在线性模型中,有手工处理特征的条件时,可以使用威尔逊置信区间的下界作为修正后的特征值(实际上是降低置信度低的case的影响)

代码:

1
2
3
4
5
6
7
8
9
10
11
12
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
p=np.arange(0,1,0.01)
n=np.arange(1, 100, 1)
z=1.96
n,p=np.meshgrid(n,p)
y=(p+z**2/(2*n)-z*np.sqrt(p*(1-p)/n + z**2/(4*n**2)))/(1+z/n)
fig = plt.figure()
ax = Axes3D(fig)
ax.plot_surface(n,p,y,cmap='rainbow')
plt.show()

参考:

知乎排名算法
基于用户投票的排名算法

应用2评估样本量

威尔逊置信区间可以在给定数据量n、置信度参数z、统计值$\widehat{p}$ 的情况下给出置信区间。同样的,在给定统计值和能接受的置信度、置信区间的情况下,我们可以评估我们需要的样本量n。

其中,$R$为对应设定的置信区间($R\cdot\widehat{p}$为置信区间下界),z对应设定置信度,$\widehat{p}$ 为统计值,n为需要的样本量,给定$R,z,\widehat{p}$ 时,可以求出 $n=f(R,z,\widehat{p})$(一元二次方程):

需要注意的是,和正态分布置信区间不同,威尔逊置信区间并不关于 $\widehat{p}$ 对称。中心点为:

但 $ \widehat{p}<0.5$ 时,中心位置大于 $ \widehat{p}$ ;当 $ \widehat{p}>0.5$ 时,中心位置小于 $ \widehat{p}$ 。即:中心会先0.5靠近

因此 $ R \cdot \widehat{p}$并不意味着置信区间为$[R \cdot \widehat{p},(2-R) \cdot \widehat{p}]$

威尔逊置信区间的中心位置是否等同于增加了先验(p=0.5)的map?

威尔逊置信区间是否相当于贝叶斯