我正在尝试使用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坚持我的自变量为二进制。
答案 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())