结合Amelia估算数据的多个随机森林模型

时间:2015-05-03 22:13:41

标签: r random-forest r-zelig

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

然后我使用lapply函数在数据集上创建randomforest模型:

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]也不是。{1}}。

我还尝试使用zelig自动组合多个模型:

rf.z.out = zelig(y~x1+x2, data = a.out, model = "rf")

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

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

1 个答案:

答案 0 :(得分:2)

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

  1. 更改combine功能,然后使用修改后的版本:

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

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

  2. 或使用:

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

  3. 我认为第一种方式更容易(而且手动更少)。