前面讲了大数定理和中心极限定理,有读者留言要我讲讲切比雪夫定理。此条目介绍的是切比雪夫定理。讲切比雪夫定理之前,先来看一下切比雪夫不等式:其中P代表概率,X是随机变量,μ是期望值,k是常数,σ是标准差,整个公式表示离预期μ出现的概率较小。再拿正态分布的图感受下,大部分的值都分布在均值附近,离均值越远的值越少,对应的出现概率也越低。关于不等式的证明,我们就不证明了。有兴趣的同学可以了解一下,我们可以直接使用。看完不等式,我们再来看定理。其实是一回事。切比雪夫定理说:在任何数据集中,其均值±m标准差范围内的值的比例至少为1-1/m2,其中m为大于1的任意正数。对于m=2,m=3和m=5有以下结果:所有数据的至少3/4(或75%)在均值的±2个标准差范围内。所有数据中至少有8/9(或88.9%)在平均值的±3个标准差范围内。所有数据中至少有24/25(或96%)在平均值的±5个标准差范围内。以前面的正态分布为例,均值±2个标准差范围内的数据约占总数的95%。让我们模拟并生成两种不同的分布(正态和非正态)以进行数据验证:importnumpyasnpimportpandasaspdimportseabornassnsimportmatplotlib.pyplotasplt#Generatenormaldatanorm_data=np.random.randn(1,990)#Generatenon-normaldatax=np.arange(0.01,1,0.001)long_data=1/xdata=pd.DataFrame({"norm_data":norm_data.reshape(990,),"long_data":long_data})#绘制概率分布graphplt.figure(figsize=(8,8))plt.subplot(221)sns.distplot(data["norm_data"])plt.subplot(222)sns.distplot(data["long_data"])#Segmentnormal&根据标准偏差的非正态数据)-2*data["norm_data"].std(),data["norm_data"].mean()-1*data["norm_data"].std(),data["norm_data"].mean(),数据["norm_data"].mean()+1*data["norm_data"].std(),data["norm_data"].mean()+2*data["norm_data"]。std(),data["norm_data"].mean()+3*data["norm_data"].std(),np.inf]long_data_std_bin=[-np.inf,data["long_data"].mean()-3*data["long_data"].std(),data["long_data"].().-2*data["long_data"].std(),data["long_data"].mean()-1*data["long_data"].std(),data["long_data"].mean(),data["long_data"].mean()+1*data["long_data"].std(),data["long_data"].mean()+2*data["long_data"].std(),data["long_data”].mean()+3*data[”long_data“].std()long_data_cut"]=pd.cut(data["long_data"],bins=long_data_std_bin)plt.subplot(223)(data["norm_data_cut"].value_counts().sort_index()/data["norm_data_cut"].count()).plot(kind="bar",rot=30)plt.xticks(np.arange(0,8),["[-inf,u-3σ]","[u-3σ,u-2σ]","[u-2σ,u-σ]","[u-σ,u]","[u,u+σ]",[u+σ,u+2σ]","[u+2σ,u+3σ]","[u+3σ,+inf]"])plt.subplot(224)(data["long_data_cut"].value_counts().sort_index()/data["long_data_cut"].count()).plot(kind="bar",rot=30)plt.xticks(np.arange(0,8),["[-inf,u-3σ]","[u-3σ,u-2σ]","[u-2σ,u-σ]","[u-σ,u]",[u,u+σ]","[u+σ,u+2σ]","[u+2σ],u+3σ]","[u+3σ,+inf]"])运行上面的代码,可以得到如下四张图:第一行是正态&非正态数据的概率分布,第一个是完全正态分布,第二个是长尾分布,第二行是均值±m标准差范围内的数据在正态和非正态数据中所占的比例。可以看到数据的比例第一张图和我们之前的正态分布图是一致的。因为第二张图是长尾分布,所以大部分数据都集中在均值±1标准差的范围内。综上所述,无论是正态分布或非正态分布Statedistribution,随机变量的分布都满足切比雪夫定理。就像,有人说他月薪不超过100w。在大多数情况下是正确的。切比雪夫定理的一个应用场景是用来估计数据,比如你现在知道了一个群体收入的均值和标准差,然后想根据均值和标准差得到这个群体的整体收入,这样至于90%的人的收入是多少,80%的人的收入是多少?一个人的收入是多少?这个估计问题应该怎么计算呢?如果你已经确切地知道这个群体的收入是符合正态分布的,那就简单了。我们知道正态分布的数据是均匀分布在均值两边的,90%的人都会有45%小于均值,另外45%大于均值。但在现实中并不是所有的数据都符合正态分布,不可能知道所有数据的真实分布,这时候就可以用到切比雪夫定理。估算90%的人的收入,只需要让1-1/m2等于90%就可以求出m的值,通过m的值就可以知道90%的人的收入。如果知道具体分布,就可以用具体分布来估计,肯定更准确,但是如果不知道具体分布,可以用切比雪夫,虽然不是很准确,但是总比猜测好闭上眼睛。
