ejemplo regresión logística

30
Regresi´ on log´ ıstica: ¿Cu´ ales son los determinantes de un infarto al coraz´ on? ector Garrido Henr´ ıquez * Profesor: Luis Firinguetti Limone Modelos Lineales Mag´ ıster en Matem´ atica Menci´ on Estad´ ıstica Universidad del B´ ıo-B´ ıo 4 de enero de 2016 Resumen En este informe se analizan los determinantes de un infarto al coraz´ on 1

Upload: hector-manuel-garrido-henriquez

Post on 13-Apr-2016

25 views

Category:

Documents


0 download

DESCRIPTION

Se aplica un modelo de regresión logística a datos de salud. Se ilustran aspectos tales como la violación de supuestos e interpretación de efectos marginales

TRANSCRIPT

Page 1: Ejemplo regresión logística

Regresion logıstica: ¿Cuales son los

determinantes de un infarto al corazon?

Hector Garrido Henrıquez*

Profesor: Luis Firinguetti Limone

Modelos Lineales

Magıster en Matematica Mencion Estadıstica

Universidad del Bıo-Bıo

4 de enero de 2016

Resumen

En este informe se analizan los determinantes de un infarto al corazon

1

Page 2: Ejemplo regresión logística

Indice

1. Introduccion 3

1.1. El modelo de regresion logıstica . . . . . . . . . . . . . . . . . . . . . . . . . 3

1.2. Descripcion de los datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2. Estimacion e interpretacion del modelo propuesto 5

2.1. Contrastes de significancia global . . . . . . . . . . . . . . . . . . . . . . . . 8

2.1.1. Deviance o desviacion . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2.1.2. Contraste de Wald . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8

2.2. Odds Ratios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9

2.3. Efectos marginales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

2.3.1. Efectos marginales promedio . . . . . . . . . . . . . . . . . . . . . . . 11

3. Bondad de ajuste 13

3.1. Bondad de ajuste: Enfoque parametrico . . . . . . . . . . . . . . . . . . . . . 13

3.1.1. Docima de Hosmer-Lemeshow . . . . . . . . . . . . . . . . . . . . . . 13

3.1.2. R2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

3.2. Bondad de ajuste: Enfoque no parametrico . . . . . . . . . . . . . . . . . . . 14

3.2.1. Curva ROC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

4. Diagnostico del modelo 17

4.1. Deteccion de valores atıpicos . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

4.2. Normalidad de los residuos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

4.3. Especificacion del modelo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

5. Conclusiones 24

6. Referencias 24

7. Anexo 24

7.1. Codigo R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

2

Page 3: Ejemplo regresión logística

1. Introduccion

Si bien el modelo lineal general (lease OLS) es un modelo muy util en un sinfın de

disciplinas, muchos fenomenos interesantes de la vida real no pueden representarse a traves

de variables cuantitativas como dicho metodo demanda. Es comun observar variables medidas

en escalas ordinales o nominales, sobre todo en ciencias sociales y medicas.

Para salvar esta dificultad surge una amplia gama de modelos llamados modelos lineales

generalizados en que todos ellos comparten la caracterıstica de pertenecer a la denominada

famila exponencial, una familia de distribuciones con propiedades estadısticas comunes. Lo

que amplia significativamente el abanico de posibilidades para modelar.

Dentro de esta familia existen varios modelos adecuados, bajo diferentes circunstancias,

para analizar variables dependiente de tipo binario, aunque por lejos, el mas famoso de todos

es el modelo logit, aunque el modelo probit le sigue bastante de cerca.

En este trabajo se intentara modelar la probabilidad de padecer un infarto al corazon a

partir de un set de variables asociadas a historial medico, caracterısticas y habitos saludables

para una muestra de 462 individuos. Se estima un modelo de regresion logıstica para a conti-

nuacion realizar un analisis exhaustivo con respecto a su estimacion, contrastes de hipotesis

y violacion de supuestos

1.1. El modelo de regresion logıstica

Sea xi un vector fila en el que se encuentra un patron de covariables para cada unidad

muestrla i y β un vector que contiene los parametros a estimar. Un modelo logit se caracteriza

por tener una funcion de enlace de la forma1:

g(πi) = logit(πi) = log

(πi

1− πi

)= x′iβ (1.1)

Esta funcion de enlace tiene la ventaja ademas de que permite obtener una interpretacion

directa de los coeficientes del modelo siempre y cuando se aplique antilogaritmo a la expresion

anterior.

πi1− πi

= exp(xiβ) (1.2)

Ası tambien, las probabilidades de observar un exito y un fracaso pueden obtenerse facil-

1log se refiere al logaritmo natural

3

Page 4: Ejemplo regresión logística

mente

πi =exp(xiβ)

1 + exp(xiβ)1− πi =

1

1 + exp(xiβ)

Para estimar los parametros β y por tanto las πi es necesario utilizar el siguiente modelo.

Sean y1, ..., yn realizaciones de una variable aleatoria Yi ∼ binomial(ni, πi), donde ni corres-

ponde al numero de unidades muestrales con un mismo patron de covariables. La funcion de

masa de probabilidad de cada variable aleatoria Yi es entonces

P (Yi = yi) =

(niyi

)πyii (1− πi)ni−yi , yi = 0, 1, ..., ni (1.3)

Si denotamos a Λ como un vector con las probabilidades de cada individuo de la muestra y

y un vector de realizaciones de las variables aleatorias Yi, ..., Yn. Podemos escribir la funcion

de verosimilitud como

L(Λ,y) = L(π1, π2, ..., πn; y1, ..., yn) =n∏i=1

(niyi

)πyii (1− πi)ni−yi (1.4)

=n∏i=1

(niyi

)(πi

1− πi

)yi(1− πi)ni (*)

Si a la expresion (*) se le aplica logaritmo natural a ambos lados tendremos

l(Λ,y) =n∑i=1

[yi log

(πi

1− πi

)+ ni log(1− πi) + log

(niyi

)](1.5)

Si nos centramos en el argumento de la suma anterior, es facil identificar a dicha funcion

como parte de la familia exponencial pues

a(y) = y b(π) = log

1− π

)c(π) = ni log(1− π) d(y) = log

(n

yi

)Tiene la forma canonica de la familia exponencial si recordamos que esta es

L(θ,y) = exp {a(y)b(θ) + c(θ) + d(y)} (1.6)

Ademas, si consideramos las expresiones obtenidas al comienzo, finalmente la funcion de

4

Page 5: Ejemplo regresión logística

Cuadro 1: Descripcion de variables

Variable Descripcion

inf

Es una variable dicotomica que tomael valor 1 si el individuo tieneantecedentes familiares de infarto ycero de lo contrario

tabacTabaco acumulado en los pulmonesmedido en kilogramos

tipoaEs una escala que mide la propensiondel individuo a sufrir estres, va demenor a mayor

alc Consumo corriente de alcoholedad Edad del individuo

log-verosimilitud es

l(Λ,y) =n∑i=1

[yi(x

′iβ)− log(1 + exp(x′iβ) + log

(niyi

)](1.7)

De esta manera, para estimar los parametros β se utilizan indistintamente los procedimientos

inherentes a la familia exponencial.

1.2. Descripcion de los datos

Las variables del modelo se describen a continuacion

2. Estimacion e interpretacion del modelo propuesto

Para realizar inferencias sobre la significancia individual de cada coeficiente estimado en

un modelo de regresion logıstica, es necesario recurrir al teorema central del limite a traves del

cual puede afirmarse que en la medida en que una variable aleatoria se acerca a su verdadero

valor poblacional y se escala esta diferencia por el error estandar de dicho estadıstico este

converge en distribucion a una normal estandar

βj − βjee(βj)

d−−−→n→∞

N(0, 1). (2.1)

Es necesario, ser cautos al utilizar este resultado, pues su validez es asintotica. Esto significa

que en modelos lineales generalizados, es necesario contar con muestras grandes para asegurar

5

Page 6: Ejemplo regresión logística

el cumplimiento de este supuesto.

Las hipotesis en que estamos interesados son las siguientes

H0 : βj = 0 vs H1 : βj 6= 0

De esta forma, el contraste consiste en comparar el estadıstico z calculado vs el valor cuantil

de la distribucion normal estandar (valor crıtico) asociado a un nivel de significacion fijado

por el investigador2, o en otras palabas, la maxima probabilidad de cometer error de tipo I3

que se esta dispuesto a tolerar.

La regla entonces para decidir si un estadıstico βj pertenece a la region de rechazo R es

la siguiente: ∣∣∣∣∣ βj

ee(βj)

∣∣∣∣∣ > z1−α/2 (2.2)

Con base en los resultados del modelo provistos en el cuadro 2 puede afirmarse que

con un nivel de significancia de 5 %, el valor crıtico para el estadıstico z es asociado es de

aproximadamente 1.9. Por lo tanto

hist: Se rechaza la hipotesis H0 : β1 = 0 pues el estadıstico z calculado (4.271) es mayor

al valor crıtico asociado a α = 5 %. Ademas, el valor p, P (z ∈ R|H0 es cierta) = 0,00002

es una probabilidad de equivocarse al rechazar mas pequena que el nivel de significancia

tabac: Se rechaza la hipotesis H0 : β2 = 0 pues el estadıstico z calculado (3.148) es

mayor al valor crıtico asociado a α = 5 %. Ademas, el valor p, P (z ∈ R|H0 es cierta) =

0,002 es una probabilidad de equivocarse al rechazar mas pequena que el nivel de

significancia

tipoa: Se rechaza la hipotesis H0 : β3 = 0 pues el estadıstico z calculado (3.190) es

mayor al valor crıtico asociado a α = 5 %. Ademas, el valor p, P (z ∈ R|H0 es cierta) =

0,002 es una probabilidad de equivocarse al rechazar mas pequena que el nivel de

significancia

alc: No puede rechazarse la hipotesis nula H0 : β4 = 0 pues el estadıstico z cal-

culado (-0.10) es menor al valor crıtico asociado. De esta forma el valor p, P (z ∈R|H0 es cierta) = 0,919 > 0,05 = α

2usualmente 10 %, 5 % y 1 %3La probabilidad de rechazar la hipotesis nula dado que esta es verdadera

6

Page 7: Ejemplo regresión logística

Cuadro 2: Resultados de la regresion

Infarto al miocardio

Infarto

Historia familiar 0.954t = 4.271(0.223)

p = 0.00002∗∗∗

Tabaco Acumulado 0.084t = 3.148(0.027)

p = 0.002∗∗∗

Comportamiento tipo A 0.038t = 3.190(0.012)

p = 0.002∗∗∗

Alcohol −0.0004t = −0.102

(0.004)p = 0.919

Edad 0.055t = 5.522(0.010)

p = 0.00000∗∗∗

Constant −5.932t = −6.714

(0.884)p = 0.000∗∗∗

Observations 462Log Likelihood −242.352Akaike Inf. Crit. 496.704

Note: ∗p<0.1; ∗∗p<0.05; ∗∗∗p<0.01Errores estandar entre parentesis

7

Page 8: Ejemplo regresión logística

edad:Se rechaza la hipotesis H0 : β5 = 0 pues el estadıstico z calculado (5.522) es mayor

al valor crıtico asociado a α = 5 %. Ademas, el valor p, P (z ∈ R|H0 es cierta) = 0,00000

es una probabilidad de equivocarse al rechazar mas pequena que el nivel de significancia

2.1. Contrastes de significancia global

2.1.1. Deviance o desviacion

En este caso la log verosimilitud del modelo propuesto se compara con la log verosimilitud

de un modelo minimal, en que todos los πi son iguales, es decir

π =

∑ni=1 yi∑ni=1 ni

(2.3)

El estadıstico de contraste puede escribirse como

D = 2[l(Λ; y)]− l(Λ; y)] (2.4)

Donde D ∼ χ2(p−1)

Estadıstico gl p.value1 111.40 5.00 0.00

2.1.2. Contraste de Wald

La idea que subyace al contraste de Wald es bastante sencilla, construiremos un estadıstico

dado por

W = βlIβl (2.5)

Donde βl es un subconjunto de coeficientes estimados I es la matriz de informacion de Fisher

para dicho subconjunto. Este estadıstico sigue una distribucion χ2(l) donde l es el numero de

parametros a docimar. En este caso incluimos todos los parametros del modelo a excepcion

del intercepto, de manera que el contraste es

H0 : β1 = ... = βp = 0 vs H1 : βj 6= 0

Si podemos rechazar la hipotesis nula, esto indica evidencia estadıstica para afirmar que los

parametros utilizados son importantes para explicar el fenomeno en cuestion

8

Page 9: Ejemplo regresión logística

Estadıstico gl p.value1 77.93 5.00 0.00

2.2. Odds Ratios

Los coeficientes β obtenidos al realizar la regresion no son directamente interpretables.

Sin embargo, una manera de darles significado a estos es a traves de los odds ratios4. Los

que pueden calcularse de la siguiente forma: Sea xk+1 una variable explicativa de caracter

dicotomico, de manera que

πi1− πi

= exp(x′iβ) = exp(β1 + β2x1 + ...+ βk) (2.6)

Sea la razon entre exitos y fracasos para el individuo i y sea

πi′

1− πi′= exp(x′i′β) = exp(β1 + β2x1 + ...+ βk−1xk)

la razon entre exitos y fracasos para el individuo i′. Es decir, la unica diferencia entre ambos

individuos es la ausencia de la variable xk+1 para el individuo i′. Una medida de riesgo

relativo, entre ambos individuos y sus razones de exito fracaso puede expresarse como

πi/(1− πi)πi′/(1− πi′)

=exp(β1 + β2x1 + ...+ βk)

exp(β1 + β2x1 + ...+ βk−1xk)= exp(βk) (2.7)

Esta expresion puede leerse como, en cuantas veces aumenta el riesgo relativo de un individuo

frente a la presencia o ausencia de determinada caracterıstica. Naturalmente, para variable

ordinales, el resultado puede extenderse con facilidad para expresar el paso de un estado a

otro. Ası tambien para variables continuas, cuya relacion con el log odds sea lineal, puede in-

terpretarse como un aumento del riesgo relativo frente a cambios equiespaciados, usualmente

la unidad.

OddsRatio Std. Err. z P>|z|histPresente 2.60 0.58 4.27 0.00

tabac 1.09 0.03 3.15 0.00tipoa 1.04 0.01 3.19 0.00

alc 1.00 0.00 -0.10 0.92edad 1.06 0.01 5.52 0.00

4Para la estimacion de los odds ratios se ha utilizado el paquete mfx de R, sin embargo, dicho paquetetiene un error, pues incorpora los errores estandar de la regresion en sus resultados en lugar de los erroresestandar obtenidos por el metodo delta.

9

Page 10: Ejemplo regresión logística

Para el modelo en comento, podemos observar lo siguiente:

hist Si una persona presenta un historial familiar de infarto, manteniendo todo lo demas

constantes, su odds de padecer un infarto es 260 % mayor que una que no lo presenta

tabac

Si una persona presenta un kilograma de tabaco acumulado mas que otra, manteniendo

todo lo demas constante, su odds de padecer un infarto es 109 % mayor.5

tipoa

Si una persona presenta un punto mas que otra en la escala de estres, manteniendo

todo lo demas constante, su odds aumenta en 104 %.

alc Si una persona presenta un consumo de alcohol de un punto mayor que otra, mante-

niendo todo lo demas constante, su odds es 100 % mayor.

edad

Un ano de aumento en la edad implica que el odds aumenta 100 %

2.3. Efectos marginales

Sea

πi =exp(x′iβ)

1 + exp(x′iβ)(2.8)

la probabilidad de que un individuo con un patron de covariables xi tenga determinada

caracterıstica de interes (en nuestro caso un infarto al corazon), podemos estar eventualmente

interesados en determinar cuanto aumenta dicha probabilidad cuando varıa alguna de las

variables predictoras. Esto en un modelo lineal es trivial pues el cambio marginal en la

variable respuesta es exactamente βj6 Naturalmente en un modelo no lineal, esto no ocurre,

por lo que para interpretar los coeficientes estimados se necesita un poco mas de trabajo. El

efecto marginal o contribucion marginal de un cambio en la variable xj a la probabilidad de

observar la caracterıstica de interes sera entonces:

∂πi∂xij

=∂

∂xij

[exp(x′iβ)

1 + exp(x′iβ)

]= πi(1− πi)βj (2.9)

5En el documento se describio a la variable como kg acumulados, quiza hablar de kilogramos sea raro,pero preferı seguir la pauta en lugar de realizar el ejemplo en relacion a una escala de medida mas pequena,quiza gramos

6 ∂Y∂xij

= βj

10

Page 11: Ejemplo regresión logística

Como se desprende de la ecuacion anterior, los efectos marginales de un modelo lineal, a

diferencia de lo que ocurre en un modelo lineal, incorporan la influencia de todas las demas

covariables sobre la variacion del fenomeno interes. Dicho efecto marginal es unico entonces

para cada individuo de acuerdo a su patron de covariables, pero utilizar estos entonces puede

ser poco informativo, un enfoque bastante aceptado en la practica es el uso de los llamados

efectos marginales promedio, que no es mas que calcular la media de los efectos marginales

individuales, es decir

AME =1

n

n∑i=1

πi(1− πi)βj. (2.10)

De manera mas general, puede resumirse la expresion anterior en terminos vectoriales. Sea

Λ(X′β) un vector con las probabilidades predichas para cada individuo, entonces, el vector

de efectos marginales sera:

∂Λ(X′β)

∂X′β= Λ(X′β)[1− Λ(X′β)]β = Λ[1− Λ]β (2.11)

Para calcular los errores estandar suele recurrirse al metodo delta, de manera que si g(β) =

Λ[1−Λ]β es una transformacion del modelo original, su matriz de covarianzas ha de obtenerse

a traves del metodo delta, de manera que para ello es primero necesario obtener el termino

Λ[1− Λ]∂β

β′+ β

∂Λ[1− Λ]

∂X′β

∂X′β

∂β= Λ[1− Λ]I +

∂Λ[1− Λ]

∂X′ββX′

∂Λ[1− Λ]

∂X′β= Λ(1− Λ)[1− 2Λ]

Con esto en mente, puede obtenerse la matrix de covarianzas de los efectos marginales como:

V ar(g(β)) = [Λ(1− Λ)]2[I + (1− 2Λ)]V[I + (1− 2Λ)Xβ] (2.12)

Donde V es la matriz de covarianzas asintotica de β, obtenida como de costumbre

2.3.1. Efectos marginales promedio

. Para nuestro caso los efectos marginales se presentan a continuacion

11

Page 12: Ejemplo regresión logística

dF/dx Std. Err. z P>|z|histPresente 0.18 0.04 4.27 0.00

tabac 0.01 0.00 2.97 0.00tipoa 0.01 0.00 3.01 0.00

alc -0.00 0.00 -0.10 0.92edad 0.01 0.00 4.76 0.00

Cuadro 3: Efectos marginales promedio

Los resultados del cuadro 3 pueden interpretarse de la siguiente forma7

Historia Familiar

Si un individuo tiene antecedentes de infarto en su familia, su probabilidad de padecer

la enfermedad aumenta en 18 %, en promedio

Tabaco

Por cada kg de tabaco acumulado la probabilidad de sufrir un infarto aumenta 1 %, en

promedio

Comportamiento Tipo A

Por cada punto de aumento en la escala la probabilidad de padecer un infarto aumenta

un 1 %

Alcohol

El alcohol tiene un efecto insignificante sobre la probabilidad de padecer un infarto

Edad

Por cada ano, la probabilidad de padecer un infarto aumenta un 1 %, en promedio

7Para la estimacion de los efectos marginales (cuadro 3) se ha utilizado el paquete mfx de R, sin embargo,dicho paquete tiene un error, pues incorpora los errores estandar de la regresion en sus resultados en lugarde los errores estandar obtenidos por el metodo delta. Los efectos marginales estimados fueron programadosy se verifico que los resultados son iguales, no ası para el caso de los errores estandar. De todas maneras,dichos errores estandar no son presentados en el informe por falta de tiempo

12

Page 13: Ejemplo regresión logística

3. Bondad de ajuste

3.1. Bondad de ajuste: Enfoque parametrico

3.1.1. Docima de Hosmer-Lemeshow

Si el patron de covariables entre los individuos no es lo suficientemente numeroso (Vease

seccion 4.2) como ocurre cuando hay variables continuas como predictoras. El metodo de

bondad de ajuste de Pearson no es adecuado. Para salvar este problema Hosmer & Lemeshow

desarrollaron un contraste diferente, basado en la expresion

C =

g∑k=1

(O1k − nkπk)2

nkπk(1− πk)(3.1)

Donde

πk = 1nk

∑ckk=1mjπj

o1k =∑ck

j=1 yj

La idea tras el contraste es sencilla. Se ordenan las probabilidades predichas para toda la

muestra y se dividen en g grupos (generalmente 10). Luego se enumera el numero de indivi-

duos en cada grupo nk y se calcula el promedio de sus probabilidades predichas πk. Hosmer

& Lemeshow demostraron que dicho estadıstico de prueba sigue una distribucion χ2g−2 in-

clusive en el caso extremo en que J (el numero de patrones e covariables) sea igual a n (el

numero de individuos). Una idea intuitiva para formular la hipotesis del contraste es que si

el modelo ajusta a los datos, la diferencia entre las frecuencias observadas y el producto de

las probabilidades predichas por el numero de individuos han de ser cercanas, por lo que el

estadıstico tendra un valor cercano a cero. Ası, la hipotesis nula es

H0 : El modelo ajusta bien a los datos (3.2)

Para nuestro ejemplo y dado el problema presentado frente al uso de dos variables continuas,

podemos observar de todas formas que no se puede rechazar la hipotesis nula dados los valores

en el cuadro 4

13

Page 14: Ejemplo regresión logística

Cuadro 4: Contraste de bondad de ajuste de Hosmer-Lemeshow

statistic.Chi-cuadrado parameter.gl p.value

9.30003724917886 8 0.317620882360259

3.1.2. R2

Al igual que en modelos de regresion multiple puede ajustar una medida de bondad de

ajuste de espıritu similar a R2, aunque a diferencia de lo que ocurre en el caso lineal, dicha

medida se construye a partir de las verosimilitud en lugar de la suma de cuadrados. Dicho

estadıstico esta dado por la siguiente expresion

R2 =l(π)− l(π)

l(π)(3.3)

Donde l(π) es la log-verosimilitud del modelo propuesto y l((π)) es la log-verosimilitud del

modelo minimal. En este ejercicio el valor de R2 es de 0.187. Valor bastante aceptable para

un modelo no lineal como el logit, pues ha de recordarse que en general estos modelos tienen

valores bajos en relacion a los modelos lineales.

3.2. Bondad de ajuste: Enfoque no parametrico

3.2.1. Curva ROC

Un enfoque bastante popular en ciertas disciplinas es el uso de tablas de clasificacion para

determinar la eficacia discriminativa del modelo. Para la construccion de estas tablas de clasi-

ficacion sin embargo es necesario determina un punto de corte o umbral pues recordemos que

la probabilidad predicha es una variable continua. A partir de dicho umbral se considera que

el modelo pronostica un exito. Una tabla de clasificacion tıpica tiene la siguiente estructura

Cuadro 5: Tabla de clasificacion

PredichosObservados

1 0 total

1 Verdaderos positivos Falsos Positivos Positivos predichos0 Falsos positivos Verdaderos Negativos Negativos predichos

Total Positivos Total Negativos Total

14

Page 15: Ejemplo regresión logística

Como puede observarse los Verdaderos positivos son el numero de observaciones que el

modelo clasifica como exitos y que efectivamente lo son, mientras que los verdaderos negativos

son el numero de observaciones que el modelo clasifica como fracasos y que efectivamente lo

son. De esta manera pueden derivarse dos metricas: La sensibilidad, la cual no es mas que el

porcentaje de verdaderos positivos sobre el total de exitos y la especificidad que no es mas

que el porcentaje de verdaderos negativos sobre el total de fracasos.

Sensibilidad =Verdaderos positivos

Total Positivos(3.4)

Especificidad =Verdaderos Negativos

Total Negativos(3.5)

Ciertamente, la eleccion del umbral no es trivial. Aunque en la literatura existen variados

criterios para escoger un umbral adecuado de clasificacion, como el ındice J de Youden el

cual busca maximizar la suma entre sensibilidad y especificidad. La eleccion del umbral mas

comun es 0.5 lo cual sirve para contrastar la eficacia discriminativa cuando se le compora

con lanzar una moneda.

A pesar de la utilidad del uso de umbrales, estos siempre tendran cierto grado de arbi-

trariedad una medida mas completa del panorama de clasificacion esta dado por la curva

ROC. La curva ROC o curva de operacion caracterıstica, es una grafica que se construye

a partir de todas las posibles combinaciones entre sensibilidad y la tasa de falsos negativos

(1-especificidad). En particular, interesa el area entre dicha curva y una recta de 45 % grados

la cual indica la capacidad de discriminacion que provee lanzar una moneda. A continuacion

se presentan las posibles lecturas de acuerdo a diferentes valores del area bajo la curva ROC

(AUC)

Cuadro 6: Area bajo la curva ROC

AUC Interpretacion

AUC = 0,5Esto sugiere no discriminacion.Identico a arrojar una moneda

0,5 < AUC < 0,7Discriminacion pobre, no mucho mejorque el caso anterior

0,7 < AUC < 0,8Se considera con capacidad aceptablede discriminacion

0,8 < AUC < 0,9 Excelente capacidad de discriminacon

15

Page 16: Ejemplo regresión logística

0

5

10

15

20

25

0.00 0.25 0.50 0.75 1.00Probabilidades predichas

Fre

cuen

cia

(a) Infarto==0

0.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.7830.783

0.00

0.25

0.50

0.75

1.00

0.00 0.25 0.50 0.75 1.00Tasa Falsos Positivos (1−Especificidad)

Tasa

de

verd

ader

os p

ositi

vos

(Sen

sibi

lidad

)

(b) Curva ROC

Figura 1: Bondad de ajuste del modelo

0

5

10

15

0.00 0.25 0.50 0.75 1.00Probabilidades predichas

Fre

cuen

cia

(a) Infarto==1

0.00

0.25

0.50

0.75

1.00

0.00 0.25 0.50 0.75Probabilidades predichas

Infa

rto

al c

oraz

ón

(b) Curva ROC

Figura 2: Bondad de ajuste del modelo

16

Page 17: Ejemplo regresión logística

Las figuras 1 y 2 nos muestran varios graficos que pueden ser utilizados para evaluar

la calidad del modelo ajustado. El panel a) de la figura 1 una muestra un histograma de

probabilidades predichas para un fracaso (en este caso la ausencia de un infarto). Es de

esperar que si la distribucion de la probabilidades predichas esta sesgada en alguna direccion,

dicha direccion indica si el modelo esta en mayor o en menor medida inclinado a detectar

exitos o fracasos. Como puede observarse la distribucion parece ser simetrica, una situacion

similar ocurre con el panel a) de la figura 2, lo cual indica una buena calidad de ajuste.

Por otro lado, en el panel b) de la figura 1 puede observarse la representacion grafica

de la curva ROC junto a su indicador AUC. Puede observarse que la curva es mas bien

pronuncia y que el area bajo la curva es de 0.78, esto indica una capacidad discriminativa

del modelo bastante aceptable, cercana al punto de excelencia. Por ultimo, el panel b) de la

figura 2 muestra un diagrama de dispersion entre las probabilidades predichas y la variable

respuesta. Es de esperarse que en un modelo con buena calidad de ajuste se observe una

distribucion mas o menos pareja entre ambas categorıas, lo que tambien se cumple para el

modelo en comento.

4. Diagnostico del modelo

En este apartado se utilizaran solo aquellas observaciones con patrones de covariables

unicos, xj, como sugiere Hosmer & Lemeshow (2013).

4.1. Deteccion de valores atıpicos

Para la deteccion de valores atıpicos en un modelo de regresion logıstica existen varias

aproximaciones de naturaleza similar a las utilizadas en el modelo lineal general.

Por ejemplo, para calcular el leverage o apalancamiento de determinado patron de co-

variables Pregibon (1981, citado en Hosmer & Lemeshow 2013) sugiere utilizar la siguiente

expresion

H = V1/2X(X′VX)−1X′V1/2 (4.1)

Donde

vj = mjπ(xj)[1 − π(xj)] es el estimador de la varianza del model para cada xj y a su

vez, un elemento de la diagonal de V .

De esta manera, hj muestra el apalancamiento de cada una de las observaciones, lo que

17

Page 18: Ejemplo regresión logística

corresponde a cada j-esimo elemento de la matriz H.

hj = mjπ(xj)[1− π(xj)]︸ ︷︷ ︸vj

x′j(X′VX)−1xj︸ ︷︷ ︸bj

(4.2)

Como puede observarse cada elemento es el producto de la varianza multiplicada por un

factor que muestra la distancia entre xj y el centro del espacio de covariables x. Al igual que

en el caso de la regresion lineal multiple la suma∑J

j=1 hj es igual al numero de parametros

estimados en el modelo. Por analogıa al caso de la regresıon lineal, puede considerarse a un

patron de covariables como atıpico en la medida en que supere el umbral de 2p/n con p el

numero de parametros del modelo.

Otra estadıstica muy utilizada en el contexto del analisis de regresion logıstica es la llama-

da distancia de cook. Dicha estadıstica esta basada sobre la influencia que tiene determinada

observacion sobre los coeficientes estimados, puede ser calculada como

∆βj =r2jhj

(1− hj)2(4.3)

Donde hj es el apalancamiento y rj denota los residuos de pearson. De acuerdo a Pregi-

bon(1981, citado en Hosmer & Lemeshow (2013)) una observacion puede considerarse como

atıpica en la medida en que sea mayor que hhχ2(0,95,1) con hh =

∑Jj=1

hj/(1−hj)n

.

Otra estadıstica muy utilizada para la evaluacion de la presencia de valores atıpicos es

aquella que considera el cambio en la devianza en la medida en que se quita cada observacion,

esta puede ser calculada como

∆Dj =d2j

1− hj(4.4)

Donde dj es el residuo deviance. Como se puede desprender de la figura a continuacion a

traves de estos criterios, por separado, pueeden encontrarse numerosos valores atıpicos en la

regresion. Sin embargo, Hosmer & Lemeshow (2013) sugiere utilizar la interseccion de cada

uno de estos, es decir, aquellos que simultaneamente son valores atıpicos segun los criterios

recien descritos.

Siguiendo esta recomendacion se ha determinado que la lista de patrones de covariables

atıpicas son las correspondientes a las observaciones: 456,447,412,385,375,372,337,334,285,261,236,231,162,155,156,133,115,106,25,1.

18

Page 19: Ejemplo regresión logística

1

11 12

25

56

106 115

132 150

155

156

162

166180

187

231

236

251

285321

334

337

372375

385

398

399

411

417

450

0.02

0.04

0.06

0.08

0.00 0.25 0.50 0.75Probabilidades predichas

Leve

rage

(a) Leverage

2125

3663

106 130

132133

155

187261

307

326

334

337

346

372

385

398

456

0.00

0.05

0.10

0.00 0.25 0.50 0.75Probabilidades predichas

Coo

k's

Dis

tanc

e

(b) Distancias de cook

Figura 3: Valores atıpicos

0

2

4

6

0.00 0.25 0.50 0.75Probabilidades predichas

Del

ta D

evia

nce

(a) Delta Deviance

2136130

133

149191

261

447

456

0

5

10

15

20

0.00 0.25 0.50 0.75Probabilidades predichas

Del

ta C

hi2

(b) Delta Chi

Figura 4: Valores atıpicos

19

Page 20: Ejemplo regresión logística

Cuadro 7: Resultados de la regresion sin valores atıpicos

Dependent variable:

inf

(1) (2)

histPresente 0.954∗∗∗ 0.988∗∗∗

(0.223) (0.233)

tabac 0.084∗∗∗ 0.079∗∗

(0.027) (0.031)

tipoa 0.038∗∗∗ 0.052∗∗∗

(0.012) (0.013)

alc −0.0004 −0.0001(0.004) (0.006)

edad 0.055∗∗∗ 0.064∗∗∗

(0.010) (0.011)

Constant −5.932∗∗∗ −7.157∗∗∗

(0.884) (1.000)

Observations 462 442Log Likelihood −242.352 −221.910Akaike Inf. Crit. 496.704 455.820

Note: ∗p<0.1; ∗∗p<0.05; ∗∗∗p<0.01

Como se puede observar en el cuadro anterior, el quitar aquellas observaciones considera-

das como valores atıpicos ha significado un cambio en general en el modelo. Como siempre,

este es un mero ejercicio ilustrativo, pues eliminar observaciones influyentes no es una opcion

pues es el modelo quien debe adecuarse a la realidad y no viceversa. Una posible causa de la

presencia de valores atıpicos puede ser la omision de alguna variable relevante en el modelo.

4.2. Normalidad de los residuos

Como se menciono en la seccion 2, la distribucion de los estadısticos de prueba en la

regresion logıstica (ası como en los demas modelos lineales generalizados) descansa en el

20

Page 21: Ejemplo regresión logística

teorema central del lımite, por lo que los contrastes utilizados seran validos asintoticamente.

Por contraste, en el modelo lineal general dicho supuesto es clave, en la medida en que en

este descansa la distribucion de los estimadores βOLS para poblaciones finitas. Aun ası, puede

observarse que para el caso de los residuos de pearson, los cuales estan dados por la expresion

rj =yj − njπj√nj(1− nj)

(4.5)

Si recordamos que yj es una variable aleatoria binomial, podrıa esperarse que si el tamano

nj de sujetos es lo suficientemente grande, dicho residuo siga una distribucion normal, pues

ha de recordarse que siempre y cuando nj → ∞ la distribucion normal puede aproximar

relativamente bien a la binomial. Puede utilizarse un argumento similar para los residuos

deviance. Ciertamente, si los residuos de pearson no siguen una distribucion normal, esto

invalida el uso del contraste χ2 de bondad de ajuste

Para el modelo que se esta estimando en particular, puede notarse que dado a que tiene

dos variables continuas en su estructura de covariables, en las 462 observaciones podemos

encontrar tan solo un patron de variables repetido. De esta manera la aproximacion recien

mencionada no tiene mucho sentido. Este supuesto serıa mas factible de evaluar en un modelo

con variables exclusivamente categoricas e inclusive ordinales.

Aun ası, se han construido dos histogramas, como puede apreciarse en las figuras a con-

tinuacion. En ellas se muestra como tanto la distribucion de los residuos deviance como los

residuos de pearson presentan distribuciones bimodales que por cierto nada tienen que ver

con la distribucion normal.

21

Page 22: Ejemplo regresión logística

0

5

10

15

20

−2 −1 0 1 2Residuos deviance

Fre

cuen

cia

(a) Histograma residuos Deviance estandarizados

0

10

20

−2.5 0.0 2.5 5.0Residuos de Pearson

Fre

cuen

cia

(b) Residuos deviance vs probabilidades predichas

Figura 5: Normalidad de los residuos

4.3. Especificacion del modelo

Una de las razones que pueden explicar la presencia de valores atıpicos, eventualmente,

puede ser el uso de una forma funcional incorrecta o bien la falta de variables importantes en

el modelo. Para intentar dirimir sobre este problema se han estimado 3 modelos alternativos,

con todas las observaciones, en las que incluimos interacciones con la unica variable categorica

del modelo, hist, como puede observarse dichas interacciones no resultaron ser significativas.

Ademas, como criterio informal, para comparar modelos anidados suele utilizarse el criterio

de informacion de akaike (AIC)

AIC = 2k − 2l(π,y) (4.6)

De entre un conjunto de modelos anidados (o no anidados, aunque existe controversia al

respecto) ha de escogerse aquel con menor AIC, ya que este penaliza por el numero de

parametros estimados. Como puede observarse en el cuadro 8, la inclusion de mas variables

en el modelo a traves de interacciones no mejora la verosimilitud del modelo lo que queda

reflejado en que el modelo original ajusta mejor que los modelos aumentados. De esta forma,

22

Page 23: Ejemplo regresión logística

la inclusion de interacciones (al menos las aquı propuestas) no son una solucion para una

mejor seleccion del modelo propuesto

Cuadro 8

Dependent variable:

inf

(1) (2) (3)

histPresente −0.102 −0.096 −0.268(0.923) (0.925) (0.945)

tabac 0.087∗∗∗ 0.084∗∗ 0.088∗∗∗

(0.027) (0.033) (0.034)

tipoa 0.039∗∗∗ 0.039∗∗∗ 0.039∗∗∗

(0.012) (0.012) (0.012)

alc −0.0002 −0.0002 −0.006(0.004) (0.004) (0.007)

edad 0.046∗∗∗ 0.046∗∗∗ 0.046∗∗∗

(0.012) (0.013) (0.013)

histPresente:edad 0.022 0.022 0.023(0.019) (0.020) (0.020)

histPresente:tabac 0.006 −0.003(0.055) (0.056)

histPresente:alc 0.009(0.009)

Constant −5.558∗∗∗ −5.557∗∗∗ −5.474∗∗∗

(0.924) (0.924) (0.923)

Observations 462 462 462Log Likelihood −241.646 −241.639 −241.194Akaike Inf. Crit. 497.291 499.278 500.388

Note: ∗p<0.1; ∗∗p<0.05; ∗∗∗p<0.01

23

Page 24: Ejemplo regresión logística

5. Conclusiones

Del presente informe se desprende que el modelo aquı propuesto en general ajusta bastan-

te bien a los datos. Aunque se observa una presencia importante de valores atıpicos. Dichos

valores atıpicos pueden ser fruto de una pobre especificacion del modelo a traves de la omi-

sion de variables explicativas relevantes. Se sugiere incorporar variables de la base de datos

completa para reajusta el modelo y evaluar nuevamente la performance de este.

6. Referencias

[1] Alan Agresti y Maria Kateri. Categorical data analysis. Springer, 2011.

[2] Annette J Dobson y Adrian Barnett. An introduction to generalized linear models. CRC

press, 2008.

[3] William H Greene. Econometric analysis. Pearson Education India, 2003.

[4] David W Hosmer Jr, Stanley Lemeshow y Rodney X Sturdivant. Applied logistic regres-

sion. Vol. 398. John Wiley & Sons, 2013.

7. Anexo

7.1. Codigo R

A continuacion se presentan los datos de la sesion en R

sessionInfo()

## R version 3.2.3 (2015-12-10)

## Platform: x86_64-pc-linux-gnu (64-bit)

## Running under: Ubuntu 14.04.3 LTS

##

## locale:

## [1] LC_CTYPE=es_CL.UTF-8 LC_NUMERIC=C

## [3] LC_TIME=es_CL.UTF-8 LC_COLLATE=es_CL.UTF-8

## [5] LC_MONETARY=es_CL.UTF-8 LC_MESSAGES=es_CL.UTF-8

## [7] LC_PAPER=es_CL.UTF-8 LC_NAME=C

## [9] LC_ADDRESS=C LC_TELEPHONE=C

## [11] LC_MEASUREMENT=es_CL.UTF-8 LC_IDENTIFICATION=C

##

24

Page 25: Ejemplo regresión logística

## attached base packages:

## [1] stats graphics grDevices utils datasets methods base

##

## other attached packages:

## [1] epiR_0.9-69 survival_2.38-3 ggplot2_2.0.0 mfx_1.1

## [5] betareg_3.0-5 MASS_7.3-45 lmtest_0.9-34 zoo_1.7-12

## [9] sandwich_2.3-4 xtable_1.8-0 stargazer_5.2 knitr_1.11

##

## loaded via a namespace (and not attached):

## [1] flexmix_2.3-13 Rcpp_0.12.2 Formula_1.2-1

## [4] magrittr_1.5 splines_3.2.3 munsell_0.4.2

## [7] colorspace_1.2-6 lattice_0.20-33 BiasedUrn_1.07

## [10] plyr_1.8.3 stringr_1.0.0 tools_3.2.3

## [13] nnet_7.3-11 grid_3.2.3 gtable_0.1.2

## [16] modeltools_0.2-21 formatR_1.2.1 evaluate_0.8

## [19] labeling_0.3 stringi_1.0-1 scales_0.3.0

## [22] stats4_3.2.3

A continuacion se presenta el codigo utilizado para la carga de la base de datos en el

programa

rm(list=ls())

inf<-read.csv("/home/hector/Dropbox/Magıster/Linear_Models/infarto.csv",

header=TRUE)

names(inf)

inf$inf<-factor(inf$inf)

levels(inf$inf)<-c("Infarto", "otro caso")

sapply(inf, class) #para que me muestre todas clases

#de los objetos contenidos en el data.frame

vars<-data.frame(inf=inf$inf,hist=inf$hist,

tabac=inf$tabac, tipoa=inf$tipoa,

alc=inf$alc, edad=inf$edad)

A continuacion se presenta el codigo utilizado para estimar el modelo inicial en la seccion2

25

Page 26: Ejemplo regresión logística

#=============================================================================================

# glm: Es una funcion del paquete basico stats,

# permite estimar todo tipo de modelos lineales generalizados

# stargazer: Es una funcion del paquete del mismo nombre,

# permite transcribir los resultados en formato latex para una buena presentacion

#=============================================================================================

formula<-inf~hist+tabac+tipoa+alc+edad

inf.glm<-glm(formula,family=binomial(link = "logit"),

data=vars)

stargazer(inf.glm,ci=FALSE,title="Resultados de la regresion",

dep.var.labels=c("Infarto"), covariate.labels=c("Historia familiar",

"Tabaco Acumulado",

"Comportamiento tipo A",

"Alcohol", "Edad"),

table.placement = "H", dep.var.caption = "Infarto al miocardio",

report="vctsp*", notes.align="l",

notes = c("Errores estandar entre parentesis"),

font.size="footnotesize")

A continuacion se presenta el codigo utilizado para los calculos realizados en la seccion

2.1.1

library(xtable)

ji<-with(inf.glm,null.deviance - deviance)

gl<-with(inf.glm,df.null - df.residual)

p<-with(inf.glm, pchisq(null.deviance - deviance, df.null - df.residual, lower.tail = FALSE))

deviance<-cbind(ji,gl,p)

colnames(deviance)<-c("Estadıstico", "gl", "p.value")

xtable(deviance)

A continuacion se presenta el codigo utilizado para la seccion 2.1.2

a1<-c(0,1,0,0,0,0)

a2<-c(0,0,1,0,0,0)

a3<-c(0,0,0,1,0,0)

a4<-c(0,0,0,0,1,0)

a5<-c(0,0,0,0,0,1)

A<-rbind(a1,a2,a3,a4,a5)

26

Page 27: Ejemplo regresión logística

wald<-t(A%*%coef(inf.glm))%*%solve(A%*%summary(inf.glm)$cov.unscaled%*%t(A))%*%(A%*%coef(inf.glm))

test<-pchisq(wald,dim(A)[1], lower.tail =FALSE)

wald.test<-cbind(wald,dim(A)[1],test)

colnames(wald.test)<-c("Estadıstico", "gl", "p.value")

rownames(wald.test)<-c("")

print(xtable(wald.test), table.placement="H")

A continuacion se presenta el codigo utilizado para calcular los efectos marginales de laseccion ??: Efectos marginales

#===========================================================================

# MargEff: Calcula efectos marginales para modelos logit o probit

# NOTAS:

# - la funcion asume que el modelo tiene intercepto

# - stopifnot: detiene el proceso si no se cumple la condicion

# - switch: selecciona una lista de alternativas

# - outer: Aplica una version del producto de kronecker a los vectores

#===========================================================================

MargEff = function(objBinGLM) {stopifnot(objBinGLM$family$family == "binomial") # Se detine si el objeto no

#pertenece a la familia binomial

vMargEff = switch(objBinGLM$family$link,

probit = colMeans(outer(dnorm(predict(objBinGLM,

type = "link"))

, coef(objBinGLM))[, -1]),

logit = colMeans(outer(dlogis(predict(objBinGLM,

type = "link")), coef(objBinGLM))[, -1])

) # Este apartado permite calcular el promedio ponderado

#por la funcion de densidad de las probabilidades predichas ##

return(vMargEff)

}MargEff(inf.glm)

#============================================================================

# MargeffBoot: Calcula errores estandar bootstrap para los efectos marginales

# Nota: Requiere instalar el paquete car

#============================================================================

library(car)

MargEffBoot = Boot(object = inf.glm, f = MargEff,

labels = names(coef(inf.glm))[-1], R = 1000)

summary(MargEffBoot)

27

Page 28: Ejemplo regresión logística

A continuacion se presenta el codigo desarrollado para calcular el contraste de Hosmer-Lemshow de la seccion

#=============================================================

# hosmer.lemeshow.test: Contraste de Hosmer Lemeshow

#=============================================================

hosmer.lemeshow.test<-function (x, y, g = 10)

{DNAME <- paste(deparse(substitute(x)), deparse(substitute(y)),

sep = ", ")

METHOD <- "Constraste de Bondad de ajuste de Hosmer & Lemeshow"

yhat <- y

y <- x

qq <- unique(quantile(yhat, probs = seq(0, 1, 1/g)))

#Calcula los cuantiles observados para los valores predichos.

cutyhat <- cut(yhat, breaks = qq, include.lowest = TRUE)

#Clasifica cada observacion en su respectivo cuantil, de acuerdo

#a la expresion anterior.

observed <- xtabs(cbind(y0 = 1 - y, y1 = y) ~ cutyhat)

#Realiza una tabla de contingencia donde agrupa los datos

#observados en los intervalos previos

expected <- xtabs(cbind(yhat0 = 1 - yhat, yhat1 = yhat) ~

cutyhat)

#Realiza una tabla de contingencia donde agrupa los datos

#predichos en los intervalos previos

chisq <- sum((observed - expected)^2/expected)

PVAL = pchisq(chisq, g - 2, lower.tail=FALSE)

PARAMETER <- g - 2

names(chisq) <- "Chi-cuadrado"

names(PARAMETER) <- "gl"

structure(list(statistic = chisq, parameter = PARAMETER,

p.value = PVAL, method = METHOD, data.name = DNAME, observed = observed,

expected = expected), class = "htest")

}hosmer.lemeshow.test(inf.glm$y, fitted(inf.glm))

A continuacion se presenta el codigo necesario para construir la curva ROC de la seccion

rocdata <- function(grp, pred){# Produce las coordenadas x e y para la curva ROC

# Argumentos: grp - valores observados

# pred - valores predichos

28

Page 29: Ejemplo regresión logística

# Output: List with 2 components:

# roc = data.frame with x and y co-ordinates of plot

# stats = data.frame containing: area under ROC curve, p value, upper and lower 95% confidence interval

grp <- as.factor(grp)

if (length(pred) != length(grp)) {stop("The number of classifiers must match the number of data points")

}

if (length(levels(grp)) != 2) {stop("There must only be 2 values for the classifier")

}

cut <- unique(pred)

tp <- sapply(cut, function(x) length(which(pred > x & grp == levels(grp)[2])))

fn <- sapply(cut, function(x) length(which(pred < x & grp == levels(grp)[2])))

fp <- sapply(cut, function(x) length(which(pred > x & grp == levels(grp)[1])))

tn <- sapply(cut, function(x) length(which(pred < x & grp == levels(grp)[1])))

tpr <- tp / (tp + fn)

fpr <- fp / (fp + tn)

roc = data.frame(x = fpr, y = tpr)

roc <- roc[order(roc$x, roc$y),]

i <- 2:nrow(roc)

auc <- (roc$x[i] - roc$x[i - 1]) %*% (roc$y[i] + roc$y[i - 1])/2

pos <- pred[grp == levels(grp)[2]]

neg <- pred[grp == levels(grp)[1]]

q1 <- auc/(2-auc)

q2 <- (2*auc^2)/(1+auc)

se.auc <- sqrt(((auc * (1 - auc))

+ ((length(pos) -1)*(q1 - auc^2)) +

((length(neg) -1)*(q2 - auc^2)))/(length(pos)*length(neg)))

ci.upper <- auc + (se.auc * 0.96)

ci.lower <- auc - (se.auc * 0.96)

se.auc.null <- sqrt((1 + length(pos) + length(neg))/(12*length(pos)*length(neg)))

z <- (auc - 0.5)/se.auc.null

p <- 2*pnorm(-abs(z))

stats <- data.frame (auc = auc,

29

Page 30: Ejemplo regresión logística

p.value = p,

ci.upper = ci.upper,

ci.lower = ci.lower

)

return (list(roc = roc, stats = stats))

}coordenadas<-rocdata(vars$inf, fitted(inf.glm))

class(coordenadas$stats$auc)

library(ggplot2)

curva.roc<-ggplot(coordenadas$roc, aes(x = x, y = y)) +

geom_line(aes(colour = "red", size=3)) +

geom_abline (intercept = 0, slope = 1, size=2) +

scale_x_continuous("Tasa Falsos Positivos (1-Especificidad)") +

scale_y_continuous("Tasa de verdaderos positivos (Sensibilidad)")+

theme(legend.position="none")+theme(axis.text=element_text(size=14),

axis.title=element_text(size=14))+

geom_text(x = 0.75, y = 0.25, label = round(coordenadas$stats,3),

parse = TRUE, size=8)

curva.roc

30