R – using predict function when one variable is a binary factor
我的线性模型试图根据变量性别、收入、语言和地位来预测赌博金额。性别是一个二元变量,即”男性”或”女性”(它们是因子),而其余的都是数字。
1
|
lm3 <- lm(gamble ~ sex + status + income + verbal, data=teengamb)
|
那是我的线性模型。我无法预测具有平均地位、收入和语言能力的男性的功能:
1
2 3 |
newdata <- c(as.factor(“Male”), mean(teengamb$status), mean(teengamb$income), mean(teengamb$verbal))
newdata <- data.frame(newdata) predict(lm3, newdata) |
我不知道该怎么做。
请注意,我将其转换为男性和女性的方式是:
但是,我已将 0=male, 1=female 转换为”Male”和”Female”。
1
2 3 |
teengamb$sex[teengamb$sex==0] <-“Male”
teengamb$sex[teengamb$sex==1] <-“Female” teengamb$sex <- as.factor(teengamb$sex) |
- 你在什么方面遇到麻烦?你能显示你对 predict 的调用吗?
- 这就是我所拥有的,但它不起作用。
- newdata <- c(as.factor(“Male”), mean(teengamb$status), mean(teengamb$income), mean(teengamb$verbal)) newdata <- data.frame(newdata) predict(lm3,新数据)
- 抱歉,由于某种原因,行距不起作用。但它的三行代码。
- 以后,在你的问题下点击”编辑”,将其编辑到问题中(我已经为你完成了)
当您创建 newdata 数据框时,您必须确保每列都有一个名称:
1
2 3 4 5 |
newdata <- data.frame(sex=0, status=mean(teengamb$status),
income=mean(teengamb$income), verbal=mean(teengamb$verbal)) predict(lm3, newdata) # 28.24252 |
还要注意 sex 表示为 0=male, 1=female(您可以通过执行 help(teengamb) 看到这一点)。
(这意味着它应该是:
1
2 3 4 |
newdata <- data.frame(sex=factor(“Male”, levels=c(“Female”,”Male”)),
status=mean(teengamb$status), income=mean(teengamb$income), verbal=mean(teengamb$verbal)) |
- 我编辑了原始帖子以显示我已将 0 转换为男性,将 1 转换为女性。当我将上面的代码与男性/女性作为因素一起使用时,它不起作用(假设因为它不再是 0 和 1)。但是,当我在表格中重新阅读时,它再次为 0 和 1 时它起作用了。无论如何可以使用男性/女性因素吗?这甚至是编写线性模型的正确方法吗?非常感谢!
- 通常我不会编辑其他人的答案,但格式会在评论中一团糟。如果 0\\’s 更改为 “Male” 和 1\\’s 到 “Female”,则只需使用带有这些级别的因子将与编辑问题中的内容相匹配。
- 感谢您添加@DWin!
来源:https://www.codenong.com/19262784/