我正在尝试使用survey
库中的svyglm()
将有序逻辑回归glm拟合为加权数据:
model <- svyglm(freehms ~ agea, design = wave9_design, family=binomial(link= "logit"))
freehms
是从1到5的数字(我试过将其设置为因子),agea
也是数字。我有更多的变量,但为了简单起见没有在这里包含它们。
但是由于某种原因,我得到了以下错误消息:
"Error in eval(family$initialize) : y values must be 0 <= y <= 1"
我看过网上的例子,教程,我就是找不到我做错了什么。我不明白当我指定链接函数(logit)来解决这个问题时,为什么Rstudio坚持我的自变量是二进制的。
发布于 2020-10-16 06:55:01
您需要在调查包中使用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())
https://stackoverflow.com/questions/64374843
复制相似问题