本文從基尼系數定義、洛倫茲曲線定義、gini系數應用案例、gini系數python和excel計算四部分展開說明,預計用時3分鐘。
基尼系數:G=SA/(SA SB)
如上圖
- 基尼系數定義 基尼系數定義:基尼系數是指國際上通用的、用以衡量一個國家或地區居民收入差距的常用指标。基尼系數最大為“1”,最小等于“0”。基尼系數越接近0表明收入分配越是趨向平等。國際慣例把0.2以下視為收入絕對平均,0.2-0.3視為收入比較平均;0.3-0.4視為收入相對合理;0.4-0.5視為收入差距較大,當基尼系數達到0.5以上時,則表示收入懸殊。對于中國的收入GINI系數,還引發一段影響較大的争議:西南财經大學、人口統計局、北大分别給出了0.61、0.46、0.51的中國的收入gini系數。不管是哪個數據,抽樣差異如何,結果都可以符合你的認知,中國存在“貧富差異”的問題(補充資料:中國儲蓄率50%,中國資産 Gini 0.73,美國儲蓄率6%,收入基尼系數0.45,資産基尼系數0.78。說明國際上資産貧富懸殊,資産的積累不是一輩子可以發生改變的,但是勞動可以改變收入,從而提升資産儲備)。GINI系數也會被應用在公司、平台等資源分配的均衡性評估。
- 洛倫茨曲線定義:20世紀初,統計學家洛倫茨提出了洛倫茨曲線,将社會總人口按收入由低到高的順序平均分為10個等級組,每個等級組均占10%的人口,再計算每個組的收入占總收入的比重。然後以人口累計百分比為橫軸,以收入累計百分比為縱軸,繪出一條反映居民收入分配差距狀況的曲線,即為洛倫茨曲線。
- gini系數應用:評估資源分配平衡性實際案例:比如,某公司要面對全量客戶做一項客戶福利。規則如下,如何評估這個活動是否很健康。
- 1.活動時間維持6個月;2.客戶每天都可以報名參加;3.機會有限即福利資源,每天隻有1000個(1/10)客戶可以獲取獎勵;4.獎勵是個大禮包,需要用戶領取且在當天使用。數學問題:如何評估資源的有效分配?如何才能做到有效分配?目标2個: 1.福利禮包即資源分配均勻:盡可能分散。(人人有機會搶到,而不是小部分人重複搶到——現實是搶到的人有技巧,嘗到甜頭後,搶到概率會更高,所以更加需要規則去限制); 2.福利禮包資源分配有效:a、得到資格用戶盡可能完成購買(搶到不使用,資源浪費);b、得到資格的用戶必須是合格的客戶,黑灰名單客戶、惡意搶到不使用客戶等。解決方式:評估指标2個。使用gini系數評估資源分配是否平等,使用資源利用率評估資源是否被有效利用。 1.搶到/參與用戶gini系數:時間周期:周/月(活動周期内) 橫軸是搶到資格人,縱軸是搶到的福利個數,查看gini系數。根據福利個數分層,查看基尼系數分布;gini=0.58,說明分配資源不平衡,小部分用戶重複搶到福利。 2.資源有效利用率(輔助):日維度 資源有效利用定義是:搶到福利禮包後指定時間可以使用;搶到的用戶是健康的客戶,降低非黑名單用戶等其他不符合預期用戶比例。暫定公式資源有效利用率=(搶到福利用戶-搶到未使用用戶*權重1-搶到黑名單用戶*權重2-搶到灰名單用戶*權重3-……)/搶到福利用戶如果資源有效利用率<0.5,說明存在活動的補貼資源浪費掉了一半,也是不合理的。
4.gini系數代碼和excel計算方式
4.1gini系數python計算
#!/usr/bin/env python3# -*- coding: utf-8 -*-"""Created on Tue Jul 2 15:10:37 2019@author: cainiao"""# coding=utf-8# !/usr/bin/pythonfrom scipy.integrate import odeintimport numpy as npimport pandas as pdfrom matplotlib import pyplot as pldef main():data=(pd.read_csv('/Users/jinzhi/Desktop/gini.txt',encoding='UTF-8',sep='\t')).sort_values(by=['money1'],ascending=True)wealths=data['money1'] pl.rcParams['font.sans-serif'] = ['SimHei'] pl.rcParams['axes.unicode_minus'] = False gini(wealths=wealths)# 計算基尼系數的簡單方法def gini(wealths): # 計算數組累計值,從 0 開始 wealths=wealths #wealths = [1.5, 2, 3.5, 10, 4.2, 2.1, 1.1, 2.2, 3.1, 5.1, 9.5, 9.7, 1.7, 2.3, 3.8, 1.7, 2.3, 5, 4.7, 2.3, 4.3, 12] cum_wealths = np.cumsum(sorted(np.append(wealths, 0))) # 取最後一個,也就是原數組的和 sum_wealths = cum_wealths[-1] # 人數的累積占比 xarray = np.array(range(0, len(cum_wealths))) / np.float(len(cum_wealths) - 1) # 均衡收入曲線 upper = xarray # 收入累積占比 yarray = cum_wealths / sum_wealths # 繪制基尼系數對應的洛倫茲曲線 fig, ax = pl.subplots() line1, = ax.plot(xarray, yarray, label='Line of Equality(45Degree)') line2, = ax.plot(xarray, upper, label='Lorenz Curve') ax.set_title('gini') ax.set_xlabel(u'users') ax.set_ylabel(u'money') ax.plot(xarray, yarray) ax.plot(xarray, upper) #ax.set_xlabel('nums') #ax.set_ylabel('money') ax.legend() pl.show() # 計算曲線下面積的通用方法 B = np.trapz(yarray, x=xarray) # 總面積 0.5 A = 0.5 - B G = A / (A B) #return(G) print (G) if __name__ == '__main__':main()
4.2gini系數excel計算
1.将已知樣本數據(收入數值)在EXCEL表中按照從小到大自動排序,形成第一列數據,字段名稱“收入排序”
2.第二列數據字段名稱設為“人數累計”,即從1開始逐個向下累加,每次累加1人
3.第三列數據字段名稱設為“收入累計”,使用EXCEL公式表示:
本單元格數據=上單元格數據 同行的“收入排序”單元格數據
4.第四列數據字段名稱設為“人數百分比”,用同行的“人數累計”單元格數據除以人員總數
5.第五列數據字段名稱設為“收入百分比”,用同行的“收入累計”單元格數據除以收入總數
6.第六列數據字段名稱設為“梯形面積”,以S2為例,S2=1/2*(收入百分比1 收入百分比2)*(人數百分比2-人數百分比1),按照前述的計算原理編輯公式即可,通過以上步驟,最後将“梯形面積”字段的數值累加,即為前文所述的B面積
7.用直角三角形面積(工資百分比*人數百分比)減去B面積即得A面積,則基尼系數可得。
,