检查数字是否形成钟形曲线(高斯分布)Python 3
Check if numbers form bell curve (gauss distribution) Python 3
我有一天 24 小时每分钟测量的辐照度数据文件。
因此,如果有一天天空中没有任何云彩,则数据会显示出漂亮的连续钟形曲线。
当寻找数据中没有任何云朵的一天时,我总是用 gnuplot 逐月绘制并检查漂亮的钟形曲线。
我想知道是否有 python 方法来检查辐照度测量值是否形成连续的钟形曲线。
不知道问题是否太模糊,但我只是在寻找关于该任务的一些想法:-)
对于正态分布,有normality tests。
简而言之,我们滥用了一些关于正态分布的知识来识别它们。
任何正态分布的 kurtosis 都是 3。计算数据的峰度,它应该接近 3。
正态分布的 skewness 为零,因此您的数据的偏度应该接近于零
更一般地说,您可以计算参考分布并使用 Bregman Divergence 来评估分布之间的差异(分歧)。对数据进行分类,创建直方图,然后从 Jensen-Shannon 散度开始。
通过散度方法,您可以与任意分布进行比较。您可能会记录一千个晴天,并检查晴天与您测量的日子之间的差异是否低于某个阈值。
只是用代码示例来补充给定的答案:可以使用 Kolmogorov-Smirnov test to obtain a measure for the "distance" between two distributions. SciPy offers a neat interface for this, called 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
.
中实现的分布进行类似测试
我有一天 24 小时每分钟测量的辐照度数据文件。 因此,如果有一天天空中没有任何云彩,则数据会显示出漂亮的连续钟形曲线。 当寻找数据中没有任何云朵的一天时,我总是用 gnuplot 逐月绘制并检查漂亮的钟形曲线。
我想知道是否有 python 方法来检查辐照度测量值是否形成连续的钟形曲线。 不知道问题是否太模糊,但我只是在寻找关于该任务的一些想法:-)
对于正态分布,有normality tests。
简而言之,我们滥用了一些关于正态分布的知识来识别它们。
任何正态分布的 kurtosis 都是 3。计算数据的峰度,它应该接近 3。
正态分布的 skewness 为零,因此您的数据的偏度应该接近于零
更一般地说,您可以计算参考分布并使用 Bregman Divergence 来评估分布之间的差异(分歧)。对数据进行分类,创建直方图,然后从 Jensen-Shannon 散度开始。
通过散度方法,您可以与任意分布进行比较。您可能会记录一千个晴天,并检查晴天与您测量的日子之间的差异是否低于某个阈值。
只是用代码示例来补充给定的答案:可以使用 Kolmogorov-Smirnov test to obtain a measure for the "distance" between two distributions. SciPy offers a neat interface for this, called 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
.