我想使用DescTools
中的Gini()
来计算基尼系数(因为它提供了一种简单的方法来计算带有权重,置信区间等的"无偏"基尼系数),但是当我将此函数与"大"样本一起使用时,我会得到一些错误。下面是一个在我这边产生错误的简单示例:
library("DescTools")
x1 <- sample(c(1:100000), 50) #Here I create a sample of 50 cases varying from 1 to 100,000
Gini(x1) #Here I use the Gini function without any parameters, and it returns the Gini coefficient as expected:
[1] 0.3153713
x2 <- sample(c(1:100000), 500) #Now, I create a sample of 500 cases varying from 1 to 100,000
Gini(x2) #And if I compute the Gini coefficient with the same parameters, I get the following error:
[1] NA
警告消息:1: In sum(x * 1:n):整数溢出-使用sum(as.numeric(.))2: In n * sum(x):由整数溢出产生的NAs
我不知道是什么问题,你知道吗?我使用的是R版本3.3.1(2016-06-21)——"Bug in Your Hair",RStudio版本0.99.903和"DescTools"版本0.99.17。
编辑:哦,好吧,将我的数字从整数转换为数字似乎可以完成这项工作(但我仍然不明白,无论如何…):
x2 <- as.numeric(x2) #Now, Gini() will work...
基于对这篇文章的一些反思,我改变了函数DescTools::Gini()
,默认情况下将整数转换为数字(如DescTools 0.99.18)。这个操作很便宜,损失的性能是不值得的。
set.seed(1984)
x <- sample(c(1:100000), 500)
Gini(x)
# [1] 0.3360882