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

时间:2016-05-31 22:25:24

标签: r survey inequality gini

我正在使用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来表示整个变量的比率,而不是变量中的选定观察值。

第二个问题:有没有办法使用survey中的gini等现有函数计算reldist内的基尼系数(基于复制的错误)?我尝试使用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 个答案:

答案 0 :(得分:2)

使用R传送包。这在CRAN上尚不可用,但您可以使用

快速安装
devtools::install_github("djalmapessoa/convey")

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

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

只要你有acs重复加权的调查设计,这些都应该是简单的计算。请务必在convey_prep来电后立即使用svrepdesign功能!