📜  如何在Python中计算偏度和峰度?(1)

📅  最后修改于: 2023-12-03 15:08:58.018000             🧑  作者: Mango

如何在Python中计算偏度和峰度?

在统计学中,偏度和峰度是衡量数据分布形态的特征量。在Python中,我们可以使用scipy库中的stats模块来计算偏度和峰度。本文将介绍如何使用Python计算偏度和峰度。

函数介绍
偏度

偏度(Skewness)是表示数据分布非对称程度的统计量。偏度的值可以为正、负或零。如果数据分布是左偏的,那么偏度为正。如果数据分布是右偏的,那么偏度为负。如果数据分布是对称的,那么偏度为零。

scipy库中stats模块的skew函数可以计算偏度,函数定义如下:

scipy.stats.skew(a, axis=0, bias=True, nan_policy='propagate')

参数说明:

  • a:数组
  • axis:0表示列,1表示行,默认0
  • bias:是否使用有偏估计,默认为True
  • nan_policy:处理缺失值的策略,可选参数包括:
    • 'propagate':传播缺失值,在计算偏度时如果有缺失值,则结果也是缺失值
    • 'raise':抛出异常
    • 'omit':忽略缺失值
峰度

峰度(Kurtosis)是衡量数据分布尖峭程度的统计量。峰度的值可以为正、负、或零。如果峰度的值大于3,那么数据的分布陡峭(Leptokurtic)。如果峰度的值小于3,那么数据的分布平坦(Platykurtic)。如果峰度的值等于3,那么数据的分布正常(Mesokurtic)。

scipy库中stats模块的kurtosis函数可以计算峰度,函数定义如下:

scipy.stats.kurtosis(a, axis=0, fisher=True, bias=True, nan_policy='propagate')

参数说明:

  • a:数组
  • axis:0表示列,1表示行,默认0
  • fisher:是否使用Fisher偏度,默认为True
  • bias:是否使用有偏估计,默认为True
  • nan_policy:处理缺失值的策略,可选参数包括:
    • 'propagate':传播缺失值,在计算峰度时如果有缺失值,则结果也是缺失值
    • 'raise':抛出异常
    • 'omit':忽略缺失值
示例

下面我们分别通过一个示例来计算偏度和峰度。

假设我们有一个包含100个随机数的数组,并对数组进行正太分布处理。

import numpy as np
from scipy import stats

# 生成随机数
np.random.seed(1)
data = np.random.randn(100)
计算偏度

使用stats.skew函数计算数据的偏度

# 计算偏度
sk = stats.skew(data)

print('偏度:', sk)

输出结果:

偏度: -0.15070566283647892

可以看到,数据的偏度接近于零,说明数据分布大致对称。

计算峰度

使用stats.kurtosis函数计算数据的峰度

# 计算峰度
ku = stats.kurtosis(data)

print('峰度:', ku)

输出结果:

峰度: 0.14797827054236586

可以看到,数据的峰度接近于3,说明数据的分布正常。