Академический Документы
Профессиональный Документы
Культура Документы
Introducci on
Es uno de los procedimientos estad sticos m as utilizados con miles de art culos publicados en aplicaciones usando esta t ecnica. Se considera una respuesta binaria Y junto con una variable explicativa X de manera que (x) = P (Y = 1|X = x) = 1 P (Y = 0|X = x) El modelo de regresi on log stica asume que (x) = o de manera equivalente log (x) 1 (x) = logit ( (x)) = + x exp [ + x] 1 + exp [ + x]
La interpretaci on del par ametro se hace mediante la funci on e . Este valor es un cociente de los odds de X = x + 1 dividido entre los odds de X = x. El par ametro determina la tasa de incremento o decremento de la curva en forma de S para (x). En la gr aca siguiente se ve la curva en forma de S para (x).
El cambio en (x) depende del valor de cada x. La tangente en un punto particular de x describe la tasa de cambio en ese punto. La tangente tiene una pendiente igual a (x)(1 (x)). Por ejemplo, la tangente en el punto x tal que (x) = 0,50 tiene una pendiente igual a 0,50 0,50 = 0,25 ; sin embargo cuando (x) = 0,90 o (x) = 0,10 la pendiente es 0,09 . La pendiente se aproxima a 0 cuando la probabilidad se aproxima a 1 o a 0. La pendiente m as pronunciada se obtiene cuando (x) = 0,50; el correspondiente valor de x es x=
y se denomina nivel mediano efectivo (EL50 ). Representa el valor al que los resultados tienen una probabilidad igual a 0.50. El par ametro no suele tener un inter es especial.
Ejemplo En los cangrejos cacerola hembra: el hecho de que tengan alg un amante depende de la anchura de su caparaz on? El tama no importa ? La variable respuesta que interesa es si las hembras de los cangrejos cacerola tienen, al menos, un amante. Como predictor solamente se utiliza la anchura del caparaz on. Se construye la variable a partir de la variable original que recoge el n umero de amantes.
tabla <- read.csv ( " http : / / www.hofroe.net / stat557 / data / crab.txt " , header =T , sep = " \ t " ) dimnames ( tabla )[[2]] = c ( " color " ," spine " ," width " ," satell " ," weight " ) names ( tabla ) # Se crea una variable de tipo 0 -1 # Es 1 si el numero de amantes es mayor que 0 ( tabla $ satell.bin = ifelse ( tabla $ satell > 0 , 1 , 0)) # Se aplica un modelo de regresion logit crab.fit.logit = glm ( tabla $ satell.bin tabla $ width , family = binomial , data = tabla ) summary ( crab.fit.logit ) # Se discretiza la variable width tabla $ W.fac = cut ( tabla $ width , breaks = c (0 , seq (23 .25 , 29 .25 ) , Inf )) # Se calcula la proporcion de cangrejos que tienen al menos # un amante para cada grupo de anchura de caparazon prop = aggregate ( tabla $ satell.bin , by = list ( W = tabla $ W.fac ) , mean ) $ x # Se calcula la anchura media del caparazon en cada grupo # de anchura de caparazon plot.x = aggregate ( tabla $ width , by = list ( W = tabla $ W.fac ) , mean ) $ x X11 () plot ( y = prop , x = plot.x , pch =16 , type = " p " , xlab = expression ( paste ( " Anchura , " , italic ( x ) , " ( cm ) " )) , ylab = expression ( paste ( " Proporcion de amantes que tiene " , {pi } , " ( x ) " )) , ylim = c (0 ,1) , xlim = c (20 ,34)) ind = order ( tabla $ width ) lines ( x = tabla $ width [ ind ] , y = predict ( crab.fit.logit , type = " response " )[ ind ] , type = " l " , lty =3)
# Intervalos de confianza para los parametros. library ( MASS ) confint ( crab.fit.logit ) # Se estima las probabilidades de que la respuesta sea igual a 1 crab.predict = predict ( crab.fit.logit , type = " response " , se = T ) # Se representan los intervalos de confianza ind = order ( tabla $ width )
X11 () par ( family = " sans " ) plot ( tabla $ width [ ind ] , crab.predict $ fit [ ind ] , axes =F , type = " l " , xlim = c (20 ,33) , ylab = " Probabilidad de tener al menos un amante " , xlab = expression ( paste ( " Anchura " , italic ( x ) , " ( cm ) " )) ) axis (2 , at = seq (0 ,1 ,0 .2 )) axis (1 , at = seq (20 ,32 ,2)) lines ( tabla $ width [ ind ] , crab.predict $ fit [ ind ] 1 .96 * crab.predict $ se [ ind ] , lty =3 , col = " blue " , lwd =2) lines ( tabla $ width [ ind ] , crab.predict $ fit [ ind ] + 1 .96 * crab.predict $ se [ ind ] , lty =3 , col = " blue " , lwd =2)
summary ( crab.fit.logit ) Call: glm(formula = satell.bin ~ tabla$width, family = binomial, data = tabla) Deviance Residuals: Min 1Q Median -2.0281 -1.0458 0.5480
3Q 0.9066
Max 1.6942
(Intercept) -12.3508 2.6287 -4.698 2.62e-06 *** tabla$width 0.4972 0.1017 4.887 1.02e-06 *** --Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . 0.1 1 (Dispersion parameter for binomial family taken to be 1) Null deviance: 225.76 Residual deviance: 194.45 AIC: 198.45 on 172 on 171 degrees of freedom degrees of freedom
Number of Fisher Scoring iterations: 4 confint ( crab.fit.logit ) Waiting for profiling to be done... 2.5 % 97.5 % (Intercept) -17.8100090 -7.4572470 tabla$width 0.3083806 0.7090167
En este caso, los odds de la respuesta para x = 1 (es decir los odds de un exito) son ( x) = e e 1 (x) 5
x
de modo que interviene en los odds multiplicando por e cada incremento de 1 unidad de x. As , los odds al nivel x + 1 son iguales que los odds al nivel x multiplicados por e . Cuando = 0, e = 1, de modo que los odds no cambian cuando x cambia. En el ejemplo se tiene que log ( x) 1 (x) = logit ( (x)) = 12,35 + 0,497x
De este modo, los odds estimados para cada cm de incremento de anchura en el caparaz on implica multiplicar por e = exp(0,497) = 1,64. Es decir, hay un incremento del 64 % de la probabilidad de tener 1 amante por cada incremento de 1 cm de anchura. Por ejemplo, con valor medio de anchura igual a x = 26,3 se obtiene
exp ( + x) = 1 + exp ( + x) exp (12,35 + 0,497x) = 1 + exp (12,35 + 0,497x) exp (12,35 + 0,497 26,3) = 0,6729 1 + exp (12,35 + 0,497 26,3) (x) = As los odds son 0,6729 = 2,057 1 0,6729 Si aumentamos una unidad x, es decir se toma x = 27,3, entonces ( x) = de modo que los odds son 0,772 = 3,386 1 0,772 de manera que log 3,386 2,057 = 0,497 exp (12,35 + 0,497 27,3) = 0,772 1 + exp (12,35 + 0,497 27,3)
de modo que un valor mayor de i implica un mayor valor de la probabilidad i . la parte derecha de la expresi on es semejante a un modelo ANOVA unifactorial. En este caso hay tantos par ametros i como categor as, pero uno es redundante. Es decir, con I categor as X tiene I 1 par ametros no redundantes. Una opci on habitual que se considera es jar el valor de uno de los par ametros en 0, por ejemplo, I = 0. Si los valores originales no satisfacen la restricci on anterior, los par ametros se pueden recodicar para que esto se cumpla. Por ejemplo, se jan i = i I y = + I que satisfacen I = 0. De este modo, logit(i ) = + i = ( I ) + (i + I ) = + i Si el factor X no tiene efecto, entonces 1 = = I = 0 o equivalentemente 1 = = I El modelo con solo el t ermino equivale a la independencia entre las variables X e Y. Una formulaci on alternativa con variables dummy En la tabla original I 2, se puede plantear una formulaci on alternativa si consideramos que xi = 1 para las observaciones de la la i esima y xi = 0 para las restantes las i = 1, . . . , I 1. De este modo, el modelo se puede expresar como logit(i ) = + 1 x1 + + I 1 xI 1 Esta formulaci on es equivalente a la que se usa con la restricci on I = 0 para una categor a arbitraria. 7
En el caso de I = 2, se tiene 1 = 2 que equivale a denir una variable dummy que vale x = 1 en la categor a 1 y x = 1 en la categor a 2. Ejemplo Se considera la siguiente tabla en la que se plantea la relaci on entre el consumo de alcohol, con la proporci on de malformaciones en el feto durante el embarazo. Consumo de alcohol Presente 0 48 <1 38 12 5 35 1 6 1 Ausente 17066 14464 788 126 37
Para evitar la redundancia entre los par ametros, se utiliza el comando options en R. La opci on de que la suma sea nula lo indicamos del siguiente modo:
options ( contrasts = c ( " contr.sum " , " contr.poly " ))
Tambi en podemos indicar que el par ametro asociado a la primera categor a sea nulo:
options ( contrasts = c ( " contr.treatment " , " contr.poly " ))
Vamos a estudiar la posible asociaci on entre el consumo de alcohol y las malformaciones en los fetos.
Alcohol = factor ( c ( " 0 " , " <1 " , " 1 -2 " , " 3 -5 " , " >=6 " ) , levels = c ( " 0 " ," <1 " , " 1 -2 " , " 3 -5 " , " >=6 " )) malformaciones = c (48 , 38 , 5 , 1 , 1) n = c (17066 , 14464 , 788 , 126 , 37) + malformaciones
options ( contrasts = c ( " contr.treatment " , " contr.poly " )) # Ajustamos un modelo logit ( tabla.logit1 = glm ( malformaciones / n Alcohol , family = binomial , weights = n ))
Se obtiene
Call: glm(formula = malformaciones/n ~ Alcohol, family = binomial, weights = n) Coefficients: (Intercept) -5.87364
Alcohol<1 -0.06819
Alcohol1-2 0.81358
Alcohol3-5 1.03736
Alcohol>=6 2.26272
Degrees of Freedom: 4 Total (i.e. Null); 0 Residual Null Deviance: 6.202 Residual Deviance: 5.995e-15 AIC: 28.63
Se obtiene
Call: glm(formula = malformaciones/n ~ revAlcohol, family = binomial, weights = n) Coefficients: (Intercept) -3.611
revAlcohol3-5 -1.225
revAlcohol1-2 -1.449
revAlcohol<1 -2.331
revAlcohol0 -2.263
Degrees of Freedom: 4 Total (i.e. Null); 0 Residual Null Deviance: 6.202 Residual Deviance: 6.084e-14 AIC: 28.63
Se obtiene que las predicciones de las probabilidades son las mismas con ambos modelos; es decir, no inuye el hecho de jar en 0 un efecto u otro.
cbind ( logit = predict ( tabla.logit1 ) , fitted.prop = predict ( tabla.logit1 , type = " response " ))
1 2 3 4 5
cbind ( logit = predict ( tabla.logit2 ) , fitted.prop = predict ( tabla.logit2 , type = " response " ))
1 2 3 4 5
Podemos observar c omo la proporci on de malformaciones se incrementa conforme aumenta el consumo de alcohol. Pero, en el an alisis previo no se ha tenido en cuenta la naturaleza ordinal de la covariable consumo de alcohol. Entonces, se puede considerar un modelo alternativo logit(i ) = + xi y la hip otesis de independencia equivale a = 0. Fijamos como valores de xi : x1 = 0, x2 = 0 5, x3 = 1 5, x4 = 4, x5 = 7. Donde el u ltimo valor es arbitrario.
puntuaciones = c (0 , 0 .5 , 1 .5 , 4 , 7) tabla.orden = glm ( malformaciones / n puntuaciones , family = binomial , weights = n ) summary ( tabla.orden )
Se obtiene
10
Call: glm(formula = malformaciones/n ~ puntuaciones, family=binomial, weights = n) Deviance Residuals: 1 2 3 0.5921 -0.8801 0.8865
4 -0.1449
5 0.1291
Coefficients: Estimate Std. Error z value Pr(>|z|) (Intercept) -5.9605 0.1154 -51.637 <2e-16 *** puntuaciones 0.3166 0.1254 2.523 0.0116 * --Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . 0.1 1 (Dispersion parameter for binomial family taken to be 1) Null deviance: 6.2020 Residual deviance: 1.9487 AIC: 24.576 on 4 on 3 degrees of freedom degrees of freedom
1 2 3 4 5
Tambi en se pueden obtener los intervalos de conanza para los par ametros con este modelo
library ( MASS ) confint ( tabla.orden )
11
Este modelo supone que no hay interacci on, es decir, el efecto de un factor es igual a lo largo de cada categor a del otro factor. Para un valor jo de la categor a z de Z el efecto del cambio de x = 0 a x = 1 es [ + 1 (1) + 2 z ] [ + 1 (0) + 2 z ] = 1 As , para Z jada, los odds para el exito en x = 1 son iguales a exp(1 ) veces los odds del exito para x = 0. Existe independencia condicional entre X e Y , controlando mediante Z , si 1 = 0. En este caso, la raz on de odds com un es igual a 1. Se puede aplicar, entonces el modelo m as simple a la tabla de tres variables: logit [P (Y = 1)] = + 2 z.
12
Ejemplo: SIDA y AZT Se considera un estudio antiguo (1991) que trataba el efecto de un retroviral (AZT ) en el desarrollo de los s ntomas del SIDA. Se obtuvo una muestra de 338 personas afectadas de SIDA en donde como respuesta consideramos si desarrollan s ntomas de SIDA y como predictores la raza y si se les administra AZT de modo inmediato o cuando los linfocitos tipo T muestran debilidad inmune. S ntomas Si No 14 93 32 81 11 52 12 43
Uso AZT Si No Si No
Denominamos como X AZT, Z Raza e Y SIDA. En el modelo, consideramos que y = 1 si se desarrollan los s ntomas del SIDA, y = 0 si no se desarrollan. Del mismo modo, x = 1 son aquellos que tomaron AZT inmediatamente, x = 0 para los que no, y z = 1 son personas de raza blanca y z = 0 son personas de color. As , el modelo se puede expresar como
AZT logit [P (Y = 1)] = + Si + blanc
En este caso, es la raz on de odds correspondiente a desarrollar s ntomas de SIDA para personas de color a los que no se les administr o inmediatamente AZT.
AZT es el incremento en la raz on de odds para los que usan inmediaPor otro lado, Si
tamente AZT y blanc es el incremento de los odds para las personas blancas.
tabla.pre = expand.grid ( AZT = factor ( c ( " Si " , " No " ) , levels = c ( " No " , " Si " )) , Raza = factor ( c ( " Blanca " , " Negra " ) , levels = c ( " Negra " , " Blanca " ))) tabla = data.frame ( tabla.pre , Si = c (14 , 32 , 11 , 12) , No = c (93 , 81 , 52 , 43)) options ( contrasts = c ( " contr.treatment " , " contr.poly " )) fit1 = glm ( cbind ( Si , No ) AZT + Raza , family = binomial , data = tabla ) summary ( fit1 )
13
Call: glm(formula = cbind(Si, No) ~ AZT + Raza, family = binomial, data = tabla) Deviance Residuals: 1 2 3 -0.5547 0.4253 0.7035
4 -0.6326
Coefficients: Estimate Std. Error z value Pr(>|z|) (Intercept) -1.07357 0.26294 -4.083 4.45e-05 *** AZTSi -0.71946 0.27898 -2.579 0.00991 ** RazaBlanca 0.05548 0.28861 0.192 0.84755 --Signif. codes: 0 *** 0.001 ** 0.01 * 0.05 . 0.1 1 (Dispersion parameter for binomial family taken to be 1) Null deviance: 8.3499 Residual deviance: 1.3835 AIC: 24.86 on 3 on 1 degrees of freedom degrees of freedom
Por tanto, la raz on de odds para los que usan AZT inmediatamente despu es de desarrollar s ntomas de SIDA ser a exp(0,71946) = 0,49. Un intervalo de conanza se puede obtener con
confint ( fit1 )
2.5 % 97.5 % (Intercept) -1.6088054 -0.5734959 AZTSi -1.2773237 -0.1798769 RazaBlanca -0.5022982 0.6334104
Veamos si la raza y la aparici on de s ntomas son condicionalmente independientes dado el tratamiento AZT.
fit2 = update ( object = fit , formula = . - Raza ) anova ( fit2 , fit1 , test = " Chisq " )
Analysis of Deviance Table Model 1: cbind(Si, No) ~ AZT Model 2: cbind(Si, No) ~ AZT + Raza Resid. Df Resid. Dev Df Deviance Pr(>Chi) 1 2 1.4206 2 1 1.3835 1 0.037084 0.8473
14
No parece pues que se tenga que considerar la raza en el modelo. Opci on de SAS:
ODS rtf file = c :\ dondesea \ cosa . rtf style = minimal startpage = no ; DATA sida ; input raza $ azt $ si no @@ ; casos = si + no ; DATALINES ; blanca y 14 93 blanca n 32 81 negra y 11 52 negra n 12 43 ; PROC genmod order = data ; class raza azt ; model si / casos = raza azt / dist = bin link = logit obstats type3 ; RUN ;
15
Salida SAS
Criterios para valorar la bondad de ajuste Criterio Desviaci Desviacion esca Chi - cuadrado de Pe Pearson X2 escala Verosimilitud DF 1 1 1 1 Valor 1 .3835 1 .3835 1 .3910 1 .3910 -167 .5756 Valor / DF 1 .3835 1 .3835 1 .3910 1 .3910
Analisis de estimadores de parametros Error Wald 95 % Limites estandar de confianza 0 .2629 -1 .5889 -0 .5582 0 .2886 -0 .5102 0 .6212
blan
DF 1 1
blanca
Procedimiento GENMOD Analisis de estimadores de parametros Error estandar 0 .0000 0 .2790 0 .0000 0 .0000 Wald 95 % Limites de confianza 0 .0000 0 .0000 -1 .2662 -0 .1727 0 .0000 0 .0000 1 .0000 1 .0000
neg y n
DF 0 1 0 0
negra y n
DF 1 1
16
Ejemplo: Cangrejos cacerola Se considera el ejemplo de los cangrejos cacerola y se aplica el modelo, logit [ ] = + 1 c1 + 2 c2 + 3 c3 + 4 x donde = P (Y = 1) x anchura (cm). c1 = 1 para color medio-claro y 0 en otro caso. c2 = 1 para color medio y 0 en otro caso. c3 = 1 para color medio-oscuro y 0 en otro caso. Se trata de ver la relaci on entre el color del caparaz on y la probabilidad de tener alg un amante.
tabla <- read.csv ( " http : / / www.hofroe.net / stat557 / data / crab.txt " , header =T , sep = " \ t " ) dimnames ( tabla )[[2]] = c ( " color " ," spine " ," width " ," satell " ," weight " ) names ( tabla ) options ( contrasts = c ( " contr.treatment " , " contr.poly " )) # Definimos como factor la variable que nos indica el color. tabla $ C.fac <- factor ( tabla $ color , levels = c ( " 5 " ," 4 " ," 3 " ," 2 " ) , labels = c ( " oscuro " , " med - oscuro " , " med " , " med - claro " )) # Se define una variable binaria : tiene o no tiene amantes tabla $ satell.bin = ifelse ( tabla $ satell > 0 , 1 , 0) crab.fit.logist <- glm ( satell.bin C.fac + width , family = binomial , data = tabla ) summary ( crab.fit.logist , cor = F ) library ( MASS ) confint ( crab.fit.logist ) res1 = predict ( crab.fit.logist , type = " response " , newdata = data.frame ( width = seq (18 , 34 , 1) , C.fac = " med - claro " )) res2 = predict ( crab.fit.logist , type = " response " , newdata = data.frame ( width = seq (18 , 34 , 1) , C.fac = " med " )) res3 = predict ( crab.fit.logist , type = " response " , newdata = data.frame ( width = seq (18 , 34 , 1) , C.fac = " med - oscuro " )) res4 = predict ( crab.fit.logist , type = " response " ,
17
newdata = data.frame ( width = seq (18 , 34 , 1) , C.fac = " oscuro " )) plot ( seq (18 , 34 , 1) , res1 , type = " l " , bty = " L " , ylab = " Probabilidad Predicha " , axes =F , xlab = expression ( paste ( " Ancho , " , italic ( x ) , " ( cm ) " )) , col = " yellow " ) axis (2 , at = seq (0 , 1 , 0 .2 )) axis (1 , at = seq (18 , 34 , 2)) lines ( seq (18 , 34 , 1) , res2 , col = " orange " ) lines ( seq (18 , 34 , 1) , res3 , col = " red " ) lines ( seq (18 , 34 , 1) , res4 , col = " darkred " ) arrows ( x0 =29 , res1 [25 - 17] , x1 =25 , y1 = res1 [25 - 17] , length =0 .09 ) text ( x =29 .1 , y = res1 [25 - 17] , " Color 1 " , adj = c (0 , 0) , col = " yellow " ) arrows ( x0 =23 , res2 [26 - 17] , x1 =26 , y1 = res2 [26 - 17] , length =0 .09 ) text ( x =21 .1 , y = res2 [26 - 17] , " Color 2 " , adj = c (0 , 0) , col = " orange " ) arrows ( x0 =28 .9 , res3 [24 - 17] , x1 = 24 , y1 = res3 [24 - 17] , length =0 .09 ) text ( x =29 , y = res3 [24 - 17] , " Color 3 " , adj = c (0 , 0) , col = " red " ) arrows ( x0 =25 .9 , res4 [23 - 17] , x1 =23 , y1 = res4 [23 - 17] , length =0 .09 ) text ( x =26 , y = res4 [23 - 17] , " Color 4 " , adj = c (0 , 0) , col = " darkred " )
18
Call: glm(formula = satell.bin ~ C.fac + width, family = binomial, data = tabla) Deviance Residuals: Min 1Q Median -2.1124 -0.9848 0.5243 Coefficients: Estimate Std. Error z value (Intercept) -12.7151 2.7617 -4.604 C.facmed-oscuro 1.1061 0.5921 1.868 C.facmed 1.4023 0.5484 2.557 C.facmed-claro 1.3299 0.8525 1.560 width 0.4680 0.1055 4.434 --Signif. codes: 0 *** 0.001 ** 0.01 * Pr(>|z|) 4.14e-06 0.0617 0.0106 0.1188 9.26e-06 *** . * ***
3Q 0.8513
Max 2.1413
0.05 . 0.1 1
(Dispersion parameter for binomial family taken to be 1) Null deviance: 225.76 Residual deviance: 187.46 AIC: 197.46 on 172 on 168 degrees of freedom degrees of freedom
19
2.5 % 97.5 % (Intercept) -18.45674069 -7.5788795 C.facmed-oscuro -0.02792233 2.3138635 C.facmed 0.35269965 2.5260703 C.facmed-claro -0.27377584 3.1356611 width 0.27128167 0.6870436
Se puede considerar un modelo con interacci on color y anchura del caparaz on.
cr ab .f it .l og is t. ia = update ( object = crab.fit.logist , formula = . + width : C.fac ) anova ( crab.fit.logist , crab.fit.logist.ia , test = " Chisq " )
Analysis of Deviance Table Model 1: satell.bin ~ C.fac + width Model 2: satell.bin ~ C.fac + width + C.fac:width Resid. Df Resid. Dev Df Deviance Pr(>Chi) 1 168 187.46 2 165 183.08 3 4.3764 0.2236
As la interacci on no es signicativa.
20
Opci on de SAS:
ODS pdf file = c :\ dondesea \ cosa . pdf style = minimal startpage = no ; data crabs ; input anchura casos amante ; datalines ; 22.69 14 5 23.84 14 4 24.77 28 17 25.84 39 21 26.79 22 15 27.74 24 20 28.67 18 15 30.41 14 14 ; PROC genmod ; model amante / casos = anchura / dist = bin link = logit waldci lrci alpha =.01; PROC logistic ; model amante / casos = anchura / influence ; OUTPUT out = predict p = pi _ hat lower = LCL upper = UCL ; PROC print data = predict ; RUN ;
21
Salida SAS
Criterios para valorar la bondad de ajuste Criterio Desviaci Desviacion esca Chi - cuadrado de Pe Pearson X2 escala Verosimilitud DF 6 6 6 6 Valor 5 .9696 5 .9696 5 .0292 5 .0292 -98 .8470 Valor / DF 0 .9949 0 .9949 0 .8382 0 .8382
Algoritmo convergido.
Analisis de estimadores de parametros Error estandar 2 .5489 0 .0985 0 .0000 Wald 99 % Limites de confianza -18 .0796 -4 .9485 0 .2108 0 .7185 1 .0000 1 .0000
DF 1 1 0
Analisis de estimadores de parametros Cociente de verosimilitud 99 % Chi Limites de confianza cuadrado Pr > ChiSq -18 .5807 -5 .3345 20 .41 < .0001 0 .2267 0 .7388 22 .23 < .0001 1 .0000 1 .0000
Procedimiento LOGISTIC Perfil de respuesta Valor ordenado 1 2 Resultado binario EVENTO No event Frecuencia total 111 62
Estadisticos de ajuste del modelo Terminos independientes y Variables adicionales 201 .694 208 .001 197 .694
22
Prueba de la hipotesis nula global : BETA =0 Test Ratio de verosim Puntuacion Wald Chi - cuadrado 28 .0644 25 .6828 22 .2312 DF 1 1 1 Pr > ChiSq < .0001 < .0001 < .0001
Analisis del estimador de maxima verosimilitud Error estandar 2 .5488 0 .0985 Chi - cuadrado de Wald Pr > ChiSq 20 .4031 < .0001 22 .2312 < .0001
Estimadores de cocientes de disparidad ; Estimador 95 % Wald Efecto del punto Limites de confianza anchura 1 .591 1 .312 1 .930
Asociacion de probabilidades predichas y respuestas observadas Concordancia de porcentaje 66 .3 D de Somers 0 .454 Discordancia de porcentaje 20 .9 Gamma 0 .520 Porcentaje ligado 12 .8 Tau - a 0 .210 Pares 6882 c 0 .727
Obs 1 2 3 4 5 6 7 8
casos 14 14 28 39 22 24 18 14
amante 5 4 17 21 15 20 15 14
23
Ejemplo con SAS Un investigador est a interesado en analizar c omo las variables gre (Graduate Record Exam), gpa (promedio de calicaciones) y el prestigio de la universidad, afectan en la admisi on en unos estudios de posgrado. La variable en estudio admitir/no admitir, es binaria. Este conjunto de datos tiene una variable respuesta binaria llamada admit, que es igual a 1 si el individuo fue admitido en los estudios de posgrado, y 0 en caso contrario. Hay tres variables predictoras: gre, gpa, y rank. Se consideran gre y gpa como continuas. La variable rank toma los valores de 1 a 4. Las instituciones con un rango igual a 1 tienen el prestigio m as alto, mientras que aquellos con un rango de 4 tienen el m as bajo. Los datos se encuentran en http://www.ats.ucla.edu/stat/sas/dae/binary.sas7bdat Se consideran primero algunas estad sticas descriptivas.
ODS pdf file = c :\ dondesea \ cosa . pdf style = minimal startpage = no ; PROC means data =" c :\ dondesea \ binary "; var gre gpa ; PROC freq data =" c :\ dondesea \ binary "; TABLES rank admit admit * rank ; RUN ;
24
Salida SAS
Procedimiento MEANS Numero de Desviacion Variable observaciones Media estandar Minimo --------------------------------------------------------------------GRE 400 587 .7000000 115 .5165364 220 .0000000 GPA 400 3 .3899000 0 .3805668 2 .2600000 --------------------------------------------------------------------Variable Maximo ----------------------GRE 800 .0000000 GPA 4 .0000000 -----------------------
Frequencia Porcentaje RANK Frecuencia Porcentaje acumulada acumulado ------------------------------------------------------------1 61 15 .25 61 15 .25 2 151 37 .75 212 53 .00 3 121 30 .25 333 83 .25 4 67 16 .75 400 100 .00
Frequencia Porcentaje ADMIT Frecuencia Porcentaje acumulada acumulado -------------------------------------------------------------0 273 68 .25 273 68 .25 1 127 31 .75 400 100 .00
Frequencia | Porcentaje | Pct fila | Pct col | 1| 2| 3| 4| Total - - - - - - - - - -. - - - - - - - -. - - - - - - - -. - - - - - - - -. - - - - - - - - . 0 | 28 | 97 | 93 | 55 | 273 | 7 .00 | 24 .25 | 23 .25 | 13 .75 | 68 .25 | 10 .26 | 35 .53 | 34 .07 | 20 .15 | | 45 .90 | 64 .24 | 76 .86 | 82 .09 | - - - - - - - - - -. - - - - - - - -. - - - - - - - -. - - - - - - - -. - - - - - - - - . 1 | 33 | 54 | 28 | 12 | 127 | 8 .25 | 13 .50 | 7 .00 | 3 .00 | 31 .75 | 25 .98 | 42 .52 | 22 .05 | 9 .45 | | 54 .10 | 35 .76 | 23 .14 | 17 .91 | - - - - - - - - - -. - - - - - - - -. - - - - - - - -. - - - - - - - -. - - - - - - - - . Total 61 151 121 67 400 15 .25 37 .75 30 .25 16 .75 100 .00
25
Para modelizar los 1s en lugar de los 0s, se usa la opci on descending. Esto se hace as , porque de manera predeterminada, el PROC logistic modeliza los 0s en lugar de los 1s. En este caso, eso signicar a modelizar la predicci on de la probabilidad de no entrar en el curso (admit=0) frente a entrar (admit=1). Ambos modelos son equivalentes pero tiene conceptualmente m as sentido modelizar la probabilidad de entrar el curso que de no hacerlo. La opci on param=ref indica la codicaci on mediante variables dummy para los niveles de rank.
OPTIONS nodate ls =70; proc logistic data =" c :\ dondesea \ binary " descending ; class rank / param = ref ; model admit = gre gpa rank ; RUN ;
26
Salida SAS
Perfil de respuesta Valor ordenado 1 2 Frecuencia total 127 273
ADMIT 1 0
Clase RANK
Valor 1 2 3 4
Convergence criterion ( GCONV =1 E -8) satisfied. Estadisticos de ajuste del modelo Terminos independientes y Variables adicionales 470 .517 494 .466 458 .517
Prueba de la hipotesis nula global : BETA =0 Test Ratio de verosim Puntuacion Wald Chi - cuadrado 41 .4590 40 .1603 36 .1390 DF 5 5 5 Pr > ChiSq < .0001 < .0001 < .0001
DF 1 1 3
En la salida muestra el ajuste del modelo. El valor de -2 LOG L = 499.977 se puede usar para hacer comparaciones en modelos anidados.
27
La raz on de verosimilitudes chi-cuadrado igual a 41.4590 con un p-valor igual a 0.0001 indica que el modelo completo tiene un ajuste mejor que el modelo con una constante. En la parte del an alisis de efectos de Type 3, se muestran los contrastes de hip otesis para cada una de las variables de manera individual. Los p-valores de los estad sticos muestran que cada una de las variables aumenta el ajuste del modelo. Salida SAS
Analisis del estimador de maxima verosimilitud Error estandar 1 .1381 0 .00109 0 .3318 0 .4178 0 .3667 0 .3929 Chi - cuadrado de Wald 23 .7081 4 .2842 5 .8714 13 .7870 5 .7056 0 .2891
DF 1 1 1 1 1 1
Se muestran los coecientes, los errores est andar (error), los estad sticos y sus pvalores. Los coecientes para gre y gpa son signicativos, as como los t erminos correspondientes a rank=1 y rank=2 (con respecto a la categor a base rank=4). Los coecientes de la regresi on log stica muestran el cambio en el logaritmo de los odds cuando se incrementa en una unidad la variable predictora correspondiente. Por cada cambio en una unidad de gre, el logaritmo del odds de la admisi on frente a la no admisi on se incrementa en 0.002. Por cada cambio en una unidad de gpa, el logaritmo del odds de la admisi on frente a la no admisi on se incrementa en 0.804. Los coecientes para las categor as de rank tienen una interpretaci on algo diferente. Por ejemplo, el hecho de venir de una universidad con rango igual a 1, frente a otra con rango igual a 4, incrementa el logaritmo del odds de la admisi on por 1.55.
28
Salida SAS
Estimadores de cocientes de disparidad ; Estimador 95 % Wald Efecto del punto Limites de confianza GRE GPA RANK 1 vs 4 RANK 2 vs 4 RANK 3 vs 4 1 .002 2 .235 4 .718 2 .401 1 .235 1 .000 1 .166 2 .080 1 .170 0 .572 1 .004 4 .282 10 .701 4 .927 2 .668
Asociacion de probabilidades predichas y respuestas observadas Concordancia de porcentaje Discordancia de porcentaje Porcentaje ligado Pares 69 .1 30 .6 0 .3 34671 D de Somers Gamma Tau - a c 0 .386 0 .387 0 .168 0 .693
Se obtienen las razones de odds, (la exponencial de los coecientes de la regresi on log stica) que se pueden interpretar como el cambio multiplicativo en los odds por cada cambio de una unidad en una variable explicativa. Por ejemplo, para el incremento de una unidad en gpa, los odds de ser admitidos en el curso (frente a no ser admitidos) se incrementa en un factor de 2.24. Se muestra un test para el efecto total de la variable rank, as como los coecientes que describen la diferencia entre el grupo de referencia (rank=4) y cada uno de los tres otros grupos. Se contrasta tambi en las diferencias entre los otros niveles de rank. Por ejemplo, se puede contrastar por la diferencia entre los coecientes para rank=2 y rank=3, es decir, comparar los odds de la admisi on para estudiantes que proceden de una universidad de rango 2 frente a una de rango 3. Seg un el p-valor, el coeciente para rank=2 es signicativamente diferente del coeciente para rank=3. En la tabla siguiente se muestra tambi en la estimaci on de de la diferencia que es 0.6648, lo que indica que el hecho de asistir a una universidad con rango igual a 2 frente a una universidad con rango igual a 3, incrementa el logaritmo de los odds de la admisi on por 0.67.
proc logistic data =" c :\ dondesea \ binary " descending ; class rank / param = ref ; model admit = gre gpa rank ; contrast rank 2 vs 3 rank 0 1 -1 / estimate = parm ; run ;
29
Salida SAS
Resultados del test de contraste Chi - cuadrado de Wald 5 .5052
Contraste rank 2 vs 3
DF 1
Estimacion de filas de contraste y resultados del test Error Fila Estimador estandar 1 0 .6648 0 .2833 Limites de confianza 0 .1095
Contraste
Tipo
Alfa 0 .05
Se pueden usar tambi en las probabilidades predichas para interpretar mejor el modelo. Se estiman las probabilidades predichas de admisi on cuando gre cambia de 200 a 800 (en incrementos de 100). Cuando se estiman las probabilidades predichas se mantiene gpa constante en 3.39 (que es su media), y rank en 2 (poniendo rank 0 1 0). El t ermino intercept seguido de un 1 indica que se incluye tambi en en el modelo la constante.
proc logistic data =" c :\ dondesea \ binary " descending ; class rank / param = ref ; model admit = gre gpa rank ; contrast gre =200 intercept 1 gre 200 gpa 3.3899 rank 0 1 0 / estimate = prob ; contrast gre =300 intercept 1 gre 300 gpa 3.3899 rank 0 1 0 / estimate = prob ; contrast gre =400 intercept 1 gre 400 gpa 3.3899 rank 0 1 0 / estimate = prob ; contrast gre =500 intercept 1 gre 500 gpa 3.3899 rank 0 1 0 / estimate = prob ; contrast gre =600 intercept 1 gre 600 gpa 3.3899 rank 0 1 0 / estimate = prob ; contrast gre =700 intercept 1 gre 700 gpa 3.3899 rank 0 1 0 / estimate = prob ; contrast gre =800 intercept 1 gre 800 gpa 3.3899 rank 0 1 0 / estimate = prob ; run ;
30
Salida SAS
Resultados del test de contraste Chi - cuadrado de Wald 9 .7752 11 .2483 13 .3231 15 .0984 11 .2291 3 .0769 0 .2175
Contraste gre =200 gre =300 gre =400 gre =500 gre =600 gre =700 gre =800
DF 1 1 1 1 1 1 1
Estimacion de filas de contraste y resultados del test Limites de confianza Chi - cuadrado de Wald
Contraste Estimador estandar Pr > ChiSq gre =200 gre =300 gre =400 gre =500 gre =600 gre =700 gre =800 0 .1844 0 .2209 0 .2623 0 .3084 0 .3587 0 .4122 0 .4680 0 .0715 0 .0647 0 .0548 0 .0443 0 .0399 0 .0490 0 .0685
En las probabilidades predichas se observa que la estimaci on de la probabilidad de ser admitido es solo de 0.18 si la puntuaci on de alguien en gre es 200, pero se incrementa a 0.47 si la puntuaci on de gre es 800, manteniendo gpa en su media (3.39) y rank en 2.
31
32
Ejemplo: Cangrejos cacerola En los datos de los cangrejos cacerola, se tienen cuatro variables predictoras: color (4 categor as), tipo de espina (3 categor as), peso, y anchura del caparaz on. Se plantea un modelo de regresi on log stica para predecir si una hembra tiene amantes o no: y = 1 si tiene al menos 1 amante e y = 0 en caso contrario. Se denominan (c1 , c2 , c3 ) las variables indicadoras de los tres primeros colores (con respecto al total de 4 colores) y (s1 , s2 ) son las variables indicadoras de las dos primeras condiciones de la espina (de las 3 que hay). Se considera el modelo logit(P (Y = 1)) = + 1 P eso + 2 Ancho + 3 c1 + 4 c2 + 5 c3 + 6 s1 + 7 s2
tabla <- read.csv ( " http : / / www.hofroe.net / stat557 / data / crab.txt " , header =T , sep = " \ t " ) dimnames ( tabla )[[2]] = c ( " color " ," spine " ," width " ," satell " ," weight " ) names ( tabla ) # Se define como factor la variable que nos indica el color. tabla $ C.fac <- factor ( tabla $ color , levels = c ( " 5 " ," 4 " ," 3 " ," 2 " ) , labels = c ( " oscuro " , " med - oscuro " , " med " , " med - claro " )) # Se define una variable binaria : tiene o no tiene amantes tabla $ Sa.bin = ifelse ( tabla $ satell > 0 , 1 , 0) options ( contrasts = c ( " contr.treatment " , " contr.poly " )) tabla $ C.fac <- factor ( tabla $ color , levels = c ( " 5 " , " 4 " , " 3 " , " 2 " )) tabla $ S.fac <- factor ( tabla $ spine , levels = c ( " 3 " , " 2 " , " 1 " )) # Se ajusta el modelo con todos los predictores # El peso se divide por 1000 para evitar overflows # Nota : I () indica que se toma la operacion aritmetica # y se evita el sentido de la formula simbolica c a n g r e . f i t . l o g i s t . t o d o <- glm ( Sa.bin C.fac + S.fac + width + I ( weight / 1000) , family = binomial , data = tabla ) summary ( cangre.fit.logist.todo , cor = T ) # Existe alta correlacion entre peso y anchura del caparazon. # Por ello no se considera el peso en lo que sigue. c a n g r e . f i t . l o g i s t . o p t i m o <- glm ( Sa.bin C.fac * S.fac * width , family = binomial , data = tabla )
res = step ( cangre.fit.logist.optimo , list ( lower = 1 , upper = formula ( c a n g r e . f i t . l o g i s t . o p t i m o )) , scale =1 , trace =F , direction = " backward " res $ anova res
33
# Se repite el analisis con el comando stepAIC de la libreria MASS library ( MASS ) stepAIC ( c a n g r e . f i t . l o g i s t . o p t i m o )
Se observa que en la matriz de correlaciones asint otica existe una alta correlaci on entre el peso y la anchura del caparaz on.
Call: glm(formula = Sa.bin ~ C.fac + S.fac + width + I(weight/1000), family = binomial, data = tabla) Deviance Residuals: Min 1Q Median -2.1977 -0.9424 0.4849 Coefficients: (Intercept) C.fac4 C.fac3 C.fac2 S.fac2 S.fac1 width I(weight/1000) --Signif. codes: Estimate Std. Error z value Pr(>|z|) -9.2734 3.8378 -2.416 0.01568 * 1.1198 0.5933 1.887 0.05910 . 1.5058 0.5667 2.657 0.00788 ** 1.6087 0.9355 1.720 0.08552 . -0.4963 0.6292 -0.789 0.43024 -0.4003 0.5027 -0.796 0.42588 0.2631 0.1953 1.347 0.17788 0.8258 0.7038 1.173 0.24069 0 *** 0.001 ** 0.01 * 0.05 . 0.1 1
3Q 0.8491
Max 2.1198
(Dispersion parameter for binomial family taken to be 1) Null deviance: 225.76 Residual deviance: 185.20 AIC: 201.2 on 172 on 165 degrees of freedom degrees of freedom
Number of Fisher Scoring iterations: 4 Correlation of Coefficients: (Intercept) C.fac4 C.fac4 -0.13 C.fac3 -0.07 0.72 C.fac2 0.00 0.45 S.fac2 -0.22 -0.07 S.fac1 -0.01 -0.03 width -0.96 0.02 I(weight/1000) 0.67 -0.01
0.02 -0.04
-0.83
34
Los resultados que se obtienen con la fuci on step y con la funci on stepAIC de la librer a MASS son:
Step Df 1 NA 2 - C.fac:S.fac:width 3 3 - C.fac:S.fac 6 4 - S.fac:width 2 5 - S.fac 2 6 - C.fac:width 3 Deviance Resid. NA 3.23334337 7.88506583 0.07819029 1.44361451 4.37640503 Df Resid. Dev 152 170.4404 155 173.6738 161 181.5588 163 181.6370 165 183.0806 168 187.4570 AIC 212.4404 209.6738 205.5588 201.6370 199.0806 197.4570
--------------------------------------------------------------------Step: AIC=197.46 Sa.bin ~ C.fac + width Df Deviance AIC 187.46 197.46 3 194.45 198.45 1 212.06 220.06
C.fac4 1.106
C.fac3 1.402
width 0.468
Degrees of Freedom: 172 Total (i.e. Null); Null Deviance: 225.8 Residual Deviance: 187.5 AIC: 197.5
35
Se obtiene
$A [1] 0.875 $n.total [1] 15 $n.events [1] 7 $n.noevents [1] 8 $p.value [1] 0.006993007
37
Se pueden dibujar varias curvas ROC de distintos modelos para comparar su potencia de predicci on. Esta potencia se mide en t erminos del a rea debajo de la curva. Un area igual a 0.5 representa al peor modelo y un a rea igual a 1 al mejor.
38
Ejemplo con SAS En el ejemplo, se dibuja una curva ROC, se estiman los par ametros y se presentan las medidas de bondad de ajuste en una regresi on log stica. Los datos consisten en tres variables: n (n umero de personas en una muestra), enfermo (n umero de enfermos de la muestra), y edad. Se considera un modelo de regresi on log stica para estudiar el efecto de la edad sobre la probabilidad de contraer la enfermedad. La opci on scale=none se pone para calcular los estad sticos de ajuste sin corregir para overdispersion, La opci on rsquare se usa para calcular los estad sticos de tipo R2 generalizados. La opci on clparm=wald muestra los intervalos para los par ametros de la regresi on log stica. La opci on units muestra los estimadores de la raz on de odds para el cambio de 10 a nos en la variable edad. La opci on clodds=pl se pone para obtener los intervalos de conanza para las razones de odds. La opci on outroc=roc1 muestra una curva ROC. El a rea que hay bajo la curva ROC aparece en el estad stico c en la tabla denominada Asociaci on de probabilidades predichas y respuestas observadas. En este ejemplo, el area bajo la curva ROC es igual a 0.953.
ODS rtf file = c :\ dondesea \ cosa . rtf style = minimal startpage = no ; data cosas ; INPUT enfermo n edad ; DATALINES ; 0 14 25 0 20 35 0 19 45 7 18 55 6 12 65 17 17 75 ; PROC logistic data = cosas ; model enfermo / n = edad / scale = none clparm = wald clodds = pl rsquare outroc = roc1 ; units edad =10; RUN ; symbol1 i = join v = none c = blue ; PROC gplot data = roc1 ; title Curva ROC ; plot _ sensit _ * _ 1 mspec _ =1 / vaxis =0 to 1 by .1 cframe = yellow ; RUN ;
39
Analisis del estimador de maxima verosimilitud Error estandar 2 .5555 0 .0428 Chi - cuadrado de Wald Pr > ChiSq 23 .9317 23 .3475 < .0001 < .0001
DF 1 1
Estimadores de cocientes de disparidad ; Estimador 95 % Wald Efecto del punto Limites de confianza edad 1 .229 1 .131 1 .337
Asociacion de probabilidades predichas y respuestas observadas Concordancia de porcentaje Discordancia de porcentaje Porcentaje ligado Pares 92 .6 2 .0 5 .4 2100 D de Somers Gamma Tau - a c 0 .906 0 .958 0 .384 0 .953
Intervalo de confianza de Wald para los parametros Parametro Intercept edad Estimador -12 .5016 0 .2066 95 % Limites de confianza -17 .5104 0 .1228 -7 .4929 0 .2904
Intervalo de confianza de verosimilitud del perfil para cocientes de disparidad ajustados Efecto edad Unidad 10 .0000 Estimador 7 .892 95 % Limites de confianza 3 .881 21 .406
40
41