【发布时间】:2020-06-05 10:26:18
【问题描述】:
我在使用调查和选项卡包分析 r 上的调查数据时遇到问题。
我认为我正确设置了调查设计对象,但是当我尝试运行 tabmean.survey 函数比较超过 2 个类别的平均值时,该函数无法识别设计中的变量。
这是使用我的数据的示例:
svyd<-svydesign(id=~psu, #PSU variable
strata=~strata, #Strata variable
weights=~ca_betaindin_xw, #Weight variable
data=usds)
svyd_emp<-subset(svyd, usds$samp_employ==1) #subset the data to required analytic sample
t1<-tabmeans.svy(age~ethnicity,
design = svyd_emp) #Run tabmeans.svy comparing means of age by ethnicity
产生此错误的原因:
svyglm.survey.design 中的错误(年龄 ~ 1,设计 = 设计): 所有变量都必须在 design= 参数中
当我使用二进制变量尝试相同的函数时,该函数可以工作
t2<-tabmeans.svy(age~sex,
design = svyd_emp) #Run tabmeans.svy comparing means of age by sex
#WORKS
以前使用此函数比较多类别变量的平均值。我无法弄清楚为什么该函数现在会抛出错误。 survey.design 对象具有对象中列出的变量。
我无法分享我的数据,但我使用调查包中的“api”数据集重现了同样的问题。
data(api)
sdesign<-svydesign(id=~dnum+snum,
strata=~stype,
weights=~pw,
data=apistrat,
nest = TRUE)
t3<-tabmeans.svy(api00~stype, # stype has 3 categories = DOESNT WORK
design=sdesign)
t4<-tabmeans.svy(api00~sch.wide,
design=sdesign) # sch.wide has 2 categories = WORKS
感谢有关如何解决此问题的任何想法或建议。
非常感谢
【问题讨论】:
-
library(tab)中的这个函数看起来有错误,你可能想在 github 上提出问题?如果您的变量有两个以上的级别,tabmeans.svy期望名为Age和Sex的变量尽管在其文档中没有这么说? github.com/vandomed/tab/blob/master/R/tabmeans_svy.R#L179 -
错误消息
svyglm.survey.design(Age ~ 1, design = design)说您使用了Age而不是age。对吗?