在下面的广义回归模型中,如果两列相似,为什么我会在一列上出现错误,而另一列却不会出现错误?

问题描述 投票:0回答:1

我有以下数据框和拟合模型:

goyo <- data.frame(
  Grade <- c(8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 6, 8, 8, 8, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8),
  a <- c(NA, 0, NA, NA, NA, NA, NA, NA, NA, NA, 1, NA, 1, 1, NA, 1, NA, 1, NA, 1, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA),
  b <- c(0, NA, NA, NA, NA, NA, NA, NA, 0, NA, NA, NA, NA, 0, NA, NA, NA, 1, NA, NA, 1, NA, 0, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA, NA)
)
goyo$Grade <- factor(goyo$Grade)
glm(reformulate(c("Grade"), "a"), family=binomial, data = goyo)
glm(reformulate(c("Grade"), "b"), family=binomial, data = goyo)

当我使用“b”列运行拟合模型时,出现错误:

Error in `contrasts<-`(`*tmp*`, value = contr.funs[1 + isOF[nn]]) : 
  contrasts can be applied only to factors with 2 or more levels

看起来和层数有关。然而,两列看起来几乎相同,我不明白它们之间有什么区别,导致它们给出不同的结果。

r debugging regression glm
1个回答
0
投票

glm(b ~ Grade)
根据

删除缺失内容
> goyo[complete.cases(goyo[c('Grade', 'b')]), ]
   Grade  a b
1      8 NA 0
9      8 NA 0
14     8  1 0
18     8  1 1
21     8 NA 1
23     8 NA 0

并且不能对等级应用对比,这解释了

> glm(reformulate(c("Grade"), "b"), family=binomial, data = goyo)
Error in `contrasts<-`(`*tmp*`, value = contr.funs[1 + isOF[nn]]) : 
  contrasts can be applied only to factors with 2 or more levels
© www.soinside.com 2019 - 2024. All rights reserved.