我需要您的帮助来解释如何获得与此函数相同的结果: gini(x,weights=rep(1,length=length(X)) http://cran.r-project.org/web/packages/reldist/reldist.pdf -->第2页。
比方说,我们需要测量种群N的接种量。为了做到这一点,我们可以把种群N划分成K个子群。在每个分组kth中,我们将以nk个人为对象,要求他们的收入。因此,我们将得到“个人收入”,每个人将有特定的“样本权重”来表示他们对人口的贡献。下面是我从前面的链接得到的例子,数据集来自NLS。
rm(list=ls())
cat("\014")
library(reldist)
data(nls);data
help(nls)
# Convert the wage growth from (log. dollar) to (dollar)
y <- exp(recent$chpermwage);y
# Compute the unweighted estimate
gini_y <- gini(y)
# Compute the weighted estimate
gini_yw <- gini(y,w=recent$wgt)
> --- Here is the result----
> gini_y = 0.3418394
> gini_yw = 0.3483615我知道如何用我自己的代码计算没有重量的基尼值。因此,我想将gini(y)命令保留在我的代码中,这是毫无疑问的。我唯一关心的是吉尼(y,w)的操作方式,以获得0.3483615的结果。我试着做另一个计算,如下所示,看看我是否能够得到与gini_yw相同的结果。这是我基于CDF的另一个代码,第9.5节,来自这本书:“社会科学中的相对分布方法”,由Mark S. Handcock著,
#-------------------------
# test how gini computes with the sample weights
z <- exp(recent$chpermwage) * recent$wgt
gini_z <- gini(z)
# Result gini_z = 0.3924161正如您所看到的,我的计算gini_z与命令吉尼(y,权重)不同。如果你们中的人知道如何建立正确的计算来获得准确的gini_yw = 0.3483615,请给我你的建议。
谢谢你的朋友们。
发布于 2013-12-13 00:36:10
function (x, weights = rep(1, length = length(x)))
{
ox <- order(x)
x <- x[ox]
weights <- weights[ox]/sum(weights)
p <- cumsum(weights)
nu <- cumsum(weights * x)
n <- length(nu)
nu <- nu/nu[n]
sum(nu[-1] * p[-n]) - sum(nu[-n] * p[-1])
}这是函数gini的源代码,可以通过将gini输入控制台来查看。没有括号或其他任何东西。
编辑:任何函数或对象都可以这样做。
发布于 2015-11-21 01:12:11
虽然为时已晚,但人们可能对[SciencesPo][1]包中包含的集中/多样性措施感兴趣。
https://stackoverflow.com/questions/20556095
复制相似问题