Représentation graphique d'une courbe de probabilité pour un modèle Logit avec plusieurs prédicteurs


12

J'ai la fonction de probabilité suivante:

Prob=11+ez

z=B0+B1X1++BnXn.

Mon modèle ressemble

Pr(Y=1)=11+exp([3.92+0.014×(bid)])

Ceci est visualisé via une courbe de probabilité qui ressemble à celle ci-dessous.

entrez la description de l'image ici

J'envisage d'ajouter quelques variables à mon équation de régression d'origine. Disons que j'ajoute le sexe (catégorique: F et M) et l'âge (catégorique: <25 et> 26) dans le modèle, je me retrouve avec:

Pr(Y=1)=11+exp([3.92+0.014×(bid)+0.25×(gender)+0.15×(age)])

Dans RI peut générer une courbe de probabilité similaire qui me dira la probabilité de Y = 1 lorsque l'on tient compte des trois prédicteurs. Là où je suis perdu, je veux trouver les probabilités pour chaque permutation possible de ces variations.

Ainsi, lorsque l'enchère = 1, le sexe = M et l'âge est> = 26, quelle est la probabilité que Y = 1? De même, lorsque l'enchère = 2, le sexe = F et l'âge est> = 26, quelle est la probabilité que Y = 1?

Je veux générer une courbe de probabilité qui me permettra de visualiser cela.

Quelqu'un peut-il aider? Je peux mal comprendre complètement le type d'informations que l'on peut tirer d'un modèle logit, mais veuillez me dire si je ne comprends pas non plus la théorie.


Voulez-vous que le code le fasse dans R, ou simplement pour comprendre le problème conceptuellement?
gung - Rétablir Monica

Si je devais choisir, je dirais la question conceptuellement. Je pense que le code R que je peux gérer par moi-même.
ATMathew

2
B0+B1X1++BnXn

1
Predict()plot.Predict()Pr(Y=1|x2,,xp)x1x2,,xp

Réponses:


24

p(Y=1)

Une situation plus compliquée est celle où vous avez plus d'une covariable continue. Dans un cas comme celui-ci, il existe souvent une covariable particulière qui est «primaire» dans un certain sens. Cette covariable peut être utilisée pour l'axe X. Ensuite, vous résolvez pour plusieurs valeurs prédéfinies des autres covariables, généralement la moyenne et +/- 1SD. Les autres options incluent différents types de tracés 3D, coplots ou tracés interactifs.

Ma réponse à une question différente ici contient des informations sur une gamme de tracés pour explorer des données dans plus de 2 dimensions. Votre cas est essentiellement analogue, sauf que vous êtes intéressé à présenter les valeurs prédites du modèle, plutôt que les valeurs brutes.

Mise à jour:

J'ai écrit un exemple de code simple en R pour faire ces tracés. Permettez-moi de noter quelques choses: Parce que «l'action» a lieu tôt, je n'ai exécuté BID que 700 (mais n'hésitez pas à l'étendre à 2000). Dans cet exemple, j'utilise la fonction que vous spécifiez et je prends la première catégorie (c.-à-d., Femmes et jeunes) comme catégorie de référence (qui est la valeur par défaut dans R). Comme le note @whuber dans son commentaire, Les modèles LR sont linéaires en log cotes, vous pouvez donc utiliser le premier bloc de valeurs prédites et tracer comme vous le feriez avec la régression OLS si vous le souhaitez. Le logit est la fonction de lien, qui vous permet de connecter le modèle aux probabilités; le deuxième bloc convertit les probabilités logarithmiques en probabilités via l'inverse de la fonction logit, c'est-à-dire en exponentiant (transformant en probabilités) puis en divisant les probabilités par 1 + probabilités. (Je discute de la nature des fonctions de liaison et de ce type de modèle ici , si vous voulez plus d'informations.)

BID = seq(from=0, to=700, by=10)

logOdds.F.young = -3.92 + .014*BID
logOdds.M.young = -3.92 + .014*BID + .25*1
logOdds.F.old   = -3.92 + .014*BID         + .15*1
logOdds.M.old   = -3.92 + .014*BID + .25*1 + .15*1

pY.F.young = exp(logOdds.F.young)/(1+ exp(logOdds.F.young))
pY.M.young = exp(logOdds.M.young)/(1+ exp(logOdds.M.young))
pY.F.old   = exp(logOdds.F.old)  /(1+ exp(logOdds.F.old))
pY.M.old   = exp(logOdds.M.old)  /(1+ exp(logOdds.M.old))

windows()
  par(mfrow=c(2,2))
  plot(x=BID, y=pY.F.young, type="l", col="blue", lwd=2, 
       ylab="Pr(Y=1)", main="predicted probabilities for young women")
  plot(x=BID, y=pY.M.young, type="l", col="blue", lwd=2, 
       ylab="Pr(Y=1)", main="predicted probabilities for young men")
  plot(x=BID, y=pY.F.old, type="l", col="blue", lwd=2, 
       ylab="Pr(Y=1)", main="predicted probabilities for old women")
  plot(x=BID, y=pY.M.old, type="l", col="blue", lwd=2, 
       ylab="Pr(Y=1)", main="predicted probabilities for old men")

Ce qui produit l'intrigue suivante:
entrez la description de l'image ici
Ces fonctions sont suffisamment similaires pour que l'approche de l'intrigue à quatre parallèles que j'ai décrite initialement ne soit pas très distinctive. Le code suivant implémente mon approche «alternative»:

windows()
  plot(x=BID, y=pY.F.young, type="l", col="red", lwd=1, 
       ylab="Pr(Y=1)", main="predicted probabilities")
  lines(x=BID, y=pY.M.young, col="blue", lwd=1)
  lines(x=BID, y=pY.F.old,   col="red",  lwd=2, lty="dotted")
  lines(x=BID, y=pY.M.old,   col="blue", lwd=2, lty="dotted")
  legend("bottomright", legend=c("young women", "young men", 
         "old women", "old men"), lty=c("solid", "solid", "dotted",
         "dotted"), lwd=c(1,1,2,2), col=c("red", "blue", "red", "blue"))

produisant à son tour, cette parcelle:
entrez la description de l'image ici

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.