2015-05-03 2 views
5

Я только что создал 40 вмененных наборов данных, используя пакет Amelia, и они хранятся в a.out.Объединение нескольких случайных моделей леса из Amemia Imputed Data

Затем я использовал lapply функцию для создания RandomForest моделей на наборах данных:

rf.amelia.out = lapply(a.out$imputations, function(i) randomForest(y + x1+x2, data = i)) 

Теперь я хотел бы объединить эти модели, чтобы сделать прогноз на кучу a.test.out, которая является список данных тестирования данных amelia.

Я не могу понять, как объединить эти случайные модели леса. Я пробовал функцию randomforest комбинировать как combine(rf.amelia.out), но это не сработало. Проблема в том, что rf.amelia.out не является модельным объектом, но ни один из них не является rf.amelia.out[1].

Я также пытался использовать Зелигу для автоматического объединения нескольких моделей:

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

Но я не думаю, что Зелиги поддерживают случайные лесные модели.

Как получить доступ и объединить несколько случайных моделей леса, чтобы я мог сделать одно предсказание?

+0

Вы смогли заставить это работать? –

+0

Привет, Майк, Спасибо за ваш ответ ниже. Он отлично работал. Извините за поздний ответ - первый раз на Stackoverflow. – user1888582

+0

@ user1888582 Когда ответ будет выполнен, вы должны «принять» его, нажав галочку рядом с ним. – Gregor

ответ

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]],...)

Я думаю, что первый способ проще (и, тем более, ручной).

 Смежные вопросы

  • Нет связанных вопросов^_^