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)

由此,我想按年计算基尼系数,以及按年计算收入的分位数比率。svyby使用and生成分位数和相关误差很简单svyquantile

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使用现有函数(如ginifrom )内计算基尼系数(具有基于复制的误差) 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'
4

1 回答 1

3

使用 R 传送包。这在 CRAN 上尚不可用,但您可以快速安装它

devtools::install_github("djalmapessoa/convey")

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

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

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

于 2016-06-01T11:26:21.370 回答