Wie verwendet die logistische Regression die Binomialverteilung?


19

Ich versuche zu verstehen, wie die logistische Regression die Binomialverteilung verwendet.

Angenommen, ich untersuche den Erfolg von Nestern bei Vögeln. Die Wahrscheinlichkeit, dass ein Nest erfolgreich ist, beträgt 0,6. Mit der Binomialverteilung kann ich die Wahrscheinlichkeit für r Erfolge bei n Versuchen berechnen (Anzahl der untersuchten Nester).

Aber wie wird die Binomialverteilung in einem Modellierungskontext verwendet? Angenommen, ich möchte wissen, wie sich die mittlere Tagestemperatur auf den Nesterfolg auswirkt, und ich nutze die logistische Regression, um diese Frage zu untersuchen.

Wie verwendet die logistische Regression im beschriebenen Kontext die Binomialverteilung?

Ich suche eine intuitive Antwort, also eine Antwort ohne Gleichungen! Ich denke, Gleichungen sind erst dann nützlich, wenn das Verständnis auf einer intuitiven Ebene erreicht wurde.



2
Das ist ein guter Thread zum Nachschlagen, @ user777, aber ich denke, dass es möglicherweise nicht als Duplikat funktioniert, wenn das OP speziell eine Erklärung ohne Gleichungen anfordert . Eine gute Frage ist jedoch, ob die Rolle der Binomialverteilung ohne Gleichungen gut erklärt werden kann. Natürlich kann LR intuitiv erklärt werden, aber die Rolle des Binomials w / i LR ist von Natur aus etwas mathematisch.
gung - Wiedereinsetzung von Monica

@gung Entschuldigung an Luciano. Wenn ich "Binomialverteilung" sehe, überschreibe ich "keine Gleichungen", wenn ich mögliche Antworten in Betracht ziehe. Dies widersprach eindeutig der Aufforderung von OP.
Sycorax sagt Reinstate Monica

Ich glaube, ich habe die Idee begriffen, die Log-Odds-Skala für die Regression zu verwenden und dann von der Logit-Skala auf die 0-1-Skala umzustellen. Aber ich lese immer wieder Dinge nach dem Motto "Die Fehler sind binomial verteilt". Wie können Fehler binomial verteilt werden?
Luciano

5
Welches Buch Sie auch lesen, werfen Sie es weg.
Scortchi

Antworten:


7

Angenommen, Sie beobachten mehrere Nester bei unterschiedlichen mittleren Tagestemperaturen . Wie hängt die Wahrscheinlichkeit π ( t ) des Nesterfolgs von der Temperatur t ab ? (Wenn die Nester unabhängig sind, wird die Anzahl der Nester mit Erfolg bei der Temperatur t binomial verteilt, wobei n der Anzahl der beobachteten Nester und der Erfolgswahrscheinlichkeit π ( t ) entspricht .)tπ(t)ttnπ(t)

Die logistische Regression ist ein Ansatz (unter Verwendung der logistischen Funktion), bei dem die Erfolgswahrscheinlichkeit als Funktion der Temperatur durch Strecken und Verschieben der logistischen Kurve angegeben wird, wobei das Ausmaß des Streckens und Verschiebens anhand der Daten geschätzt werden muss.


15

Ohne Gleichungen? Huch. Mal sehen:

Das logistische Regressionsmodell ist buchstäblich ein Modell für den p Parameter einer Binomialverteilung. Mit einem kontinuierlichen Prädiktor kann jeder Punkt seine eigene Verteilung haben. (In den Fällen, in denen die Beobachtungen 0-1 sind, haben wir es mit dem Bernoulli-Sonderfall zu tun; dies ist eine häufige Situation.)

Das n ist gegeben, nicht modelliert. Das Ergebnis ist also, dass wir mit einem Modell, das die pich und ein bekanntes nich in Beziehung setzt, Binomialdaten in Form eines Prädiktors modellieren können, der den Mittelwert (und die Varianz) über sein Modell für p . Das Modell kann über die Maximum-Likelihood-Schätzung angepasst werden, aber aufgrund seiner speziellen Form (Exponentialfamilie) ist ML relativ "nett".

Da die logistische Verknüpfung für die Binomialfamilie kanonisch ist, ist sie umso schöner, als die ausreichende Statistik sehr einfach ist - dies macht es bequem, große Stichproben zu bearbeiten oder sogar "Online" -Algorithmen zu entwickeln.

Natürlich liegt p als Wahrscheinlichkeit zwischen 0 und 1. Dies bedeutet natürlich, dass, wenn wir ein Modell für eine andere Variable schreiben, dieses Modell diese Grenzen nicht überschreiten sollte, so wie es für die unabhängige Variable gilt ausreichend groß oder klein, muss sich die Beziehung biegen, um innerhalb der Grenzen zu bleiben.

Bei der logistischen Regression ist diese Kurve (die Verknüpfungsfunktion) eine logistische Funktion. Andere Funktionen sind möglich, und viele Pakete implementieren mehrere (R hat drei geeignete in seine glmFunktionalität eingebaut, wenn ich mich recht entsinne).


Bei der Erstellung dieses Beitrags wurden keine Gleichstellungssymbole verletzt.


2

Ihr Modell geht davon aus, dass der Erfolg eines Nestes als Glücksspiel angesehen werden kann: Gott wirft eine geladene Münze mit den Seiten "Erfolg" und "Misserfolg" um. Das Ergebnis des Kippens für ein Nest ist unabhängig vom Ergebnis des Kippens für ein anderes Nest.

Die Vögel haben jedoch einiges zu bieten: Die Münze könnte den Erfolg bei bestimmten Temperaturen im Vergleich zu anderen stark fördern. Wenn Sie also die Möglichkeit haben, Nester bei einer bestimmten Temperatur zu beobachten, entspricht die Anzahl der Erfolge der Anzahl der erfolgreichen Münzwürfe derselben Münze - der für diese Temperatur. Die entsprechende Binomialverteilung beschreibt die Erfolgschancen. Das heißt, es bestimmt die Wahrscheinlichkeit von null Erfolgen, von einem, von zwei usw. durch die Anzahl der Nester.

Eine vernünftige Schätzung der Beziehung zwischen der Temperatur und der Art und Weise, wie Gott die Münzen lädt, ergibt sich aus dem Anteil der bei dieser Temperatur beobachteten Erfolge. Dies ist die Maximum-Likelihood-Schätzung (MLE).

71033/7.3/73

5,10,15,200,3,2,32,7,5,3

Die obere Reihe der Figur zeigt die MLEs bei jeder der vier beobachteten Temperaturen. Die rote Kurve im "Fit" -Panel zeigt, wie die Münze abhängig von der Temperatur geladen wird. Diese Ablaufverfolgung durchläuft konstruktionsbedingt jeden der Datenpunkte. (Was es bei Zwischentemperaturen tut, ist unbekannt. Ich habe die Werte grob verknüpft, um diesen Punkt hervorzuheben.)

Dieses "gesättigte" Modell ist nicht sehr nützlich, gerade weil es uns keine Grundlage gibt zu schätzen, wie Gott die Münzen bei Zwischentemperaturen laden wird. Dazu müssen wir annehmen, dass es eine Art "Trend" -Kurve gibt, die das Laden von Münzen mit der Temperatur in Beziehung setzt.

Zahl

Die untere Reihe der Abbildung entspricht einem solchen Trend. Der Trend ist in seinen Möglichkeiten begrenzt: Wenn er in geeigneten Koordinaten ("Log Odds") dargestellt wird, wie in den Feldern "Logit Response" links gezeigt, kann er nur einer geraden Linie folgen. Jede solche gerade Linie bestimmt die Belastung der Münze bei allen Temperaturen, wie durch die entsprechende gekrümmte Linie in den "Fit" -Paneelen gezeigt. Diese Belastung bestimmt wiederum die Binomialverteilungen bei allen Temperaturen. In der unteren Reihe sind die Verteilungen für die Temperaturen angegeben, bei denen Nester beobachtet wurden. (Die gestrichelten schwarzen Linien markieren die erwarteten Werte der Verteilungen und helfen, diese ziemlich genau zu identifizieren. Sie sehen diese Linien nicht in der oberen Reihe der Abbildung, da sie mit den roten Segmenten übereinstimmen.)

Nun muss ein Kompromiss geschlossen werden: Die Linie kann eng an einigen Datenpunkten verlaufen, nur um von anderen weit abzuweichen. Dies führt dazu, dass die entsprechende Binomialverteilung den meisten beobachteten Werten niedrigere Wahrscheinlichkeiten als zuvor zuweist. Sie können dies deutlich bei 10 und 15 Grad erkennen: Die Wahrscheinlichkeit der beobachteten Werte ist weder die höchstmögliche Wahrscheinlichkeit noch liegt sie in der Nähe der in der oberen Reihe zugewiesenen Werte.

Die logistische Regression gleitet und bewegt die möglichen Linien (in dem von den "Logit Response" -Tafeln verwendeten Koordinatensystem), wandelt ihre Höhen in Binomialwahrscheinlichkeiten um (die "Fit" -Tafeln) und bewertet die den Beobachtungen zugewiesenen Chancen (die vier rechten Tafeln) ) und wählt die Linie aus, die die beste Kombination dieser Chancen ergibt.

Was ist das beste"? Einfach, dass die kombinierte Wahrscheinlichkeit aller Daten so groß wie möglich ist. Auf diese Weise darf keine einzelne Wahrscheinlichkeit (die roten Segmente) wirklich klein sein, aber normalerweise sind die meisten Wahrscheinlichkeiten nicht so hoch wie im gesättigten Modell.

Hier ist eine Iteration der logistischen Regressionssuche, bei der die Linie nach unten gedreht wurde:

Figur 2

Beachten Sie zunächst, was gleich geblieben ist: Die grauen Punkte im Streudiagramm "Anpassen" sind fest, da sie die Daten darstellen. Ebenso sind die Wertebereiche und die horizontalen Positionen der roten Segmente in den vier Binomialplots festgelegt, da sie auch die Daten darstellen. Diese neue Linie lädt die Münzen jedoch auf radikal andere Weise. Dabei werden die vier Binomialverteilungen (die grauen Segmente) geändert . Beispielsweise ergibt sich für die Münze eine Erfolgsquote von 70% bei einer Temperatur von10Grad, entsprechend einer Verteilung, deren Wahrscheinlichkeiten für 4 bis 6 Erfolge am höchsten sind. Diese Zeile eignet sich hervorragend zum Anpassen der Daten15Grad, aber eine schreckliche Aufgabe, die anderen Daten anzupassen. (Bei 5 und 20 Grad sind die den Daten zugewiesenen Binomialwahrscheinlichkeiten so klein, dass Sie nicht einmal die roten Segmente sehen können.) Insgesamt ist dies eine viel schlechtere Übereinstimmung als die in der ersten Abbildung gezeigten.


Ich hoffe, diese Diskussion hat Ihnen geholfen, ein Bild der Binomialwahrscheinlichkeiten zu entwickeln, die sich ändern, wenn sich die Linie ändert, während die Daten gleich bleiben. Die Linienanpassung durch logistische Regression versucht, diese roten Balken insgesamt so hoch wie möglich zu halten. Daher ist die Beziehung zwischen logistischer Regression und der Familie der Binomialverteilungen tief und eng.


Anhang: RCode zur Erstellung der Abbildungen

#
# Create example data.
#
X <- data.frame(temperature=c(5,10,15,20),
                nests=c(2,7,5,3),
                successes=c(0,3,2,3))
#
# A function to plot a Binomial(n,p) distribution and highlight the value `k0`.
#
plot.binom <- function(n, p, k0, highlight="#f02020", ...) {
  plot(0:n, dbinom(0:n, n, p), type="h", yaxt="n",
       xlab="Trials", ylab="Probability", ...)
  abline(v = p*n, lty=3, lwd=2)
  if(!missing(k0)) lines(rep(k0,2), c(0, dbinom(k0,n,p)), lwd=2, col=highlight)
}
#
# A function to convert from probability to log odds.
#
logit <- function(p) log(p) - log(1-p)
#
# Fit a saturated model, then the intended model.
#
# Ordinarily the formula for the saturated model would be in the form
# `... ~ factor(temperature)`, but the following method makes it possible to  
# plot the predicted values in a visually effective way.
#
fit.0 <- glm(cbind(successes, nests-successes) ~ factor(round(temperature/5)), 
             data=X, family=binomial)
summary(fit.0)

fit <- glm(cbind(successes, nests-successes) ~ temperature, 
           data=X, family=binomial)
summary(fit)
#
# Plot both fits, one per row.
#
lfits <- list(fit.0, fit)
par.old <- par(mfrow=c(length(lfits), nrow(X)+2))
for (fit in lfits) {
  #
  # Construct arrays of plotting points.
  #
  X$p.hat <- predict(fit, type="response")
  Y <- data.frame(temperature = seq(min(X$temperature), max(X$temperature), 
                                    length.out=101))
  Y$p.hat <- predict(fit, type="response", newdata=Y)  # Probability
  Y$lambda.hat <- predict(fit, type="link", newdata=Y) # Log odds
  #
  # Plot the fit in terms of log odds.
  #
  with(Y, plot(temperature, lambda.hat, type="n", 
               yaxt="n", bty="n", main="Logit Response",
               ylab=expression(hat(lambda))))
  if (isTRUE(diff(range(Y$lambda.hat)) < 6)) {
    # Draw gridlines and y-axis labels
    p <- c( .10, .25, .5, .75, .9)
    q <- logit(p)
    suppressWarnings(rug(q, side=2))
    abline(h=q, col="#d0d0d0")
    mtext(signif(p, 2), at=q, side=2, cex=0.6)
  }
  with(Y, lines(temperature, lambda.hat, lwd=2, col="#f02020"))
  #
  # Plot the data and the fit in terms of probability.
  #
  with(X, plot(temperature, successes/nests, ylim=0:1,
               cex=sqrt(nests), pch=21, bg="Gray",
               main="Fit"))
  with(Y, lines(temperature, p.hat, col="#f02020", lwd=2))
  #
  # Plot the Binomial distributions associated with each row of the data.
  #
  apply(X, 1, function(x) plot.binom(x[2], x[4], x[3], bty="n", lwd=2, col="Gray",
                                     main=paste(x[1], "Degrees")))
}
par(mfrow=par.old)

Wäre da der r Code verraten? Danke vielmals.
Maximilian

1
@Maximilian Ich habe den Code hinzugefügt.
whuber
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.