重拾正态分布

背景

最近要统计业务数据的波动情况,对于异常的波动进行报警。于是就需要找到过往业务数据的波动范围和规律,异常波动一般来说都是一些特殊情况,出现频率较低,因此用正态分布的置信区间来划定阈值是一个很好的方法。比如,数据的95%置信区间是1.1到2.2,那么不在这个范围内的可能性大约为5%,这种情况需要进行报警来查看。

重拾正态分布

上面这个思路很好,但是由于对正态分布已经很久不使用,已经不知道该怎么使用了。在网上查资料查了半天,终于有了些收获,记录一下。

什么是正态分布?

正态分布是数据的一种分布规律。是在统计学上对数据进行描述的一种模型。

正态分布是很常见的一种分布规律,形状如下图:

重拾正态分布

人群的身高、成年人的血压等都符合正态分布规律。

正态分布用什么用?

正态分布非常简单,正态分布的均值,模和中位数是相等的。我们只需要用均值和标准差就能解释整个分布。

为什么正态分布如此普遍?

有个“中心极限定理”,或许能解释这个现象。

置信区间

什么是置信区间,简单点说就是给出一个区间,数据取值落在这个区间的可能性(置信度)为某个值。常见的有95%置信区间,也就是取值落在这个区间的可能性为95%。

在知乎上看到很多对于置信区间的深入描述,说是平均值在这个区间内的置信度之类的,这种过于复杂化,或许是对的,但不利于使用,暂不深究。

有了置信区间的概念,我们就能解决一开始的问题了。比如我想知道业务的波动情况在95%的情况下是在什么范围内,其实就是基于业务数据的历史波动情况来求解95%的置信区间。

如何求解置信区间?

其实很简单,找到了一篇很靠谱的文章,简单总结如下:

(1)求数据的期望(也就是均值),标准差,方法如下(python提供了很丰富的类库可以直接计算出来)

重拾正态分布

(2)确定要求的置信度,我们这里选择的是95%

(3)计算误差范围

什么是误差范围呢?在第四步介绍。

重拾正态分布

这个公式里的重拾正态分布 是置信度系数,其中a为置信度95%,置信度系数可以从正态分布表中查出来(这是数学家已经给我们计算好了的)。95%置信度系数是1.96。

(4)计算置信区间

置信区间其实就是下图公式:均值 重拾正态分布 误差范围。这个误差范围就是距离均值的偏差。

重拾正态分布

计算出置信区间,就可以直接去使用了。

数据集不符合正态分布怎么办?

如果不符合正态分布的数据强行套用是不可行的。看到一些说法是可以通过各种变换将数据转化为正态分布。

唉,其实我发现我统计的数据也不符合正态分布。我最终采用的是统计距离均值的距离,求这些距离的分位值,这种统计方法的前提是数据在均值两侧的分布比较均匀,才能更好的描述。但是如果分布比较均匀,感觉也能符合正态分布了。所以就先采用这种方法,胜在简单高效。

 

参考文章

https://www.shuxuele.com/data/confidence-interval.html

https://zh.wikihow.com/%E8%AE%A1%E7%AE%97%E7%BD%AE%E4%BF%A1%E5%8C%BA%E9%97%B4%EF%BC%88Confidence-Interval%EF%BC%89

http://www.lianmenhu.com/blockchain-11401-1