使用带有二项式族的 glm 更改参考组

Posted

技术标签:

【中文标题】使用带有二项式族的 glm 更改参考组【英文标题】:Change reference group using glm with binomial family 【发布时间】:2013-07-20 07:32:40 【问题描述】:

当我在 R 中使用包含三个级别“Higher”、“Middle”和“Lower”的独立因子变量运行二项式回归时,我想使用 relevel 更改参考类别,我收到此错误:

“Error in relevel.ordered(cbsnivcat3, "Lower") : 
  'relevel' only for factors”

我已经检查过 cbsnivcat3 是否是一个因素

> is.factor(data$cbsnivcat3)
[1] TRUE

> levels(data$cbsnivcat3)
[1] "Higher" "Middle" "Lower" 

> t1m4=glm(tertiary ~ relevel(cbsnivcat3, "Lower") , family = binomial, data = data)
    Error in relevel.ordered(cbsnivcat3, "Lower") : 
      'relevel' only for factors

但与factor glm(tertiary ~ factor(cbsnivcat3) , family = binomial, data = data) 一样可以正常工作。

MQ1:什么原因导致错误,我做错了什么?

提前感谢您的提示、命令和解决方案

str(数据)

$ cbsnivcat3     : Ord.factor w/ 3 levels "Higher"<"Middle"<..: 1 1 1 1 1 1 1 1 1 1 ...
$ tertiary       : num  0 0 1 1 1 1 0 1 0 0 ...

【问题讨论】:

大概cbsnivcat3 是一个有序因子,而不是普通因子。我们可以看看str(data)吗? 【参考方案1】:

cbsnivcat3 是一个有序因子,所以relevel 不起作用。你能做的就是把它改成一个普通的因子:

cbsnivcat3 <- factor(cbsnivcat3, levels=c("Lower","Middle","Higher"))

【讨论】:

谢谢@Hong Ooi 和Ben Bolker。在 Ben Bolker 的暗示之后,我想“是的,就是这样”。【参考方案2】:

试试这个

df <- data.frame(y=sample(c(0,1), size=100,replace=T),x1=rep(c('a','b','c'),100), x2=1:100)
summary(glm(y~x1+x2,data=df))

df$x1 <- relevel(df$x1, ref='b')
summary(glm(y~x1+x2,data=df))

df$x1 <- relevel(df$x1, ref='c')
summary(glm(y~x1+x2,data=df))

【讨论】:

以上是关于使用带有二项式族的 glm 更改参考组的主要内容,如果未能解决你的问题,请参考以下文章

r语言的函数 "glm"里的"负二项分布"参数 "family=啥?

Logistic 回归的预测和置信区间

如何从 cv.glmnet 中提取具有成本函数的实际分类错误率,以便与 cv.glm 进行比较?

R中的大型固定效应二项式回归

急求NOIP2009普及组试题

PySpark多项式回归中的参考组