前两天想偷个懒在网上找了好久关于求基尼系数的现成公式,结果很令人失望,于是只好奋发图强自己动手啦。

​开始之前还是先脑补一些什么是基尼系数?

----------------------------------------------------------------------------------------​

居民收入分配的差异程度,是当前人们所普遍关心的一个问题。收入分配差异的合理与否,一方面可以反映按劳分配原则的实现情况;另一方面是保障居民生活和社会稳定的重要条件。衡量收入差异状况最重要、最常用的指标是基尼系数(即吉尼系数)。

基尼系数(Gini

coefficient)是20世纪初意大利经济学家基尼根据洛伦茨曲线提出的判断分配平等程度的指标(如下图),设实际收入分配曲线和收入分配绝对平等曲线之间的面积为A,实际收入分配曲线右下方的面积为B。并以A除以(A+B)的商表示不平等程度。这个数值被称为基尼系数或称洛伦茨系数。如果A为零,基尼系数为零,表示收入分配完全平等;如果B为零则系数为1,收入分配绝对不平等。该系数可在零和1之间取任何值。收入分配越是趋向平等,洛伦茨曲线的弧度越小,基尼系数也越小,反之,收入分配越是趋向不平等,洛伦茨曲线的弧度越大,那么基尼系数也越大。

洛仑兹曲线

图中,0M为45度线,在这条线上,每10%的人得到10%的收入,表明收入分配完全平等,称为绝对平等线。OPM表明收入分配极度不平等,全部收入集中在1个人手中,称为绝对不平等线。介于二线之间的实际收入分配曲线就是洛伦茨曲线。它表明:洛伦茨曲线与绝对平等线OM越接近,收入分配越平等;与绝对不平等线OPM越接近,收入分配越不平等。

​计算基尼系数,可以用收入分组数据计算,也可用分户数据计算。但要注意的是,无论分组还是分户计算,均应先对数据按收入从低到高排序,分组计算时,一般应使分组的组距相等。用分组数据计算的基尼系数要明显小于分户数据的计算值,特别是当分组的组数不多时,差距更大。用分户数据计算基尼系数时,采用的计算指标不同,也会出现不同的结果。一般有两种计算方法,一种方法是按户总收入排序,按户计算基尼系数,此时,为每户收入占总收入的比例,为调查户数的倒数;另一种计算方法是按每户家庭的人均收入排序,此时,为每户人口占全部人口的比例,为本户人均收入占人均收入之和的比例。这两种计算方法,结果是有差异的,按人均收入计算的基尼系数要大于按户收入计算的基尼数据。在用基尼系数时进行不同地区、不同时期的收入差距比较时,应注意计算方法的一致性,不同计算方法得出的基尼系数是没有可比性的。

国际上通常用基尼系数来判定收入分配均等程度。基尼系数是界于0-1之间的数值,当基尼系数为0时,表示绝对平等;基尼系数越大,不均等程度越高;当基尼系数为1时,表示绝对不平等。市场经济国家衡量收入差距的一般标准为:基尼系数在0.2以下表示绝对平均;0.2-0.3之间表示比较平均;0.3-0.4之间表示较为合理;0.4-0.5之间表示差距较大;0.5以上说明收入差距悬殊。例如:依据全国城市住户调查收入分组资料,计算出的基尼系数1978年为0.16,1988年为0.23,2000年为0.32,说明1978年我国城市居民个人收入差距不大,比较平均;1988年以后城市居民个人收入差距已经开始拉开,到2000年城市居民个人收入差距逐步拉大。

用基尼系数分析居民收入的差异,是一种比较普遍的方法。其特点:一是方法本身具有科学性,基尼系数的计算是将社会经济现象数学化了的办法,能从整体上反映居民集团内部收入分配的差异程度。二是基尼系数反映收入分配的差异程度精确、灵敏,可以反映差异程度细微的和连续的变化。三是在经济工作中可以作为一个综合经济参数纳入国家的计划管理和宏观调控之中。四是基尼系数在国际上应用广泛,便于在实际工作加强横向联系比较,学习和借鉴外地区和国外的经验。

----------------------------------------------------------------------------------------​

如何计算基尼系数呢?过程很复杂,但是方法其实很简单

​首先计算A+B的面积,结果为1/2。

其次计算B的面积。由于洛伦茨曲线是一条不规则的曲线,无法直接计算B的面积,因此采用近似梯形的面积来代替。假定全部人口平均分为n组,以累计到第i组人口总收入占全部人口总收入的比重Wi为下底,以累计到第i-1组人口总收入占全部人口总收入的比重Wi-1为上底,以每组人口占全部人口的比例即1/n为高,计算一个个小梯形的面积,并加总,即得到近似B的面积:

B = Σ[ 1/2 ×1/n

×(Wi-1

+  Wi)]

其中,i从1到n-1

最后,再将上述推导结果代入基尼系数定义式,进行推导

化简整理,即得一个简便易学易用的基尼系数计算公式:

公式中:是按收入分组后各组的人口数占总人口数的比重;是按收入分组后,各组人口所拥有的收入占收入总额的比重;是从i=1到i的累计数,如,=Y1+Y2+Y3….+Yi。

​其中Wi表示从第1组累计到第i组的人口总收入占全部人口总收入的百分比。

----------------------------------------------------------------------------------------

总之,基尼系数其实就是用洛仑兹曲线与对角线组成图形面积与等边直角三角形面积的比。懒得自己写代码研究的同学们,下面是福利。Matlab公式源码如下,有需要的朋友可以直接copy使用啦:​

function Gini=Gini_coef(NumArr)

NumArrSorted=sort([0,NumArr]);

NumArrPercent=NumArrSorted/sum(NumArrSorted);

NumArrSortedLen=length(NumArrSorted);

NumArrAcc=zeros(1,NumArrSortedLen);

for i=1:NumArrSortedLen

NumArrAcc(i)=sum(NumArrPercent(1:i));

end

x1=linspace(0,1,NumArrSortedLen);

x2=0:(1/NumArrSortedLen/10):1;

cfithandle=fit(x1',NumArrAcc','smoothingspline');

d=cfithandle(x2);

% 生产图形

% figure

% plot(x1,x1,'b-.',x1,NumArrAcc,'*',x2,d,'-')

% % plot([0,1],[0,1],x1,y,['-'])

% title('洛伦兹曲线')

% xlabel('人口百分比累计')

% ylabel('收入百分比累计')

% axis equal

% axis([0,1,0,1])

% grid on

%计算基尼系数

area1=trapz(x2,d);

area2=trapz(x1,x1);

Gini=roundn(1-area1/area2,-4);

上面代码注释部分放开可以直接生成洛仑兹曲线图形并且是已经fit过的。

​我自己还另外写了一份python的,有需要的私信我吧​

matlab画基尼系数,Matlab 对离散数列计算基尼系数(Gini_coef)公式相关推荐

  1. 用matlab画树叶,matlab画漂亮的树叶

    美丽的树叶 画叶子 1.构出大形 2.增加漂亮的花纹 3.添加环境 找一找你看到了哪些线条 线描树叶: 美丽的树叶 画叶子 1.构出大形 2.增加漂亮的花纹 3...... 方法和材料表现叶子. 叶子 ...

  2. matlab画足球,Matlab画足球

    Matlab画足球 科普:足球表面是由12个正五边形和20个正六边形构成,每个正五边形相邻的是5个正六边形,共有60个顶点,90条棱,这些数据可以根据欧拉定理计算得出,不是这里要说明的重点. 思路:先 ...

  3. 怎么用matlab画误差椭圆,matlab画误差椭圆

    一 图4椭圆抛物面 图5双曲抛物面 图6锥面 例如画螺旋曲线的图形,其参数方程设... 数学实验第二次实验报告--MATLAB基本图形绘制_理学_高等教育_教育专区.数... 实验作业 2 解: 代码 ...

  4. 如何用matlab画烧杯,MATLAB在动力学实验数据处理中的应用

    · 68· 化 学 教 育(http://www.hxjy.org) 2015年第 2期 MATLAB在动力学实验数 据处理 中的应用 高锦红 (渭南 师范学 院化学与生命科学学院 陕西渭南 7140 ...

  5. matlab画圆柱,Matlab 画三维圆柱体

    主要学习了画空间圆柱体和空间长方形的绘制方法. 有两个surface property:'FaceColor'和'EdgeColor'; 先讲'FaceColor',它指定了surface画出曲面的颜 ...

  6. 如何用matlab画道路,MATLAB中如何将多条曲线画在一张图上

    在用MATLAB处理数据时,有时候,为了几组不同数据之间的对比,我们需要将几组数据对应的曲线画在一张图上,该怎么处理呢? 首先,我们随机产生三组范围不同的数据,数据量都为500,他们的边界分别为[10 ...

  7. matlab画圆柱体,Matlab中如何实现绘制任意圆柱

    本代码实现了,由两点和半径绘制空间任意圆柱 function [Cylinder EndPlate1 EndPlate2] = cylinder3(X1,X2,r,n,cyl_color,closed ...

  8. 用matlab画钥匙,Matlab在锁具装箱问题中的应用.ppt

    <Matlab在锁具装箱问题中的应用.ppt>由会员分享,可在线阅读,更多相关<Matlab在锁具装箱问题中的应用.ppt(10页珍藏版)>请在人人文库网上搜索. 1.Matl ...

  9. matlab画余割,MATLAB程序作业

    title('三角函数2') xlabel('t'), ylabel('y') 5.将图形窗口分成两个窗格分别绘制出以下函数在[-3,3]区间上的曲线: yl=2x+5 y2=x2-3x+1 并利用a ...

  10. matlab画气象要素,Matlab怎样在中国地图背景上显示气象数据?详见内容

    大家好,我有一个765×3的矩阵,其中第一列为经度,第二列为纬度,第三列为近几十年来温度的上升趋势(slope,用regress求的),现在我想画出一张图,类似于附件中的例图. 我自己捣鼓了很久也没弄 ...

最新文章

  1. Flutter 在铭师堂的实践
  2. MyBatis 架构分层与模块划分-接口层
  3. Android kotlin中配置protobuf
  4. WPF 辅助开发工具
  5. 拷贝相同属性的两个对象的属性-BeanUtils和PropertyUtils以及区别
  6. 文华财经指标公式,通达信指标加密破解
  7. notepad下载(官网进不去)
  8. STM32学习100步之第四十二步——触摸按键驱动程序
  9. ACM入门知识-----ACM赛事介绍
  10. PaddleHub一键识别动物 : resnet50_vd_animals
  11. e480换高分屏_四世同堂,12年一轮回,再赏ThinkPad机型
  12. 个人日记-学习究竟是什么读后感3-2020/7/13
  13. 使用Java8中的Optional类来消除代码中的null检查
  14. 优秀原型设计欣赏:交通类App原型制作分享-DiDi
  15. codevs3147 矩阵乘法 2 (推导小公式)
  16. 2022年3月青少年机器人技术等级考试理论综合试卷(一级)
  17. 【原创】10元买啤酒2个空瓶换一瓶4个瓶盖换一瓶经典算法
  18. python打印100以内的素数_如何用python打印100以内的质数?
  19. 一个月上3天班,年薪100万,你来不来!
  20. apache common JCS的使用

热门文章

  1. CDN是什么?如何用Cloudflare CDN加速网站
  2. 为什么这么多人会选择单页设计?
  3. 怎样利用计算机电源,计算机电源功耗如何计算?如何使用电脑功率计算器?
  4. 《算法导论》:跳跃表(Skip List)
  5. Android Dex 分包+热修复(QQ空间技术方案)
  6. 【C++基础之十】友元函数和友元类
  7. mediasoup 管道通信类UnixStreamSocket分析
  8. 计算机音乐谱大全好汉歌,吉他曲谱好汉歌_《好汉歌》的吉他乐谱
  9. 麻省理工学院——人工智能公开课总结02
  10. 我做过的最好的$ 4.90