學習計劃:第01周(20190715-20190721)

知識點:數據的描述性統(tǒng)計

  • 數據的集中趨勢

    • 眾數

      描述:數據中出現(xiàn)次數最多的數

      一組數據中,可能存在多個眾數,也可能不存在眾數

      如:2、6、6、8、8 、10,眾數是 6和 8

      如:1、3、5、7、9、11,沒有眾數

    • 中位數

      描述:中位數就是將數據按大小順序排列后,處于中間位置的數

      如果數據總個數為奇數,中位數就是中間位置的數

      如果數據總個數為偶數,中位數就是中間兩個數據的平均值

    • 平均數

      若干個數的平均數,是用這些數的和除以數的個數

    • 分位數

      四分位數(Quartile)是統(tǒng)計學中分位數的一種,即把所有數值由小到大排列并分成四等份,處于三個分割點位置的數值就是四分位數。

      1. 第一四分位數(Q1),又稱“較小四分位數”,等于該樣本中所有數值由小到大排列后第25%的數字
      2. 第二四分位數(Q2),又稱“中位數”,等于該樣本中所有數值由小到大排列后第50%的數字
      3. 第三四分位數(Q3),又稱“較大四分位數”,等于該樣本中所有數值由小到大排列后第75%的數字

      第三四分位數與第一四分位數的差距又稱四分位距

    • 極差

      x=xmax-xmin(xmax為最大值,xmin為最小值)用來來評價一組數據的離散度

    • 算數平均數

      An=(a1+a2+...+an)/n

    • 加權平均數

      所有數值乘以自己的權重后相加 除以 權重的和

      b = (x1 * w1 + ... + xn * wn) / (w1 + ... + wn)

    • 幾何平均數

      • 幾何平均數
      • 幾何平均數多用于計算平均比率和平均速度。如:平均利率、平均發(fā)展速度、平均合格率等。

      • 幾何平均數受極端值的影響較算術平均數小。

      • 它僅適用于具有等比或近似等比關系的數據。

      • 幾何平均數的計算舉例

      • 假定某地儲蓄年利率(按復利計算):5%持續(xù)1.5年,3%持續(xù)2.5年,2.2%持續(xù)1年。請問此5年內該地平均儲蓄年利率。該地平均儲蓄年利率:

  • 數據的離中趨勢

    • 方差

      • 方差用于衡量隨機變量或一組數據的離散程度,方差在在統(tǒng)計描述和概率分布中有不同的定義和計算公式。①概率論中方差用來度量隨機變量和其數學期望(即均值)之間的偏離程度;②統(tǒng)計中的方差(樣本方差)是每個樣本值與全體樣本均值之差的平方值的平均數,代表每個變量與總體均值間的離散程度。

      • 總體方差,也叫做有偏估計,其實就是我們從初高中就學到的那個標準定義的方差:

      • 其中,n表示這組數據個數,x1、x2、x3……xn表示這組數據具體數值。

      • 其中,\bar{X}為數據的平均數,n為數據的個數,s^{2}為方差。

      • 樣本方差,無偏方差,在實際情況中,總體均值\bar{X}是很難得到的,往往通過抽樣來計算,于是有樣本方差,計算公式如下:

      • 為什么樣本方差(sample variance)的分母是 n-1?

    • 標準差

      • 標準差也被稱為標準偏差,在中文環(huán)境中又常稱均方差,是數據偏離均值的平方和平均后的方根,用σ表示。標準差是方差的算術平方根。標準差能反映一個數據集的離散程度,只是由于方差出現(xiàn)了平方項造成量綱的倍數變化,無法直觀反映出偏離程度,于是出現(xiàn)了標準差,標準偏差越小,這些值偏離平均值就越少,反之亦然。

    • 平均差

      • 平均差,英文為average deviation(A.D.)或mean deviation(M.D.),是一種平均離差,是總體所有單位與其算術平均數的離差絕對值的算術平均數。離差是總體各單位的標志值與算術平均數之差。因離差和為零,離差的平均數不能將離差和除以離差的個數求得,而必須將離差取絕對數來消除正負號。

      • 平均差是反映各標志值與算術平均數之間的平均差異。平均差越大,表明各標志值與算術平均數的差異程度越大,該算術平均數的代表性就越??;平均差越小,表明各標志值與算術平均數的差異程度越小,該算術平均數的代表性就越大。

      • 計算公式為:

      • 平均差(MD)=\frac{\sum \left | X- \bar{X}\right |}{n},其中Σ為總計的符號,X為變量 ,\bar{X}為算術平均數, n為變量值的個數。

    • 順序數據:四分位差

      • 四分位差(quartile deviation),它是上四分位數(Q3,即位于75%)與下四分位數(Q1,即位于25%)的差。

      • 計算公式為:Q = Q3-Q1

      • 四分位差反映了中間50%數據的離散程度,其數值越小,說明中間的數據越集中;其數值越大,說明中間的數據越分散。四分位差不受極值的影響。此外,由于中位數處于數據的中間位置,因此,四分位差的大小在一定程度上也說明了中位數對一組數據的代表程度。四分位差主要用于測度順序數據的離散程度。對于數值型數據也可以計算四分位差,但不適合分類數據。

    • 分類數據:異眾比率

      • 異眾比率(variation ratio)是統(tǒng)計學名詞,是統(tǒng)計學當中研究現(xiàn)象離中趨勢的指標之一。異眾比率指的是總體中非眾數次數與總體全部次數之比。換句話說,異眾比率指非眾數組的頻數占總頻數的比例。

      • 其中\sum f_{i}為變量值的總頻數,f_{m}為眾數組的頻數。異種比率越大,說明非眾數組的頻數占總頻數的比重越大,眾數的代表性越差,即占比越小,異種比率越小,說明眾數的代表性越好,即占比越大。異種比率主要適合度量分類數據的離散程度,當然連續(xù)數據可以計算異種比率。

  • 相對離散程度

    • 離散系數

      • 即變異系數,針對不同數據樣本的標準差和方差,因數據衡量單位不同其結果自然無法直接進行對比,為出具一個相同的衡量指標,則進行了離散系數的計算。離散系數為一組數據的標準差與平均數之比。離散系數大,說明數據的離散程度也大;離散系數小,說明數據的離散程度也小。

  • 分布的形狀

    • 偏態(tài)系數

      • 看長尾在哪邊就是往哪偏

      • 偏度為0表示其數據分布形態(tài)與正態(tài)分布的偏斜程度相同;偏度大于0表示其數據分布形態(tài)與正態(tài)分布相比為正偏或右偏,即有一條長尾巴拖在右邊,數據右端有較多的極端值;偏度小于0表示其數據分布形態(tài)與正態(tài)分布相比為負偏或左偏,即有一條長尾拖在左邊,數據左端有較多的極端值。偏度的絕對值數值越大表示其分布形態(tài)的偏斜程度越大。

      • 偏度的具體計算公式為:

      • 正偏態(tài)分布,mean > median,對于負偏態(tài),mean < median

    • 峰態(tài)系數

      • 峰度是描述總體中所有取值分布形態(tài)陡緩程度的統(tǒng)計量。這個統(tǒng)計量需要與正態(tài)分布相比較,峰度為0表示該總體數據分布與正態(tài)分布的陡緩程度相同;峰度大于0表示該總體數據分布與正態(tài)分布相比較為陡峭,為尖頂峰;峰度小于0表示該總體數據分布與正態(tài)分布相比較為平坦,為平頂峰。峰度的絕對值數值越大表示其分布形態(tài)的陡緩程度與正態(tài)分布的差異程度越大。

      • 峰度的具體計算公式為:

  • 代碼展示

import numpy as np
import stats as sts
scores = [31, 24, 23, 25, 14, 25, 13, 12, 14, 23,
          32, 34, 43, 41, 21, 23, 26, 26, 34, 42,
          43, 25, 24, 23, 24, 44, 23, 14, 52,32,
          42, 44, 35, 28, 17, 21, 32, 42, 12, 34]
#集中趨勢的度量
print('求和:',np.sum(scores))
print('個數:',len(scores))
print('平均值:',np.mean(scores))
print('中位數:',np.median(scores))
print('眾數:',sts.mode(scores))
print('上四分位數',sts.quantile(scores,p=0.25))
print('下四分位數',sts.quantile(scores,p=0.75))
#離散趨勢的度量
print('最大值:',np.max(scores))
print('最小值:',np.min(scores))
print('極差:',np.max(scores)-np.min(scores))
print('四分位差',sts.quantile(scores,p=0.75)-sts.quantile(scores,p=0.25))
print('標準差:',np.std(scores))
print('方差:',np.var(scores))
print('離散系數:',np.std(scores)/np.mean(scores))
#偏度與峰度的度量
print('偏度:',sts.skewness(scores))
print('峰度:',sts.kurtosis(scores))
#幾何平均數
def GeometricMean(data):
    len_d = len(data)
    product = 1.0
    for i in range(len_d):
        product = product * data[i]
    # the next line is equal to calculate the n-root
    result = product ** (1.0/len_d)
    return result

#偏度峰度實現(xiàn)
import matplotlib.pyplot as plt
import math
import numpy as np

def calc(data):
    n = len(data)
    niu = 0.0
    niu2 = 0.0
    niu3 = 0.0
    for a in data:
        niu += a
        niu2 += a**2
        niu3 += a**3
    niu/= n   #這是求E(X)
    niu2 /= n #這是E(X^2)
    niu3 /= n #這是E(X^3)
    sigma = math.sqrt(niu2 - niu*niu) #這是D(X)的開方,標準差
    return [niu,sigma,niu3] #返回[E(X),標準差,E(X^3)]

def calc_stat(data):
    [niu,sigma,niu3] = calc(data)
    n = len(data)
    niu4 = 0.0
    for a in data:
        a -= niu
        niu4 += a ** 4
    niu4 /= n   
    skew = (niu3 - 3*niu*sigma**2 - niu**3)/(sigma**3)
    kurt =  niu4/(sigma**2)
    return [niu,sigma,skew,kurt] #返回了均值,標準差,偏度,峰度

if __name__== "__main__":
    data = list(np.random.randn(10000))#關于此處的數組與列表
    data2 = list(2*np.random.randn(10000))
    data3 = [x for x in data if x> -0.5]
    data4 = list(np.random.uniform(0,4,10000))
    [niu,sigma,skew,kurt] = calc_stat(data)
    [niu2,sigma2,skew2,kurt2] = calc_stat(data2)
    [niu3,sigma3,skew3,kurt3] = calc_stat(data3)
    [niu4,sigma4,skew4,kurt4] = calc_stat(data4)
    print niu,sigma,skew,kurt
    print niu2,sigma2,skew2,kurt2
    print niu3,sigma3,skew3,kurt3
    print niu4,sigma4,skew4,kurt4

    info = r'$\mu=%.2f,\ \sigma=%.2f,\ skew=%.2f,\ kurt=%.2f$'%(niu,sigma,skew,kurt)
    info2 =r'$\mu=%.2f,\ \sigma=%.2f,\ skew=%.2f,\ kurt=%.2f$'%(niu2,sigma2,skew2,kurt2)
    plt.text(1,0.38,info,bbox=dict(facecolor='red',alpha=0.25))
    plt.text(1,0.35,info2,bbox=dict(facecolor='green',alpha=0.25))
    #plt.text(x的位置,y的位置,面板內寫的信息,標簽框的屬性=dict(facecolor='面板顏色',alpha='深淺度'))
    plt.hist(data,50,normed=True,facecolor='r',alpha=0.9)
    #hist直方圖/箱式圖(
    #將data中的元素分到50個等間隔的范圍內,返回每個范圍內元素的個數作為一個行向量,
    #50代表要分的元素的個數
    #
    #facecolor,alpha都是代表顏色的)
    plt.hist(data2,80,normed=True,facecolor='g',alpha = 0.8)
    plt.grid(True)
    plt.show()

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容