【问题标题】:How to fit ordered logistic regression using svyglm()?如何使用 svyglm() 拟合有序逻辑回归?
【发布时间】:2020-10-17 13:24:56
【问题描述】:

我正在尝试使用来自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 坚持我的自变量是二进制的。

【问题讨论】:

  • 这不是一个小问题...ordinal() 包为序数数据提供了各种累积链接模型,但不处理调查权重。序数响应与二项式响应不同......您确实指定了 logit 链接,但这是在二项式系列的上下文中。
  • 我明白了。谢谢回复!我刚刚注意到我用作模板的示例是拟合二元逻辑模型,而不是有序模型。无论如何,我的问题是一样的,因为我无法在网上找到任何示例。
  • www150.statcan.gc.ca/n1/en/catalogue/12-001-X20040016997 ; onlinelibrary.wiley.com/doi/abs/10.1111/insr.12218(我不知道实现,但至少人们正在考虑这个......)

标签: r survey


【解决方案1】:

您希望调查包中的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())

【讨论】:

    猜你喜欢
    • 2022-10-04
    • 2022-08-03
    • 2021-06-29
    • 2019-02-15
    • 2015-04-26
    • 1970-01-01
    • 1970-01-01
    • 2017-03-10
    • 2020-06-16
    相关资源
    最近更新 更多