Logistische Regression

Über das Buch

Das Buch ist bei Springer erschienen (Open Access): Download PDF

Von der Buchrückseite:

Dieses Open-Access-Buch gibt eine anwendungsorientierte Einführung in die logistische Regression. Ausgehend von Grundkenntnissen der linearen Regression wird diese zuerst als zweistufiges Modell interpretiert, was den Übergang zur logistischen Regression vereinfacht. Neben einer kompakten Einführung der entsprechenden Theorie liegt der Fokus auch auf der Umsetzung mit der Statistiksoftware R und der richtigen Formulierung der entsprechenden Ergebnisse. Alle Schritte werden anhand zahlreicher Beispiele illustriert. Hinzu kommt eine Einführung in die Klassifikation mit den entsprechenden Begriffen.

Errata

Hier verfügbar als PDF (Stand: 10. Januar 2022).

Feedback

Falls Sie Fehler gefunden haben, Fragen oder Feedback haben: Bitte per E-Mail melden. Besten Dank!

Datensätze

Hier verfügbar.

R-Skripts

Beispiel: Spende

Abbildung 4.1 kann mit folgendem R-Code erstellt werden.

book.url <- "https://stat.ethz.ch/~meier/teaching/book-logreg"
load(url(file.path(book.url, "data/spende.rda")))

library(ggplot2)
ggplot(spende, aes(x = alter)) + geom_histogram() + facet_wrap(~ antwort) + ylab("Anzahl")

Abbildung 4.2 kann mit folgendem R-Code erstellt werden.

fit.spende <- glm(antwort ~ alter, family = binomial(link = "logit"), data = spende)

par(mfrow = c(1, 3), tcl = -0.4, mar = c(3, 3, 1.3, 0.2), mgp = c(1.5, 0.4, 0),
    cex = 1, cex.axis = 1.1, cex.lab = 1.2)

alter.grid <- seq(20, 80)
pred.link <- predict(fit.spende, newdata = data.frame(alter = alter.grid),
                     type = "link", se.fit = TRUE)
quant <- 1.96
pred.upr <- pred.link$fit + quant * pred.link$se.fit
pred.lwr <- pred.link$fit - quant * pred.link$se.fit

plotCI <- function(x, y, lwr, upr, xlab, ylab, fn = function(x) x, 
                   col = "lightgrey"){
  plot(x, fn(y), type = "n", xlab = xlab, ylab = ylab)
  polygon(c(x, rev(x)), c(fn(lwr), rev(fn(upr))), col = col, border = NA)
  lines(x, fn(y))
}

## Skala log-odds
plotCI(alter.grid, pred.link$fit, pred.lwr, pred.upr, xlab = "Alter", ylab = "Log-Odds")

## Skala Odds
plotCI(alter.grid, pred.link$fit, pred.lwr, pred.upr, xlab = "Alter", ylab = "Odds", fn = exp)

## Skala log-odds
plotCI(alter.grid, pred.link$fit, pred.lwr, pred.upr, xlab = "Alter", 
       ylab = "P(spende = ja)", fn = fit.spende$family$linkinv)