scipy.stats.kurtosis

scipy.stats.kurtosis(a, axis=0, fisher=True, bias=True, nan_policy='propagate')[源代码]

计算数据集的峰度(Fisher或Pearson)。

峰度是第四个中心矩除以方差的平方。如果使用费舍尔的定义,则从结果中减去3.0,得出正态分布的0.0。

如果偏差为假,则使用k统计量来计算峰度,以消除来自有偏矩估计器的偏差

使用 kurtosistest 看看结果是否足够接近正常。

参数
a阵列

计算峰度的数据。

axis整型或无型,可选

沿其计算峰度的轴。默认值为0。如果没有,则对整个阵列进行计算 a

fisher布尔值,可选

如果为True,则使用费舍尔定义(NORMAL==>0.0)。如果为False,则使用Pearson的定义(Normal==>3.0)。

bias布尔值,可选

如果为False,则会更正计算的统计偏差。

nan_policy{‘Propagate’,‘RAISE’,‘OMIT’},可选

定义输入包含NaN时的处理方式。‘Propagate’返回NaN,‘Raise’抛出错误,‘omit’执行忽略NaN值的计算。默认值为“Propagate”。

退货
kurtosis阵列

值沿轴线的峰度。如果所有值都相等,则为费舍尔定义返回-3,为皮尔逊定义返回0。

参考文献

1

Zvelinger,D.和Kokoska,S.(2000)。CRC标准概率和统计表和公式。查普曼与霍尔:纽约。2000年。

示例

在Fisher定义下,正态分布的峰度为零。在下面的示例中,峰度接近于零,因为它是根据数据集计算的,而不是根据连续分布计算的。

>>> from scipy.stats import norm, kurtosis
>>> data = norm.rvs(size=1000, random_state=3)
>>> kurtosis(data)
-0.06928694200380558

峰度高的分布有较重的尾部。Fisher定义的正态分布的零值峰度可以作为参考点。

>>> import matplotlib.pyplot as plt
>>> import scipy.stats as stats
>>> from scipy.stats import kurtosis
>>> x = np.linspace(-5, 5, 100)
>>> ax = plt.subplot()
>>> distnames = ['laplace', 'norm', 'uniform']
>>> for distname in distnames:
...     if distname == 'uniform':
...         dist = getattr(stats, distname)(loc=-2, scale=4)
...     else:
...         dist = getattr(stats, distname)
...     data = dist.rvs(size=1000)
...     kur = kurtosis(data, fisher=True)
...     y = dist.pdf(x)
...     ax.plot(x, y, label="{}, {}".format(distname, round(kur, 3)))
...     ax.legend()

拉普拉斯分布比正态分布有更重的尾部。均匀分布(峰度为负值)的尾巴最细。

../../_images/scipy-stats-kurtosis-1.png