3
我發現一些奇怪的行爲與predict
和svyglm
對象從survey
包。如果您在predict
newdata有一個水平的一個因素/字符它吐出錯誤:使用預測與svyglm
Error in `contrasts<-`(`*tmp*`, value = contr.funs[1 + isOF[nn]]) :
contrasts can be applied only to factors with 2 or more levels
此錯誤是有道理的,如果我把一個級別的變量作爲預測的模型,但newdata我不沒有看到問題。
與正常glm
這工作正常。
MRE:
library(survey)
data(api)
dstrat<-svydesign(id=~1,strata=~stype, weights=~pw, data=apistrat, fpc=~fpc)
svymodel <- svyglm(api00~sch.wide,design=dstrat)
# errors
predict(svymodel, data.frame(sch.wide=rep("No",10)))
regmodel <- glm(api00~sch.wide,data=apistrat)
# works
predict(regmodel,data.frame(sch.wide=rep("No",10)))
我發現,它的工作原理,如果我劈因子的水平,但是這不應該是必要的:
svymodel <- svyglm(api00~sch.wide,design=dstrat)
predict(svymodel, data.frame(sch.wide=factor(rep("No",10),
levels = c("No","random phrase"))))
我誤解的東西,或者這是一個問題與survey
包?
謝謝Lumley教授。 – Carl
現在構建在r-forge上的3.31-5版本在'predict.svyglm'中增加了'$ xlevels'的使用 –