泰尔指数及分解公式的计算方法与Matlab实现 您所在的位置:网站首页 泰尔系数和泰尔指数一样吗为什么 泰尔指数及分解公式的计算方法与Matlab实现

泰尔指数及分解公式的计算方法与Matlab实现

2024-07-13 03:43| 来源: 网络整理| 查看: 265

前言

最近查一点泰尔指数的资料,发现无论是公式还是软件实现,都说的特别乱,看不出所以然。

特整理了该内容,并用Matlab软件给出了实现的代码。

一、泰尔指数

泰尔指数(Theil index)或者泰尔熵标准(Theil’s entropy measure)泰是由泰尔(Theil,1967)利用信息理论中的熵概念来计算收入不平等而得名。

熵在信息论中被称为平均信息量。在信息理论中,假定某事件E将以某概率p发生,而后收到一条确定消息证实该事件E的发生,则此消息所包含的信息量用公式可以表示为:

\[h(p)=ln(\frac{1}{p})\]

设某完备事件组由各自发生概率依次为p1,p2,...,p_n由n个事件E1,E2,...,E_n构成,则有\[\sum_{i=1}^n p_i =1\],熵或者期望信息量等于各事件的信息量与其相应概率乘积的总和:

\[H(x)=\sum_{i=1}^n p_i h(p_i) = \sum_{i=1}^n p_i \ln\big(\frac{1}{p_i}\big) = -\sum_{i=1}^n p_i \ln(p_i)\]      (1)

将信息理论中的熵指数概念用于收入差距的测度时,可将收入差距的测度解释为将人口份额转化为收入份额(类似于洛伦兹曲线中将人口累计百分比信息转化为收入累计百分比)的消息所包含的信息量。而泰尔指数只是熵指数中的一个应用最广泛的特例。泰尔指数的表达式为:

\[T=\frac{1}{n} \sum_{i=1}^n \frac{y_i}{\bar{y}} \ln\big(\frac{y_i}{\bar{y}}\big)\]               (2)

其中,T为收入差距程度的测度泰尔指数,y_i表示第i个个体的收入,\[\bar{y}\]表示所有个体的平均收入。

对于分组数据,泰尔指数有另一种表达式:

\[T=\sum_{k=1}^K w_k \ln\big( \frac{w_k}{e_k} \big)\]                 (3)

其中,w_k表示第k组收入占总收入的比重,e_k表示第k组人口数占总人口数的比重。

例1.

111.jpg 2016-11-13 15:32:55 上传 下载附件 (42.98 KB)

(I)    按公式(2)计算:

function T=Theil2(x) %函数Theil2()计算泰尔指数, 反映收入水平的差异 %其中,x为n个个体的收入 xx=x./mean(x); T=mean(xx.*log(xx));复制代码

主程序:

y2=[10 10 8 8 8 8 6 6 6 6 6 6 4 4 4 4 2 2]; %每个个体的收入(万美元) T2=Theil2(y2)复制代码

运行结果:

T2 =  0.0791

(II)   按公式(3)计算:

function T=Theil(y,p) %函数Theil()计算泰尔指数, 反映收入水平的差异 %其中,y为各组的平均收入; p为各组包含的个体数 w=y.*p/sum(y.*p); e=p./sum(p); T=sum(w.*log(w./e));复制代码

主程序:

y=[10 8 6 4 2]; %各组的平均收入(万美元) p=[2 4 6 4 2]; %各组包含的个体数 T=Theil(y,p)复制代码

运行结果:

T =  0.0791

二. 泰尔指数分解法

泰尔指数作为收入不平等程度的测度指标具备良好的可分解性质,即将样本分为多个群组时,泰尔指数可以分别衡量组内差距与组间差距对总差距的贡献。假设包含n个个体的样本被分为K个群组,每组分别为\[g_k, (k=1,\cdots,K)\],第k组g_k中的个体数目为n_k,则有\[\sum_{k=1}^K n_k =n\],

y_i表示个体i的收入份额(占总收入的比例), y_k表示第k组的收入份额(占总收入的比例),记T_b与T_w分别为组间差距和组内差距,则可将泰尔指数分解如下:

\[T=T_b+T_w=\sum_{k=1}^K y_k \ln\big(\frac{y_k}{n_k /n} \big) + \sum_{k=1}^K y_k \Big(\sum_{i \in g_k} \frac{y_i}{y_k} \ln \frac{y_i / y_k}{1/n_k} \Big)\]     (4)

在上式中组间差距T_b与组内差距T_w分别有如下表达式:

\[T_b=\sum_{k=1}^K y_k \ln\big(\frac{y_k}{n_k /n} \big) \]                           (5)

\[T_w = \sum_{k=1}^K y_k \Big(\sum_{i \in g_k} \frac{y_i}{y_k} \ln \frac{y_i / y_k}{1/n_k} \Big)\]      (6)

另外,值得注意的是组内差距项分别由各组的组内差距之和构成,各组的组内差距的计算公式与样本总体的计算公式并无二致,只是将样本容量控制在第k组的个体数目n_k。

例2 还是例1的数据,计算组间差距T_b与组内差距T_w,验证泰尔指数T=T_b+T_w

function [Tb,Tw]=TbTw(x,n) %函数TbTw()计算泰尔指数分解, 返回Tb为组间差距, Tw为组内差距 %泰尔指数T=Tb+Tw %x为N个个体的收入向量, 依次分为K个分组 %n=[n1,...,nK]为各分组的个体数向量, sum(n)=N K=length(n); s=[0,cumsum(n)]; for k=1:K     X{k}=x(s(k)+1:s(k+1))./sum(x); %X{k}为第k个分组的nk个个体的收入份额(占总收入的比例)     y(k)=sum(X{k}); %y(k)为第k组的收入份额(占总收入的比例) end Tb=sum(y.*log(y./(n./length(x)))); %组间差距 for k=1:K     z(k)=sum((X{k}./y(k)).*log(n(k)*X{k}./y(k))); %第k组的组内差距 end Tw=sum(y.*z); %总的组内差距为各分组组内差距的加权和复制代码

主程序:

x=[10 10 8 8 8 8 6 6 6 6 6 6 4 4 4 4 2 2]; %每个个体的收入(万美元) n=[2 4 6 4 2]; %各分组的个体数 [Tb,Tw]=TbTw(x,n)复制代码

    运行结果:

Tb=  0.0791

Tw=  -3.7007e-17

说明:由于该例中,每个分组内各个个体的收入是相同的,故每个分组的组内差距为0,总的组内差距Tw也为0,结果中的-3.7007e-17是由于Matlab中的双精度误差造成的,相当于是0.

例3 修改例1中的数据,让各分组的个体收入不相等,继续测试上述算法。

原第1组:10、10,改为9.5、10.5

原第2组:8、8、8、8,改为7、9、7.5、8.5

原第3组:6、6、6、6、6、6改为5、7、5.5、6.5、6、6

原第4组:4、4、4、4改为3、5、3.5、4.5

原第5组:1.5、2.5

主程序:

x2=[9.5 10.5 7 9 7.5 8.5 5 7 5.5 6.5 6 6 3 5 3.5 4.5 1.5 2.5]; %每个个体的收入(万美元) n=[2 4 6 4 2]; %各分组的个体数 [Tb,Tw]=TbTw(x2,n) T=Theil2(x2) Tb+Tw复制代码

运行结果:

Tb=  0.0791

Tw=  0.0077

T=   0.0868

ans=  0.0868



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有