【问题标题】:Calculate standard error for all variables in survey package计算调查包中所有变量的标准误差
【发布时间】:2017-11-02 19:07:24
【问题描述】:

我有一项大型调查(约 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)

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

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

但是,我的目标是一步生成每个变量的估计值和误差,即

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

因此它返回了以下所有变量的估计值和误差:

apiclus1[, 11:37]

是否有通过调查包或srvyr 包的解决方案?

【问题讨论】:

  • 也许svytotal( as.formula( paste( "~" , paste( names( apiclus1 )[11:37 ] , collapse = "+" ) ) ) , dclus1 , deff = TRUE ) ?
  • 感谢您的评论。不是我想要的,但它让我得到了这个回复:lapply and survey。我把它改成了:` lapply( variables , function( z ) svytotal( as.formula( paste0( "~" , z) ) , dclus1, svytotal , vartype = 'se' ) )`

标签: r tidyverse survey


【解决方案1】:

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

在一个较小的示例中,要计算多列的标准误差,您可以像这样使用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) 的公式会为 api00 返回一个无意义的 898364 值。

【讨论】:

  • 感谢@Mako212,但您的回答没有使用调查包。这些值似乎没有意义,因为您的回答没有使用调查设计中 apiclus1 中的权重我认识整数和因子列。您对不同的变量类型提出了很好的观点。抱歉没有更具体。更具体地说,我的问题是,您知道使用调查包为同一类型的多个变量生成标准误差和估计值的方法吗?
猜你喜欢
  • 2017-12-14
  • 2015-11-20
  • 1970-01-01
  • 2014-07-24
  • 2023-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多