对不起,如果感觉像是一个重复的问题,但老实说,我已经花了12个多小时,并且还没有找到易于理解和易于应用的方法.
情况很简单,我创建了2个模型,需要将它们应用到测试数据中.
#Model 1 - reg5 <- glm(train$survived ~ train$pclass_str + train$sex + train$age_2 + train$sibsp + train$pclass_str*train$sex, family = "binomial") #Model 2 - reg6 <- randomForest(train$survived_str ~ train$pclass_str + train$sex + train$age_2 + train$sibsp, ntree=5000)应用它 -
test$pred_reg5 <- predict(reg5, newdata = test, type="response") test$pred_reg6 <- predict(reg6, newdata = test, type="response")
我可以保证的是,列车和测试数据都包含模型中使用的相同名称的变量.虽然还有其他未使用的变量.
我得到的错误:
Error in `[<-.factor`(`*tmp*`, keep, value = c("0", "1", "1", "1", "0", : NAs are not allowed in subscripted assignments In addition: Warning message: 'newdata' had 418 rows but variables found have 891 rows
谢谢你的帮助!
将模型更改为,例如:
reg5 <- glm(survived ~ pclass_str + sex + age_2 + sibsp + pclass_str*sex, data=train, family = "binomial") reg6 <- randomForest(survived_str ~ pclass_str + sex + age_2 + sibsp, data=train, ntree=5000)
您的模型规范可能存在另一个问题,即reg5
使用survived ~...
和reg6
使用survived_str ~...
,但我无法从您的问题中判断出这是一个问题.
最后,正如@Roland所指出的那样,您可以简化公式.如果您打算这么做,请阅读R(?formula
)中关于公式的文档.在R公式中,通过指定构建交互a:b
.符号a*b
等同于a + b +a:b
(例如,一阶项和它们的相互作用).因此,指定pclass_str*sex
等同于指定pclass_str + sex + pclass_str:sex
.