scipy中峰度是如何计算的?

问题描述 投票:0回答:2

我有这个代码可以使用我自己的代码计算峰度(http://mathworld.wolfram.com/Kurtosis.html),并将其与

scipy.stats.kurtosis

进行比较
a = array([   1. ,    2. ,    2.5,  400. ,    6. ,    0. ])
#kurtosis (gives: 4.19886)
print (sum((a - np.mean(a)) ** 4)/len(a)) / np.std(a)**4
# scipy kurtosis (gives: 5.996677)
print scipy.stats.kurtosis(a,bias=False)

为什么 scipy 给出不同的结果?我遵循数学世界中的定义。

python numpy statistics scipy
2个回答
9
投票

如果您阅读了 scipy 峰度函数的文档,scipy 默认计算超额峰度(负 3):

scipy.stats.峰度(a,轴= 0,fisher = True,偏差= True)

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

峰度是第四中心矩除以平方 方差。如果使用 Fisher 的定义,则减去 3.0 正态分布的结果为 0.0。

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

fisher
设置为
False
将为您提供您所期望的:

In [1]: a = np.array([   1. ,    2. ,    2.5,  400. ,    6. ,    0. ])

In [2]: scipy.stats.kurtosis(a, fisher=False)
Out[2]: 4.198860780044809

-1
投票

任何人都可以发布总体峰度和超峰度的数学公式以及使用样本时两者的偏差校正公式吗?

© www.soinside.com 2019 - 2024. All rights reserved.