使用R调查包测量收入不平等性

5
我正在使用survey软件包处理美国社区普查微观数据,并希望计算一些基本的收入不平等统计信息。我已经按照以下方式设置了我的设计:
testsurv <- svrepdesign(data=test, repweights = test[,8:87], weights = test$HHWT, 
                   combined.weights=TRUE, type = "Fay", rho = 0.5,scale=4/80, 
                   rscales = rep(1, 80), mse=TRUE)

基于此,我希望能够按年份计算基尼系数以及收入分位数比率。使用 svybysvyquantile 生成分位数和相关误差非常容易:

quants <- svyby(~INCOME, ~YEAR, testsurvey, svyquantile, 
              quantiles=c(0.9, 0.75, 0.5, 0.25, 0.1), keep.var=TRUE)

这让我想到我的第一个问题:如果我有每个收入分位数的复制权重误差,如何计算收入分位数比率(例如90/10)的标准误差?我尝试使用svyratio,但那是针对整个变量的比率,而不是变量中所选观测值的比率。
第二个问题:是否有一种方法可以使用现有函数(如reldist中的gini)在survey中计算基于复制的gini系数?我尝试使用withReplicates,但效果不佳,可能是因为gini将其参数排序为变量,然后权重,但withReplicates的说明指定相反的顺序。我尝试了两种方式,但都没有成功。例如,在这个例子中,HHWT是样本权重:
> withReplicates(testsurv, gini(~HHWT, ~INCOME))

这将导致以下错误消息:
Error in sum(weights) : invalid 'type' (language) of argument
In addition: Warning message:
In is.na(x) : is.na() applied to non-(list or vector) of type 'language'
1个回答

3

使用R Convey包。目前该包尚未在CRAN上发布,但您可以使用以下命令快速安装:

devtools::install_github("djalmapessoa/convey")

对于90th到10th的比率,请使用?svyqsr函数,并将alpha=设置为0.1,因为它默认为80th和20th。

对于基尼系数,请使用?svygini函数。

只要您拥有ACS复制加权调查设计,这些都应该是直接的计算。请务必在svrepdesign调用后立即使用convey_prep函数!


谢谢Anthony - 我期待着尝试它(也感谢您的伟大网站,这是一个很好的资源)! - user115457
1
现在它已经在CRAN上了。 - Anthony Damico
Anthony - 这是一个非常晚的回复,但我还是想感谢你指向这个fantastic package。这是一个很好的贡献,对我的项目非常重要。 - user115457

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接