我有一个数据集,将其分为测试和训练数据集。在这个切分之后,我使用以下内容生成了一个逻辑回归模型:
logModel1 = glm(Y ~ . -var1 -var2 -var3, data=train, family=binomial)
如果我使用该模型在同一训练集上进行预测,则不会出现错误(当然这并不是一个非常有用的模型测试)。因此,我使用以下代码对我的测试集进行预测:
predictLog1 <- predict(logModel1, type="response", newdata=test)
但我遇到了以下错误:
这里是让我特别困惑的地方:Error in model.frame.default(Terms, newdata, na.action = na.action, xlev = object$xlevels) : factor myCharVar has new levels This is an observation of myCharVar, This is another...
- myCharVar 是我的训练集和测试集中的字符变量。我已经通过
str(test$myCharVar)
和str(train$myCharVar)
确认过。 - 我的模型甚至没有使用 myCharVar 来进行预测。
那里的建议是完全从我的训练集和测试集中删除字符变量,这为我提供了一个解决方法,所以至少我没有卡住。但这似乎相当不优雅,与仅使用“-myCharVar”将它们从模型中删除相比。如果有人理解为什么测试集中的字符变量会引发“因子具有新级别”错误,我肯定很感兴趣。