首页 > 解决方案 > eval 中的 glm 错误(family$initialize):y 值必须是 0 <= y <= 1 但值是 0 和 1

问题描述

我有一个如下所示的数据集:

    Act Day        Sin
1   1   Monday     3
2   0   Tuesday    0
3   0   Wednesday  1    

我正在尝试对 Act 列进行线性回归。我读到了虚拟变量,所以我每天都在添加列,如下所示:

data$Mon = ifelse(data$Day=="Monday", 1, 0)
... and so on for the other days

这给了我这样的数据

    Act Day        Sin  Mon Tue Wed Thu Fri Sat
1   1   Monday     3    1   0   0   0   0   0
2   0   Tuesday    0    0   1   0   0   0   0
3   0   Wednesday  1    0   0   1   0   0   0
... and so on

然后当我尝试像这样创建我的模型时:

glm.fit <- glm(Activity ~ Mon, data = data, family = binomial)

我收到以下错误:

Error in eval(family$initialize) : y values must be 0 <= y <= 1

我查看了很多关于此错误的其他帖子,他们都建议将 y 值设为 1 和 0。但是我的“星期一”列已经是 0 和 1 的值。我做错了什么?

标签: rglm

解决方案


我将我的因变量包装成一个 as.factor 并且有效:

glm.fit <- glm(as.factor(Activity) ~ Mon, data = data, family = binomial)

推荐阅读