統計學的Python實現-011:偏度

作者:長行

時間:2019.03.10

偏度:偏度(skewness),也稱偏態,是衡量統計數據分佈偏斜方向和程度的統計量。例如,正態分佈的偏度=0,即分佈關於均值左右對稱。

若偏度<0,則說明分佈呈左偏態,此時均值左邊的數據比右邊少;若偏度>0,則說明分佈呈右偏態,此時均值右邊的數據比左邊少;若偏度接近於0,則說明分佈是接近對稱的。

統計學解釋

偏度的定義式:
Skeness=E[(Xμσ)3]=μ3σ3=E[(Xμ)3](E[(Xμ)2])32=k3k232 Skeness=E[(\frac{X-\mu}{\sigma})^3]=\frac{\mu_3}{\sigma^3}=\frac{E[(X-\mu)^3]}{(E[(X-\mu)^2])^\frac{3}{2}}=\frac{k_3}{{k_2}^\frac{3}{2}}

其中μ\mu爲均值,σ\sigma爲標準差,μ3\mu_3爲三階中心距,ktk_tttht^{th}累積量。

偏度第一種的計算公式:
Skewness=1ni=1n(XiX3)[1n1i=1n(XiX)2]32 Skewness=\frac{\frac{1}{n}\sum^{n}_{i=1}{(X_i-\overline{X}^3)}}{[\frac{1}{n-1}\sum^{n}_{i=1}{(X_i-\overline{X})^2}]^{\frac{3}{2}}}
其中X\overline{X}爲樣本均值。

偏度的第二種計算公式,SPSS、Excel等軟件均使用這一公式:
Skewness=n(n1)n2[1ni=1n(XiX3)[1n1i=1n(XiX)2]32] Skewness=\frac{\sqrt{n(n-1)}}{n-2}[\frac{\frac{1}{n}\sum^{n}_{i=1}{(X_i-\overline{X}^3)}}{[\frac{1}{n-1}\sum^{n}_{i=1}{(X_i-\overline{X})^2}]^{\frac{3}{2}}}]
其中X\overline{X}爲樣本均值。

實現思路

先計算出數據的樣本個數和均值;通過遍歷數據中所有的樣本,計算出i=1n(XiX)3\sum^{n}_{i=1}{(X_i-\overline{X})^3}i=1n(XiX)2\sum^{n}_{i=1}{(X_i-\overline{X})^2}的結果,再以此計算偏度的值。

實現代碼

data_test=[1,1,1,1,1,2,2,2,2,3,3,3,4,4,5]  # 定義測試數據

計算偏度

import math
import numpy
def sknewness(data):
    n = len(data) #樣本個數
    average=numpy.mean(data) #計算平均值
    m1=0
    m2=0
    k=math.sqrt(n*(n-1))/(n-2)
    for i in data:
        m1+=(i-average)**3
        m2+=(i-average)**2
    m1/=n
    m2/=n
    m2=math.sqrt(m2**3)
    skewness=k*m1/m2
    return skewness
print('skewness =',sknewness(data_test))

結果

skewness = 0.6554279508966393

代碼解釋

x/=y與x=x/y的含義相同

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章