2016-03-23 13 views
1

Tek bir sonuç değişkeni için 2 milyondan fazla regresyon modelinin kombinasyonlarını oluşturmak için 50 kestirici değişken kullandım. Bunların çoğu saçmadır - Tüm modellerin Ayarlanmış R-Kare (AR2) ile 0.7'den düşük olmasını ve üyelerin vif> 4 (araba paketinden) almasını istiyorum. İlk olarak tüm modellerin (b) bir listesini oluşturdum ve ikinci adımda ikinci bir nesne (bb) oluşturarak bir for/if loop kullanarak kriterlerimi karşılayan tüm modelleri elimden çıkardım. Bu ikinci adımdır: Bu çalışır, ancak çok çirkin ve verimsiz görünüyor. Uygula komutlarından birini kullanmanın zarif bir yolu olmalı gibi görünüyor (gecikmeli, özlü), ancak sorun iki yönlüdür. Birincisi, AR2'nin aslında normal lm sonuçlarının bir parçası olmaması - AR2'yi almak için "özet" kullanmam gerekiyor. İkincisi, bu bir liste listesi olduğu için altlık problemi var. Ben sadece özetleri ayıklamak ve bb < kullanarak la2 olsun - lapply (b, özet) - Ben bir şey kullanmak zorunda olurdu bb < - lapply (b, özeti [[]] ama tabi ki R böyle bir şey değil.Ayıkla R R lm lm sonuçları listesinden sonuçlar

cevap

2

bazı

bb <- Filter(function(x) { 
    summary(x)$adj.r.squared > .7 & all(vif(x) <4) 
}, b) 

burada kullanışlı sadece saklamak ve liste filtrelemek istediğiniz öğelerin eğer istediğiniz hangi nesnelerin bunu söylemek it a işlevi geçebileceği Filter() benziyor.

+0

AMAZING !! Teşekkürler!/Çılgınlığım için kesinlikle benim çılgınlığımdan çok daha iyi –

İlgili konular