我使用自己的代码来计算峰度(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)为什么席比会给出不同的结果?我遵循了数学世界的定义。
发布于 2014-11-09 01:37:31
如果您阅读了文档的scipy的峰度函数,scipy是在默认情况下计算过剩的峰度(用负3):
scipy.stats.kurtosis(a,axis=0,fisher=True,bias=True) 计算数据集的峰度(Fisher或Pearson)。 峰度是第四个中心时刻除以方差的平方。如果使用Fisher的定义,则从结果中减去3.0,为正态分布提供0.0。 如果偏差为假,则利用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.198860780044809https://stackoverflow.com/questions/26823968
复制相似问题