![4014aa46353f1562c72ed44c50820596.png](https://i-blog.csdnimg.cn/blog_migrate/e7e7c6294c89685e86375c6810af82fb.jpeg)
之前写过用 Matlab 实现泰尔指数及其分解,再补充一个 R 语言实现(代码更加的简洁),同时做了改进,之前的函数说实话很难使用:指标数据和分组数据是分开的,而且还得注意顺序不能乱。
只实现上篇文章中的 TbTw() 函数(另两个完全多余),算法原理步骤看上面这篇文章就行,不再赘述。
定义泰尔指数及其分解的函数:
Theil_Index <- function (dat) {
# 计算泰尔指数及其分解
# 返回Tb为组间差距, Tw为组内差距, z为各个组内差距,
# 返回T为泰尔指数, Db为组间贡献率, Dw为各个组内贡献率
# 泰尔指数T=Tb+Tw
# dat包含指标列x和分组列Group
dat$Group = as.factor(dat$Group)
dat$xp = dat$x / sum(dat$x) # 计算每个个体收入占总收入的比例
grps = split(dat$xp, dat$Group) # 对数据做分组
n = nrow(dat)
n