我正在尝试使用库中的加权数据来拟合有序逻辑回归svyglm()glm survey:
model <- svyglm(freehms ~ agea, design = wave9_design, family=binomial(link= "logit"))
Run Code Online (Sandbox Code Playgroud)
freehms是 1 到 5 之间的数字(我尝试将其设置为一个因子)并且agea也是数字。我还有更多变量,但为了简单起见没有将它们包含在这里。
但由于某种原因,我收到以下错误消息:
"Error in eval(family$initialize) : y values must be 0 <= y <= 1"
Run Code Online (Sandbox Code Playgroud)
我查看了在线示例、教程,但我找不到我做错了什么。我不明白为什么当我指定链接函数(logit)来解决这个问题时,Rstudio 坚持我的自变量是二进制的。
您需要svyolr()调查包中的功能。或者是新的svyVGAM软件包,它具有广泛的序数模型。 svyglm不适合此模型,因为它不是广义线性模型。
例如
library(survey)
data(api)
dclus2<-svydesign(id=~dnum+snum, fpc=~fpc1+fpc2, data=apiclus2)
dclus2<-update(dclus2, mealcat=as.ordered(cut(meals,c(0,25,50,75,100))))
svyolr(mealcat~avg.ed+mobility+stype, design=dclus2)
library(svyVGAM)
svy_vglm(mealcat~avg.ed+mobility+stype, design=dclus2, family=propodds())
Run Code Online (Sandbox Code Playgroud)