matlab做基尼曲线,计算基尼系数和matplotlib绘制洛伦兹曲线
基尼系数和洛伦兹曲线,在表示数据的不平均方面特别是财富的不平均上被广泛应用。但是目前在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绘制洛伦兹曲线相关推荐
- 洛伦茨曲线半高全宽_洛伦兹曲线
洛伦兹曲线 百科名片 洛伦兹曲线(Lorenz curve),也译为"劳伦兹曲线".就是,在一个总体(国家.地区)内,以"最贫穷的人口计算起一直到最富有人口"的 ...
- 洛伦茨曲线_什么叫洛伦兹曲线,什么叫基尼系数,我国的基尼系数偏大说明什么问题...
展开全部 1.洛伦兹曲线 洛伦兹曲线(Lorenz curve),也译为"劳伦兹曲线".指在一个总体(国家.地区)内,以e69da5e6ba9062616964757a686964 ...
- 洛伦兹曲线看财富分配的公平性
读了篇自己很早以前的写的一篇文章,学到了不少,然而和最近的一些新想法相冲突,所以本文先抽象简化之前那篇,最后加上浙江温州那段,后面有时间再写关于多维填充导致的尺度不变性的解释,也就是幂律的终极根源. ...
- 洛伦兹曲线如何度量TCP公平性
洛伦兹曲线一般用来描述收入分配,但实际上收入分配只是一个case,所有涉及固定资源分配的case,都可以用洛伦兹曲线来描述,而基于洛伦兹曲线度量公平性的指标,便是基尼指数. 如何理解洛伦兹曲线呢?我给 ...
- 泊松回归、gamma回归、Tweedie回归等广义线性回归模型GLM的评估指标:校准曲线、 洛伦兹曲线、卡方检验、AIC、BIC、偏差(Deviance)指标
泊松回归.gamma回归.Tweedie回归等广义线性回归模型GLM的评估指标:校准曲线(Calibration curve). 洛伦兹曲线(Lorenz Curve).卡方检验.AIC.BIC.偏差 ...
- R语言建模收入不平等:分布函数拟合及洛伦兹曲线(Lorenz curve)
最近我们被客户要求撰写关于洛伦兹曲线的研究报告,包括一些图形和统计输出. 洛伦兹曲线来源于经济学,用于描述社会收入不均衡的现象.将收入降序排列,分别计算收入和人口的累积比例. 本文,我们研究收入和不平 ...
- python 绘制lift曲线_洛伦兹曲线(Lorenz curve)提升指数、提升表和提升图
python金融风控评分卡模型和数据分析微专业课(博主亲自录制视频):http://dwz.date/b9vv 医药统计项目可联系 QQ:231469242 洛伦兹曲线(Lorenz curve)也叫 ...
- 洛伦兹曲线(Lorenz curve)-揭秘贫富差异原因
洛伦兹曲线(Lorenz curve)也叫提升图或收益曲线. 定义:洛伦兹曲线是一种显示经济体内收入(或财富)分布的方式.在经济学中,洛伦兹曲线是收入或财富分配的图形表示.它是由开发马克斯·劳伦茨在1 ...
- 我对洛伦兹曲线与GINI系数的一点看法
数据分析有时需要针对单变量进行数据描述,有时需要针对多变量之间的关系进行数据描述,洛伦兹曲线就是为描述多变量间关系而服务的.洛伦兹曲线即累计频数分布曲线,用于分析社会财富.土地.工资分配是否公平的问题 ...
最新文章
- 关于javascript闭包中的this对象
- golang相关在线学习文档
- 一个不错的SQL储存过程分页,储存过程+Repeater,如果只是浏览数据的话,快就一个字...
- 卷积神经网络——第一周 卷积神经网络基础——第一部分
- python安装idle_Python从零单排之Python环境及IDLE安装
- 开源软件的许可(License)
- CentOS下使用TUN/TAP虚拟网卡的基本教程
- python csv wordpress xmlrpc_wordpress_xmlrpc模块批量自动发布文章到wordpress - 老牛博客...
- mysql 使用异步io_InnoDB引擎之-异步IO(Async IO)
- 贪心科技分布式高性能深度实战学习笔记
- JAVA SSM毕业设计——基于SSM的校园二手交易平台的设计与实现
- 我在 CMU 的八年博士生涯...
- [腾讯社区开放平台]介绍开放授权协议-OAuth
- Back Channel笔记
- 12306模拟登陆-超级鹰
- Laravel Guzzle封装
- zing开发者_Zing免费开放Java开发人员
- 见与不见---作者:谈笑靖
- 7月生日会|清凉的惊喜与祝福
- Zxing jar的下载地址