gpt4 book ai didi

r - 用样本权重计算基尼系数的公式是什么

转载 作者:行者123 更新时间:2023-12-04 11:04:36 24 4
gpt4 key购买 nike

我需要你的帮助来解释我如何获得与这个函数相同的结果:基尼(x,权重=rep(1,长度=长度(x))) http://cran.r-project.org/web/packages/reldist/reldist.pdf --> 第 2 页. 基尼

比方说,我们需要测量人口 N 的 inocme。为此,我们可以将人口 N 分成 K 个子组。在每个第 k 个子组中,我们将取 nk 个个人并询问他们的收入。结果,我们将得到“个人的收入”,每个人都有特定的“样本权重”来表示他们对人口 N 的贡献。这是我从上一个链接简单得到的例子,数据集来自 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

我知道如何通过我自己的代码计算没有 WEIGHTS 的基尼系数。因此,毫无疑问,我想在我的代码中保留命令 gini(y) 。我唯一关心的是 gini(y,w) 获得结果 0.3483615 的操作方式。我尝试如下进行另一次计算,看看是否可以得出与 gini_yw 相同的结果。这是我基于本书第 9.5 节 CDF 的另一个代码:‘‘Relative社会科学中的分配方法”,作者: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 与命令 gini(y, weights) 不同。如果你们中有人知道如何建立正确的计算以准确获得gini_yw = 0.3483615,请给我你的建议。

非常感谢 friend 们。

最佳答案

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查看。没有括号或其他任何东西。

编辑:这实际上可以对任何函数或对象完成。

关于r - 用样本权重计算基尼系数的公式是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20556095/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com