2016-06-19 11 views
2

Ich habe ein logistisches Regressionsmodell, das ich mit dem glmnet Paket gemacht habe. Meine Antwortvariable wurde als ein Faktor kodiert, dessen Ebenen ich als "a" und "b" bezeichnen werde.glmnet: Woher weiß ich, welche Faktorstufe meiner Antwort in der logistischen Regression als 1 kodiert ist?

Die Mathematik der logistischen Regression bezeichnet eine der beiden Klassen als "0" und die andere als "1". Die Merkmalskoeffizienten eines logistischen Regressionsmodells sind entweder positiv, negativ oder null. Wenn ein Koeffizient des Merkmals "f" positiv ist, dann erhöht das Erhöhen des Wertes von "f" für eine Testbeobachtung x die Wahrscheinlichkeit, dass das Modell x als von der Klasse "1" klassifiziert klassifiziert.

Meine Frage ist: Bei einem glmnet Modell, wie Sie wissen, wie glmnet Ihrer Daten Faktor Etiketten abgebildet { „a“, „b“}, um den Faktor Etiketten zugrundeliegenden Mathematik { ‚0‘, ‚1‘}? Weil Sie das wissen müssen, um die Koeffizienten des Modells richtig zu interpretieren.

Sie können dies manuell herausfinden, indem Sie mit der Ausgabe der Funktion predict experimentieren, wenn diese auf Spielzeugbeobachtungen angewendet wird. Aber es wäre schön, wie glmnet implizit dieses Mapping behandelt, um den Interpretationsprozess zu beschleunigen.

Vielen Dank!

Antwort

3

Werfen Sie einen Blick auf ?glmnet (Seite 9 von https://cran.r-project.org/web/packages/glmnet/glmnet.pdf):

y 

response variable. ... For family="binomial" should be either a factor 
with two levels, or a two-column matrix of counts or proportions (the 
second column is treated as the target class; for a factor, the last 
level in alphabetical order is the target class) ... 

Ist es jetzt nicht klar? Wenn Sie "a" und "b" als Faktorstufen haben, wird "a" als 0 codiert, während "b" codiert 1.

Eine solche Behandlung wirklich Standard ist. Es hängt damit zusammen, wie R-Codes automatisch einen Faktor bilden oder wie Sie diese Faktorstufen selbst codieren. Schauen Sie sich:

## automatic coding by R based on alphabetical order 
set.seed(0); y1 <- factor(sample(letters[1:2], 10, replace = TRUE)) 
## manual coding 
set.seed(0); y2 <- factor(sample(letters[1:2], 10, replace = TRUE), 
        levels = c("b", "a")) 

# > y1 
# [1] b a a b b a b b b b 
# Levels: a b 
# > y2 
# [1] b a a b b a b b b b 
# Levels: b a 

# > levels(y1) 
# [1] "a" "b" 
# > levels(y2) 
# [1] "b" "a" 

Ob Sie glmnet() oder einfach glm(), das gleiche passiert.

+0

Ich finde definitiv die Hilfe in glmnet nicht besonders klar. Danke für deine Antwort. – cmbarbu

Verwandte Themen