r - R 调查包中的 svydesign 不接受 imputationList
问题描述
我正在尝试使用 Survey 分析复杂的调查数据。我用鼠标对丢失的数据进行了插补,并按照文档中的说明,将插补转换为具有 mitools 中的 imputationList() 的 imputationList 对象。但是当我尝试将该对象用作 svydesign() 中的数据时,我收到以下错误消息:
Error in as.data.frame.default(yrbs_complex_imputationList) :
cannot coerce class ‘"imputationList"’ to a data.frame
按照 StackOverflow 其他地方提供的示例,我尝试将 mitools 函数直接合并到 svydesign 公式中:
yrbs_svyimputationList<-svydesign(ids="psu", probs = NULL, strata = "stratum", variables = NULL, fpc = NULL, data=imputationList(yrbs_complex_imputations), nest = TRUE, check.strata = !nest, weights, pps=FALSE)
但这导致了不同的错误消息:
Error in as.data.frame.default(x[[i]], optional = TRUE) :
cannot coerce class ‘"function"’ to a data.frame
如何将多重估算数据合并到调查设计对象中?
解决方案
这是文档中的示例
> library(mitools)
> data.dir<-system.file("dta",package="mitools")
> files.men<-list.files(data.dir,pattern="m.\\.dta$",full=TRUE)
> men<-imputationList(lapply(files.men, foreign::read.dta,
+ warn.missing.labels=FALSE))
> files.women<-list.files(data.dir,pattern="f.\\.dta$",full=TRUE)
> women<-imputationList(lapply(files.women, foreign::read.dta,
+ warn.missing.labels=FALSE))
> men<-update(men, sex=1)
> women<-update(women,sex=0)
> all<-rbind(men,women)
>
> designs<-svydesign(id=~id, strata=~sex, data=all)
> designs
Multiple (5) imputations: svydesign(id = ~id, strata = ~sex, data = all)
最大的区别是您需要使用~
而不是引号来引用变量,就像在回归模型中一样。如今,这可能会使用 tidyverse 的非标准评估来实现,但该survey
软件包比 tidyverse 旧得多。
推荐阅读
- c# - 使用 RestSharp 在 MySql 数据库中发布
- vue.js - 为什么同一个 vue 组件上的多个引导下拉菜单共享相同的选项?
- java - 从 JComboBox 中选择项目后显示一个勾号
- java - 如何在 JavaFx Tablecolumn 标题中放置一个复选框
- amazon-web-services - 受信任域之间的 Active Directory LDAPS
- javascript - 谷歌表格脚本编辑器 - 保存后脚本不起作用
- python - 仅在修改后如何读取文本文件?
- android - Firebase 实时数据库密钥生成对于 Android/iOS 设备上的时钟变化是否可靠?#AskFirebase
- javascript - Vuelidate requiredIf 不使用复选框
- delphi - 如何自动增加内部版本号?