r - 结合来自 Amelia 插补数据的多个随机森林模型

标签 r random-forest r-zelig

我刚刚使用 Amelia 包创建了 40 个插补数据集,并将它们存储在 a.out 中。

然后我使用 lapply 函数在数据集上创建随机森林模型:

rf.amelia.out = lapply(a.out$imputations, function(i) randomForest(y + x1+x2, data = i) )

现在我想结合这些模型对一堆 a.test.out 进行预测,这是一个 amelia 估算数据测试数据的列表。

我不知道如何组合这些随机森林模型。我试过像 combine(rf.amelia.out) 这样的随机森林组合函数但这没有用。问题是rf.amelia.out不是模型对象,但也不是 rf.amelia.out[1] .

我也尝试使用 zelig 来自动组合多个模型:
rf.z.out = zelig(y~x1+x2, data = a.out, model = "rf")

但我不认为 zelig 支持随机森林模型。

如何访问和组合多个随机森林模型,以便我可以做出一个预测?

最佳答案

rf.amelia.out已经是一个列表,combine函数在 randomForest当它再次尝试将其转换为列表时会丢失其方法。我推荐以下两种修复方法之一:

  • 更改 combine函数,然后使用修改后的版本:
    body(combine)[[4]] <- substitute(rflist <- (...))rf.all <- combine(rf.amelia.out)
  • 或使用:
    combine(rf.amelia.out[[1]].rf.amelia.out[[2]],...)

  • 我认为第一种方法更容易(而且手动更少)。

    关于r - 结合来自 Amelia 插补数据的多个随机森林模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30020016/

    相关文章:

    r - 让 Zelig 处理列表

    r - 使用 ggplot 与使用基本 R 函数时的图形结果不同?

    在 R 中使用约束调整矩阵大小

    python - Jupyter Notebook 和 Colab 因运行随机森林模型而不断崩溃

    r - 为什么使用 glm 会收到 "algorithm did not converge"和 "fitted prob numerically 0 or 1"警告?

    R xts 将数字转换为字符串 - 为什么?

    r - 如何简化基础 R 中嵌套 ifelse() 结构的处理?

    随机森林变量长度不同

    r - 带 Zelig 回归输出的 stargazer()