你知道吗,我国的工资收入水平是平等的!(基尼系数)

大家好!今天给大家带来基尼系数的python实操文章,在这篇文章里,你除了能了解到实用的基尼系数,同时还能学会如何用python来拟合函数,一起来看看吧~

基尼系数介绍

基尼系数是指国际上通用的、用以衡量一个国家或地区居民收入差距的常用指标。
基尼系数最大为“1”,最小等于“0”。基尼系数越接近0表明收入分配越是趋向平等。国际惯例把0.2以下视为收入绝对平均,0.2-0.3视为收入比较平均;0.3-0.4视为收入相对合理;0.4-0.5视为收入差距较大,当基尼系数达到0.5以上时,则表示收入悬殊。
基尼指数最早由意大利统计与社会学家Corrado Gini在1922年提出。

赫希曼根据洛伦茨曲线提出的判断分配平等程度的指标。设实际收入分配曲线和收入分配绝对平等曲线之间的面积为 A,实际收入分配曲线右下方的面积为 B。并以 A 除以(A+B)的商表示不平等程度。这个数值被称为基尼系数或称洛伦茨系数。如果 A 为零,基尼系数为零,表示收入分配完全平等;如果 B 为零则系数为 1,收入分配绝对不平等。收入分配越是趋向平等,洛伦茨曲线的弧度越小,基尼系数也越小,反之,收入分配越是趋向不平等,洛伦茨曲线的弧度越大,那么基尼系数也越大。
在这里插入图片描述

基尼系数计算方法

基尼系数的计算方法常见有三:直接计算法、拟合曲线法、分组计算法。
由于前文采用的为拟合曲线法,故在此仅介绍拟合曲线法,另外两种方法可参考:https://www.cnblogs.com/OliverQin/p/8649605.html

拟合曲线法计算基尼系数的思路是采用数学方法拟合出洛伦茨曲线,得出曲线的函数表达式,然后用积分法求出B的面积,计算基尼系数。通常是通过设定洛伦茨曲线方程,用回归的方法求出参数,再计算积分。例如,设定洛伦茨曲线的函数关系式为幂函数:
在这里插入图片描述
根据选定的样本数据,用回归法求出洛伦茨曲线,例如,α=m,β=n.求积分
在这里插入图片描述
计算
在这里插入图片描述
拟合曲线法的在两个环节容易产生谬误:一是拟合洛伦茨曲线,得出函数表达式的过程中,可能产生误差;二是拟合出来的函数应该是可积的,否则就无法计算。

Python实操

加载库

import pandas as pd
from scipy.optimize import curve_fit
import matplotlib.pyplot as plt
import numpy as np

第一部分:导入数据

本文所选取的数据为《中国统计年鉴2019》按行业分的就业人员数、平均工资、工资总额:

data = pd.read_csv('F:\\公众号\\python\\【案例】数据分析---基尼系数\\data2018.csv',header = 0)

在这里插入图片描述

紧接着按照平均工资进行排序,即data1:

data1 = data.sort_values('average salary')

在这里插入图片描述

第二部分:拟合洛伦茨曲线

首先,需要算出每个坐标点:

x = np.array([])
y = np.array([])
x_sum = 0
y_sum = 0
sumx = sum(data1['numbers'])
sumy = sum(data1['total salary'])
for i in range(len(data1['numbers'])):
    x_sum = x_sum + data1['numbers'][i]
    y_sum = y_sum + data1['total salary'][i]
    x = np.insert(x, len(x), values=x_sum/sumx, axis=0)
y = np.insert(y, len(y), values=y_sum/sumy, axis=0)

在这里插入图片描述

说明:
洛伦茨曲线是要用累加值去进行拟合,本段代码中用for循环依次进行累加,并转换为百分数,以便后续的计算。

有了每个点的坐标后就可以进行拟合了;
首先需要定义想要拟合的函数:

def fund(x, a, b):
return a*x**b

接着利用scipy.optimize中的curve_fit()函数进行拟合:

popt, pcov = curve_fit(fund, x, y)
print(popt)
print(pcov)
print('y=',popt[0],'x^',popt[1])

在这里插入图片描述

说明:
curve_fit()会输出两个值,第一个(即popt)为拟合出的系数;其它有关其它参数的详细介绍可在该网址进行查看https://docs.scipy.org/doc/scipy/reference/generated/scipy.optimize.curve_fit.html#scipy.optimize.curve_fit

我们也可以通过绘图来看拟合效果如何:

plt.plot(x,y,'b-')
y1 = [fund(i, popt[0],popt[1]) for i in x]
plt.plot(x,y1,'r--') 

在这里插入图片描述
有关matplotlib.pyplot.plot ()的参数详解,可在该网址进行查阅https://matplotlib.org/api/pyplot_summary.html
相信这里会有不少小伙伴产生疑惑,图中的曲线几乎近似于一条直线,岂不是说明我国的工资水平是平衡的?!我们继续算下去,后续再进行分析。

第三部分:计算基尼系数

最后这一步就比较简单,我们前文已经介绍了拟合曲线法的公式推倒,同时我们算的也是百分数,所以直接套用公式即可:

Gini = 1-2*popt[0]/(popt[1]+1)

在这里插入图片描述

我们会发现,算出来的基尼系数异常的小,仿佛证实了我们前面的疑惑,难不成我们中国已经不存在贫富差异了吗??那岂不是我跟马云、马化腾收入水平一样咯?
在这里插入图片描述
让我们再用统计年鉴中五等份分组的人均可支配收入数据重复上面的过程再计算一次:
在这里插入图片描述
在这里插入图片描述
我们发现我国的贫富收入水平还是非常巨大的,所以这个数值更加符合实际情况,相信很多小伙伴已经早就看出了其中的问题,因为工资收入仅仅只是收入中的一部分,而且对于有钱人而言可能还是非常非常小的一部分,所以通过工资收入来度量基尼系数是非常不合适的。
那是不是可以说明我国的工资收入还是非常平等的呢?
我相信懂的人都懂的
在这里插入图片描述
那当然是我国宏观调控的好啦!

获取代码

该篇的数据和完整代码可在公众号中回复“基尼系数”即可获得,谢谢大家支持。
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值