原文链接:http://tecdat.cn/?p=20613

洛伦兹曲线来源于经济学,用于形容社会支出不平衡的景象。将支出降序排列,别离计算支出和人口的累积比例。
本文,咱们钻研支出和不平等。咱们从一些模仿数据开始

 > (income=sort(income))[1]  19246  23764  53237  61696 218835 

为什么说这个样本中存在不平等?如果咱们看一下最贫困者领有的财产,最贫困的人(五分之一)领有5%的财产;倒数五分之二领有11%,依此类推

> income[1]/sum(income)[1] 0.0510> sum(income[1:2])/sum(income)[1] 0.1140 

如果咱们绘制这些值,就会失去 洛伦兹曲线

 > plot(Lorenz(income))> points(c(0:5)/5,c(0,cumsum(income)/sum(income)) 

当初,如果咱们失去500个观测值。直方图是可视化这些数据分布的办法

> summary(income)   Min. 1st Qu.  Median    Mean 3rd Qu.    Max.    2191   23830   42750   77010   87430 2003000 > hist(log(income), 

在这里,咱们应用直方图将样本可视化。但不是支出,而是支出的对数(因为某些离群值,咱们无奈在直方图上可视化)。当初,能够计算 基尼系数 以取得无关不平等的一些信息

> gini=function(x){ + mu=mean(x)+ g=2/(n*(n-1)*mu)*sum((1:n)*sort(x))-(n+1)/(n-1) 

实际上,没有任何置信区间的系数可能毫无意义。计算置信区间,咱们应用boot办法

 > G=boot(income,gini,1000)> hist(G,col="light blue",border="white" 

红色局部是90%置信区间,

 5%       95% 0.4954235 0.5743917 

还包含了一条具备高斯分布的蓝线,

> segments(quantile(G,.05),1,quantile(G,.95),1, > lines(u,dnorm(u,mean(G),sd(G)), 

另一个风行的办法是帕累托图(Pareto plot),咱们在其中绘制了累积生存函数的对数与支出的对数,

 > plot(x,y) 

如果点在一条直线上,则意味着能够应用帕累托散布来建模支出。

后面咱们曾经看到了如何取得洛伦兹曲线。实际上,也能够针对某些参数散布(例如,一些对数正态分布)取得Lorenz曲线,

 > lines(Lc.lognorm,param=1.5,col="red")> lines(Lc.lognorm,param=1.2,col="red")> lines(Lc.lognorm,param=.8,col="red") 

在这里, 对数正态分布是一个很好的抉择。帕累托散布兴许不是:

 > lines(Lc.pareto,param=1.2,col="red") 

实际上,能够拟合一些参数散布。

 shape           rate      1.0812757769   0.0140404379  (0.0604530180) (0.0009868055) 

当初,思考两种散布,伽马散布和对数正态分布(实用于极大似然办法)

 shape           rate      1.0812757769   0.0014040438  (0.0473722529) (0.0000544185)     meanlog       sdlog     6.11747519   1.01091329  (0.04520942) (0.03196789) 

咱们能够可视化密度

 > hist(income,breaks=seq(0,2005000,by=5000),+ col=rgb(0,0,1,.5),border="white",  + fit_g$estimate[2])/1e2 + fit_ln$estimate[2])/1e2> lines(u,v_g,col="red",lwd=2)> lines(u,v_ln,col=rgb(1,0,0,.4),lwd=2) 

在这里,对数正态仿佛是一个不错的抉择。咱们还能够绘制累积散布函数

`> plot(x,y,type="s",col="black",xlim=c(0,250000))+ fit_g$estimate[2])+ fit_ln$estimate[2])> lines(u,v_g,col="red",lwd=2)` 

当初,思考一些更事实的状况,在这种状况下,咱们没有来自考察的样本,但对数据进行了合并,

对数据进行建模,

fit(ID=rep("Data",n), Time difference of 2.101471 secsfor LNO fit across 1 distributions 

咱们能够拟合对数正态分布(无关该办法的更多详细信息,请参见 从合并支出估算不平等 的办法)

`> y2=N/sum(N)/diff(income_binned$low) + fit_LN$parameters[2])> plot(u,v,col="blue",type="l",lwd=2)> for(i in 1:(n-1)) rect(income_binned$low[i],0,+ income_binned$high[i],y2[i],col=rgb(1,0,0,.2),` 

在此,在直方图上(因为已对数据进行分箱,因而很天然地绘制直方图),咱们能够看到拟合的对数正态分布很好。

> v <- plnorm(u,fit_LN$parameters[1],+ fit_LN$parameters[2])> for(i in 1:(n-1)) rect(income_binned$low[i],0,> for(i in 1:(n-1)) rect(income_binned$low[i],+ y1[i],income_binned$high[i],c(0,y1)[i], 

对于累积散布函数,我思考了最坏的状况(每个人都处于较低的支出中)和最好的状况(每个人都具备最高可能的支出)。

也能够拟合狭义beta散布

GB_family(ID=rep("Fake Data",n), 

为了获得最佳模型,查看

> fits[,c("gini","aic","bic")] 

后果很好,接下来看下实在数据:

 fit(ID=rep("US",n), + distribution=LNO, distName="LNO"Time difference of 0.1855791 secsfor LNO fit across 1 distributions

同样,我尝试拟合对数正态分布

> v=dlnorm(u,fit_LN$parameters[1],> plot(u,v,col="blue",type="l",lwd=2)> for(i in 1:(n-1)) rect(data$low[i], 

然而在这里,拟合度很差。同样,咱们能够估算狭义beta散布

> GB_family(ID=rep("US",n), + ID_name="Country")

能够失去基尼指数,  AIC 和BIC

 gini      aic      bic1  4.413431 825368.5 825407.32  4.395080 825598.8 825627.93  4.451881 825495.7 825524.84  4.480850 825881.7 825910.85  4.417276 825323.6 825352.76  4.922122 832408.2 832427.67  4.341036 827065.2 827084.68  4.318667 826112.8 826132.29        NA 831054.2 831073.610       NA       NA       NA

看到最好的散布仿佛是 狭义伽玛散布。


最受欢迎的见解

1.R语言泊松Poisson回归模型剖析案例

2.R语言进行数值模仿:模仿泊松回归模型

3.r语言泊松回归剖析

4.R语言对布丰投针(蒲丰投针)试验进行模仿和动静可视化

5.用R语言模仿混合制排队随机服务排队零碎

6.GARCH(1,1),MA以及历史模拟法的VaR比拟

7.R语言做简单金融产品的几何布朗运动的模仿

8.R语言进行数值模仿:模仿泊松回归模型

9.R语言对巨灾危险下的再保险合同定价钻研案例:狭义线性模型和帕累托散布Pareto distributions