泰尔索引Python vs R

泰尔索引Python vs R,python,r,Python,R,我试图用python和R计算Theil索引,但是对于给定的函数,我得到了不同的答案。以下是我尝试使用的公式: 使用R中的ineq包,我可以轻松获得Theil索引: library(ineq) x=c(26.1,16.1,15.5,15.4,14.8,14.7,13.7,12.1,11.7,11.6,11,10.8,10.8,7.5) Theil(x) 0.04152699 这个实现似乎很有意义,我可以查看提供的代码以了解正在进行的精确计算,并且它似乎遵循以下公式(当我得到零时删除零以获取日志

我试图用python和R计算Theil索引,但是对于给定的函数,我得到了不同的答案。以下是我尝试使用的公式:

使用R中的ineq包,我可以轻松获得Theil索引:

library(ineq)
x=c(26.1,16.1,15.5,15.4,14.8,14.7,13.7,12.1,11.7,11.6,11,10.8,10.8,7.5)
Theil(x)
0.04152699
这个实现似乎很有意义,我可以查看提供的代码以了解正在进行的精确计算,并且它似乎遵循以下公式(当我得到零时删除零以获取日志):


在另一个问题中没有明确说明,但实施预期其投入将标准化,因此每个
x_i
都是收入的一部分,而不是实际金额。(这就是为什么另一个代码在\u range01函数中有
error\u,如果
x\u i
不在0和1之间,则会引发错误。)

如果将
x
标准化,将得到与R代码相同的结果:

>>> T(x/x.sum())
(0.041526988117662533, 0.0406765553418974)

(第一个值是R报告的值。)

在另一个问题中没有明确说明,但该实施预期其输入将被标准化,因此每个
x_i
都是收入的一部分,而不是实际金额。(这就是为什么另一个代码在\u range01
函数中有
error\u,如果
x\u i
不在0和1之间,则会引发错误。)

如果将
x
标准化,将得到与R代码相同的结果:

>>> T(x/x.sum())
(0.041526988117662533, 0.0406765553418974)
(第一个值是R报告的值。)

>>> T(x/x.sum())
(0.041526988117662533, 0.0406765553418974)