如何用洛伦兹曲线计算基尼系数,用excel绘制洛伦兹曲线并求基尼系数

  如何用洛伦兹曲线计算基尼系数,用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的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

留言与评论(共有 条评论)
   
验证码: