我们一般会拿偏度和峰度来看数据的分布形态,而且一般会跟正态分布做比较,我们把正态分布的偏度和峰度都看做零。如果我们在实操中,算到偏度峰度不为0,即表明变量存在左偏右偏,或者是高顶平顶这么一说。

一.偏度(Skewness)

Definition:是描述数据分布形态的统计量,其描述的是某总体取值分布的对称性,简单来说就是数据的不对称程度。。
偏度是三阶中心距计算出来的。
(1)Skewness = 0 ,分布形态与正态分布偏度相同。
(2)Skewness > 0 ,正偏差数值较大,为正偏或右偏。长尾巴拖在右边,数据右端有较多的极端值。
(3)Skewness < 0 ,负偏差数值较大,为负偏或左偏。长尾巴拖在左边,数据左端有较多的极端值。
(4)数值的绝对值越大,表明数据分布越不对称,偏斜程度大。
计算公式:
Skewness=数据的偏度和峰度——df.skew()、df.kurt() - 图1
| Skewness| 越大,分布形态偏移程度越大。

二.峰度(Kurtosis)

Definition:偏度是描述某变量所有取值分布形态陡缓程度的统计量,简单来说就是数据分布顶的尖锐程度
峰度是四阶标准矩计算出来的。
(1)Kurtosis=0 与正态分布的陡缓程度相同。
(2)Kurtosis>0 比正态分布的高峰更加陡峭——尖顶峰
(3)Kurtosis<0 比正态分布的高峰来得平台——平顶峰
计算公式:
Kurtosis=数据的偏度和峰度——df.skew()、df.kurt() - 图2
参考:https://support.minitab.com/zh-cn/minitab/18/help-and-how-to/statistics/basic-statistics/supporting-topics/data-concepts/how-skewness-and-kurtosis-affect-your-distribution/

三.举栗子,用强大的Pandas来计算偏度和峰度:

  1. import pandas as pd
  2. from sklearn.datasets import load_iris
  3. import matplotlib.pyplot as plt
  4. %matplotlib inline
  5. import seaborn as sns
  6. iris = load_iris()
  7. x = iris.data
  8. y = iris.target
  1. xx = pd.DataFrame(x,columns=iris.feature_names)
  1. sns.pairplot(xx)
  1. <seaborn.axisgrid.PairGrid at 0x957051a5f8>

数据的偏度和峰度——df.skew()、df.kurt() - 图3

  1. print("鸢尾花四个变量的偏度:\n", xx.skew())
  2. print("====="*7)
  3. print("鸢尾花四个变量的峰度:\n", xx.kurt())
  1. 鸢尾花四个变量的偏度:
  2. sepal length (cm) 0.314911
  3. sepal width (cm) 0.334053
  4. petal length (cm) -0.274464
  5. petal width (cm) -0.104997
  6. dtype: float64
  7. ===================================
  8. 鸢尾花四个变量的峰度:
  9. sepal length (cm) -0.552064
  10. sepal width (cm) 0.290781
  11. petal length (cm) -1.401921
  12. petal width (cm) -1.339754
  13. dtype: float64