Ошибка переполнения целого числа при использовании функции Джини пакета DescTools

Я хочу рассчитать коэффициенты Джини, используя Gini() из 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: In sum(x * 1:n): целочисленное переполнение — используйте sum(as.numeric(.)) 2: In n * sum(x): NA, созданные целочисленным переполнением

Я не могу понять, в чем проблема, есть идеи? Я использую R версии 3.3.1 (21 июня 2016 г.) -- "Ошибка в ваших волосах" с RStudio версии 0.99.903 и "DescTools" версии 0.99.17.
Редактировать: О, хорошо, преобразование моих чисел от целого числа к числовому, кажется, выполняет эту работу (но я все равно не понимаю...):

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

person Moon Patrol    schedule 19.09.2016    source источник


Ответы (1)


Основываясь на некоторых размышлениях об этом посте, я изменил функцию DescTools::Gini(), чтобы по умолчанию преобразовать целые числа в числовые (как в DescTools 0.99.18). Операция дешевая, а потерянная производительность не стоит...

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