Il tuo modello presume che il successo di un nido possa essere visto come una scommessa: Dio lancia una moneta carica con i lati etichettati "successo" e "fallimento". Il risultato del Flip per un nido è indipendente dal risultato del Flip per ogni altro nido.
Gli uccelli hanno qualcosa in serbo per loro, però: la moneta potrebbe favorire fortemente il successo ad alcune temperature rispetto ad altre. Pertanto, quando hai la possibilità di osservare nidi a una data temperatura, il numero di successi è uguale al numero di lanci riusciti della stessa medaglia - quello per quella temperatura. La corrispondente distribuzione binomiale descrive le possibilità di successo. Cioè, stabilisce la probabilità di zero successi, di uno, di due, ... e così via attraverso il numero di nidi.
Una stima ragionevole della relazione tra la temperatura e il modo in cui Dio carica le monete è data dalla percentuale di successi osservati a quella temperatura. Questa è la stima della massima verosimiglianza (MLE).
71033 / 7.3 / 73
5 , 10 , 15 , 200 , 3 , 2 , 32 , 7 , 5 , 3
La riga superiore della figura mostra gli MLE a ciascuna delle quattro temperature osservate. La curva rossa nel pannello "Adatta" traccia come viene caricata la moneta, a seconda della temperatura. Per costruzione, questa traccia passa attraverso ciascuno dei punti dati. (Quello che fa a temperature intermedie è sconosciuto; ho grossolanamente collegato i valori per enfatizzare questo punto.)
Questo modello "saturo" non è molto utile, proprio perché non ci fornisce alcuna base per stimare come Dio caricherà le monete a temperature intermedie. Per fare ciò, dobbiamo supporre che ci sia una sorta di curva "tendenza" che mette in relazione i carichi di monete con la temperatura.

La riga inferiore della figura si adatta a tale tendenza. La tendenza è limitata in ciò che può fare: se tracciata in coordinate appropriate ("probabilità di log"), come mostrato nei pannelli "Logit Response" a sinistra, può solo seguire una linea retta. Qualsiasi linea retta di questo tipo determina il caricamento della moneta a tutte le temperature, come mostrato dalla corrispondente linea curva nei pannelli "Adatta". Tale caricamento, a sua volta, determina le distribuzioni binomiali a tutte le temperature. La riga inferiore traccia le distribuzioni per le temperature in cui sono stati osservati i nidi. (Le linee nere tratteggiate segnano i valori previsti delle distribuzioni, contribuendo a identificarle in modo abbastanza preciso. Non vedi quelle linee nella riga superiore della figura perché coincidono con i segmenti rossi.)
Ora è necessario un compromesso: la linea potrebbe passare da vicino ad alcuni punti dati, solo per spostarsi lontano dagli altri. Questo fa sì che la corrispondente distribuzione binomiale assegni probabilità più basse alla maggior parte dei valori osservati rispetto a prima. Puoi vederlo chiaramente a 10 e 15 gradi: la probabilità dei valori osservati non è la probabilità più alta possibile, né è vicina ai valori assegnati nella riga superiore.
La regressione logistica fa scivolare e muovere le possibili linee intorno (nel sistema di coordinate utilizzato dai pannelli "Logit Response"), converte le loro altezze in probabilità binomiali (i pannelli "Fit"), valuta le possibilità assegnate alle osservazioni (i quattro pannelli giusti ) e sceglie la linea che offre la migliore combinazione di tali possibilità.
Che cos'è il "migliore"? Semplicemente che la probabilità combinata di tutti i dati sia la più ampia possibile. In questo modo nessuna singola probabilità (i segmenti rossi) può essere veramente minuscola, ma di solito la maggior parte delle probabilità non sarà così elevata come nel modello saturo.
Ecco un'iterazione della ricerca della regressione logistica in cui la linea è stata ruotata verso il basso:

1015gradi ma un lavoro terribile di adattamento degli altri dati. (A 5 e 20 gradi le probabilità binomiali assegnate ai dati sono così minuscole che non si possono nemmeno vedere i segmenti rossi.) Complessivamente, si tratta di un adattamento molto peggiore di quelli mostrati nella prima figura.
Spero che questa discussione ti abbia aiutato a sviluppare un'immagine mentale delle probabilità binomiali che cambiano quando la linea viene variata, mantenendo allo stesso tempo i dati uguali. La linea adattata dalla regressione logistica tenta di rendere le barre rosse complessivamente più alte possibile. Pertanto, la relazione tra la regressione logistica e la famiglia delle distribuzioni binomiali è profonda e intima.
Appendice: Rcodice per produrre le figure
#
# 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)