2017-08-04 5 views
0

Im MWE unten habe ich einen Datensatz mit 70 möglichen Prädiktoren, um meine Variable price1 zu erklären. Ich möchte univariate Analyse mit allen Variablen tun, aber das Paket glmulti sagt, dass ich too many predictors habe. Wie kann eine univariate Analyse zu viele Prädiktoren haben?Automatische Variablenauswahl - lineares Regressionsmodell

* Ich könnte es mit Hilfe eines loop/apply tun, aber ich bin auf der Suche nach etwas mehr ausgearbeitet. Diese ähnliche Frage here löst die Frage auch nicht.

test <- read.csv(url("https://raw.githubusercontent.com/vincentarelbundock/Rdatasets/master/csv/Ecdat/Car.csv")) 
library(glmulti) 
glmulti.lm.out <- glmulti(data = test, price1 ~ ., 
          level = 1, 
          method = "h", 
          maxK = 1, 
          confsetsize = 10, 
          fitfunction = "lm") 

Error 
Warning message: 
In glmulti(y = "price1", data = test, level = 1, maxK = 1, method = "h", : 
    !Too many predictors. 

Antwort

1

Diese Frage ist mehr für CrossValidated ausgerichtet, aber hier ist meine zwei Cent. Eine erschöpfende Suche nach den besten Variablen für ein Modell ist sehr rechenintensiv und gerät schnell außer Kontrolle. Überlegen Sie, was Sie vom Computer erwarten:

Wenn Sie eine gründliche Suche durchführen, erstellt der Computer ein Modell für jede mögliche Kombination von Variablen. Für ein Modell der Größe eins ist das nicht schlecht, denn das sind nur 70 Modelle. Aber selbst für ein Modell mit zwei Variablen muss der Computer n!/(R! (N-r)!) = 70!/(2! (68)!) = 2415 verschiedene Modelle ausführen. Von dort aus geraten die Dinge außer Kontrolle.

Als Work-Around, werde ich Sie auf das leaps-Paket verweisen, das die regsubsets-Funktion hat. Dann können Sie entweder ein Forward- oder ein Rückwärts-Subset-Auswahlmodell ausführen und die wichtigsten Variablen schrittweise finden. Nachdem Sie alle ausgeführt haben, können Sie möglicherweise die Variablen auslassen, die jeweils weggelassen wurden, und Ihr Modell mit weniger Prädiktoren unter Verwendung von glmulti ausführen, aber keine Versprechungen.

test.data <- 
read.csv(url("https://raw.githubusercontent.com/vincentarelbundock/Rdatasets/ma 
ster/csv/Ecdat/Car.csv"))[,2:71] 
library(leaps) 

big_subset_model <- regsubsets(x = price1 ~ ., data = test.data, nbest = 1, 
method = "forward", really.big = TRUE, nvmax = 70) 
sum.model <- summary(big_subset_model) 
0

Eine einfache Lösung für univariate Analyse lapply verwenden.

Verwandte Themen