1

我的线性模型试图根据变量性别、收入、语言和地位来预测赌博金额。性别是一个二元变量,即“男性”或“女性”(它们是因素),而其余的都是数字。

lm3 <- lm(gamble ~ sex + status + income + verbal, data=teengamb)

那是我的线性模型。我无法预测具有平均地位、收入和语言的男性的功能:

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”。

teengamb$sex[teengamb$sex==0] <- "Male"
teengamb$sex[teengamb$sex==1] <- "Female"
teengamb$sex <- as.factor(teengamb$sex)
4

1 回答 1

4

创建newdata数据框时,您必须确保每列都有一个名称:

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(您可以通过 do 看到这一点help(teengamb))。

(这意味着它应该是:

newdata <- data.frame(sex=factor("Male", levels=c("Female", "Male")), 
                      status=mean(teengamb$status),
                      income=mean(teengamb$income),
                      verbal=mean(teengamb$verbal))
于 2013-10-09T04:04:30.317 回答