Regresión Logística en Datos Categóricos
Regresión Logística en Datos Categóricos
Introducción
Es uno de los procedimientos estadı́sticos más utilizados en la práctica usando datos
categóricos.
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)
1
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 ó π(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ás pronunciada se obtiene cuando π(x) = 0,50; el correspondiente
valor de x es
α
x=− ,
β
ya que
0,5
log = 0 = α + βx
1 − 0,5
y se denomina nivel mediano efectivo (EL50 ). Representa el valor al que los resultados
tienen una probabilidad igual a 0.50.
El parámetro α no suele tener un interés especial.
2
Ejemplo
En los cangrejos cacerola hembra: ¿el hecho de que tengan algún amante depende de
la anchura de su caparazón? ¿El tamaño 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ón. Se
construye la variable a partir de la variable original que recoge el número de amantes.
tabla <- [Link] ( " http : / / [Link] / stat557 / data / [Link] " ,
header =T , sep = " \ t " )
dimnames ( tabla )[[2]] = c ( " color " ," spine " ," width " ," satell " ," weight " )
names ( tabla )
summary ( [Link] )
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))
3
X11 ()
par ( family = " sans " )
plot ( tabla $ width [ ind ] , [Link] $ 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 ] , [Link] $ fit [ ind ] -
1 .96 * [Link] $ se [ ind ] , lty =3 , col = " blue " , lwd =2)
lines ( tabla $ width [ ind ] , [Link] $ fit [ ind ] +
1 .96 * [Link] $ se [ ind ] , lty =3 , col = " blue " , lwd =2)
summary ( [Link] )
4
Call :
glm ( formula = [Link] ∼ tabla $ width , family = binomial , data = tabla )
Deviance Residuals :
Min 1Q Median 3Q Max
-2 .0281 -1 .0458 0 .5480 0 .9066 1 .6942
Coefficients :
Estimate Std. Error z value Pr ( >| z |)
( 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
confint ( [Link] )
2 .5 % 97 .5 %
( Intercept ) -17 .8100090 -7 .4572470
tabla $ width 0 .3083806 0 .7090167
5
En este caso, el odds de la respuesta para x es
π(x) x
= eα eβ
1 − π(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
π
b(x)
log π (x)) = −12,35 + 0,497x
= logit (b
1−π b(x)
De este modo, los odds estimados para cada cm de incremento de anchura en el caparazón
implica multiplicar por eβ = exp(0,497) = 1,64. Es decir, hay un incremento del 64 %
b
6
exp (α + βx)
π
b(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)
Ası́ los odds son
0,6729
= 2,057
1 − 0,6729
Si aumentamos una unidad x, es decir se toma x = 27,3, entonces
exp (−12,35 + 0,497 · 27,3)
π
b(x) = = 0,772
1 + exp (−12,35 + 0,497 · 27,3)
de modo que los odds son
0,772
= 3,386
1 − 0,772
de manera que
3,386
log = log(1,646) = 0,497 = β
2,057
7
Modelos Logit con predictores categóricos
Supongamos que se tiene una variable independiente categórica (factor) X con I
categorı́as. Representamos entonces los datos en una tabla I × 2 donde en la primera
columna están los yi (i = 1, . . . , I) el número de éxitos en las ni pruebas correspondientes
a cada categorı́a y en la segunda el número de fracasos.
Se tiene, entonces, que cada yi se distribuye como una binomial Bin(πi , ni ).
El modelo logit con un factor serı́a
πi
logit[P (Y = 1)] = log = α + βi ,
1 − πi
de modo que un valor mayor de βi implica un mayor valor de la probabilidad πi .
La parte derecha de la expresión es semejante a un modelo ANOVA unifactorial. En
este caso hay tantos parámetros βi como categorı́as, pero uno es redundante. Es decir,
con I categorı́as basta fijar I − 1 parámetros.
Una opción habitual que se considera es fijar el valor de uno de los parámetros en 0,
por ejemplo, βI = 0.
Si los valores originales no satisfacen la restricción anterior, entonces se pueden re-
codificar para que esto se cumpla. Por ejemplo, se fijan βei = βi − βI y α e = α + βI que
satisfacen βeI = 0. De este modo,
α − βI ) + (βei + βI ) = α
logit(πi ) = α + βi = (e e + βei
β1 = · · · = βI = 0
o equivalentemente
π1 = · · · = πI
8
Otra posible opción que se puede considerar es tomar
X
βi = 0
i
Ejemplo
También podemos indicar que el parámetro asociado a la primera categorı́a sea nulo:
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)
Se obtiene
9
Call : glm ( formula = malfor macione s / n ∼ Alcohol , family = binomial ,
weights = n )
Coefficients :
( Intercept ) Alcohol <1 Alcohol1 -2 Alcohol3 -5 Alcohol >=6
-5 .87364 -0 .06819 0 .81358 1 .03736 2 .26272
Ahora, de manera alternativa, se fija que la última categorı́a sea nula (βI = 0)
revAlcohol = factor ( c ( " 0 " , " <1 " , " 1 -2 " , " 3 -5 " , " >=6 " ) ,
levels = rev ( c ( " 0 " ," <1 " , " 1 -2 " , " 3 -5 " , " >=6 " )))
Se obtiene
Coefficients :
( Intercept ) revAlcohol3 -5 revAlcohol1 -2 revAlcohol <1 revAlcohol0
-3 .611 -1 .225 -1 .449 -2 .331 -2 .263
Aunque los valores de los parámetros son diferentes, las predicciones de las probabi-
lidades son las mismas con ambos modelos; es decir, no influye el hecho de fijar en 0 un
efecto u otro.
logit [Link]
1 -5 .873642 0 .002804721
2 -5 .941832 0 .002620328
3 -5 .060060 0 .006305170
4 -4 .836282 0 .007874016
5 -3 .610918 0 .026315789
10
logit [Link]
1 -5 .873642 0 .002804721
2 -5 .941832 0 .002620328
3 -5 .060060 0 .006305170
4 -4 .836282 0 .007874016
5 -3 .610918 0 .026315789
puntuaciones = c (0 , 0 .5 , 1 .5 , 4 , 7)
[Link] = glm ( malformaciones / n ∼ puntuaciones ,
family = binomial , weights = n )
summary ( [Link] )
Se obtiene
Call :
glm ( formula = malf ormacio nes / n ∼ puntuaciones , family = binomial ,
weights = n )
Deviance Residuals :
1 2 3 4 5
0 .5921 -0 .8801 0 .8865 -0 .1449 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
11
cbind ( logit = predict ( [Link] ) ,
[Link] = predict ( [Link] , type = " response " ))
logit [Link]
1 -5 .960461 0 .002572090
2 -5 .802181 0 .003011861
3 -5 .485620 0 .004128844
4 -4 .694219 0 .009065077
5 -3 .744538 0 .023100302
library ( MASS )
confint ( [Link] )
2 .5 % 97 .5 %
( Intercept ) -6 .19302366 -5 .7396968
puntuaciones 0 .01868149 0 .5234947
logit [P (Y = 1)] = α + β1 x + β2 z
x z Logit
0 0 α
1 0 α + β1
0 1 α + β2
1 1 α + β1 + β2
12
Este modelo supone que no hay interacción, es decir, el efecto de un factor es igual
a lo largo de cada categorı́a del otro factor.
Para un valor fijo 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 fijada, el odds para el éxito en x = 1 es igual a exp(β1 ) veces al odds del
éxito para x = 0.
Existe independencia condicional entre X e Y , controlando o fijando Z, si β1 = 0.
En este caso, la razón de odds común es igual a 1. Se puede aplicar, entonces el modelo
más simple a la tabla de tres variables:
logit [P (Y = 1)] = α + β2 z.
Sı́ntomas
Raza Uso AZT Si No
Blanca Si 14 93
No 32 81
Negra Si 11 52
No 12 43
13
[Link] = [Link] ( AZT = factor ( c ( " Si " , " No " ) ,
levels = c ( " No " , " Si " )) ,
Raza = factor ( c ( " Blanca " , " Negra " ) ,
levels = c ( " Negra " , " Blanca " )))
Call :
glm ( formula = cbind ( Si , No ) ∼ AZT + Raza , family = binomial ,
data = tabla )
Deviance Residuals :
1 2 3 4
-0 .5547 0 .4253 0 .7035 -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
Por tanto, la razón de odds para los que usan AZT inmediatamente después de
desarrollar sı́ntomas de SIDA serı́a exp(−0,71946) = 0,49. Un intervalo de confianza 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
14
Analysis of Deviance Table
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
The GENMOD Procedure
Algorithm converged.
Standard Wald 95 %
Parameter DF Estimate Error Confidence Limits
Chi -
Parameter Square Pr > ChiSq
Standard Wald 95 %
Parameter DF Estimate Error Confidence Limits
16
Analysis Of Parameter Estimates
Chi -
Parameter Square Pr > ChiSq
Chi -
Source DF Square Pr > ChiSq
17
Ejemplo: Cangrejos cacerola
logit [π] = α + β1 c1 + β2 c2 + β3 c3 + β4 x
donde
– π = P (Y = 1)
– x ≡ anchura (cm).
tabla <- [Link] ( " http : / / [Link] / stat557 / data / [Link] " ,
header =T , sep = " \ t " )
dimnames ( tabla )[[2]] = c ( " color " ," spine " ," width " ," satell " ," weight " )
names ( tabla )
library ( MASS )
confint ( [Link] )
18
newdata = [Link] ( width = seq (18 , 34 , 1) , [Link] = " 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))
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 " )
text ( x =29 , y = res3 [24 - 17] , " Color 3 " , adj = c (0 , 0) , col = " red " )
19
Call :
glm ( formula = [Link] ∼ [Link] + width , family = binomial ,
data = tabla )
Deviance Residuals :
Min 1Q Median 3Q Max
-2 .1124 -0 .9848 0 .5243 0 .8513 2 .1413
Coefficients :
Estimate Std. Error z value Pr ( >| z |)
( Intercept ) -12 .7151 2 .7617 -4 .604 4 .14e -06 ***
[Link] - oscuro 1 .1061 0 .5921 1 .868 0 .0617 .
[Link] 1 .4023 0 .5484 2 .557 0 .0106 *
[Link] - claro 1 .3299 0 .8525 1 .560 0 .1188
width 0 .4680 0 .1055 4 .434 9 .26e -06 ***
---
Signif. codes : 0 ’* * * ’ 0 .001 ’* * ’ 0 .01 ’* ’ 0 .05 ’. ’ 0 .1 ’ ’ 1
20
2 .5 % 97 .5 %
( Intercept ) -18 .45674069 -7 .5788795
[Link] - oscuro -0 .02792233 2 .3138635
[Link] 0 .35269965 2 .5260703
[Link] - claro -0 .27377584 3 .1356611
width 0 .27128167 0 .6870436
21
Consideramos ahora el modelo, solo con la variable anchura, usando SAS:
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 ;
RUN ;
22
The GENMOD Procedure
Algorithm converged.
Response Profile
1 Event 111
2 Nonevent 62
Intercept
Intercept and
Criterion Only Covariates
23
Testing Global Null Hypothesis : BETA =0
Standard Wald
Parameter DF Estimate Error Chi - Square Pr > ChiSq
Point 95 % Wald
Effect Estimate Confidence Limits
24
Ejemplo admsiones en postgrado de una universidad con SAS
Un investigador/a está interesado en analizar cómo las variables gre (Graduate Re-
cord Exam), gpa (promedio de calificaciones) y el prestigio de la universidad, afectan
en la admisión 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 conti-
nuas. La variable rank toma los valores de 1 a 4. Las instituciones con un rango igual
a 1 tienen el prestigio más alto, mientras que aquellos con un rango de 4 tienen el más
bajo.
Los datos se encuentran en
[Link]
25
The MEANS Procedure
Variable Maximum
------------------------
GRE 800 .0000000
GPA 4 .0000000
------------------------
Cumulative Cumulative
RANK Frequency Percent Frequency Percent
---------------------------------------------------------
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
Cumulative Cumulative
ADMIT Frequency Percent Frequency Percent
----------------------------------------------------------
0 273 68 .25 273 68 .25
1 127 31 .75 400 100 .00
ADMIT RANK
Frequency |
Percent |
Row Pct |
Col Pct | 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
26
Para modelizar los 1’s en lugar de los 0’s, se usa la opción descending. Esto se hace
ası́, porque de manera predeterminada, el PROC logistic modeliza los 0’s en lugar de
los 1’s. En este caso, eso significarı́a modelizar la predicción de la probabilidad de no
entrar en el curso (admit=0) frente a entrar (admit=1).
Ambos modelos son equivalentes pero tiene conceptualmente más sentido modelizar
la probabilidad de entrar el curso que de no hacerlo. La opción param=ref indica la
codificación mediante variables dummy para los niveles de rank.
Response Profile
Ordered Total
Value ADMIT Frequency
1 1 127
2 0 273
RANK 1 1 0 0
2 0 1 0
3 0 0 1
4 0 0 0
Intercept
Intercept and
Criterion Only Covariates
27
Testing Global Null Hypothesis : BETA =0
Wald
Effect DF Chi - Square Pr > ChiSq
Standard Wald
Parameter DF Estimate Error Chi - Square Pr > ChiSq
Se muestran los coeficientes, los errores estándar, los estadı́sticos y sus p-valores. Los
coeficientes para gre y gpa son significativos, ası́ como los términos correspondientes a
rank=1 y rank=2 (con respecto a la categorı́a base rank=4).
Los coeficientes de la regresión logı́stica muestran el cambio en el logaritmo de los
odds cuando se incrementa en una unidad la variable predictora correspondiente.
28
Por cada cambio en una unidad de gre, el logaritmo del odds de la admisión frente
a la no admisión se incrementa en 0.002.
Por cada cambio en una unidad de gpa, el logaritmo del odds de la admisión frente
a la no admisión se incrementa en 0.804.
Los coeficientes para las categorı́as de rank tienen una interpretación 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ón por 1.55.
Point 95 % Wald
Effect Estimate Confidence Limits
29
proc logistic data =" binary " descending ;
class rank / param = ref ;
model admit = gre gpa rank ;
contrast ’ rank 2 vs 3 ’ rank 0 1 -1 / estimate = parm ;
run ;
Wald
Contrast DF Chi - Square Pr > ChiSq
Standard
Contrast Type Row Estimate Error Alpha
Se pueden usar también las probabilidades predichas para interpretar mejor el mo-
delo. Se estiman las probabilidades predichas de admisión cuando gre cambia de 200 a
800 (en incrementos de 100). Cuando se estiman las probabilidades predichas se man-
tiene gpa constante en 3.39 (que es su media), y rank en 2 (poniendo rank 0 1 0).
El término intercept seguido de un 1 indica que se incluye también en el modelo la
constante.
30
proc logistic data =" 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 ;
Wald
Contrast DF Chi - Square Pr > ChiSq
Standard
Contrast Type Row Estimate Error Alpha Confidence Limits
31
Contrast Rows Estimation and Testing Results
Wald
Contrast Type Row Chi - Square Pr > ChiSq
32
Estrategias en la selección de modelos
Para un conjunto de datos con una respuesta binaria y múltiples variables predic-
toras, una pregunta fundamental es ¿cómo seleccionar un modelo de regresión logı́stica
adecuado?
Se presentan los mismos problemas que en la regresión ordinaria. Ası́, el proceso de
selección de un modelo adecuado se hace difı́cil cuando el número de variables explica-
tivas aumenta, porque aumentan a su vez los posibles efectos e interacciones.
Hay dos objetivos contrapuestos: el modelo debe ser lo suficientemente complejo
como para adaptarse bien a los datos, pero los modelos más simples son más fáciles de
interpretar. Es decir, es mejor encontrar una versión suavizada en lugar de un sobreajuste
de los datos.
– Selección stepwise.
– Información de Akaike:
33
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ón. Se plantea un
modelo de regresión logı́stica para predecir si una hembra tiene amantes o no. Es decir,
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 de
más oscuro a más claro (respecto al total de 4 colores) y (s1 , s2 ) denota a las variables
indicadoras de las dos primeras condiciones de la espina (de las 3 que hay).
Se considera el modelo
tabla <- [Link] ( " http : / / [Link] / stat557 / data / [Link] " ,
header =T , sep = " \ t " )
dimnames ( tabla )[[2]] = c ( " color " ," spine " ," width " ," satell " ," weight " )
names ( tabla )
tabla $ [Link] <- factor ( tabla $ color , levels = c ( " 5 " , " 4 " , " 3 " , " 2 " ))
tabla $ [Link] <- factor ( tabla $ spine , levels = c ( " 3 " , " 2 " , " 1 " ))
34
# 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 )
Call :
glm ( formula = [Link] ∼ [Link] + [Link] + width + I ( weight / 1000) ,
family = binomial , data = tabla )
Deviance Residuals :
Min 1Q Median 3Q Max
-2 .1977 -0 .9424 0 .4849 0 .8491 2 .1198
Coefficients :
Estimate Std. Error z value Pr ( >| z |)
( Intercept ) -9 .2734 3 .8378 -2 .416 0 .01568 *
C.fac4 1 .1198 0 .5933 1 .887 0 .05910 .
C.fac3 1 .5058 0 .5667 2 .657 0 .00788 * *
C.fac2 1 .6087 0 .9355 1 .720 0 .08552 .
S.fac2 -0 .4963 0 .6292 -0 .789 0 .43024
S.fac1 -0 .4003 0 .5027 -0 .796 0 .42588
width 0 .2631 0 .1953 1 .347 0 .17788
I ( weight / 1000) 0 .8258 0 .7038 1 .173 0 .24069
---
Signif. codes : 0 ’* * * ’ 0 .001 ’* * ’ 0 .01 ’* ’ 0 .05 ’. ’ 0 .1 ’ ’ 1
Correlation of Coefficients :
( Intercept ) C.fac4 C.fac3 C.fac2 S.fac2 S.fac1 width
C.fac4 -0 .13
C.fac3 -0 .07 0 .72
C.fac2 0 .00 0 .45 0 .55
S.fac2 -0 .22 -0 .07 -0 .17 -0 .25
S.fac1 -0 .01 -0 .03 -0 .21 -0 .37 0 .24
width -0 .96 0 .02 -0 .03 -0 .03 0 .19 0 .02
I ( weight / 1000) 0 .67 -0 .01 0 .00 -0 .04 -0 .09 -0 .04 -0 .83
35
Los resultados que se obtienen con la fución step y con la función stepAIC de la
librerı́a MASS son:
---------------------------------------------------------------------
Df Deviance AIC
< none > 187 .46 197 .46
- [Link] 3 194 .45 198 .45
- width 1 212 .06 220 .06
Call : glm ( formula = [Link] ∼ [Link] + width , family = binomial , data = tabla )
Coefficients :
( Intercept ) C.fac4 C.fac3 C.fac2 width
-12 .715 1 .106 1 .402 1 .330 0 .468
Por tanto, en el modelo final solo se incluyen las variables anchura y colores del
caparazón.
36
Curvas ROC: resumen de la potencia predictiva
Para comprobar la efectividad de un modelo en la clasificación de observaciones,
se puede construir una tabla de clasificación donde se cruza el verdadero valor de la
observación (1 ó 0), con la predicción de la misma según el modelo que se considera.
La predicción se suele hacer con respecto a un valor de referencia arbitrario π0 :
ybi = 1 si π
bi > π0
mientras que
bi ≤ π0
ybi = 0 si π
P (b
y = 1|y = 1)
P (b
y = 0|y = 0)
Curvas ROC
37
Cuando π0 está cerca de 1 casi todas las predicciones serán yb = 0, con lo cual
la sensibilidad estará próxima a 0 y la especificidad estará cerca de 1. Ası́, el punto
(1 – especificidad, sensibilidad) tendrá coordenadas (0, 0). Para una especificidad dada
(fijando un valor en el eje de abscisas), la mayor potencia predictiva corresponde a la
sensibilidad más alta (mayor valor en el eje de ordenadas), de modo que cuanto mayor
sea el área bajo la curva ROC mayor será la potencia de predicción.
library ( verification )
# Se consideran valores 0 -1 frente a probabilidades pi _ i
suceso = c (0 ,0 ,0 ,1 ,1 ,1 ,0 ,1 ,1 ,0 ,0 ,0 ,0 ,1 ,1)
p = c (0 .928 ,0 .576 ,0 .008 ,0 .944 ,0 .832 ,0 .816 ,0 .136 ,
0 .584 ,0 .032 ,0 .016 ,0 .28 ,0 .024 ,0 ,0 .984 ,0 .952 )
A = [Link] ( suceso , p )
[Link] ( A $ suceso , A $ p ) # Dibujo la ROC
[Link] ( A $ suceso , A $ p ) # Area bajo ROC ( Ho : A =0 .5 )
Se obtiene
38
A
[1] 0 .875
[Link]
[1] 15
[Link]
[1] 7
[Link]
[1] 8
[Link]
[1] 0 .006993007
Se pueden dibujar varias curvas ROC de distintos modelos para comparar su potencia
de predicción. Esta potencia se mide en términos del área debajo de la curva. Un área
igual a 0.5 representa al peor modelo y un área igual a 1 al mejor.
39
40
Ejemplo de curva ROC con SAS
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 ;
La opción scale=none se pone para calcular los estadı́sticos de ajuste sin corregir
para overdispersion, La opción rsquare se usa para calcular los estadı́sticos de tipo R2
generalizados. La opción clparm=wald muestra los intervalos para los parámetros de la
regresión logı́stica. La opción units muestra los estimadores de la razón de odds para
el cambio de 10 años en la variable edad. La opción clodds=pl se pone para obtener los
intervalos de confianza para las razones de odds. La opción outroc=roc1 muestra una
curva ROC.
El área que hay bajo la curva ROC aparece en el estadı́stico c en la tabla deno-
minada Association of Predicted Probabilities and Observed Responses (Aso-
ciación de probabilidades predichas y respuestas observadas). En este ejemplo, el área
bajo la curva ROC es igual a 0.953.
41
symbol1 i = join v = none c = lightblue ;
goptions device = png gsfname = graphout ;
filename graphout " ROC _ SAS . png ";
PROC gplot data = roc1 ;
title ’ Curva ROC ’;
plot _ sensit _ * _ 1 mspec _ =1 / vaxis =0 to 1 by .1
cframe = lightgrey ;
RUN ;
Standard Wald
Parameter DF Estimate Error Chi - Square Pr > ChiSq
Point 95 % Wald
Effect Estimate Confidence Limits
42
43