深度学习篇-如何理解置信区间
置信区间究竟是什么
百度百科:置信区间是指由样本统计量所构造的总体参数的估计区间。在统计学中,一个概率样本的置信区间(Confidence interval)是对这个样本的某个总体参数的区间估计。置信区间展现的是这个参数的真实值有一定概率落在测量结果的周围的程度,其给出的是被测量参数的测量值的可信程度,即前面所要求的“一个概率”。
这个解释有点反人类,如果不事先理解置信区间的话,应该是没法看懂的。
参考了知乎上的答案:胡阿福 https://www.zhihu.com/question/26419030/answer/7220207
假设你叫李三,你开一个猪脚店,你希望知道你每天卖出去多少碗猪脚,一般的思路是说,我记录30天每天卖多少,然后平均数得到一天卖100碗,ok,任务完成,这就是你想知道的答案。
然而,事实上,由于你样本量过小或者有极端值等等情况,使得你这个答案,和实际情况不太一致,你准备了100碗,结果今天有110个人来买,找谁哭去? 这个时候,你就想,嗯,我应该指定一个范围,聪明!统计学家也这样想,那么这个范围怎么算,就是这里说的置信区间。
如果你猪脚店的均值100,方差30,那么标准误就是5.5,这时你的范围就是100-Za*30/5.5至100+Za*30/5.5之间,这个a就是置信系数,所谓95%的置信区间,就是在正态分布中,这个值是1.96,也就是算出来100-1.96*5.5至100+1.96*5.5之间,也就是89至111之间,嗯,对啦,李老板你就准备这个数就好啦~
什么,你说店里今天卖了112碗,哼,才不是我算错呢,是因为这个范围发生的可能性是95%啊,也就是说,出现在这个范围的可能性并不是100%呢~
李老板内心os:你tm在逗我?再说这么大范围我怎么备货?
想把范围缩小?没问题,把z变小好啦,不过事先声明z越小,这个a越小,也就是说,这个范围发生的概率就小啦~完全可以改,那,发生概率不到30%你不要怪我哟~
综上,置信区间其实是对真实情况估计的结果。重点是在于这个置信水平,置信水平越大,也就是说越可能包含真实结果,为了保证结果被包含,这个范围就越宽泛。
那是不是一定要95%?
不绝对,95%只是统计学上的约定俗成。能改,回看上上一段,你要冒着结果并不能大概率正确的风险~
正态分布的θ=(μ,σ^2)(这两个指标也是整个总体的均值和方差),而用n个服从同一正态分布的随机变量进行最大似然估计的结果是Argmax L(θ)=(x bar,s^2)(也就是样本的均值和方差)……
根据中心极限定理,当n趋于无穷时(x bar−μ)/(σ/sqrt(n))的分布收敛于标准正态分布……使用σ(总体的标准差)的最大似然估计值s(样本的标准差)来替代σ,根据标准正态分布,即可求出μ(总体的均值)的95%置信区间……
置信区间和人工智能
python计算
import numpy as np import matplotlib.pyplot as plt from scipy import stats N = 10000 x = np.random.normal(0, 1, N) # ddof取值为1是因为在统计学中样本的标准偏差除的是(N-1)而不是N,统计学中的标准偏差除的是N # SciPy中的std计算默认是采用统计学中标准差的计算方式 mean, std = x.mean(), x.std(ddof=1) print(mean, std) # 计算置信区间 # 这里的0.9是置信水平 conf_intveral = stats.norm.interval(0.9, loc=mean, scale=std) print(conf_intveral)
这里一共就两个函数,一个是随机获取符合正态分布的10000个数据 np.random.normal,另一个是计算置信区间的 stats.norm.interval
计算结果:(-1.6297070531642777, 1.6429401188504407)
完