在 R 中使用 mboost 多项逻辑回归进行预测

Prediction using mboost multinomial logistic regression in R


我正在尝试使用 R 中的 mboost 包来应用多项逻辑回归模型。我在网上找到了这个例子,但我在预测函数中添加了 "newdata = iris" 以查看预测公式如何在 mboost 中对新数据起作用。但是我收到一个错误。首先是代码:

library(mboost)

### fitting multinomial logit model via a linear array model
X0 <- K0 <- diag(nlevels(iris$Species) - 1)
colnames(X0) <- levels(iris$Species)[-nlevels(iris$Species)]
mlm <- mboost(Species ~ bols(Sepal.Length, df = 2) %O%
            buser(X0, K0, df = 2), data = iris,
          family = Multinomial())
round(predict(mlm, type = "response", newdata = iris), 2)

我得到的错误如下:
[.data.frame(newdata, nm) 中的错误:选择了未定义的列

我只是在预测中重新使用了虹膜数据作为测试,但是以前有人遇到过这个问题吗?

您不能对新数据使用 predict 函数的原因是您在 buser() 中使用了预定义的设计和惩罚矩阵,即 X0K0.这些不是新数据集的一部分,因此在构建用于预测的新设计矩阵时不可用。

Sarah Brockhaus post等 solution on github that replaces buser with bols. To do this one needs to convert the data set to a list and add the new dummy to this list. If one really wants to predict with new data, one needs to keep this dummy untouched. See also my post on github.

[编辑] 正如@Lorcan-Treanor 在他的评论中提到的,bols 所需的因子数并不总是等于二。这里实际上是 nlevels(iris$Species) - 1,即比结果中的 类 少一个因子水平。我也在 github 上相应地更新了我的 post。