2015-05-03 28 views
5

Amelia paketini kullanarak 40 adet veri kümesini oluşturdum ve bunlar a.out'ta depolandı. Şimdi bir bir demet a.test.out üzerinde bir tahminde yapmak için bu modelleri birleştirmek istiyoruzBirden Fazla Rastgele Orman Modelini Amelia Imputed Data'dan Birleştiriyor

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

:

Sonra veri kümeleri üzerinde randomforest modelleri oluşturmak için lapply fonksiyonu kullanılır amelia listesi veri testi verisi empoze edildi.

Bu rasgele orman modellerini nasıl birleştireceğimi anlayamıyorum. combine(rf.amelia.out) gibi rastgele birleştirme işlevini denedim ama işe yaramadı. Sorun şu ki, rf.amelia.out model nesnesi değil, rf.amelia.out[1].

Ben de otomatik olarak birden modellerinin birleştirilmesi Zelig'i kullanmaya çalıştı:

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

Ama zelig rastgele orman modelleri destekler sanmıyorum.

Birden çok rastgele orman modeline nasıl erişebilir ve bunları bir araya getirebilirim?

+0

Bunu işe almak mümkün mü? –

+0

Merhaba Mike, Aşağıdaki cevabınız için teşekkür ederiz. Mükemmel çalıştı. Geç yanıt için özür dilerim - Stackoverflow'ta ilk kez. – user1888582

+0

@ user1888582 Bir cevap işe yandığında, yanındaki onay işaretini tıklatarak "kabul etmelisiniz". – Gregor

cevap

2

rf.amelia.out zaten bir listedir, randomForestcombine işlevi, bir listeye yeniden dönüştürmeyi denediğinde yöntemlerini kaybeder.

  1. Değişim combine fonksiyonu ve daha sonra değiştirilmiş sürümünü kullanmak:

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

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

  2. Veya kullanımını:

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

  3. İki düzeltmelerin bir tavsiye

Bence ilk yol daha kolay (ve daha az manuel).