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 估算数据测试数据的列表。

我不知道如何组合这些随机森林模型。我已经尝试过 randomforest combine 功能,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 支持随机森林模型。

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

4

1 回答 1

2

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

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

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

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

  2. 或使用:

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

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

于 2015-05-03T22:17:38.900 回答