计算调查包中所有变量的标准误差

时间:2017-11-02 19:07:25

标签: r tidyverse survey

我有一个大型调查(~250个变量),并希望为所有变量生成估计值和标准误差,然后与同事共享该输出。看起来好像这应该很简单,但到目前为止,我在文档中找不到类似的问题或示例。

我的例子来自survey包中的数据:

data(api)

## one-stage cluster sample
dclus1<-svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc)

svytotal(~api00, dclus1, deff = TRUE)
svytotal(~api99, dclus1, deff = TRUE)

我知道我可以通过上述方法为每个变量生成估计值和误差,或者产生下面的双向结果:

svytotal(~api00+api99, dclus1, deff = TRUE)
然而,我的目标是在一个步骤中为每个变量产生估计和误差,即

svytotal(~(c(pcttest:api.stu)), dclus1, deff = TRUE)

以便它返回所有变量的估计值和误差:

apiclus1[, 11:37]

是否通过调查包或srvyr包提供解决方案?

1 个答案:

答案 0 :(得分:0)

您目前混合使用整数和因子列。除非先将它们转换为数字,否则您将无法计算标准误差。

在一个较小的示例中,要计算多列的标准错误,您可以像这样使用apply

apply(apiclus1[,11:15],2,sd,na.rm=TRUE)

   pcttest      api00      api99     target     growth 
  1.686912 105.748867 112.850380   5.247616  29.755257 

请注意,如果您将范围更改为[,11:16]sch.wide会返回NA,因为它是一个因素,而不是数字。

另请注意,计算错误svytotal(~api00, dclus1, deff = TRUE)的公式会为898364返回api00的非荒谬值。