Comment la régression logistique utilise-t-elle la distribution binomiale?

19

J'essaie de comprendre comment la régression logistique utilise la distribution binomiale.

Disons que j'étudie le succès des nids chez les oiseaux. La probabilité de réussite d'un nid est de 0,6. En utilisant la distribution binomiale, je peux calculer la probabilité de r succès pour n essais (nombre de nids étudiés).

Mais comment la distribution binomiale est-elle utilisée dans un contexte de modélisation? Disons que je veux savoir comment la température quotidienne moyenne affecte le succès du nid et j'utilise la régression logistique pour explorer cette question.

Dans le contexte que j'ai décrit, comment la régression logistique utilise-t-elle la distribution binomiale?

Je cherche une réponse intuitive, donc une réponse sans équations! Je pense que les équations ne sont utiles qu'une fois la compréhension acquise à un niveau intuitif.

luciano
la source
copie possible de l' aide pour traduire la commande R GLM en notation mathématique
Sycorax dit de rétablir Monica
2
C'est un bon sujet de référence, @ user777, mais je pense que cela peut ne pas fonctionner en double si l'OP demande spécifiquement une explication sans équations. Une bonne question, cependant, est de savoir si le rôle de la distribution binomiale peut être bien expliqué sans équations. Certes, LR peut être donné une explication intuitive, mais le rôle du binôme w / i LR est intrinsèquement quelque peu mathématique.
gung - Rétablir Monica
@gung Excuses à luciano. Voir "distribution binomiale" a écrasé "aucune équation" quand j'ai considéré les réponses possibles. De toute évidence, cela n'était pas conforme à la demande de OP.
Sycorax dit Réintégrer Monica
J'ai l'impression d'avoir compris l'idée d'utiliser l'échelle de cotes logarithmiques pour la régression, puis de passer de l'échelle logit à l'échelle 0-1. Mais je continue de lire les choses dans le sens de «les erreurs sont distribuées de façon binomiale». Comment les erreurs peuvent-elles être distribuées binomialement?
luciano
5
Quel que soit le livre dans lequel vous lisez cela, jetez-le.
Scortchi - Réintégrer Monica

Réponses:

7

Supposons que vous observiez plusieurs nids à différentes températures quotidiennes moyennes . Comment la probabilité π ( t ) de réussite du nid dépend-elle de la température t ? (Si les nids sont indépendants, le nombre de nids ayant réussi à la température t est alors distribué binomialement avec n égal au nombre de nids observés et à la probabilité de succès π ( t ) .)tπ(t)ttnπ(t)

La régression logistique est une approche (en utilisant la fonction logistique) pour spécifier la probabilité de réussite en fonction de la température via l'étirement et le décalage de la courbe logistique, la quantité d'étirement et de décalage devant être estimée à partir des données.

binkyhorse
la source
15

Sans équations? Oui. Voyons voir:

Le modèle de régression logistique est littéralement un modèle pour le paramètre p d'une distribution binomiale; avec un prédicteur continu, chaque point peut avoir sa propre distribution. (Dans les cas où les observations sont 0-1, nous traitons le cas spécial de Bernoulli; c'est une situation courante.)

Le n est donné, non modélisé. Le résultat est donc qu'avec un modèle reliant les pi et un ni connu , nous pouvons modéliser les données binomiales en termes d'un prédicteur qui décrit la moyenne (et la variance) via son modèle pour p . Le modèle peut être ajusté via une estimation du maximum de vraisemblance, mais en raison de sa forme spéciale (famille exponentielle), ML est relativement "agréable".

Parce que le lien logistique est canonique pour la famille binomiale, il est encore plus agréable, car les statistiques suffisantes sont de forme très simple - cela le rend pratique pour traiter de gros échantillons, ou même pour développer des algorithmes `` en ligne ''.

p

Avec la régression logistique, cette courbe (la fonction de lien) est une fonction logistique. D'autres fonctions sont possibles, et de nombreux packages en implémentent plusieurs (R en a trois appropriés intégrés dans sa glmfonctionnalité si je me souviens bien).


Aucun symbole d'égalité n'a été blessé lors de la rédaction de ce message.

Glen_b -Reinstate Monica
la source
2

Votre modèle suppose que le succès d'un nid peut être considéré comme un pari: Dieu lance une pièce chargée avec des côtés étiquetés «succès» et «échec». Le résultat du retournement pour un nid est indépendant du résultat du retournement pour tout autre nid.

Les oiseaux ont quelque chose pour eux: la pièce pourrait largement favoriser le succès à certaines températures par rapport à d'autres. Ainsi, lorsque vous avez la possibilité d'observer des nids à une température donnée, le nombre de succès est égal au nombre de tours réussis d'une même pièce - celui pour cette température. La distribution binomiale correspondante décrit les chances de succès. C'est-à-dire qu'il établit la probabilité de succès nuls, d'un, de deux, ... et ainsi de suite à travers le nombre de nids.

Une estimation raisonnable de la relation entre la température et la façon dont Dieu charge les pièces est donnée par la proportion de succès observés à cette température. Il s'agit de l'estimation du maximum de vraisemblance (MLE).

septdix33/sept.3/sept3

5,dix,15,200,3,2,32,sept,5,3

La ligne supérieure de la figure montre les MLE à chacune des quatre températures observées. La courbe rouge dans le panneau "Fit" indique comment la pièce est chargée, en fonction de la température. Par construction, cette trace passe par chacun des points de données. (Ce qu'il fait à des températures intermédiaires est inconnu; j'ai grossièrement connecté les valeurs pour souligner ce point.)

Ce modèle "saturé" n'est pas très utile, précisément parce qu'il ne nous donne aucune base pour estimer comment Dieu chargera les pièces à des températures intermédiaires. Pour ce faire, nous devons supposer qu'il existe une sorte de courbe de "tendance" qui relie les charges de pièces à la température.

Figure

La ligne du bas de la figure correspond à une telle tendance. La tendance est limitée dans ce qu'elle peut faire: lorsqu'elle est tracée dans les coordonnées appropriées ("log odds"), comme indiqué dans les panneaux "Logit Response" à gauche, elle ne peut que suivre une ligne droite. Une telle ligne droite détermine le chargement de la pièce à toutes les températures, comme indiqué par la ligne courbe correspondante dans les panneaux "Fit". Ce chargement, à son tour, détermine les distributions binomiales à toutes les températures. La rangée du bas représente ces distributions pour les températures où les nids ont été observés. (Les lignes noires en pointillés marquent les valeurs attendues des distributions, ce qui permet de les identifier assez précisément. Vous ne voyez pas ces lignes dans la ligne supérieure de la figure car elles coïncident avec les segments rouges.)

Maintenant, un compromis doit être fait: la ligne peut passer étroitement à certains des points de données, pour s'éloigner loin des autres. Cela fait que la distribution binomiale correspondante attribue des probabilités plus faibles à la plupart des valeurs observées qu'auparavant. Vous pouvez le voir clairement à 10 degrés et 15 degrés: la probabilité des valeurs observées n'est pas la probabilité la plus élevée possible, ni proche des valeurs attribuées dans la rangée supérieure.

La régression logistique glisse et agite les lignes possibles autour (dans le système de coordonnées utilisé par les panneaux "Logit Response"), convertit leurs hauteurs en probabilités binomiales (les panneaux "Fit"), évalue les chances attribuées aux observations (les quatre panneaux de droite ) et choisit la ligne qui donne la meilleure combinaison de ces chances.

Quel est le "meilleur"? Simplement que la probabilité combinée de toutes les données est aussi grande que possible. De cette façon, aucune probabilité unique (les segments rouges) ne peut être vraiment minuscule, mais généralement la plupart des probabilités ne seront pas aussi élevées qu'elles l'étaient dans le modèle saturé.

Voici une itération de la recherche de régression logistique où la ligne a été tournée vers le bas:

Figure 2

1015degrés, mais un travail terrible d'adapter les autres données. (À 5 et 20 degrés, les probabilités binomiales attribuées aux données sont si minuscules que vous ne pouvez même pas voir les segments rouges.) Dans l'ensemble, c'est un ajustement bien pire que ceux montrés dans la première figure.


J'espère que cette discussion vous a aidé à développer une image mentale des probabilités binomiales changeant à mesure que la ligne varie, tout en gardant les données identiques. La ligne ajustée par régression logistique tente de rendre ces barres rouges aussi hautes que possible. Ainsi, la relation entre la régression logistique et la famille de distributions binomiales est profonde et intime.


Annexe: Rcode pour produire les figures

#
# 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)
whuber
la source
y aurait-il le code r divulgué? Merci beaucoup.
Maximilian
1
@Maximilian J'ai ajouté le code.
whuber