2015-05-03 11 views
5

Ho appena creato 40 set di dati imputati utilizzando il pacchetto Amelia e sono memorizzati in a.out.Combinazione di più modelli di foresta casuale da Amelia Dati Imputati

Ho quindi utilizzato la funzione lapply per creare modelli foresta casuale sui set di dati:

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

Ora vorrei combinare questi modelli per fare una previsione su un a.test.out gruppo, che è un elenco dei dati di test dei dati imputati di amelia.

Non riesco a capire come combinare questi modelli di foresta casuali. Ho provato la funzione combinata randomforest come combine(rf.amelia.out) ma non ha funzionato. Il problema è che rf.amelia.out non è un oggetto modello, ma nemmeno rf.amelia.out[1].

Ho anche cercato di usare Zelig per combinare automaticamente più modelli:

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

Ma non credo zelig supporta modelli forestali casuali.

Come accedere e combinare più modelli di foresta casuali in modo che sia possibile effettuare una previsione?

+0

Sei riuscito a farlo funzionare? –

+0

Ciao Mike, grazie per la tua risposta qui sotto. Ha funzionato perfettamente. Scusa per la risposta tardiva - prima volta su Stackoverflow. – user1888582

+0

@ user1888582 Quando una risposta funziona, dovresti "accettarla" facendo clic sul segno di spunta accanto ad essa. – Gregor

risposta

2

Poiché rf.amelia.out è già un elenco, la funzione combine in randomForest perde i suoi metodi quando tenta di convertirla nuovamente in un elenco. Vi consiglio una delle due correzioni:

  1. cambiare la funzione combine e quindi utilizzare la versione modificata:

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

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

  2. o usare:

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

Penso che la prima via sia più semplice (e molto meno manuale).

Problemi correlati