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

标签 r logistic-regression multinomial


我正在尝试使用 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) 发帖 solution在 github 上,将 buser 替换为 bols。为此,需要将数据集转换为列表并将新的虚拟添加到该列表。如果确实想用新数据进行预测,则需要保持此虚拟数据不变。另请参阅我在 github 上的帖子.

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

关于r - 在 R 中使用 mboost 多项式逻辑回归进行预测,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31580891/

相关文章:

引用一个数据帧对另一个数据帧执行分析

r - 如何在 R 中绘制 logistic glm 预测值和置信区间

r - 逻辑回归的解释和绘图

r - 如何获得 R 多项回归中预期结果百分比的置信区间?

apache-spark - Spark 多项式 Logistic 回归的意外系数

r - 如何使用 R 中的元包更改森林图中子组的顺序?

r - 从 R 中的 rpart 对象中提取拆分值

r - 找出函数是在哪个版本的 R 中引入的

apache-spark - 在spark mllib中,LogisticRegressionWithSGD可以做多个分类任务吗?

r - 提取多项式的系数 cv.glmnet