首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用样本重量计算基尼系数的公式是什么?

用样本重量计算基尼系数的公式是什么?
EN

Stack Overflow用户
提问于 2013-12-12 23:05:11
回答 2查看 7.7K关注 0票数 3

我需要您的帮助来解释如何获得与此函数相同的结果: 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。

代码语言:javascript
复制
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著,

代码语言:javascript
复制
#-------------------------
# 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,请给我你的建议。

谢谢你的朋友们。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-12-13 00:36:10

代码语言:javascript
复制
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输入控制台来查看。没有括号或其他任何东西。

编辑:任何函数或对象都可以这样做。

票数 5
EN

Stack Overflow用户

发布于 2015-11-21 01:12:11

虽然为时已晚,但人们可能对[SciencesPo][1]包中包含的集中/多样性措施感兴趣。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20556095

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档