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

use*_*582 5 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) )
Run Code Online (Sandbox Code Playgroud)

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

我无法弄清楚如何组合这些随机森林模型.我已经尝试过randomforest合并功能,combine(rf.amelia.out)但是没有用.问题是它rf.amelia.out不是模型对象,但也不是rf.amelia.out[1].

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

rf.z.out = zelig(y~x1+x2, data = a.out, model = "rf")
Run Code Online (Sandbox Code Playgroud)

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

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

Mik*_*han 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]],...)

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