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 / . 73 / 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.
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:
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: R
Code 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)