我刚刚使用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支持随机森林模型。
如何访问和组合多个随机森林模型,以便我可以进行一次预测?
答案 0 :(得分:2)
由于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]],...)
我认为第一种方式更容易(而且手动更少)。