含义就是:把所有人(假设刚好 100 个人)的收入从小到大排序,然后从收入最少的开始累计,每计算一个人,横坐标为人数累计值占总人数比例,纵坐标为收入累计值占总收入比例,直到最后一个收入最大的人。
显然,图中横坐标和纵坐标都是 [ 0 -1 ] 之间。把图左下角和右上角连起来,表示人数累计占比恒等于收入累积占比,意味着收入完全均等。
好了,上面人人收入均等的线与实际收入曲线之间的面积就是 A, 实际收入曲线与 X 轴之间面积是 B。
matlab代码
%x1=0:0.1:1;
%总人口 7681520041
%总收入 1313967.445亿元
%a1=xlsread('C:\Users\zh128\Desktop\update_NY.GNP.xls',1,'C5:C195');
%a2=xlsread('C:\Users\zh128\Desktop\update_NY.GNP.xls',2,'D1:D192');
%a3=xlsread('C:\Users\zh128\Desktop\update_NY.GNP.xls',2,'E1:E192');
a1=xlsread('C:\Users\zh128\Desktop\update_NY.GNP.xls',1,'C5:C195');
a2=xlsread('C:\Users\zh128\Desktop\update_NY.GNP.xls',3,'D1:D192');
a3=xlsread('C:\Users\zh128\Desktop\update_NY.GNP.xls',3,'E1:E192');
a2=a2./7681520041;
x1=a2';
x2=0:0.001:1;%作为拟合数据使用
a3=a3./1313967.445;
t=a3';%收入数百分比
xlen=length(x1);
y=zeros(1,xlen);
x0=zeros(1,xlen);
for i=1:xlen
y(i)=sum(t(1:i));
end
for i=1:xlen
x0(i)=sum(x1(1:i));
end
% c=polyfit(x1,y,7);
c=fit(x0',y','smoothingspline');
%d=polyval(c,x2);
d=c(x2);
%plot([0,1],[0,1],x1,y,['-'])
plot(x0,x0,'b-.',x0,y,'*',x2,d,'-')
title('Lorenz Curve')
xlabel('Cumulative percentage of population'),ylabel('Cumulative revenue percentage')
axis equal
axis([0,1,0,1])
grid on
%计算基尼系数
area1=trapz(x2,d);
area2=trapz(x0,x0);
JN=(area2-area1)/area2;
disp(['Gini coefficient of national income=',num2str(JN)])