如何用洛伦兹曲线计算基尼系数,用excel绘制洛伦兹曲线并求基尼系数
基尼系数和洛伦茨曲线被广泛用于表示数据的不平等,尤其是财富的不平等。但是目前python中还没有好的函数可以直接画洛伦兹曲线。由于在当前项目中使用了它,所以在实际应用中使用了它。那么,如何使用numpy,pandas,matplotlib等软件包计算基尼系数,绘制洛伦兹曲线就记录下来了。方便大家遇到类似问题直接使用。
本文主要包括以下几个部分:
1.样本数据采集
2.基尼系数的计算
3.绘制洛伦兹曲线
1.样本数据采集
您可以使用pd.read_csv来读取现有csv文件中的表格数据,也可以使用本文来验证一些随机生成的数据。这里,我们使用numpy附带的随机函数np.random.randint来获取数据。
代码如下:
#!env python
# #首先导入必要的包
将numpy作为np导入
进口熊猫作为pd
从matplotlib导入pyplot作为plt
# #随机1000个数据
Np.random.seed(1) # Seed只是为了重现结果
Data=np.random.randint (low=1,high=100,size=1000) #从1到100生成1000个数据
Numpy的randint方法用于生成1000个数据并保存到数据数组中。这里使用了seed种子,这样每个人都可以重复结果。
2.基尼系数的计算
那么假设一个群体的数据是数据,如何计算基尼系数呢?在这里看维基百科,可以看到计算方法是
通过变换简化计算。
这样右边转换成常数,左边可以用numpy计算,直接计算基尼系数的函数。
def gini(arr):
#先排序
arr=np.array(sorted(arr))
n=长度(arr)
coef_=2。/n
const_=(n 1。)/n
weighted _ sum=sum([(I ^ 1)* yi for I,yi in enumerate(arr)])
return coef _ * weighted _ sum/(arr . sum())-const _
打印(基尼(数据))
#0.3313838956962638
可以看到结果计算出来是0.33。
接下来就是如何画洛伦兹曲线了。
3.绘制洛伦兹曲线
洛伦茨曲线最初是用来表示收入的不平等参数,曲线上的每一个点都表示当前的人占总财富的百分比。著名的80-20理论指出,80%的人只占有总财富的20%,80%的财富被20%的人拥有。和基尼系数相比,洛伦茨曲线更细致,你可以看到每个点上人们所占据的财富比例。在洛伦茨曲线中,基尼系数可以看作是曲线和45%线之间的一个区域大小。为了画洛伦兹曲线,我们需要加上0,0作为曲线的起点。
Python洛伦兹曲线绘制函数代码:
def洛伦兹曲线(X):
X=np.array(已排序(X))
X_lorenz=X.cumsum()/X.sum()
X _洛伦兹=NP . insert(X _洛伦兹,0,0)
X _洛伦兹[0],X _洛伦兹[-1]
fig,ax=plt.subplots(figsize=[6,6])
# #散点图
ax . scatter(NP . arange(X_lorenz . size)/(X _ Lorenz . size-1),X _ Lorenz,
marker=x ,color=深绿色,s=1)
#
ax.plot([0,1],[0,1],color=k )
保存图片
plt.savefig(luolunzi.png )
得出结果
摘要
介绍了一种数据不等式的表示方法,用基尼系数和洛伦兹曲线来表示。用python语言计算基尼系数的定义,用matplotlib绘制洛伦兹曲线。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。