matlab画基尼系数和画洛伦兹曲线

在这里插入图片描述
在这里插入图片描述
含义就是:把所有人(假设刚好 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)])


猜你喜欢

转载自blog.csdn.net/david2000999/article/details/123017727