2016-08-29 3 views
1

Ich möchte die beste Teilmenge Regression auf eine Reihe von Variablen und dann die besten 3 Variablen mit R. Ich habe Probleme beim Erhalt der besten 2 Variablen. Ich habe meinen Code unten eingefügt.Die besten Variablen aus den besten Subsets Regression in R

set.seed(10) 

a <- 1:100 
b <- 1:100 
c <- 1:100 
d <- 1:100 
e <- 1:100 
f <- 1:100 
g <- 1:100 
h <- 1:100 

data <- data.frame(a, b, c, d, e, f, g, h) 

library(leaps) 

# best subsets regression 
test <- regsubsets(a ~ b + c + d + e + f + g + h, data=data, nbest=4) 
# nbest = 4, is the number of subsets of each size that is reported 

# plot a table of models showing variables in each model. 
summary(test) 

# models are ordered by the selection statistic. 
plot(test,scale="r2") 

#get the variables that are important to the model 
coef(test, 2) 

#NOTE: THIS DOESN'T GIVE ME THE 2 BEST VARIABLES. IT ONLY GIVES ME THE BEST VARIABLE AT THE 2ND ITERATION. LOOK AT: 
coef(test, 1:2) 

Ihre Hilfe würde sehr geschätzt werden!

Best, Dana

+1

Ich bin ein wenig verwirrt von Ihrem Beispiel hier, weil alle Ihre Variablen genau gleich sind. –

+0

Sie möchten möglicherweise echte Daten bereitstellen. Da bei Ihren aktuellen Daten alle Daten identisch sind, haben alle potenziellen Modelle die gleiche Anpassungsgüte, wenn sie die gleiche Anzahl an Variablen enthalten. Dies könnte dein Problem sein. –

Antwort

1

Betrachten wir ein Beispiel, mit dem eingebauten in mtcars-Datensatz:

test <- regsubsets(mpg ~ ., data = mtcars, nbest = 4) 

Dies ist die Ausgabe von summary(test):

summary(test) 
# Subset selection object 
# Call: regsubsets.formula(mpg ~ ., data = mtcars, nbest = 4) 
# 10 Variables (and intercept) 
# <..snip..> 
# 4 subsets of each size up to 8 
# Selection Algorithm: exhaustive 
#   cyl disp hp drat wt qsec vs am gear carb 
# 1 (1) " " " " " " " " "*" " " " " " " " " " " 
# 1 (2) "*" " " " " " " " " " " " " " " " " " " 
# 1 (3) " " "*" " " " " " " " " " " " " " " " " 
# 1 (4) " " " " "*" " " " " " " " " " " " " " " 
# 2 (1) "*" " " " " " " "*" " " " " " " " " " " 
# 2 (2) " " " " "*" " " "*" " " " " " " " " " " 
# 2 (3) " " " " " " " " "*" "*" " " " " " " " " 
# 2 (4) " " " " " " " " "*" " " "*" " " " " " " 
# 3 (1) " " " " " " " " "*" "*" " " "*" " " " " 
# <..snip..> 

Die Sätze von Koeffizienten angeordnet sind, durch die Anzahl der unabhängigen Variablen, in Teilmengen von 4 (was wir mit derangegeben habenArgument); daher gibt coef(test, 1:4) Koeffizienten von Modellen mit einer unabhängigen Variablen zurück, coef(test, 5:8) sind solche mit zwei unabhängigen Variablen und so weiter. Innerhalb jeder Teilmenge steht das "beste" Modell an erster Stelle. Das "beste" Modell mit zwei unabhängigen Variablen wird daher Modell 5 sein:

coef(test, 5) 
# (Intercept)   cyl   wt 
# 39.686261 -1.507795 -3.190972 
+0

Danke Weihuang, genau das habe ich versucht herauszufinden! Ich glaube, ich habe einfach nicht verstanden, wie man coef() mit dem nbest-Argument verwendet, aber dank deiner Hilfe tue ich es jetzt! – Dana

+0

Wir freuen uns, Ihnen zu helfen und begrüßen zu Stack Overflow. Wenn diese Antwort Ihr Problem gelöst hat, markieren Sie es als akzeptiert. –

Verwandte Themen