2


我正在尝试使用 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)

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

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

4

1 回答 1

3

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

Sarah Brockhaus在 github 上发布了一个解决方案buser,用bols. 为此,需要将数据集转换为列表并将新的添加dummy到此列表中。如果真的想用新数据进行预测,就需要保持dummy不变。另请参阅我在github上的帖子。

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

于 2015-07-23T13:20:30.883 回答