我們一般會拿偏度和峰度來看數據的分布形態,而且一般會跟正態分布做比較,我們把正態分布的偏度和峰度都看做零。如果我們在實操中,算到偏度峰度不為0,即表明變量存在左偏右偏,或者是高頂平頂這么一說。
一.偏度(Skewness)
Definition:是描述數據分布形態的統計量,其描述的是某總體取值分布的對稱性,簡單來說就是數據的不對稱程度。。
偏度是三階中心距計算出來的。
(1)Skewness = 0 ,分布形態與正態分布偏度相同。
(2)Skewness > 0 ,正偏差數值較大,為正偏或右偏。長尾巴拖在右邊,數據右端有較多的極端值。
(3)Skewness < 0 ,負偏差數值較大,為負偏或左偏。長尾巴拖在左邊,數據左端有較多的極端值。
(4)數值的絕對值越大,表明數據分布越不對稱,偏斜程度大。
計算公式:
Skewness=E[((x-E(x))/(\sqrt{D(x)}))^3]
| Skewness| 越大,分布形態偏移程度越大。
二.峰度(Kurtosis)
Definition:偏度是描述某變量所有取值分布形態陡緩程度的統計量,簡單來說就是數據分布頂的尖銳程度。
峰度是四階標准矩計算出來的。
(1)Kurtosis=0 與正態分布的陡緩程度相同。
(2)Kurtosis>0 比正態分布的高峰更加陡峭——尖頂峰
(3)Kurtosis<0 比正態分布的高峰來得平台——平頂峰
計算公式:
Kurtosis=E[ ( (x-E(x))/ (\sqrt(D(x))) )^4 ]-3
三.舉栗子,用強大的Pandas來計算偏度和峰度:
import pandas as pd
from sklearn.datasets import load_iris
import matplotlib.pyplot as plt
%matplotlib inline
import seaborn as sns
iris = load_iris()
x = iris.data
y = iris.target
xx = pd.DataFrame(x,columns=iris.feature_names)
sns.pairplot(xx)
<seaborn.axisgrid.PairGrid at 0x957051a5f8>
print("鳶尾花四個變量的偏度:\n", xx.skew())
print("====="*7)
print("鳶尾花四個變量的峰度:\n", xx.kurt())
鳶尾花四個變量的偏度:
sepal length (cm) 0.314911
sepal width (cm) 0.334053
petal length (cm) -0.274464
petal width (cm) -0.104997
dtype: float64
===================================
鳶尾花四個變量的峰度:
sepal length (cm) -0.552064
sepal width (cm) 0.290781
petal length (cm) -1.401921
petal width (cm) -1.339754
dtype: float64