You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

Pandas中kurtosis(峰度)的定义是什么?手动计算结果为何不一致?

回答

这是因为Pandas的kurtosis()方法默认返回的是超额峰度(excess kurtosis),而你手动计算的是原始峰度(又称普通峰度),两者的核心差异就是一个固定的偏移值:

超额峰度 = 原始峰度 - 3

你可以直接验证这个关系:把你手动计算的原始峰度值2.99085...减去3,得到的结果-0.009145...和Pandas返回的-0.006755...非常接近——微小差异来自随机样本的波动,当样本量足够大时,这个差值会趋近于一致。

为什么要做这个减3的处理?这是因为正态分布的原始峰度恰好等于3,减去3之后,正态分布的超额峰度就变为0,这样我们可以更直观地判断数据的峰态:

  • 超额峰度 > 0:数据分布比正态分布更陡峭(尖峰分布)
  • 超额峰度 = 0:数据分布的峰态和正态分布一致
  • 超额峰度 < 0:数据分布比正态分布更平缓(平峰分布)

如果想要用Pandas得到和你手动计算一致的原始峰度,只需要把kurtosis()的结果加上3即可:

# 计算原始峰度
raw_kurtosis = test_series.kurtosis() + 3

另外补充一点:Pandas的kurtosis()还支持bias参数,用来控制是否使用有偏估计。当bias=True(默认值)时使用有偏的样本矩计算,bias=False时使用无偏估计,但无论哪种模式,返回的都是超额峰度,只是估计的准确性不同。


内容的提问来源于stack exchange,提问作者user40780

火山引擎 最新活动