0

我想计算加权广义基尼系数。CRAN 分发具有合适功能的“酸”包。

我在这里想念什么?当权重恒定时,在给定参数 nu = 2 的情况下,weighted.gini 和 sgini 的估计值相等(以获得常规 gini)。当权重不恒定时,它们会有所不同。有什么可疑的事情还是我错过了什么?他们应该是一样的,对吧?

使用 van Kerm 的 STATA sgini 函数进行检查,该函数在酸的文档中被引用,其函数返回预期的相同估计值。

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
4

1 回答 1

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
于 2021-11-22T18:48:50.310 回答