使用包分析序数数据survey
,我在尝试使用 raked 数据时遇到了一些问题。没有耙,svyolr()
工作没有任何问题,但是当我在耙后尝试分析时,svyolr 遇到错误Error in if (any(y < 0 | y > 1)) stop("y values must be 0 <= y <= 1") : missing value where TRUE/FALSE needed
。
可以使用示例数据集 api 重现该问题:
library(survey)
data(api)
dclus1 <- svydesign(id=~dnum, weights=~pw, data=apiclus1, fpc=~fpc)
dclus1<-update(dclus1, mealcat=cut(meals,c(0,25,50,75,100)))
m<-svyolr(mealcat~avg.ed+mobility+stype, design=dclus1)
m #works without a problem
## population marginal totals for each stratum
pop.types <- data.frame(stype=c("E","H","M"), Freq=c(4421,755,1018))
pop.schwide <- data.frame(sch.wide=c("No","Yes"), Freq=c(1072,5122))
## Rake with the population totals
dclus1r<-rake(dclus1, list(~stype,~sch.wide), list(pop.types, pop.schwide))
m2 <-svyolr(mealcat~avg.ed+mobility+stype, design=dclus1r)
m2 # error encountered
难道我做错了什么?无法svyolr
处理倾斜或后分层(相同的错误消息)数据?我在帮助文件中没有看到任何提及,甚至在survey:::svyolr.survey.design2
.
是否可以使用survey
或任何其他包来执行此操作R
?