Wie kann ich eine logistische Regression rechnen?

Beispielfragestellung

#Kontinuierliche Prädiktoren ggf. zentrieren
#hier sinnvoll (weil kaum jemand wird wohl nur 0 Punkte im AC erreichen)
df$PunkteAC <- scale(df$PunkteAC, center = T, scale = F)
#center = T sagt, dass zentriert werden soll und 
#scale = F sagt, dass aber nicht standardisiert werden soll 

#Logistische Regression aufstellen 
mod1 <- glm(Jobangebot ~ PunkteAC + Praktikum, family = binomial(link = logit), data = df)
#Die Formulierung funktioniert so wie auch bei der lm-Funktion 
#Kriterium ~ Prädiktoren + Prädiktoren 
#Bei einer Interaktion zwischen PunkteAC und Praktikum wäre die Formula 
#PunkteAC*Praktikum 
#family = binomial(link = logit) gibt an, dass es eine logistische Regression sein soll 

#Ergebnisse ausgeben lassen 
summary(mod1)
## 
## Call:
## glm(formula = Jobangebot ~ PunkteAC + Praktikum, family = binomial(link = logit), 
##     data = df)
## 
## Coefficients:
##             Estimate Std. Error z value Pr(>|z|)    
## (Intercept)  0.03921    0.10599   0.370    0.711    
## PunkteAC     1.56821    0.10746  14.593  < 2e-16 ***
## Praktikum    0.69153    0.15703   4.404 1.06e-05 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## (Dispersion parameter for binomial family taken to be 1)
## 
##     Null deviance: 1370.88  on 999  degrees of freedom
## Residual deviance:  995.55  on 997  degrees of freedom
## AIC: 1001.6
## 
## Number of Fisher Scoring iterations: 5

Welche Werte gibt R mir aus?

  • Wichtig: R gibt die Koeffizienten in der Logit-Formulierung aus

  • Ausgehend davon sind aber die Werte für die anderen Interpretationen leicht zu berechnen - Die Logit-Werte sind ja der natürliche Logarithmus der Odds Ratio

  • Um also an die Odds Ratios zu kommen muss die Umkehrfunktion gerechnet werden; d.h. die Exponentialfunktion → die Werte die dann raus kommen sind eure Odds Ratios

Wie komme ich auf OR?

#Odd Ratios 
#Koeffizienten Speichern 
coef <- coef(mod1)
#Exponentialfunktion rechnen, um auf OR zu kommen 
OR <- exp(coef)
OR
## (Intercept)    PunkteAC   Praktikum 
##    1.039990    4.798050    1.996769

Beispielinterpretation davon:

  • ORb0 = 1.04 → die vorh. Chance den Job zu erhalten ist größer als ihn nicht zu erhalten wenn man kein Praktikum in dem Unternehmen absolviert hat und einen mittleren Wert im AC erreicht hat (da OR > 1; wenn OR < 1 wäre, dann wäre die vorh. Chance den Job nicht zu erhalten größer als die vorh. Chance den Job zu erhalten unter den genannten Bedingungen, bei einem OR = 1 wären die Chancen gleich)

  • ORPunkte = 4.80 → die vorh. Chance den Job zu erhalten erhöht sich um den Faktor 1.57 bei Personen, die einen Punkt mehr im AC erreicht haben wenn man nicht verändert, ob die Personen ein Praktikum gemacht haben oder nicht

  • ORPraktikum = 2.00 → die Chance den Job zu erhalten erhöht sich um den Faktor 2.00 wenn Personen ein Praktikum in dem Unternehmen gemacht haben vs. nicht gemacht haben und die erreichte Punktzahl im Assessment-Center konstant gehalten wird

Wie komme ich auf bedingte Wahrscheinlichkeiten?

  • Um die bedingte Wahrscheinlichkeit in Kategorie 1 zu landen zu berechnen wenn die Ausprägung aller Prädiktoren 0 sind, müssen in die Formulierung der logistischen Regression als bedingte Wahrscheinlichkeit die Prädiktoren alle auf 0 gesetzt werden

    • das ergibt dann e^b0 /(1 + e^b0)
#Koeffizienten Speichern 
coef <- coef(mod1)
#coef[1] = die Konstante, erster Wert der Koeffizienten 
#Bedingte Wahrscheinlichkeit in Kat y = 1 zu landen wenn alle Prädiktoren = 0
exp(coef[1])/(1+exp(coef[1]))
## (Intercept) 
##   0.5098016
#Wenn ihr die OR bereits ausgerechnet habt, könnt ihr alternativ auch so vorgehen
OR[1]/(1+OR[1])
## (Intercept) 
##   0.5098016
  • in unserem Beispiel heißt das
    • die erwartete bedingte Wahrscheinlichkeit den Job zu erhalten wenn man kein Praktikum in dem Unternehmen gemacht und einen mittleren Wert im Assessment-Center erreicht hat (da wir ja zentriert haben) beträgt 52,89%