合并多个Amelia填充数据的随机森林模型

5
我刚刚使用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) 这样的 randomforest 组合函数,但没有效果。问题是 rf.amelia.out 不是一个模型对象,但rf.amelia.out[1] 也不是。
我还尝试使用 zelig 自动组合多个模型:
rf.z.out = zelig(y~x1+x2, data = a.out, model = "rf")

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

我该如何访问和组合多个随机森林模型,以便进行一个预测?


你能让它正常工作了吗? - Mike.Gahan
嗨,Mike,谢谢你下面的回答。它完美地解决了我的问题。抱歉回复晚了——我第一次使用Stackoverflow。 - user1888582
当一个答案有效时,您应该通过点击其旁边的复选标记来“接受”它。 - Gregor Thomas
1个回答

2

由于rf.amelia.out已经是一个列表,因此在尝试将其再次转换为列表时,randomForest中的combine函数会失去其方法。我建议采用以下两种修复方法之一:

  1. 更改combine函数,然后使用修改后的版本:

    body(combine)[[4]] <- substitute(rflist <- (...))

    rf.all <- combine(rf.amelia.out)

  2. 或者使用:

    combine(rf.amelia.out[[1]].rf.amelia.out[[2]],...)

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接