12 votos

Graficar una curva de probabilidad para un modelo Logit con predictores múltiples

Tengo la siguiente función de probabilidad:

$$\text{Prob} = \frac{1}{1 + e^{-z}}$$

donde

$$z = B_0 + B_1X_1 + \dots + B_nX_n.$$

Mi modelo parece

$$\Pr(Y=1) = \frac{1}{1 + \exp\left(-[-3.92 + 0.014\times(\text{bid})]\right)}$$

Esto es visualizado a través de una curva de probabilidad de que se parece a la de abajo.

enter image description here

Ahora, estoy considerar la adición de un par de variables para mi original de la ecuación de regresión. Así que digamos que me agregue de género (categórica: F y M) y la edad (categórica: < 25 y > 26) en el modelo. Así que terminan con:

$$\Pr(Y=1) = \frac{1}{1 + \exp\left(-[-3.92 + 0.014\times(\text{bid}) + 0.25\times(\text{gender}) + 0.15\times(\text{age})]\right)}$$

Ahora, en R I puede generar la curva de probabilidad de que me va a decir la probabilidad de que Y=1 cuando la contabilidad para todos los tres predictores. Donde estoy perdido es que quiero encontrar las probabilidades de cada posible permutación de estos variación.

Así que cuando bid = 1, sexo = M, y la edad es >= 26, ¿cuál es la probabilidad de que Y = 1. Del mismo modo, cuando la oferta = 2, sexo = F, y la edad es >= 26, ¿cuál es la probabilidad de que Y = 1.

Quiero generar una curva de probabilidad de que me va a permitir visualizar esto.

Alguien puede ayudar? Se me puede entender completamente qué tipo de información se puede obtener de un modelo logit, pero por favor dime si estoy malentendido de la teoría también.

24voto

Sean Hanley Puntos 2428

Afortunadamente para usted, usted tiene sólo una covariable continua. Por lo tanto, sólo se puede hacer de cuatro (es decir, 2 SEXO x 2 EDAD) parcelas, cada una con la relación entre la OFERTA y $p(Y=1)$. Alternativamente, usted podría hacer una trama con cuatro diferentes líneas (puedes utilizar diferentes estilos de línea, pesos, o de colores para distinguirlos). Usted puede obtener estos predijo líneas mediante la resolución de la ecuación de regresión en cada una de las cuatro combinaciones para un rango de valores de PUJA.

Más complicado es cuando se tiene más de una covariable continua. En un caso como este, a menudo hay una covariable que es "primarias" en algún sentido. Que covariable puede ser utilizado para el eje X. A continuación, puedes resolver por varios pre-especificado los valores de las otras variables, normalmente la media y +/- 1SD. Otras opciones incluyen varios tipos de gráficos 3D, coplots, interactivo o de las parcelas.

Mi respuesta a una pregunta diferente aquí tiene información sobre una serie de parcelas para la exploración de datos en más de 2 dimensiones. Su caso es esencialmente análogo, salvo que usted está interesado en presentar el modelo de los valores predichos, en lugar de los valores sin procesar.

Actualización:

He escrito algún ejemplo sencillo de código en R para hacer estas parcelas. Permítanme señalar un par de cosas: Porque la acción se lleva a cabo temprano, sólo corrí OFERTA a través de 700 (pero se sienten libres para extender a 2000). En este ejemplo, estoy usando la función especifica y tomar la primera categoría (es decir, mujeres y jóvenes) como la categoría de referencia (que es el predeterminado en R). Como @whuber señala en su comentario, LR modelos son lineales en las probabilidades de registro, así se puede utilizar el primer bloque de valores de predicción y de la trama como usted puede ser que con regresión OLS si usted elija. El logit es la función de enlace, que permite conectar el modelo de probabilidades; el segundo bloque se convierte probabilidades de registro en las probabilidades a través de la inversa de la función logit, que es, por exponentiating (convirtiéndose en cuotas) y, a continuación, dividir las probabilidades 1+odds. (Me discutir la naturaleza de las funciones de enlace y este tipo de modelo de aquí, si quieres más info.)

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")

El cual se produce el siguiente diagrama:
enter image description here
Estas funciones son suficientemente similares que los de cuatro paralelo parcela enfoque que he esbozado inicialmente no es muy distintivo. El siguiente código implementa mi 'alternativa':

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"))

produciendo a su vez, este diagrama:
enter image description here

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X