#r #inequality #gini
#r #неравенство #джини
Вопрос:
Я хочу рассчитать взвешенные обобщенные коэффициенты Джини. CRAN распределяет пакет «acid» с подходящей функцией.
Чего мне здесь не хватает? Когда веса постоянны, оценки weighted.gini и sgini равны при заданном параметре nu = 2 (чтобы получить обычный джини). Когда веса непостоянны, они различаются. Происходит что-то подозрительное или я что-то упускаю? Они должны быть одинаковыми, верно?
Проверено с помощью функции STATA sgini ван Керма, которая цитируется в документации acid, и ее функция возвращает ожидаемые одинаковые оценки.
set.seed(123)
install.packages("acid")
library(acid)
x <- rnorm(100,10,1)
w <- rep(1, length(x))
acid::weighted.gini(x,w)$Gini
acid::sgini(x,w,nu=2)$Gini
w <- rnorm(100,10,1)
acid::weighted.gini(x,w)$Gini
acid::sgini(x,w,nu=2)$Gini
Ответ №1:
В «sgini» есть ошибка. В формуле, которую имеет команда «sgini», в той же точке среднее значение (x) вычисляется без учета весов.
Если бы мы попытались вручную вычислить взвешенный Джини по формулам: https://core.ac.uk/download/pdf/41339501.pdf
set.seed(123)
x <- rnorm(100,10,1)
w <- rep(1, length(x))
acid::weighted.gini(x,w)$Gini
acid::sgini(x,w,nu=2)$Gini
w <- rnorm(100,10,1)
acid::weighted.gini(x,w)
acid::sgini(x,w,nu=2)
#calc manually
ox<-order(x)
x<-x[ox]
w<-w[ox]
#cov(x,cumsum(x)/cumsum(x)[length(x)])*2/mean(x) #gini without weights
w<-w/sum(w)
f<-w/2 cumsum(c(0,w[-length(w)]))
2/sum(x*w)*sum(w*(x-sum(x*w))*(f-sum(f*w))) #==weighted.gini(x,w)$Gini