【问题标题】:glm Error in eval(family$initialize) : y values must be 0 <= y <= 1 BUT values ARE 0 and 1eval 中的 glm 错误(family$initialize):y 值必须是 0 <= y <= 1 但值是 0 和 1
【发布时间】:2021-01-26 05:08:47
【问题描述】:

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

    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 的值。我做错了什么?

【问题讨论】:

  • typeof(data$Activity)、typeof(data$Activity) 和 range(data$Activity) 返回什么?错误来自binomial()$initialize,它在前几行进行检查。可能尝试检查with(data, any(Activity &lt; 0 | Activity &gt; 1))。

标签: r glm


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-25
    • 1970-01-01
    • 2022-01-01
    • 1970-01-01
    • 2021-02-06
    • 2021-05-06
    • 2021-08-02
    相关资源
    最近更新 更多