In che modo la regressione logistica utilizza la distribuzione binomiale?


19

Sto cercando di capire come la regressione logistica utilizza la distribuzione binomiale.

Diciamo che sto studiando il successo del nido negli uccelli. La probabilità che un nido abbia successo è 0,6. Usando la distribuzione binomiale, posso calcolare la probabilità di r successi dati n prove (numero di nidi studiati).

Ma come viene utilizzata la distribuzione binomiale in un contesto di modellazione? Diciamo che voglio sapere come la temperatura giornaliera media influisce sul successo del nido e utilizzo la regressione logistica per esplorare questa domanda.

Nel contesto che ho descritto, in che modo la regressione logistica utilizza la distribuzione binomiale?

Sto cercando una risposta intuitiva, quindi una risposta senza equazioni! Penso che le equazioni siano utili solo dopo che la comprensione è stata raggiunta a livello intuitivo.



2
Questo è un buon thread di riferimento, @ user777, ma penso che potrebbe non funzionare come duplicato se l'OP richiede specificamente una spiegazione senza equazioni. Una buona domanda, tuttavia, è se il ruolo della distribuzione binomiale possa essere ben spiegato senza equazioni. Certamente a LR può essere data una spiegazione intuitiva, ma il ruolo del binomio con LR è intrinsecamente matematico.
gung - Ripristina Monica

@gung Scuse a luciano. Vedere "distribuzione binomiale" sovrascriveva "nessuna equazione" quando consideravo le possibili risposte. Chiaramente ciò non era coerente con la richiesta del PO.
Sycorax dice di reintegrare Monica il

Sento di aver afferrato l'idea di utilizzare la scala delle probabilità del registro per la regressione e di convertirla dalla scala del logit alla scala 0-1. Ma continuo a leggere le cose sulla falsariga di "gli errori sono distribuiti binomialmente". Come si possono distribuire binomialmente gli errori?
luciano,

5
Qualunque libro tu abbia letto, buttalo via.
Scortchi - Ripristina Monica

Risposte:


7

Supponiamo di osservare diversi nidi a diverse temperature medie giornaliere . In che modo la probabilità π ( t ) del successo del nido dipende dalla temperatura t ? (Se i nidi sono indipendenti, il numero di nidi con successo alla temperatura t viene quindi distribuito binomialmente con n uguale al numero di nidi osservati e probabilità di successo π ( t ) .)tπ(t)ttnπ(t)

La regressione logistica è un approccio (che utilizza la funzione logistica) per specificare la probabilità di successo in funzione della temperatura mediante lo stretching e lo spostamento della curva logistica, con la quantità di stretching e spostamento richiesta da stimare dai dati.


15

Senza equazioni? Yikes. Vediamo:

Il modello di regressione logistica è letteralmente un modello per il parametro p di una distribuzione binomiale; con un predittore continuo, ogni punto può avere una propria distribuzione. (Nei casi in cui le osservazioni sono 0-1, trattiamo il caso speciale di Bernoulli; questa è una situazione comune.)

Il n è dato, non è modellato. Il risultato è quindi, con un modello in relazione il pi 's ed una nota ni , possiamo modellare dati binomiali in termini di un predittore che descrive la media (e varianza) attraverso il suo modello per p . Il modello può essere adattato attraverso la stima della massima verosimiglianza, ma a causa della sua forma speciale (famiglia esponenziale), ML è relativamente "carino".

Poiché il collegamento logistico è canonico per la famiglia binomiale, è ancora più bello, poiché le statistiche sufficienti sono di forma molto semplice: questo lo rende conveniente per gestire campioni di grandi dimensioni o persino per sviluppare algoritmi "online".

p

Con la regressione logistica, quella curva (la funzione di collegamento) è una funzione logistica. Altre funzioni sono possibili e molti pacchetti ne implementano diversi (R ne ha tre adatti nella sua glmfunzionalità se ricordo bene).


Nessun simbolo di uguaglianza è stato danneggiato nella realizzazione di questo post.


2

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.

figura

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:

figura 2

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)

ci sarebbe il codice r divulgato? grazie molto.
Massimiliano

1
@Maximilian Ho aggiunto il codice.
whuber
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.