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:
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: