2016-08-03 5 views
1

Ich versuche, die Variable (Spalte Name) von Bedeutung von Regsubsets zu bekommen. Ich möchte die wichtigen Variablen eins nach dem anderen bekommen, die ich analysieren kann. Hier ist das ProgrammSpalte Namen unterscheiden sich von den Fit Regsubsets zur Auswahl der besten Variablen

library(leaps) 
library(ISLR) 
data(Hitters) 
reg_fit=regsubsets(Salary~., data = Hitters, nvmax = 10, method = "forward") 

Das Problem die Spaltennamen in reg_fit ist nicht das gleiche wie die des Daten-Hitters.

Hier die Ausgabe von den Originaldatum:

names(Hitters) 
## [1] "AtBat"  "Hits"  "HmRun"  "Runs"  "RBI"  
## [6] "Walks"  "Years"  "CAtBat" "CHits"  "CHmRun" 
## [11] "CRuns"  "CRBI"  "CWalks" "League" "Division" 
## [16] "PutOuts" "Assists" "Errors" "Salary" "NewLeague" 

Hier ist die Ausgabe von reg_fit extrahiert:

colnames(summary(reg_fit)$which) 
## [1] "(Intercept)" "AtBat"  "Hits"  "HmRun"  "Runs"  
## [6] "RBI"   "Walks"  "Years"  "CAtBat"  "CHits"  
## [11] "CHmRun"  "CRuns"  "CRBI"  "CWalks"  "LeagueN"  
## [16] "DivisionW" "PutOuts"  "Assists"  "Errors"  "NewLeagueN" 

Hinweis Legaue zu LeagueN geändert wird, wird die Division zu DivisionW geändert. Irgendwelche Ideen, wenn das ein Bug ist oder gibt es einen einfachen Weg, um die Spaltennamen von reg_fit zu bekommen?

Antwort

1

Es ist kein Fehler. Es wird eine kategoriale Variable in Indikatorvariablen aufgeteilt, so dass sie in der Regression verwendet werden können und die Namensänderung gibt Ihnen Aufschluss darüber, welche Ebene der positiven Ebene des Indikators zugeordnet ist.

Wenn Sie dies vermeiden möchten, können Sie dies mit der Vorverarbeitung tun. Hier ist ein Beispiel für die Variable League:

League <- rep(0,322) 
League[Hitters$League == "N"] <- 1 

Hitters$League <- as.numeric(as.character(League)) 

reg_fit=regsubsets(Salary~., data = Hitters, nvmax = 10, method = "forward") 
colnames(summary(reg_fit)$which) 

In dem obigen Beispiel I eine numerische Variable erstellt, die gleich 1 ist, wenn League gleich N und verwenden, dass die factor variable Version von League zu ersetzen.

Im Falle von binären Faktorvariablen könnten Sie einfach die Bezeichnungen im Ergebnisobjekt ändern, nachdem Sie die Regression ausgeführt haben. Wenn Sie jedoch mehr als 2 Ebenen haben, funktioniert dies nicht. Für Variablenvariablen mit mehreren Klassen müssen Sie wie im obigen Beispiel mehrere Indikatorvariablen im ursprünglichen Dataset erstellen.

+1

Ich werde das als Antwort akzeptieren. Ihr Vorschlag, die kategorische Spalte so voranzustellen, dass sie denselben Spaltennamen erhält, ist gut. Allerdings würde ich es vorziehen, model.matrix zu verwenden, da es weniger Aufwand hat. Danke Bro für die Lösung. –

+0

@MaheshYadav Glücklich zu helfen. Ja 'model.matrix' funktioniert super. –

Verwandte Themen