全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件
20352 11
2016-11-13

前言

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

特整理了该内容,并用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


(I)    按公式(2)计算

复制代码

主程序

复制代码

运行结果

T2 =  0.0791

(II)   按公式(3)计算

复制代码

主程序

复制代码

运行结果

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


复制代码

主程序

复制代码

    运行结果

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


主程序

复制代码

运行结果

Tb=  0.0791

Tw=  0.0077

T=   0.0868

ans=  0.0868


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2017-3-28 20:03:14
运行出来的程序好像是错误的啊
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-7-26 22:58:07
楼主能否提供matlab数据文件呢?感谢
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-7-27 12:11:27
幻月黄昏 发表于 2017-7-26 22:58
楼主能否提供matlab数据文件呢?感谢
数据就在代码里面啊
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-7-27 17:41:04
楼主你好,我认真阅读了您的代码,看到x{1}存储的是[0.0925925925925926,0.0925925925925926]这样一个数组,请问一下,如果做二阶分解的话,不知道x{k}能不能存储三层数据啊?比如x{1}存储的数组里面第一个数据0.0925925925925926,能不能用来存储第三层中的一个数组?不知道我讲清楚了没有,请多多指教!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2017-7-27 23:56:02
问题已解决,谢谢楼主
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群