2016-09-19 59 views
1

我想計算基尼係數使用Gini()DescTools(因爲它提供了一個簡單的方法來計算「無偏」基尼係數與權重,置信區間等),但我得到一些當我用「大」樣本使用這個函數時出錯。這裏是產生在我側的誤差的簡單示例:整數溢出錯誤使用包裝DescTools的基尼函數

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:在總和(X * 1:N):整數溢出 - 使用總和(as.numeric() ) 2:n * sum(x):由整數溢出產生的NDA

我想不通什麼問題,有什麼想法? 我正在使用R版本3.3.1(2016-06-21) - RStudio版本0.99.903和「DescTools'0.99.17版本中的」Bug in Your Hair「。
編輯:哦,從整數轉換我的號碼的數字,似乎做的工作(但我仍然不明白這一點,反正...):

x2 <- as.numeric(x2) #Now, Gini() will work... 
+0

warning!= error – Gregor

回答

0

基於對這個職位一些反思,我改變了函數DescTools::Gini()來默認將整數轉換爲數字(如DescTools 0.99.18所示)。操作便宜,性能損失不值得...

set.seed(1984) 
x <- sample(c(1:100000), 500) 
Gini(x) 
# [1] 0.3360882