检查数字是否形成钟形曲线(高斯分布)Python 3

时间:2016-03-09 20:01:46

标签: python-3.x gaussian bell-curve

我有一天24小时每分钟测量一次辐照度数据的文件。 因此,如果天空中没有任何云,那么数据会显示出良好的连续钟形曲线。 当我在数据中寻找没有任何云彩的一天时,我总是使用gnuplot逐月绘制并检查好的钟形曲线。

我想知道如果有一种蟒蛇方式来检查,如果辐照度测量形成一个连续的钟形曲线。 不知道问题是否过于模糊,但我只是在寻找关于该任务的一些想法:-)

2 个答案:

答案 0 :(得分:1)

对于正态分布,有normality tests

简而言之,我们滥用了一些正常分布的识别方法。

  • 任何正态分布的kurtosis为3.计算数据的峰度,它应该接近3。

  • 正态分布的skewness为零,因此您的数据偏斜应接近零

  • 更一般地说,您可以计算参考分布并使用Bregman Divergence来评估分布之间的差异(差异)。将数据分类,创建直方图,然后从Jensen-Shannon分歧开始。

使用分歧方法,您可以与任意分布进行比较。您可以记录一千个晴天,并检查晴天和您测量的日期之间的差异是否低于某个阈值。

答案 1 :(得分:0)

仅用一个代码示例补充给定的答案:可以使用Kolmogorov-Smirnov test来获取两个分布之间“距离”的度量。 SciPy为此提供了一个简洁的界面,称为kstest

from scipy import stats
import numpy as np

data = np.random.normal(size=100)  # Our (synthetic) dataset
D, p = stats.kstest(data, "norm")  # Perform a one-sided Kolmogorov-Smirnov test

在上面的示例中,D表示我们的data与高斯正态(norm)分布(越小越好)之间的距离,而p表示对应的p值。通过将norm替换为scipy.stats中实现的分布,可以类似地测试其他分布。