如何使用svyglm()拟合有序逻辑回归?

时间:2020-10-15 15:23:17

标签: r survey

我正在尝试使用svyglm()库中的survey使加权数据适合有序逻辑回归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"

我看了在线示例,教程,但找不到我做错的事情。我不明白为什么在指定链接功能(登录)来解决这个问题时,Rstudio坚持我的自变量为二进制。

1 个答案:

答案 0 :(得分:1)

您希望在调查表中使用sample.data.frame_long%>% mutate(End2 = lubridate::mdy(End)) %>% mutate(Sum = ifelse(End2 > "2022-12-31", 0, Sum)) #> # A tibble: 12 x 5 #> SKU Month Sum End End2 #> <chr> <chr> <dbl> <chr> <date> #> 1 ABC 01 3 10/28/22 2022-10-28 #> 2 ABC 02 5 12/02/22 2022-12-02 #> 3 ABC 03 9 12/30/22 2022-12-30 #> 4 ABC 04 0 01/27/23 2023-01-27 #> 5 DEF 01 9 10/28/22 2022-10-28 #> 6 DEF 02 10 12/02/22 2022-12-02 #> 7 DEF 03 6 12/30/22 2022-12-30 #> 8 DEF 04 0 01/27/23 2023-01-27 #> 9 GHI 01 8 10/28/22 2022-10-28 #> 10 GHI 02 4 12/02/22 2022-12-02 #> 11 GHI 03 5 12/30/22 2022-12-30 #> 12 GHI 04 0 01/27/23 2023-01-27 功能。或新的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())