基尼系数和洛伦兹曲线,在表示数据的不平均方面特别是财富的不平均上被广泛应用。但是目前在python里面并没有找到很好的可以直接绘制洛伦兹曲线的函数,由于目前项目用到,也就在实际应用中使用到,就把如何使用numpy,pandas,matplotlib等包来计算基尼系数和绘制洛伦兹曲线的过程记录下来。方便大家遇到相似问题直接使用就可。

本文主要包含如下几个部分:

1. 样本数据获取

2. 基尼系数计算

3. 洛伦兹曲线绘制

1. 样本数据获取

你可以使用pd.read_csv读取已有csv文件中的表格数据,也可以使用本文通过随机产生的一些数据验证一下,这里我们采用numpy自带的随机函数np.random.randint得到数据。

代码如下:

#! env python

## 先导入必要的包

import numpy as np

import pandas as pd

from matplotlib import pyplot as plt

## 随机1000 个数据

np.random.seed(1) #种子只是为了重现结果

data = np.random.randint(low = 1, high = 100, size = 1000)#产生1到100的1000个数据

利用numpy的randint方法产生了1000个数据并保存到data数组当中,这里使用seed种子主要是为了大家可以重复出结果

2. 基尼系数计算

那么假设一个群体数据为data的话,基尼系数如何计算呢,这里查看维基百科可以看到计算方法为

通过变换简化计算

这样右边转化为一个常数,左边可以通过numpy计算,直接上计算基尼系数的函数

def gini(arr):

# 首先排序

arr = np.array(sorted(arr))

n = len(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_

print(gini(data))

#0.3313838956962638

可以看到结果计算出来为0.33

接下来就是如何绘制洛伦兹曲线了

3. 洛伦兹曲线绘制

洛伦兹曲线最初被用于表示收入的不平等参数,曲线上的每个点表示当前百分比的人数占据总财富的百分比比例。其中很著名的80-20理论说明的就是80%的人只占据总财富的20%,还有80%的财富被20%的人占有。跟基尼系数相比,洛伦兹曲线表示的更加详细,可以看到每个点的人员占据的财富比。在洛伦兹曲线中,基尼系数可以看作是曲线与45%线的一个区域大小。为了绘制洛伦兹曲线我们需要添加0,0作为曲线起点。

python洛伦兹曲线绘制函数代码:

def lorenz_curve(X):

X = np.array(sorted(X))

X_lorenz = X.cumsum() / X.sum()

X_lorenz = np.insert(X_lorenz, 0, 0)

X_lorenz[0], X_lorenz[-1]

fig, ax = plt.subplots(figsize=[6,6])

## 散点图

ax.scatter(np.arange(X_lorenz.size)/(X_lorenz.size-1), X_lorenz,

marker='x', color='darkgreen', s=1)

#

ax.plot([0,1], [0,1], color='k')

保存图片

plt.savefig('luolunzi.png')

绘制结果

总结

本文介绍数据不平均的一种表示方法,使用到了基尼系数和洛伦兹曲线来表示,并使用python语言实现了基尼系数定义上的计算,并使用绘图工具matplotlib绘制了洛伦兹曲线。

matlab做基尼曲线,计算基尼系数和matplotlib绘制洛伦兹曲线相关推荐

  1. 洛伦茨曲线半高全宽_洛伦兹曲线

    洛伦兹曲线 百科名片 洛伦兹曲线(Lorenz curve),也译为"劳伦兹曲线".就是,在一个总体(国家.地区)内,以"最贫穷的人口计算起一直到最富有人口"的 ...

  2. 洛伦茨曲线_什么叫洛伦兹曲线,什么叫基尼系数,我国的基尼系数偏大说明什么问题...

    展开全部 1.洛伦兹曲线 洛伦兹曲线(Lorenz curve),也译为"劳伦兹曲线".指在一个总体(国家.地区)内,以e69da5e6ba9062616964757a686964 ...

  3. 洛伦兹曲线看财富分配的公平性

    读了篇自己很早以前的写的一篇文章,学到了不少,然而和最近的一些新想法相冲突,所以本文先抽象简化之前那篇,最后加上浙江温州那段,后面有时间再写关于多维填充导致的尺度不变性的解释,也就是幂律的终极根源. ...

  4. 洛伦兹曲线如何度量TCP公平性

    洛伦兹曲线一般用来描述收入分配,但实际上收入分配只是一个case,所有涉及固定资源分配的case,都可以用洛伦兹曲线来描述,而基于洛伦兹曲线度量公平性的指标,便是基尼指数. 如何理解洛伦兹曲线呢?我给 ...

  5. 泊松回归、gamma回归、Tweedie回归等广义线性回归模型GLM的评估指标:校准曲线、 洛伦兹曲线、卡方检验、AIC、BIC、偏差(Deviance)指标

    泊松回归.gamma回归.Tweedie回归等广义线性回归模型GLM的评估指标:校准曲线(Calibration curve). 洛伦兹曲线(Lorenz Curve).卡方检验.AIC.BIC.偏差 ...

  6. R语言建模收入不平等:分布函数拟合及洛伦兹曲线(Lorenz curve)

    最近我们被客户要求撰写关于洛伦兹曲线的研究报告,包括一些图形和统计输出. 洛伦兹曲线来源于经济学,用于描述社会收入不均衡的现象.将收入降序排列,分别计算收入和人口的累积比例. 本文,我们研究收入和不平 ...

  7. python 绘制lift曲线_洛伦兹曲线(Lorenz curve)提升指数、提升表和提升图

    python金融风控评分卡模型和数据分析微专业课(博主亲自录制视频):http://dwz.date/b9vv 医药统计项目可联系 QQ:231469242 洛伦兹曲线(Lorenz curve)也叫 ...

  8. 洛伦兹曲线(Lorenz curve)-揭秘贫富差异原因

    洛伦兹曲线(Lorenz curve)也叫提升图或收益曲线. 定义:洛伦兹曲线是一种显示经济体内收入(或财富)分布的方式.在经济学中,洛伦兹曲线是收入或财富分配的图形表示.它是由开发马克斯·劳伦茨在1 ...

  9. 我对洛伦兹曲线与GINI系数的一点看法

    数据分析有时需要针对单变量进行数据描述,有时需要针对多变量之间的关系进行数据描述,洛伦兹曲线就是为描述多变量间关系而服务的.洛伦兹曲线即累计频数分布曲线,用于分析社会财富.土地.工资分配是否公平的问题 ...

最新文章

  1. 关于javascript闭包中的this对象
  2. golang相关在线学习文档
  3. 一个不错的SQL储存过程分页,储存过程+Repeater,如果只是浏览数据的话,快就一个字...
  4. 卷积神经网络——第一周 卷积神经网络基础——第一部分
  5. python安装idle_Python从零单排之Python环境及IDLE安装
  6. 开源软件的许可(License)
  7. CentOS下使用TUN/TAP虚拟网卡的基本教程
  8. python csv wordpress xmlrpc_wordpress_xmlrpc模块批量自动发布文章到wordpress - 老牛博客...
  9. mysql 使用异步io_InnoDB引擎之-异步IO(Async IO)
  10. 贪心科技分布式高性能深度实战学习笔记
  11. JAVA SSM毕业设计——基于SSM的校园二手交易平台的设计与实现
  12. 我在 CMU 的八年博士生涯...
  13. [腾讯社区开放平台]介绍开放授权协议-OAuth
  14. Back Channel笔记
  15. 12306模拟登陆-超级鹰
  16. Laravel Guzzle封装
  17. zing开发者_Zing免费开放Java开发人员
  18. 见与不见---作者:谈笑靖
  19. 7月生日会|清凉的惊喜与祝福
  20. Zxing jar的下载地址

热门文章

  1. 苹果怎么取消自动续费?官方给的取消流程,速看!
  2. 找不到网络其他计算机名,局域网中找不到其他计算机怎么办
  3. 【图像检测-缺陷检测】基于形态学实现瓶盖瑕疵检测matlab代码
  4. 误删电脑文件怎么恢复?简单的恢复方法
  5. win10关闭系统自动更新后还是更新怎么办
  6. uniapp如何获取IP地址
  7. erdas查看灰度直方图_ERDAS基本操作(六) —— 图像增强处理.ppt
  8. string未定义标识符
  9. 选择一只好股票的方法
  10. server08 AD域控故障处理