基尼系数
学习西方经济学时接触了很多系数,比如恩格尔系数,基尼系数等,都是反映宏观经济状况的。其中基尼系数是用来综合考察居民收入分配差异状况的指标。居民收入差距小时,基尼系数就低,反之,基尼系数就高。
收入绝对平均时,基尼系数是0,收入只集中在一个人手里,基尼系数是1,很显然,现实情况下的基尼系数在0到1之间。
一般而言,基尼系数所反映的居民收入状况如下:
基尼系数 | 低于0.2 | 0.2 ~ 0.3 | 0.3 ~ 0.4 | 0.4 ~ 0.5 | 高于0.5 |
---|---|---|---|---|---|
收入状况 | 过于平均 | 较为平均 | 比较合理 | 差距过大 | 差距悬殊 |
从国家统计局网站上可以查到,2019年我国居民人均可支配收入基尼系数为0.465,属于收入差距过大的范畴。 https://www.stats.gov.cn/zs/tjws/tjzb/202301/t20230101_1903941.html
基尼系数的计算方式如下:
G = 1 - SUM1_n(Pi * (2Qi - Wi))
我们需要对数据按收入从低到高排序,其中Wi 表示第i户所代表人口收入占总收入比重,Pi表示第i户所代表人口占总人口比重,Qi = SUM1_k(Wi)
下面使用模拟数据来计算一下。
import numpy as np
np.random.seed(1)
income_data = np.random.lognormal(mean=10, sigma=0.6, size=100)
def calculate_gini(data):
n = data.size
total = np.sum(data)
sorted_data = np.sort(data)
normalized_data = sorted_data / total
print(sorted_data)
print(normalized_data)
cum_sum_data = np.cumsum(normalized_data)
print(cum_sum_data)
gini1 = 1.0
for i in range(n):
gini1 = gini1 - (2 * cum_sum_data[i] - normalized_data[i]) / n
return gini1
gini = calculate_gini(income_data)
print(f"使用模拟收入数据得到的基尼系数:{gini:.3f}")
结果:
[ 5536.27284613 6399.11881237 ...]
使用模拟收入数据得到的基尼系数:0.293