我想计算加权广义基尼系数。CRAN使用合适的函数分发"acid“包。
这里我漏掉了什么?当权重不变时,给定参数nu =2,weighted.gini和sgini的估计是相等的(以获得规则的基尼系数)。当权重是非常数时,它们是不同的。是不是有什么不对劲的地方,还是我错过了什么?它们应该是一样的,对吧?
用van Kerm的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发布于 2021-11-22 18:48:50
"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)$Ginihttps://stackoverflow.com/questions/65884289
复制相似问题