2016-08-29 38 views
1

我想對一組變量運行最佳子集迴歸,然後使用R獲得最佳3個變量。我在獲取最佳2個變量時遇到了問題。我已經在下面包含了我的代碼。從最佳子集中獲取最佳變量回歸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) 

您的幫助將不勝感激!

最佳, 達納

+1

我對你們的例子有點困惑,因爲所有的變量都完全相同。 –

+0

您可能想要提供真實的數據。根據您當前的數據,由於所有數據都是相同的,如果所有潛在模型包含相同數量的變量,它們將具有相同的擬合優度。這可能是你的問題。 –

回答

1

考慮用一個例子內置mtcars數據集:

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

這是從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..> 

係數組由獨立變量的數量,在4的子集(我們用表示論證);因此,coef(test, 1:4)將返回來自具有一個自變量的模型的係數,coef(test, 5:8)將是具有兩個自變量的那些,依此類推。在每個子集中,「最佳」模型首先出現。因此,具有兩個自變量的「最佳」模型將成爲模型5:

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

謝謝威煌,這正是我想弄明白的!我想我只是不太明白如何使用coef()與最好的參數,但感謝您的幫助,現在我做! – Dana

+0

樂於幫忙,歡迎來到Stack Overflow。如果此答案解決了您的問題,請將其標記爲已接受。 –