Curso GLM PDF
Curso GLM PDF
Curso GLM PDF
Marı́a Durbán
Índice general
1. Introducción 3
1. Introducción a R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.1. Instalalar y empezar con el programa . . . . . . . . . . . . . . . . . . . . . . 3
1.2. Librerı́as . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5
2. Importar y editar datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.1. La función read.table() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3. Tipos de datos y su manipulación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.1. Tipos de objetos en R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
4. Gráficos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
4.1. La función plot() . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
4.2. Añadir elementos a un gráfico . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4.3. Múltiples gráficos por página . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.4. Otros gráficos en R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
5. Modelos estadı́sticos en R . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
5.1. La fórmula . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
5.2. Modelos lineales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
6. Tipos de datos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
6.1. Clasificación de variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
7. ¿Qué son y por qué hay que utilizar GLMs? . . . . . . . . . . . . . . . . . . . . . . . 21
7.1. Ejemplos de motivación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
2. Regresión Logı́stica 25
1. El modelo de regresión logı́stica como un GLM . . . . . . . . . . . . . . . . . . . . . 27
1.1. Procedimientos para ajustar el modelo en R . . . . . . . . . . . . . . . . . . . 27
2. Interpretación de los parámetros . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.1. Variable independiente dicotómica . . . . . . . . . . . . . . . . . . . . . . . . 30
2.2. Variable independiente politómica . . . . . . . . . . . . . . . . . . . . . . . . 32
2.3. Variable independiente continua . . . . . . . . . . . . . . . . . . . . . . . . . 32
2.4. Variables independientes categóricas y continuas . . . . . . . . . . . . . . . . 33
2.5. Interacción y confusión . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
2.6. Interpretación del OR en presencia de interacción . . . . . . . . . . . . . . . . 39
2.7. Interpretación de los valores ajustados . . . . . . . . . . . . . . . . . . . . . . 40
3. Selección de variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
3.1. ¿Cómo seleccionar las variables en la práctica? . . . . . . . . . . . . . . . . . 44
3.2. Bondad de ajuste del modelo . . . . . . . . . . . . . . . . . . . . . . . . . . . 47
4. Predicciones con el modelo: clasificación de sujetos . . . . . . . . . . . . . . . . . . . 48
4.1. Área bajo la curva ROC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
1
5. Diagnosis en regresión logı́stica . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49
5.1. Error de especificación . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 50
5.2. Análisis de residuos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
6. Interpretación y presentación de resultados . . . . . . . . . . . . . . . . . . . . . . . 51
7. Otros GLMs para datos con respuesta binaria . . . . . . . . . . . . . . . . . . . . . . 54
8. Ejemplo: Bajo peso al nacer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
9. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
3. Regresión Multinomial 60
1. El procedimiento multinom() en R . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61
2. Interpretación y significación de los parámetros . . . . . . . . . . . . . . . . . . . . . 62
3. Selección de variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63
4. Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
5. Ejercicios . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69
5. Regresión de Poisson 77
1. La distribución de Poisson . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
2. Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79
3. Regresión de Poisson para tasas de incidencia . . . . . . . . . . . . . . . . . . . . . . 82
3.1. Ejemplo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82
2
Capı́tulo 1
Introducción
1. Introducción a R
1.1. Instalalar y empezar con el programa
La versión actual de R es la 2.7.2. Para instalarla es necesario seguir los siguientes pasos:
2. Descargar el archivo SetupR.exe y una vez el el ordenador, pinchar en su icono para instalar
el programa
3. Para empezar el programa sólo hay que pinchar en el icono, al hacerlo apartecerá la siguiente
ventana
Cada vez que empezamos el programa hemos de decidir en qué directorio queremos trabajar e in-
dicárselo a R. Para ello pinchamos en Archivo =⇒ Cambiar dir y aparecerá una ventana en la que
podremos elegir la carpeta en la que queremos trabajar. Si ésta es la primera vez que utilizamos
esta carpera no hemos de hacer nada más.
3
Cada vez que utilizamos un nuevo directorio, R crea un fichero llamado .RData donde se guar-
darán todas las variables, modelos, etc., que creemos en cada sesión, de modo que si hemos utilizados
ya R en esa misma carpeta, hemos de indicarle al programa que queremos utilizar todos los obje-
tos que habı́amos creado en la sesión anterior, para ello pinchamos en File =⇒ Cargar área de
trabajo y aparecerá una ventana en la que elegiremos el fichero .RData.
Algunas reglas en R
Para nombrar a una variable se pueden usar letras, números, puntos y guión bajo. No puede
empezar con mayúsculas
4
R distingue mayúsculas y minúsculas
Hay nombre que están reservados y no se pueden utilizar, y otros que aunque no lo están es
mejor no utilizar (sobre todo aquellos que corresponden a funciones)
Ficheros .R
Un fichero .R contiene una secuencia de comandos que se pueden ejecutar de una vez, o sólo
una parte de ellos, marcándolos con el rantón. Es una buena práctica el utilizar este tipo de ficheros
ya que sirve de registro de las transformaciones y los pasos realizados y permite comentar dichos
pasos. Para ejecutar un fichero .R hemos de abrirlo primero, para ello pinchamos File =⇒ Abrir
script, esto abrirá el directorio en el que estemos trabajando y mostratá los ficheros .R que haya
allı́. Una vez abierto, tenemos dos opciones, ejecutar todos los comandos del fichero o marcar los
que nos interesen y ejecutar sólo esos. Para esto pinchamos en el tercer icono que hay en la parte
superior o:
IMPORTANTE: Siempre salvar el fichero antes de cerrarlo, si no quereis salvar las modificacio-
nes, cerrar sin salvar.
En un fichero .R podemos añadir comentarios, para eso empezaremos la lı́nea donde con el
sı́mbolo %
1.2. Librerı́as
Cuando se instala R se instalan automáticamente una serie de librerı́as o paquetes. Las librerı́as
suelen ser bastante especializadas y permiten hacer gran variedad de cosas y todo tipo de análisis.
Para ver las librerı́as que hay instaladas escribimos:
library()
para utilizar alguna de las que hay instaladas tenemos dos opcionesqueremos utilizar una librerı́a
llamada MASS:
1. Escribimos
5
library(MASS)
Hay cientos de librerı́as escritas por los usuarios de R, algunas de ellas están dedicadas a análisis
estadı́sticos especializados (por ejemplo, mlogit es una librerı́a que utilizaremos para datos multi-
nomiales) y otras dan acceso a datos. Para poder instalarlas es necesario disponer de conexión a
Internet.
file= debe ir acompañada del nombre del fichero entre comillas, si le fichero de datos no
está en el directorio en el que estamos trabajando hemos de darle la ubicación exacta del
mismo
Por ejemplo:
> salud=read.table(‘‘salud.txt’’,header=TRUE)
El objeto salud es una matrix que tiene tantas columnas como variables y tantas filas como datos.
Esta función almacena los valores numéricos tal y como aparecen y los caracteres como variables
categóricas (que en R se llama factor).
> n=10
> n
[1] 10
como digimos antes, si el objeto ya existe, su valor anterior es borrado y sustituido por el nuevo.
El valor asignado puede ser el resultado de una operación matemática o de una función
6
> n=3*4
> n
[1] 12
> x=sqrt(25)
> x
[1] 5
La función ls() lista todos los objetos que se han creado y que están en la memoria (y por tanto
quedarán guardados en el archivo .RData)
> ls()
[1] "Escuelas" "n" "x"
> rm(n)
> n
Error: objeto "n" no encontrado
Los objetos con los que trabaja R tienen nombre y contenido, pero también tienen atributos que
indican el tipo de datos representados por ese objeto. Por ejemplo, una variable que toma valores 1,
2 y 3, puede ser una variable que representa el número de hijos, puede ser una variable categórica
con tres categorı́as. Toda variable tiene dos atributos básicos:
> x=2
> length(x)
[1] 1
> mode(x)
[1] "numeric"
> y="Maria"
> mode(y)
[1] "character"
7
Vectores
Un vector es una colección ordenada de objetos del mismo tipo (números, caracteres, etc.)
> x=c(1,2,3)
> y=seq(3,1) #esto creará una secuencia del 3 al 1
> y
[1] 3 2 1
R puede operar con vectores de una sola vez:
> y^2
[1] 9 4 1
> x+10
[1] 11 12 13
Entre las funciones más útiles se encuentran:
sort, order, max, min, mean, var, sd
data.frame
Un objeto de este tipo es una colección de vectores (todos de la misma longitud) pero que
pueden ser de distinto tipo. Cuando leemos datos utilizando read.table el objeto que creamos es
un data.frame. Lo podemos comprobar:
> class(salud)
[1] "data.frame"
> names(salud)
[1] "sexo" "g01" "g02" "peso" "altura" "con_tab" "anio"
[8] "educa" "imc" "bebedor" "edad"
g01 En general, ¿cómo considera usted que es su salud?, es variable de interés con 5 categorı́as
8
• Muy buena=1
• Buena=2
• Regular=3
• Mala=4
• Muy mala=5
g02 Una recodificación de la anterior con dos categorı́as: 1 = Buena salud, 0 = No buena
salud
peso en Kg
altura en cm
edad en años
> summary(salud)
Todas estas variables están dentro del objeto salud pero R no las identifica por sı́ mismas:
> g01
Error: objeto "g01" no encontrado
> salud$g01
obtenemos los valores de la variable. El sı́mbolo $ detrás del nombre del data.frame y seguido del
nombre de una variable, extraerá la variable que queramos.
Todas las variables están identificadas como variables numéricas (esto es lo que R hace por de-
fecto). Hay cuatro variables categóricas: sexo, con tab, educa y bebedor:
> salud$sexo=factor(salud$sexo)
> salud$con_tab=factor(salud$con_tab)
> salud$educa=factor(salud$educa)
> salud$bebedor=factor(salud$bebedor)
si volvemos a hacer
9
> summary(salud)
vemos que ahora están identificadas como variables categóricas (los factores son otro tipo de objetos
en R). Algunas funciones útiles para explorar las variables categóricas son: table y tapply:
> table(salud$bebedor)
0 1 2
2977 4054 326
> tapply(salud$peso,salud$bebedor,mean)
0 1 2
67.30971 70.86384 72.75767
Cuando estemos trabajando con un data.frame podemos decirle a R que identifique automática-
mente las variables que hay en él mediante el comando attach
> attach(salud)
g01
> detach(‘‘salud’’)
4. Gráficos
R tiene muchas funciones para crear gráficos y da gran libertad al usuario para personalizar el
los gráficos. Aquı́ vamos a ver sólo las funciones básicas, pero las posibilidades son casi infinitas.
type= Por defecto, la función dibuja puntos pero las opciones pueden ser:
col= para dibujar con color en vez de en negro, los colores se especifican con números
lty= para cambiar el tipo de lı́ne (en caso de elegir lı́neas en vez de puntos)
10
lwd= Para aumentar o disminuir la anchura de la lı́nea
Por ejemplo:
x=peso[sexo==1]
y=imc[sexo==1]
plot(x,y,col=4,xlab="Altura", ylab="IMC",main="Hombres",pch=2)
Hombres
50
45
40
35
IMC
30
25
20
15
Peso
Si queremos añadir una lı́nea que represente donde está el imc medio de los hombres:
> mean(y)
[1] 25.4505
> length(x)
[1] 3666
> m=rep(25.4505,3666)
> lines(x,m,lwd=2,col=6)
> text(130,28,"IMC medio")
legend(140,40,col=c(4,6),pch=c(2,-1),lty=c(-1,1),lwd=c(-1,2),c("Hombres","IMC
Medio"))
11
Otro ejemplo:
> xx=peso[sexo==2]
> yy=imc[sexo==2]
>plot(x,y,col=4,xlab="Peso", ylab="IMC",main="Hombres y Mujeres",pch=2)
> points(xx,yy,col=3)
> legend(140,40,col=c(4,3),pch=c(2,1),c("Hombres","Mujeres"))
Hombres y Mujeres
● ●
50
45
●
●
● ●
40
● ● ●● ●
● ●● ●● ● ●
● ● ● ●●●●● ●
● ● ●● ● ● Hombres
35
● ●● ●● ● ●
●●●● ●●
IMC
●●
●● ● ●● ●
●
●●●
●
●
●● ● ●
●● ●
●
●● ●● ●●●●
●●●
● ●● ●
●●●
●●●●● ●● ● ●
● ●●
●
●
●●
●●●
●
● ●●
●● ●●
●●●●
●
●●
● ●●●
●●
●●● ● ●
● ● ●●●
●●●
●
●●
●●●
●●●
●●
●●
●
●
●●
●●●
●
●●●
●●●●●
●●
●
● ●
●
●●
●●
●●●
●●● ● ●● ● ●
●●
●
●● ●●●●
●●
●
●●●
●
●
●●●
●●
●●●
●
●
●●
●
●●●
●
●●
●●
●●●
●●
●
●●
●
●
●●
●●
● ●●
●●
●●●● ●●
● ●
25
● ●●
●●
●
●●●
●●●
●●
●● ● ● ●
●●●●●●●●●●●● ● ● ●
●●● ●● ●
●●
●● ●●
●●●
●●●
●●
●●
●●
●●
●●●●
● ●● ● ● ● ●
● ●● ●●●
●●● ●●
●● ●●●
●● ●●
●●
●● ●●
●●●●●● ● ●● ●
●●● ● ●
●●
●●●●●
●● ●● ●●●
●● ●● ●●
●● ●●●
●● ●●●●●●●●
● ●●●●
●●●●●
●● ●●
●●●●
●● ●●
●●
●● ●●●
●●
●● ● ●● ● ● ●
●●●●● ● ●●
20
●●
● ●● ●●●●●●
● ● ●●
●●●●●
●●
●●
●● ●●
●●●
●●●●●●●●●●
●●●●●●● ●●
●● ● ● ●
●●● ●●●
●● ●●●●●
●●●●
●●●●
●●●
● ●● ●●● ●●
●●●●
●●●
●●
● ●●●
● ●
●● ●●●●●● ●
●● ●
● ●● ●●● ●●
●
15
● ● ●
Peso
Por ejemplo
> par(mfrow=c(1,2))
> plot(x,y,col=4,pch=2,main="Hombres")
> plot(xx,yy,col=3,main="Mujeres")
> par(mfrow=c(2,1))
> plot(x,y,col=4,pch=2,main="Hombres")
> plot(xx,yy,col=3,main="Mujeres")
Los gráfico pueden parecer un poco deformados, podemos arreglarlo con otro argumento de la
función par() que hace que los gráficos sean cuadrados:
12
> par(mfrow=c(1,2),pty="s")
> plot(x,y,col=4,pch=2,main="Hombres")
> plot(xx,yy,col=3,main="Mujeres")
La función xyplot
Una de las librarı́as de R que viene instalada por defecto es lattice, esta contiene la función
xyplot(), que permite hacer gráficos de una variable continua respecto a otra, pero condicionadas
por los valores de una o más variables categóricas.
Por ejemplo si estamos interesados en dibujar el peso con respecto al imc, pero diferenciando
por sexo:
> library(lattice)
> xyplot(imc~peso|sexo)
#o por sexo y tipo de fumador
> xyplot(imc~peso|sexo+con_tab)
50 100 150
2 2
1 2
60
● ●
● 50
●
● ● ● 40
●● ●● ●●● ●● ● ●
● ●●● ●
●
●
●●●●
●●●●
● ●●●● ●●
●● ●
●●●●●●●● ● ●●
●●●
●●●●● ●●
● ● ●●
●●●●
●● ●●●●●●●
● ●
●
●
●●
●●
●●
●●●
●●
●
●●
●
●
●●
●
●●
●●
●●●
●
●●●
●●●●
●
●
●
●●
●●
●
●
● ● ●●●● ●
●●●
●
●● ●●● ●●●●
● ●●●
●●●
●●
●
●●●
●●
●●
●
●●
●
●●●
●● ●●
●
30
●● ● ●●
● ●
●●
●●●●
●●●●
●
●●
●●
●●
●●
●●
●●
●●●
●●●●
●●
●●
●●● ●
●●●
●●●●●
●●
●●●●● ● ●
●●
●●
●●
●●
●●
●●●●●●
●● ●●●
●●●
●●● ●●● ●●
●
● ●
●●●●
●
●●●●●●●
●●
●
●●●
●
●●●●
●● ●
●●●
●●
●
● ●
●
●●
●●●
●
●●● ●
●
●●●
●●●
●● ●●●●
●●●
●● ●
●●●●●
●●
●●
●● ●●●●●
●●
●●●
●●
●●
●
●●
●●
●● ●●●
●●
●●●●
●
●
●
●
●
●
●
●●
●●
●●
● ●●
●●●●●●
● ●● ●
●●
●●
●●
●
●●●
●●●●
●●●●●● ●●
●●
●●
●●●●● ●●
●●●
●● ●●●●
●●●● ●● ●● ●●●●●
●●●●
●●●● ●
●●
●●
● ●
●●
●● ●
●●
●●
●●
●●●
●
●●●
●●
●●
●●●● ●●
● ●●●●
●●● ●
● ●●
●●
●●
● ●●
● ●●
●●●
● ●●●
●●
●●
●●
●●
●●
●●
●●
● ●●
●●
●●
●●
● ●● ●●
●●● ●●
●●●
●●
●●●
●● ●●●
●● 20
● ●
1 1
imc
1 2
●
60
50 ●
●
●
● ● ●
●●●
40 ● ●●●
●●
● ● ● ●●●● ●●●●
●●● ●
●● ●●● ●
● ●
●● ●●
●
● ●●●
● ●●●●
●●●●● ●
● ●●●● ●● ●●●●●●
● ●
●●
●●●
●●●
●●●●●
●
● ●
●●
●●●●●●● ●
30 ●●
●● ●
●●●
●●
●●●
●●●●●●
●●●●●●
● ●●●
●●● ● ● ● ●●
●●●●●●●● ● ●●●●●
●●●● ●
●
●●● ●●●
●● ●
●
● ●●●●
●●
●●●● ●●● ●●●● ●●●● ●● ●● ● ● ●● ●
●●
●●
●●● ●●
●●
● ●●
●● ●●
●
●●●● ● ●●
●●
●● ●●
●● ●●●
●● ●●●
●●●●●
●●●●●● ●●● ● ●
●●
●●
● ●
●
●●●●●
●●●●
●●●● ●●
●●●●
●●
●●
●●● ● ●
●●●●●● ● ● ●
●●●●
●● ●
●●●●
●●●● ●
●●
●
●
●●
●●
●●
●● ●●
●●
● ●●
●●
●
●●
●●
●●
●●
●●●●●
●●
●
●●
●●●
●
●●●●●●●●●●●
●● ● ● ●●
●●●●
●●
●
●●
●●●●●●
●●
●●●
●●
●●
●●●●
●●
● ●●
●
●●
●●●
●●●●●
●●
●●
●●
●●
●● ●●●
●●
● ●●●
20 ●
●●●
●●●● ●
●●●●●●
●●
●● ●●●
● ●
●●
● ●●●●●●
●●● ●●●●●
●●● ●●
●●●●●●
●●
●
●
●●●●●
●●
●●
●●●
●●
● ●●
●
●●
●●●
●●
●●
●●●●
●●●
●●●
●● ●●●●●●●
●
●●
●●●●
●● ●●
● ● ● ● ●●
●●●
●● ●●
●●●●●●
●●●
●
●●
●
●●●● ●●●
●●●
●● ● ●●●
50 100 150
peso
Histograma
hist(imc,nclass=6)
Produce un histograma (sólo tiene sentido para variables numéricas). La función hist() nos permite
elegir el número de barras del histograma, si añadimos la opción probability=TRUE se represen-
tarán las frecuencias relativas en vez de las absolutas
13
hist(imc,nclass=6, probability=TRUE)
La función identify()
En ocasiones es interesante poder identificar puntos en un gráfico, por ejemplo, podemos estar
interesados en identificar el tipo de fumador entre los hombres con mayor imc, para eso hacemos
b=con_tab[sexo==1]
plot(x,y)
identify(x,y,b)
y pinchamos con el botón derecho del ratón en el punto que nos interesa. Aparecerá un 1 ó un 2
(ya que esa es la codificación para el tipo de fumador)
Gráficos de medias
En ocasiones, cuando tenemos varias variables explicativas categóricas es informativo hacer un
gráfico del valor medio de la variable respuesta para cada categorı́a de las variables categóricas.
Esto lo hacemos mediante la función interaction.plot:
con_tab
25.5
1
2
25.0
mean of imc
24.5
24.0
23.5
23.0
1 2
sexo
Hay otras muchas funciones en R para hacer gráficos, algunas las iremos viendo a lo largo del
curso.
5. Modelos estadı́sticos en R
R ofrece muchı́simas posibilidades a la hora de analizar datos, aquı́ nos vamos a centrar en
aquellos modelos que son relevantes para este curso: Modelos lineales.
14
5.1. La fórmula
La sintaxis de los modelos es en general común para todos ellos y depende de una fórmula. En
un modelo, sea del tipo que sea siempre tenemos una variable respuesta (y), y una o más variables
explicativas (continuas y/o categóricas X1 , X2 , ..., estos son algunos ejemplos de posibles fórmulas:
y = β0 + β1 X1 + β2 X2
y~X1+X2
y = β1 X1 + β2 X2 (sin la ordenada en el origen)
y~X1+X2-1
y = β0 + β1 X1 + β2 X12
y~X1+I(X1^2)
y = β0 + β1 X1 + β2 X2 + β3 X1 X2 (donde X2 es una varaible categórica con dos niveles)
y~X1+X2+X1:X2
Cuando estamos trabajando con variables categóricas, hemos de especificar que queremos que el
parámetro que corresponde al nivel más bajo sea 0, es decir que queremos comparar con el nivel
más baja, en R lo hacemos de la siguiente forma:
options(contrasts=c("contr.treatment", "contr.poly"))
¿Cómo obtenemos información a partir de este objeto?. La tabla que se muestra a continuación
resume los métodos para obtener información:
El resultado de
summary(modelo1)
¿Cuáles son los intervalos de confianza para los parámetros?
15
P-valor
β 0 β1
plot(peso,imc,xlab="Peso",ylab="IMC")
abline(modelo1,lwd=3,col=2)
Si hacemos simplemente
plot(modelo1)
lo que obtenemos son gráficos que analizan los residuos y que nos ayudan a ver si los datos cumplen
las hipótesis en las que se basa el modelo: normalidad, varianza constante, etc.
modelo2=lm(imc3~peso + sexo)
summary(modelo2)
modelo3=lm(imc~peso+sexo+peso:sexo)
summary(modelo3)
16
Ejercicio
Escribe el modelo con los coeficientes. ¿Cómo interpretamos ahora los parámetros?
Ahora lo que estamos ajustando son dos rectas, una para cada clase social. Par hacer el dibu-
jo:
y.ajustados=fitted.values(modelo3)
plot(peso,y.ajustados)
plot(peso,y.ajustados,type="l")
El gráfico no tiene sentido ya que los valores de peso no están ordenados y R une puntos consecutivos.
Para solucionarlo vamos a dibujar las rectas por separado:
peso.1=peso[sexo==1]
peso.2=peso[sexo==2]
y.ajustados.1=modelo3.coef[1]+modelo3.coef[2]*peso.1
y.ajustados.2=modelo3.coef[1]+modelo3.coef[2]*peso.2+modelo3.coef[3]+
modelo3.coef[4]*peso.2
plot(peso,imc)
lines(peso.1,y.ajustados.1,col=3)
lines(peso.2,y.ajustados.2,col=4)
legend(120,20,col=c(3,4),lty=c(1,1),c("Hombres","Mujeres"))
●
60
● ●
● ●
50
●
●
●
● ● ●
● ●
40
●
imc
● ●●●● ●
● ● ● ●
●● ● ● ●
● ●●● ●
●
●
● ●●
●
●●
● ●● ● ● ● ●
●
●
●● ●● ● ● ● ●
● ● ●
●● ●● ●
●
●●
● ● ● ●
● ● ●● ●● ● ● ●●● ● ● ● ●●
● ●● ●
● ● ●
●● ● ●●
●
● ●●●●●●● ● ● ● ●
● ●
●
●
●●
●
●
●
●●●
●●
● ●
●
●
●●●●●●
● ● ●●●● ●
●
●
● ●●●●
● ●●●
●●
●●
●●
●
● ●●●●
●●
●●
● ●● ●●
●●● ●
●● ●●●●●● ●● ●●●
●
● ● ● ●
● ●●●●
●
● ●●
●●
● ●●●
● ●●
●
●●●
●●●
●
●●●
●
●
●
●
●
●
●
●
●●●
●●
●
●●●●●●
●
30
●●●●
●●●●●●
●
●● ●
●
●
●●
●●
●
●●
●●
●
●●●
●●●● ●●● ●● ●
●●● ●●
●
●
●●●
●
●
●
●
●●●
●
●
●
●
●
●
●●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●●● ● ●●
●
●●●●●
●
●
●●●
●
●
●●●●●●
●
●●
●●
●●
●
●
●●
●●
●
●
●●
●●
●
●
●●●●
●
●
●●
●●
●
●●●
● ●●● ●
● ●● ●
●●
●●
●
●
●
●
●
●
●
●
●
●●
●
●
●●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●●
●
●
●
●
●●
●
●●
●
●
●
●●
●
●●
●
●
●
●
●●●●
●●
●
●●
●●●
●
●●●● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●
●
●
●
●
●●
●
●● ●
●
●
●
●
● ●
●●
●
●●
●●
●
●
●●
●●
●
●
●●
●
●●
●●
●
●
●●
●●
●
●
●
●
●●
●●
●●
●
●
●●
●●
●
●
●
●●
●
●●
●
●●
●
●
●●
●●
●
●
●●
●●
● ●●●● ●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●●
●
●
●●
●
●
●
●
●●
●
●●
●
●
● ●
●
●●●
●
●●●
●●
●●
●
●
●●
●●
●●
●
●
●●
●●
●
●
●
●●
●●
●
●
●
●●
●●
●●
●
●
●
●
●●
●●
●
●
●●
●●
●●
●
●●●
●●●
●●
●
●
● ● ●●
●●●
●●
●●
●
●●
●●
●●
●
●
●●
●●
●
●
●●
●●
●●
●●●
●
●●●
●●●●●●
●
●●●●●●
● ●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●●
●●
●
●●
●●●
●
●
●
●
●
●●
●●
●●●
●
●●
●
●
●
●●
●
●●
●●
●
●
●
●●
●
●●
●
●●
●●●
●●●
●●●
●●●●
●
●●●
●
●●●●
●●●
●●●●
●●●
●
●●
●●
●●
●●●
●
●●
●●●
●●●
●
●●
●●
●●●
●●
●●●
●
●●●●
●●●●
●
●
● ● ●● ●● ● ● ●
20
●●●●
●●●
●
● ●
●●●
●●
● ●
●
●
●●●
●
●●●●
● ●●
● ●
●●●
●
●
●●
●●
●
●
●●●
●
●
●
●●
●●
●
●
●●
●●
●●
●
●
●●
●●
●●
●●
●●●
●●●●
●
●
●●●●
●●
●●
●
●●
●●
●
●
●
●
●●●
●●
●●●●●
● ●
●
●
●●
● ●
●●●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●
●●●
●
● ●●● Hombres
● ● ●●●●● ● ●
●●
● ●●●●●●
● ●● Mujeres
peso
Seleción de variables
Hay varios métodos para la seleción de variables en un modelo de regresión lineal con variable
respuesta continua. Mediante la comparación de la devianza (en este caso mediante la comparación
de la varianza residual), que en este caso corresponde al uso del test F, y mediante el estadı́stico
AIC (Akaike information criteria).
Para mostrar como hacer selcción de variables, vamos a ajustar el siguiente:
17
modelo4=lm(imc~peso+sexo+sexo:peso+bebedor+bebedor:peso+sexo:bebedor)
anova(modelo4)
Response: mat.3
Df Sum Sq Mean Sq F value Pr(>F)
mat.1 1 14889.4 14889.4 642.1642 < 2e-16 ***
sexo 1 23.3 23.3 1.0058 0.31624
clase.social 1 71.9 71.9 3.0994 0.07875 .
mat.1:sexo 1 1.8 1.8 0.0768 0.78175
mat.1:clase.social 1 32.0 32.0 1.3807 0.24037
sexo:clase.social 1 99.1 99.1 4.2750 0.03903 *
Residuals 721 16717.3 23.2
---
Signif. codes: 0 ’***’ 0.001 ’**’ 0.01 ’*’ 0.05 ’.’ 0.1 ’ ’ 1
A la vista de estos resultados eliminamos la interacción entre las dos variables categóricas:
modelo5=lm(imc~peso+sexo+sexo:peso+bebedor+bebedor:peso)
anova(modelo5)
18
es sencillo de hacer, si tenemos un objeto que sea un modelo lineal (como es el caso de modelo5),
podemos utilizar la función plot().
par(mfrow=c(2,2))
plot(modelo5)
15
Standardized residuals
4927 ● 4927 ●
10 20
10
Residuals
● 4908 ● 4908
● 3125 ● ● 3125
● ● ● ●
● ● ●● ●
●●
5
●● ● ●
●●
●
●
●● ●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●●
●●
●
●●●
●
●
●
●
●●●
●●
●● ●●●● ●
●
●
●●
●
● ●
●
●
●●
●
●
●
●●
●●
●
●
●●
●
●
●
●●
●
●
●●
●
●
●●
●
●
●
●
●●
●
●
●●
●
●●
●
●
●●
●●
●
●●
●
●●●
●●
●
●●●
● ● ● ● ●
●●
●
●
●●
●
●
●
●
●
●●
●●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●●
●
●
●●
●
●
●
●●
●
●
●
●●
●
●
●
●●
●
●●
● ●
●
●●
●
●
●●
●●
● ●
●
●●●
● ● ●●
●
●
●
●●
●
●
●
●●
●
●
●●●●
●
●●●
●●
●
●●●
● ●
●
●●
●
● ●
●
●
●●● ●
● ● ●
●
●●
●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●●●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●●●
●●
●
●
●
●●
●●
●
●
●
●●
●
●●
●●
●
●●●
●
● ●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●●
●●●
●●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●●
●●
●
●
●
●
●●
●
●●
●●
● ●●●
● ●
●
●
●
●●
●
●
●●
●
●
●
●●
●
●
●
●●
●
−10 0
●●
●
●●
●●
●
●●
●
●
●●
●
●●
●
●●
●
●
●
●●
●●
●
●
●●
●
●
●
●
●●
●
●
●
●●
●
●●
●●
●
●
●
●●●
●
●●
●●
●●
●
●
●●
●
●●
●
●
●●●
●
●●
●
●●
●
●●
●●●
● ● ●●
●
●
●
●
●●
●
●
●
●●
●●
●
●
●●
●
●●
●
●●
●
●
●
●
●●
●
●
●
●●●
●
●●
●●●●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●●
●
●●
●●
●●
●
●
●●
●
●
●
●●
●
●●
●
●●
●
●
●
●●
●●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●●
●
●●
●
●
●●
●●
●
●●
●●
●●
●●● ●
●●
●
●
●
●●
●
●
●
●●
●
●
●
●
●●
●
●
●
0
●●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●
●
●●
●
●
●
●●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●
●●
●
●●
●●
●●● ●● ● ●
●
●●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●●
●
●
● ●●●
●
●●
●
●●
●
●
●
●
●●
●
●
●●
●
●
●
●●
●
●
●
●
●
●●
●
●●
●
●
●●
●
●●
●
●
●
●
●●
●●
●
●●
●●● ●●
●
●
●
●●
●
●
●
●●
●
●
●
●●
●
●
●
●
●●
●
●● ● ●
●
●
●
● ●●●●●●
●●●
● ● ●●
●
●●
●
●
●●
●
●
●
●●
●
●
●●
●
●
●
●●
●
●
●
●●
●
●
●
●●
●
●
●
●●
●
●
●
●
● ●●
●
●●
●
●
●●
●
●
●●
●
20 30 40 50 60 −4 −2 0 2 4
10 15
Standardized residuals
4927 ●
● 4927
3
● 4908 1
● 3125 ● ●
● ● ● 0.5
● ●
● ● ●●● ● 3384 ●
2
● ●
●●● ●●● ●●
5
●●
●● ●
●●●
● ● ●
●●
●
● ● ●
● ●●●
●●●
●
●●●
●
●●
●
●●
● ●
●
●●
●● ●●
●
● ●● ●
● ●●●
●●●
●
●
●●
●●●●
●●
●
●●
●
●
●
●●
●●
●
●
●●
●
●
●●
●
●
●
●●
●●
●
●●
●●
●
●
●●
●●
●
● ● ●
●
●
●●
●
●
●
●
●●
●
●
●●
●●
●
●
●●
●●
●
●
●●
●
●●
●
●
●
●
●
●
●●
●●
●
●
●
●
●●
●
●●
●●
●
●
●●
●●●
●
●●
●●● ●●● ● ●
●
●
●
●
●
●●
●
●
●
●●
●
●●●
●● ● 7217 ●
●●●●●
●●
●●
●
●
●●
●●●
●●
●●
●
●●●●●
●●●●● ●● ●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●●
●●
●
●
●
●●●●● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●●
●●
● ●
●
●●
●
●
●●
●●
●●
●
●
●
●●
●●●
●
●
●●
●
●●
●
●
●
●●
●
●
●●
●
●
●●
●
●
●
●●
●●
●
●
●
●
●●
●●
●
●●
●
●
●●
●
●●
●
●●
●●
●●●● ● ●
●
●
●
●●
●
●●
●●
●
●●
●
●●
●
●
●●
●
●
●
●
●
●●
●●●
●
●●
●●
●●●●
●● ● ●
1
●● ● ●
●● ● ● ● ●
●● ●
●●
●●●
● ●
0
●●
●●
●●
●
●
●●
●
●
●●
●
●●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●●
●
●●
●
●
●●
●
●
●●
●
●●
●
●
●
●
●
●●
●
●
●
●●
●●
●
●
●●
●
●
●
●●
●●●
● ●●● ●
●
●
●●
●●
●●
●
●●
●●
●
●
●
●●
●
●
●
● ●
●
●
●●
●
●
●
●
●
●●
●
●
●●
●
●
●●
●
●●
●●
●
●
●●● ● ●
●●●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●
●
●
●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●●
●
●●
●
●
●●
●
●
●
●●●
●
●
●●
●
●●● ● ●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●●
●
●
●●
●
●
●
●
●●
●
●
●●
●
●●
●●●●
● ●●●● ●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●●●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●●
●●
●
●
●
●●
●●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●●
●●
●
●
●
●●
●
●
●●
●● ●●● ● ●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●●
● ●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●●
●
●
●
●
●
●
●
●
●●
●
●●
●
●
●
●
●●
●●
●●●
●
●●●●
●●
● ●
●
●
●●
●
●
●
●●●
●
●● ●● ●
●●
●
●
●●
●
●●
●
●●
●
●
●●
●
●
●
●●
●
●
●
●
●●
●●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●●
●
●
●
●
●
●
●
●
●
●
●
●
●
●●
●
●●
●●●
●
●●●
●● ● Cook's distance
●
●● ● ●●● ● ●
−5
●●
●●●●
●●●
●●
●●●
●
●●●
●●●
● ● ●●●
●●●
● ●
●●●●●●●●● ●
●● ●●
0
El gráfico de la parte superior derecha indica los datos no corresponde a los de una variable Normal.
6. Tipos de datos
Todos los modelos que vamos a considerar en este curso intentan explicar la relación entre
una variable dependiente/variable respuesta y un conjunto de variables independien-
te/variables explicativas/predictores. Estas variables están medidas en diferentes escalas y
la metodologı́a que hemos de utilizar depende de con qué tipo de variables estemos trabajando.
1. Cuantitativas: Miden una magnitud, por ejemplo, peso, altura, número de hijos, etc. Estas
variables a su vez se clasifican en:
Continuas: Cuando puede adoptar cualquier valor numérico dentro de un intervalo, por
ejemplo, edad, tensión arterial, etc.
19
Diapositiva 7
Discretas: Cuando sólo puede tomar ciertos valores enteros, por ejemplo, número de
fallecidos en un año, número de hijos, etc.
20
7. ¿Qué son y por qué hay que utilizar GLMs?
El objetivo de cualquier análisis es responder a la pregunta: ¿puede ser la variable de interés
predicha por un conjunto de variables explicativas?, esta es la misma pregunta que nos hacemos
cuando utilizamos un modelo de regresión lineal, entonces, ¿por qué es necesario utilizar otro tipo
de modelos?. La razón fundamental es que para poder utilizar regresión lineal es necesario que la
variable respuesta sea continua, y cumpla las hipótesis estándar del modelo lineal (datos Normales,
varianza constante, etc.) Si la variable de interés es, por ejemplo binaria e ignoramos este hecho, lo
que hacemos es ajustar este modelo:
p = P r(ocurra algo) = β0 + β1 X1 + . . . + βk Xk
1. Los valores predichos de la probabilidad podrı́an estar fuera del intervalo (0, 1).
2. Los intervalos de confianza y los test para ver que variables son significativas están basados
en la hipótesis de que los datos viene de una distribución Normal, cosa que no es cierta con
datos binarios
Percepción de salud
Con los datos sobre percepción del estado de salud vamos a ajustar un modelo de regresión
entre la variable dicotómica que representa el estado de salud y el peso:
ejemplo=lm(g02~peso)
y.ajustado=ejemplo$fitted
plot(peso,g02)
abline(ejemplo,col=2)
1.0
● ●●●
●●●
●●●
●●●
●●●
●●●
●●●
●●●
●●●
●●●
●●●
●●●
●●●
●●●
●●●
●●●
●●●
●●●
●●●
●●●
●●●
●●●●
●●●●
●●●●● ● ● ●
0.8
0.6
g02
0.4
0.2
0.0
●
●●●
●●●
●●●
●●●
●●●
●●●
●●●
●●●
●●●
●●●
●●●
●●●
●●●
●●●
●●●
●●●
●●●
●●●
●●●
●●●
●●●
●●●●
●●●●●● ● ● ●
peso
Vemos como no tiene sentido ajustar una recta, y además, a veces lugar a valores predichos
menores que 0.
21
En 1944, Berkson utilizó por primera vez la regresión logı́stica como una forma de solucionar
el problema, ya que la función logit hace que en vez de estar trabajando con valores de la variable
respuesta entre (0, 1) estemos trabajando con una variable respuesta que puede tomar cualquier
valor. No fue hasta 1972 cuando John Nelder introdujo los modelos lineales generalizados (GLM),
de ahı́ que en general se considere la regresión logı́stica como algo distinto a los GLM, cuando lo
que ocurre es que tanto la regresión múltiple como la logı́stica, de Poisson, ordinal, etc., son casos
particulares de un GLM.
Experimento de turbinas
Se realiza un experimento para determinar la relación entre el tiepo de uso de unas turbinas y
el número de fisuras que aparecen.
horas fisuras
[1,] 400 0
[2,] 1000 212
[3,] 1400 66
[4,] 1800 511
[5,] 2200 150
[6,] 2600 351
[7,] 3000 378
[8,] 3400 78
[9,] 3800 748
[10,] 4200 840
[11,] 4600 756
Los datos siguen una distribución de Poisson, por lo tanto, la media es igual a la varianza y la
restricción ahora es que los datos ajustados han de ser positivos. Si ajustamos lm(fisuras ∼
horas), obtenemos que el valor ajustado para la primera observación es negativo.
lm(fissures~hours)$fitted
1 2 3 4 5 6
-1.47929 101.17751 169.61538 238.05325 306.49112 374.92899
7 8 9 10 11
443.36686 511.80473 580.24260 648.68047 717.11834
Para entender lo que es un GLM, volvamos al modelo de regresión múltiple, en este modelos
suponemos que:
E[Y ] = β0 + β1 X1 + . . . + βk Xk ,
es decir que existe una relación lineal entre las X y E[Y ] (el valor medio de Y dado un cierto valor
de las variables explicativas). Si las observaciones son binarias, entonces:
P r(Y = 1) = p
P r(Y = 0) = 1 − p E[Y ] = 0 × (Y = 0) + 1 × (Y = 1) = p
por lo tanto un modelo de regresión múltiple relaciona directamente la probabilidad de que ocurra
un suceso con las variables explicativas y hemos visto cómo eso lleva a errores graves. Lo que hacen
22
los GLM es establecer esa relación lineal no entre la media de la variable respuesta y los predictores,
sino entre una función de la media de variable respuesta y los predictores, es decir
g(E[Y ]) = β0 + β1 X1 + . . . + βk Xk ,
según de qué tipo sea la varible Y , ası́ será la función g. Es decir, un GLM tiene 3 componentes:
yθ − b(θ)
f (y; θ, φ) = exp + c(y, φ) (1.1)
a(φ)
donde, en cada caso, a(.), b(.) y c(.) serán funciones especı́ficas. El parámetro θ es lo que se
llama parámetro canónico de localización y φ es un parámetro de dispersión. Pertenecen a la
familia exponecial la distribución Normal, Bernouilli, Binomial, Poisson, Exponecial, Gamma,
entre otras.
3. Función link : La función que relaciona la media, E[Y ], con las variables predictoras X. En
el caso del modelo de regresión ordinaria, µ = η, por lo tanto la función link es la identidad.
Hay muchas opciones par la función link. La función link canonica es una función que
transforma la media en el parámetro canónico θ
La siguiente tabla muestra las funciones link canónicas para las distribuciones más comunes
usadas en los GLMs:
La diferencia que hay entre usar la función link y usar una transformación, es que la función link
transforma la media, E[Y ], y no los datos, Y .
Las etapas a la hora de utilizar GLMs (o cualquier otro modelo estadı́stico) son:
1. Especificación de modelos
3. Selección de un modelo
23
Regresión Múltiple Regresión Logística
Regresión de Cox Regresión de Poisson
Regresión Multinomial etc.
g (µ ) = β 0 + β1 x1 + K β k xk
5. Interpretación de modelo
Todos los modelos que vamos a ver en los capı́tulos siguientes son casos particulares de un GLM,
por ejemplo, la regresión logı́stica es un GLM en la que la variable respuesta es binaria (sigue una
distribución de Bernoulli), y la función link es el logit ya que
p
g(E[y] = p) = log = β0 + β1 X1 + . . . + βk Xk ,
1−p
La inferencia, selección de variables, contrastes de hipótesis, etc., en los GLM ha sido desarrollada
a lo largo de los años y la metodologı́a para llevarla a cabo está implementada en el software
estadı́stico más común.
24
Capı́tulo 2
Regresión Logı́stica
Este capı́tulo se centra en los distintos modelos para datos con respuesta binaria. Vamos a
trabajar con los datos sobre percepción de salud y el objetivo va a ser el describir como cambia la
percepción del estado de salud por sexo, edad y tipo de bebedor. Podemos definir
1 si buena salud
yi =
0 si no buena salud
donde la variable toma el valor 1 con probabilidad pi y el valor 0 con probabilidad 1 − pi . Esa
variable aleatoria sigue una distribución de Bernoulli
Supongamos ahora que los sujetos estudiados se pueden clasificar atendiendo a los factores de interés
en k grupos. En nuestro ejemplo, los individuos pueden ser clasificados en 12 grupos atendiendo al
sexo y al tipo de bebedor
ftable(list(g02,sexo,bebedor))
x.3 0 1 2
x.1 x.2
0 1 223 335 36
2 516 281 15
1 1 792 2090 190
2 1446 1348 85
Desde el punto de vista matemático esta formulación para datos agrupados es la más general, ya
que la que dimos en primer lugar es una caso particular de esta última con k = n y ni = 1. Desde el
punto de vista práctico, hay que resaltar que si los predictores son categóricos y las observaciones
son independientes, ambas maneras de analizar los datos son equivalentes. Una ventaja de trabajar
con datos agrupados es que, dependiendo del tamaño de los grupos es posible hacer test sobre la
bondad de ajuste del modelo.
25
Como ya comentamos en el capı́tulo anterior la regresión logı́stica apareció en los años 50 y no
fue hasta los 70 cuando aparecieron los GLM, por eso es bastante común pensar que son cosas
diferentes, sin embargo, un modelo de regresión logı́stica es un GLM como veremos más adelante.
Cuando trabajamos con probabilidades, el primer problema al que nos enfrentamos es que la proba-
bilidad sólo toma valores entre 0 y 1, y si pretendemos relacionarla directamente con los predictores
puede que nos salgamos del intervalo [0, 1]. Una solución sencilla es transformar la probabilidad
para evitar este tipo de restricciones y relacionar esta probabilidad modificada con los predictores,
una posible transformación es el logit or log-odds
pi
β0 + β1 X1i + . . . + βr Xri = ηi = ln
1 − pi
esta transformación lo que consigue es que cuando la probabilidad se aproxima a 0 el logit lo hace
a −∞ y cuando la probabilidad se acerca a 1, el logit lo hace a +∞. Si la probabilidad es 0.5, el
odds es 1 y el logit 0. Logits negativos corresponden a probabilidades inferiores a 1/2 y viceversa.
3.1. INTRODUCTION TO LOGISTIC REGRESSION 7
1.0
0.8
probability
0.6
0.4
0.2
0.0
-4 -2 0 2 4
logit
Yi ∼ B(ni , πi ) (3.8)
1. Una distribución de probabilidad para la variable respuesta que pertenezca a la familia expo-
nencial
2. Un predictor lineal η = β0 + β1 X1 + . . . + βr Xr
3. Una función link que relaciona a la media con el predictor lineal g(µ) = η
Aunque los estimadores se van a calcular utilizando R, a continuación se da una breve descrip-
ción de los resultados en los que se basan.
Los parámetros se estiman maximizando la función de verosimilitud que representa la verosimilitud
de que los datos observados sean una muestra de una variable con una determinada distribución,
con lo cual lo que estamos haciendo es calcular qué valores de los parámetros hacen más verosı́miles
nuestros datos. X
log(L(β)) = (yi ln(pi ) + (ni − yi ) ln(1 − pi ))
escribimos pi en función de β y maximizamos esa función, para ello hay que resolver una serie de
ecuaciones que no tienen solución analı́tica y se utiliza un método iterativo basado en el algoritmo
de Newton-Raphson.
link: establece la relación entre la variable respuesta y los predictores: logit,probit,log, etc.
Vamos a describir la relación entre la percepción de salud, el sexo y el tipo de bebedor utilizando
esta función:
logistica1=glm(g02~sexo+bebedor,family=binomial(link=logit))
summary(logistica1)
Call:
glm(formula = g02 ~ sexo + bebedor, family = binomial(link = logit))
Deviance Residuals:
Min 1Q Median 3Q Max
-1.9851 0.5480 0.5629 0.7040 0.7814
27
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 1.26858 0.06027 21.049 < 2e-16 ***
sexo2 -0.23868 0.06230 -3.831 0.000128 ***
bebedor1 0.55151 0.06288 8.771 < 2e-16 ***
bebedor2 0.49377 0.15984 3.089 0.002007 **
---
Habı́amos comentado que los parámetros del modelo (los β) se estiman maximizando la función
de verosimilitud, las iteraciones que aparecen son debidas a que es necesario resolver las ecuaciones
de forma iterativa, en este caso han sido necesarias 4 iteraciones para estimar los parámetros. El
valor del Null-deviance=-2× log-likelihood en la primera iteración corresponde a lo que se llama
el null-model un modelo en el que todos los parámetros son cero. Si el algoritmo no converge, los
estimadores que aparecen no se deben utilizar. El valor final, Residual deviance=7059.2 no tiene
significado en sı́ mismo, pero se utilizará para comparar modelos anidados.
También aparecen los errores estándar asociados con los coeficientes, y son utilizados para contrastar
si el parámetro es significativamente distinto de cero y para calcular los intervalos de confianza.
Los intervalos son muy útiles ya que nos orientan sobre los posibles valores que puede tomar el
verdadero valor del parámetro, además, cuanto más ancho sea el intervalo, más ineficiente es la
estimación del parámetro. Para calcular los intervalos de confianza utilizamos
> confint(logistica1)
2.5 % 97.5 %
(Intercept) 1.1512601 1.3875492
sexo2 -0.3609674 -0.1167008
bebedor1 0.4283962 0.6749056
bebedor2 0.1891390 0.8169365
28
Denominador Casos=10
(100)
Denominador
No casos=90
(90)
Ahora el modelo está expresado en términos del log-odds, para obtenerlo en términos de los odds
de la siguiente forma:
exp(coefficients(logistica1))
(Intercept) sexo2 bebedor1 bebedor2
3.555815 0.787666 1.735871 1.638488
exp(confint(logistica1))
2.5 % 97.5 %
(Intercept) 3.1621750 4.0050226
sexo2 0.6970017 0.8898514
bebedor1 1.5347941 1.9638475
bebedor2 1.2082089 2.2635549
Si los datos los estuvieran agrupados como aparecen en la tabla aparece al principio del capı́tulo,
los comandos en serı́an:
salud2=read.table("salud2.txt",header=TRUE)
salud2$sex=factor(salud2$sex)
salud2$drink=factor(salud2$drink)
29
salud2=salud2[salud2$health==1,]
attach(salud2)
glm(cbind(count,n-count)~sex+drink,family=binomial(link=logit))
Y X=1 X=0
1 1
y=0 p(y = 0|x = 1) = 1+eβ0 +β1
p(y = 0|x = 0) = 1+eβ0
T otal 1 1
Habı́amos definido el odds de que la variable respuesta esté presente entre los individuos con X = 1
como
p(y = 1|x = 1) p(y = 1|x = 1)
=
p(y = 0|x = 1) 1 − p(y = 1|x = 1)
y se define de forma similar para los que tienen X = 0. El odds-ratio es la razón entre los odds
(razón de posibilidades o razón de ventajas):
30
El valor nulo para la OR es el 1. Un OR = 1 implica que las dos categorı́as comparadas son igua-
les. El valor mı́nimo posible es 0 y el máximo teóricamente posible es infinito. Un OR inferior a
la unidad se interpreta como que el desenlace es menos frecuente en la categorı́a o grupo que se
ha elegido como de interés con respecto al otro grupo o categorı́a de referencia. Un OR = 3 se
interpreta como una ventaja 3 veces superior de una de las categorı́as (X = 1) relativamente a la
otra categorı́a (X=0).
El hecho de que el odds-ratio sea la exponencial del coeficiente ha hecho que la regresión logı́stica
se haya hecho tan popular. Es bastante común encontrarse con el caso en el que el odd-ratio se
interpreta como el riesgo relativo, es decir como
p(y = 1|x = 1)
RR =
p(y = 1|x = 0)
es decir, se interpreta como una medida de cuanto más probable es encontrar el outcome entre los
individuos con X = 1 que entre aquellos que tienen X = 0. Para poder hacer esta aproxima-
ción es necesario que p(y = 1|x = 1) y p(y = 1|x = 0) sean pequeñas.
Por ejemplo, supongamos que con los datos sobre percepción de salud queremos ver la relación
entre esta variable y el sexo:
table(g02,sexo)
sexo
g02 1 2
0 594 812
1 3072 2879
tanto para X = 0 como para X = 1 la prevalencia de buena salud es alta, esta es la razón por
la que hay diferencia entre RR y OR, pero de este tema nos ocuparemos más tarde. Suponiendo
que pudieramos aproximar el RR mediante el OR, un OR estimado de 0.68 querrı́a decir que la
ocurrencia de buena salud en las mujeres es 0.68 veces menor.
Junto con el estimador del coeficiente o del OR , es importante utilizar los intervalos de con-
fianza (I.C.) para obtener información adicional acerca del parámetro. Los I.C. para los coeficientes
31
del modelo (los β) se calculan asumiendo que la distribución de los parámetros estimados es aproxi-
madamente normal, entonces un I.C. para el odds-ratio estimado se calcula tomando exponenciales
en el I.C. para los parámetros: h i
exp β̂1 ± zα/2 × sd
.e.(β̂1 )
Que el I.C. para el OR sea (0,61, 0,77) quiere decir que la buena salud entre las mujeres en la
población de estudio es entre 0,61 y 0,77 veces menos probable que en los hombres.
logistica2=glm(g02~edad2,family=binomial(link=logit))
exp(coefficients(logistica2))
(Intercept) edad22 edad23
9.0186914 0.6407686 0.2403349
R crea tres variables dicotómicas que indican si la persona está o no en el rango de edad corres-
pondiente, al ajustar el modelo, R está suponiendo que el valor de la primera variable es 0 y por lo
tanto está comparando los otros dos grupos de edad con ese. El odds ratio para edad2 2 es odd de
las personas entre 30 y 44 años dividido por el odds de las personas entre 18 y 29 años, 0,64, esto
significa que estimamos que el odds de tener buena salud para personas entre 30 y 44 años es 0.64
veces el de las personas entre 18 y 29 años. Si estamos en el caso en el que podemos aproximar el
RR mediante el OR dirı́amos que la prevalencia de buena salud en las personas de mediana edad
es 0.64 veces menor que la prevalencia en personas jóvenes. Los I.C. se obtienen siguiendo el mismo
procedimiento que en el caso de las variables dicotómicas.
Vamos a establecer la relación entre el ı́ndice de masa corporal (variable continua con rango de
valores entre 14,69 y 62,87) y la percepción de salud.
logistica3=glm(g02~imc,family=binomial(link=logit))
summary(logistica3)
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 4.120383 0.195110 21.12 <2e-16 ***
imc -0.107795 0.007637 -14.12 <2e-16 ***
---
Null deviance: 7177.9 on 7356 degrees of freedom
32
Residual deviance: 6973.7 on 7355 degrees of freedom
AIC: 6977.7
exp(coefficients(logistica3))
(Intercept) imc
61.5828259 0.8978114
Por lo tanto, por cada unidad que aumenta el ı́ndice de masa corporal el odds de tener buena
salud es 0.89 veces menor, si aumenta en 10 unidades el odds serı́a 0,8910 = 0,31 veces menor.
Podemos ver los resultados en un gráfico:
ajustados3=predict(logistica3,type="response")
plot(imc,ajustados3)
Al poner type=response, le decimos que nos de las probabilidades, si type=link nos da en función
del logit
●
●●●
●
●
●●
●
●
●●
●
●
●
●●
●
●
●●
●
●
●
●●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●
0.8
●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●
●●
●
●
●
●●
●
●
●
●
●●
●
●
●
●●
●
●
●
●●
●
●
●
●
●●
●
●
●
●●
●
●
●
●●
●
●
●
●●
●
●
●
●
●●
●
●
●
●●
●
●
●
●●
●
●
●
●●
0.6
●
●
●●
●
●
●
●●
●
●
●
ajustados3
●
●
●●
●
●
●●
●
●●
●
●
●●
●
●●
●
●●
●●●
●●
●
●●
●
0.4
●
●
●
●
●
0.2
●
●
●
●
20 30 40 50 60
imc
La curva es decreciente ya que el odds ratio es < 1. Hay que tener cuidado al interpretar los
resultados para imc altos ya que están basados en muy pocas observaciones.
33
Para poder entender adecuadamente qué significan los coeficientes de un modelo de regresión logı́sti-
ca multivariante es necesario tener claro lo que entendemos por ajustar por otras variables. Para
ello, comenzamos por examinar el concepto de ajuste en el caso de regresión lineal, y luego lo ex-
tenderemos al caso de regresión logı́stica.
Supongamos que tenemos un modelo de regresión lineal con dos variables independientes, una
dicotómica y otra continua, pero es la dicotómica la que es de interés, esta situación es frecuente
en estudios epidemiológicos cuando se estudia la exposición a un riesgo y queremos ajustar por
ejemplo por la variable edad.
Supongamos que queremos comparar la altura media de dos grupos de plantas jóvenes (unas so-
metidos a un cierto tratamiento y otros no), sabemos que la altura está asociada con la edad. Si
la distribución de la edad es la misma en los dos grupos de plantas, entonces podrı́amos comparar
directamente la altura media de los dos grupos, esta comparación nos darı́a una estimación de la
diferencia en altura entre los dos grupos. Sin embargo, si un grupo fuera más joven que otro, enton-
ces la comparación entre los dos grupos carecerı́a de sentido, ya que una proporción de la diferencia
en altura observada serı́a debida a la diferencia en edad, y por lo tanto serı́a imposible determinar
el efecto del tratamiento en la altura si no eliminamos primero el efecto debido a diferencia en edad
entre los grupos. Por simplicidad, vamos a suponer que no hay interacción entre ambas variables
(más adelante veremos como comprobar si efectivamente la hay o no). El modelo estadı́stico en este
caso serı́a:
y = β0 + β1 x + β2 e +
donde y representa la altura, x es una variable que toma el valor 0 si las plantas se han sometido
a un tratamiento y valor 1 si las plantas no se han sometido ese tratamiento, y e representa la
edad. En este modelo el parámetro β1 representa la diferencia en altura entre los dos grupos, y el
parámetro β2 es la tasa de cambio en altura por semana de edad. Cada recta pasa por (e1 , y1 ) y
(e2 , y2 ) ((y1 ,y2 ) representan la altura media de cada grupo), por lo tanto:
(y2 − y1 ) = β1 + β2 (e2 − e1 )
Por lo tanto la comparación no sólo implica la diferencia entre las medias de los grupos (β1 ), sino
también β2 (e2 − e1 ) que representa la diferencia entre la edades de los grupos.
El proceso estadı́stico de ajustar por edad supone comparar los dos grupos para un mismo valor de
la edad, el valor que se utiliza normalmente es la altura media de los dos grupos, e, eso equivaldrı́a
y2
y = β 0 + β1 + β 2 e
y4
y3 y = β0 + β 2e
y1
e1 e e2
34
a comparar y4 e y3 , es decir (y4 − y3 ) = β1 + β2 (e − e) = β1 . La elección de la media de edad tiene
sentido por dos razones: es un valor lógico y está dentro del rango de valores para los que creemos
que la relación entre las variables es lineal.
Consideremos ahora una situación similar, pero en vez de la variable altura, tenemos la percepción
de salud, por lo tanto la ecuación del modelo será:
p
log = β0 + β1 x + β2 e
1−p
donde x es la variable sexo y eβ1 es odds ratio para un mismo valor de la edad, es decir el odds ratio
que esperarı́amos encontrar si la edad media en hombres y mujeres fuera similar.
logistica4=glm(g02~sexo,family=binomial(link=logit))
logistica5=glm(g02~sexo+edad,family=binomial(link=logit))
summary(logistica4)
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 1.64320 0.04482 36.661 < 2e-16 ***
summary(logistica5)
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 3.797233 0.120809 31.432 < 2e-16 ***
sexo2 -0.395887 0.061899 -6.396 1.6e-10 ***
edad -0.051446 0.002512 -20.478 < 2e-16 ***
El parámetro β1 es muy similar en ambos casos, esto es debido a que la edad media en hombre y en
mujeres es muy similar (39.15 y 39.32 respectivamente), por lo tanto ajustar por edad no cambia
el odds de la percepción de salud por sexos.
ajustados5=predict(logistica5,type="link")
plot(edad,ajustados5,type="n",main="sin interaccion")
points(edad[sexo==1],ajustados5[sexo==1],col=2)
points(edad[sexo==2],ajustados5[sexo==2],col=4)
legend(50,2, col=c(2,4),pch=c(1,1),c("hombre","mujer"))
sin interaccion
●
●
●
●
●
●
●
2.5
● ●
● ●
● ●
● ●
● ●
● ●
● ●
● ●
● ●
2.0
● ●
● ●
● ●
● ●
● ●
●
● hombre
ajustados5
● ●
●
● ●
●
● mujer
● ●
1.5
● ●
● ●
● ●
● ●
● ●
● ●
● ●
● ●
● ●
● ●
1.0
● ●
● ●
● ●
● ●
● ●
● ●
● ●
● ●
● ●
● ●
0.5
● ●
●
●
●
●
●
●
●
●
0.0
20 30 40 50 60
edad
35
El método de ajuste cuando las variables independientes son todas dicotómicas, politómicas,
continuas o mezclas de ellas es idéntico al que acabamos de describir, por ejemplo si utilizamos la
variable edad agrupada en tres categorı́as
Un punto que hay que tener en cuenta a la hora de interpretar los parámetros del modelo es si
se cumplen las hipótesis en las que se basa: que la relación es lineal y que las rectas son paralelas.
Si la asociación entre la covariable (edad) y la variable respuesta es la misma para cada nivel
del factor (sexo) entonces no hay interacción entre la covariable y el factor. Gráficamente, la au-
sencia de interacción da lugar a un modelo con dos rectas paralelas, una para cada nivel del factor.
Cuando la interacción está presente, la asociación entre el factor y la variable respuesta depende
del nivel de la covariable, es decir la covariable modifica el efecto del factor.
En el ejemplo anterior, si hubiera interacción implicarı́a que el logit en el grupo de mujeres sigue
Log-odds
l1
l2
l3
edad
una lı́nea con diferente pendiente. Por lo tanto, un aspecto importante a la hora de buscar el mo-
delo más adecuado es determinar si hay evidencia de interacción entre las variables, este aspecto
será tratado más adelante.
En la figura siguiente se muestran 3 logits diferentes. Supongamos que la lı́nea l1 corresponde al
logit para mujeres en función de la edad, y l2 lo es para los hombres. Estas dos lı́neas son paralelas,
indicando que la relación entre la edad y la percepción de salud es la misma para hombres que para
mujeres. En esta situación no hay interacción y el logaritmo del odds-ratio para sexo controlado por
edad viene dado por la distancia entre las rectas, l1 − l2 , esta diferencia es la misma para cualquier
edad. Supongamos ahora que el logit para mujeres viene dado por la lı́nea l3 , ésta indica que la
relación entre la percepción de salud y la edad es distinta en hombres y en mujeres. Cuando esto
ocurre diremos que hay interacción. El logaritmo del odds-ratio estimado para sexo controlado por
edad viene dado por la distancia vertical l1 − l3 , pero ahora la diferencia depende de la edad en la
que se está haciendo la comparación. Por lo tanto, no podemos estimar el odds-ratio para sexo sin
36
especificar para qué valor de la edad estamos haciendo esta comparación. En este caso la edad es
un efecto modificador.
Una manera de detectar una variable de confusión es ver si los parámetros estimados para el
factor de interés cambiaban sustancialmente al introducir la covariable, este criterio no se puede
aplicar al caso de la interacción ya que la inclusión de un término de interacción, especialmente
si una de las variables es continua, normalmente da lugar a cambios en los parámetros estimados,
aunque la interacción no sea significativa.
En el caso de los datos de percepción de salud, para saber si edad es un variable de confusión
con respecto al sexo, vemos si el valor del parámetro del seco cambian mucho al introducir edad:
logistica4
Coefficients:
(Intercept) sexo2
1.6432 -0.3775
logistica5
Coefficients:
(Intercept) sexo2 edad
3.79723 -0.39589 -0.05145
En este caso, hay muy poca diferencia, por lo que podemos considerar que no hay confusión.
Ahora vemos si existe interacción entre ambas variables
logistica7=glm(g02~sexo+edad+sexo:edad,family=binomial(link=logit))
ajustados7=predict(logistica7,type="link")
plot(edad,ajustados5,type="n",main="sin y con interaccion")
points(edad[sexo==1],ajustados5[sexo==1],col=2)
points(edad[sexo==2],ajustados5[sexo==2],col=4)
points(edad[sexo==2],ajustados7[sexo==2],col=3,pch=2)
legend(50,2, col=c(2,4,3),pch=c(1,1,2),c("hombre","mujer", "mujer-interac"))
El gráfico nos muestra que el hecho de introducir un término de interacción casi no modifica la
pendiente de la recta, lo cual es un indicio de que que no hay interacción. Por lo tanto edad no es
una variable de confusión (como vimos antes) ni es un efecto modificador, estas conclusiones hay
que comprobarlas mediante tests que comparen los modelos (lo veremos más adelante).
Si en vez de utilizar la variable edad, utilizamos el peso:
logistica8=glm(g02~sexo+peso,family=binomial(link=logit))
logistica8
37
sin y con interaccion
●
●
●
●
●
●
●
2.5
● ●
● ●
● ●
● ●
● ●
● ●
● ●
● ●
● ●
2.0
● ●
● ●
● ●
● ●
● ●
●
● hombre
ajustados5
● ●
●
● ●
●
● mujer
● ●
mujer−interac
1.5
● ●
● ●
● ●
● ●
● ●
● ●
● ●
● ●
● ●
● ●
1.0
● ●
● ●
● ●
● ●
● ●
● ●
● ●
● ●
● ●
● ●
0.5
● ●
●
●
●
●
●
●
●
●
0.0
20 30 40 50 60
edad
Coefficients:
(Intercept) sexo2 peso
3.71254 -0.82594 -0.02619
logistica4
Coefficients:
(Intercept) sexo2
1.6432 -0.3775
Vemos que al introducir el peso el parámetro de sexo pasa de −0,38 a −0,82 un descenso de más
del 50 % lo que da indicios de que el peso pueda ser una variable de confusión.
logistica9=glm(g02~sexo+peso+sexo:peso,family=binomial(link=logit))
ajustados9=predict(logistica9,type="link")
plot(peso,ajustados9,type="n",main="con interaccion")
points(peso[sexo==1],ajustados9[sexo==1],col=2)
points(peso[sexo==2],ajustados9[sexo==2],col=4)
legend(140,2, col=c(2,4),pch=c(1,1),c("hombre","mujer"))
En el siguiente gráfico vemos que las rectas a las que da lugar el modelo con interacción no son
paralelas y que la percepción de salud en función de la edad es distinta para hombres que para
mujeres, éstas se ven más afectas por el peso.
En resumen, determinar si una variable es un efecto modificador y/o de confusión depende de
varios aspectos. Para que sea una variable de confusión se han de cumplir dos condiciones:
1. La variable ha de estar asociada con la variable respuesta, es decir que el parámetro estimado
para esta variable ha se ser distinto de 0.
Mientras que para detectar un efecto modificador hemos de mirar a la estructura paramétrica del
logit.
38
con interaccion
●
●
●●●●
●
2
●● ●
●●●●●
●● ●●●
●●●
●
●
● ●●
●●●
●●
●● ●
●●●
●●● ● hombre
●● ●●●
●●●
●
●
● ●●
●●●
●●
●● ●
●●●
●●
●●●
●
●
●●●
●●●
●●●●
●●
● mujer
●● ●
●●●
● ●●
●● ●●
●
● ●
1
●●
●●●
●●●
●●●
● ●
●●
●●●
●
ajustados9
●●
●●●
●●
0 ●
●●●
●●●
●●
●●
●
−1
−2
●
●
−3
peso
39
En el ejemplo de los datos sobre percepción de salud, supongamos que queremos saber el OR del
sexo:
OR = exp[1,23 − 0,029x]
eI.C.logit
1 + eI.C.logit
Por ejemplo supongamos que estamos interesados en el efecto del peso sobre la percepción de salud
en los hombres:
ajustados8=predict(logistica8, se.fit=TRUE)
names(ajustados8)
L.inf=with(ajustados8,exp(fit-1.96*se.fit)/(1+exp(fit-1.96*se.fit)))
L.sup=with(ajustados8,exp(fit+1.96*se.fit)/(1+exp(fit+1.96*se.fit)))
with(ajustados8,plot(peso[sexo==1],(exp(fit)/(1+exp(fit)))[sexo==1],
ylim=c(0.1,1),ylab="probabilidad"))
points(peso[sexo==1],L.inf[sexo==1],col=2)
points(peso[sexo==1],L.sup[sexo==1],col=2)
legend(130,0.85, c("probabilidad","I.C."),col=c(1,2),pch=c(1,1))
1.0
● ●
●●
● ●
●●●
●●●
●
● ●
●●●
●●●
●●●
●●●
●
●●●
●●●
●●●
●
●●●
●●
●●
●●●
●●●
●●●
●●●
●●
●●●
●
●●●
●
●●●
●
●●●
●●●
●●
●●
●●
●●
●●●
●●●
●
●●●
●
●●●
●●●
●●●
●
● ● ●
0.8
●●
●●●
● ●
●●●
●●
●●
●●
●
●
●●●
●
●
●
●
●
●●●
●●
● probabilidad
●●
● ●
●● ●
●●
● ● ●
●●
●
●●
●
●
●●
● ●●●
● I.C.
●● ●●● ●
● ●●●
●
●● ●● ●
● ●
● ●●●
●●
●
●
● ●
● ●
●●
● ●●
probabilidad
●● ●
●
● ●
0.6
● ●
● ●
●
●
●
0.4
●
0.2
peso[sexo == 1]
El intervalo de confianza es más ancho en los extremos ya que hay menos observaciones y
por lo tanto las estimaciones son menos precisas. La lı́nea vertical corresponde al peso medio de
los hombres, por eso es por lo que el intervalo de confianza es más estrecho. Cada punto y su
correspondiente intervalo de confianza está estimando la media de la variable respuesta, percepción
de salud, entre los hombres para un valor especı́fico del peso. Por ejemplo, a los 80 kilos, el valor
estimado es 0,835 y el intervalo de confianza es (0,823, 0,847). La interpretación es que la proporción
estimada de hombres con buena salud que pesan 80 kilos es 0,835 y puede ser tan baja como 0,823
40
y tan alta como 0,847 con un 95 % de confianza. Si nos vamos al caso extremos de hombres que
pesen 165 kilos, la estimación de la proporción es 0,65 y el intervalo de confianza (0,494, 0,783). Un
error que se comete a veces es aplicar las estimaciones de la probabilidad a los sujetos individuales,
sin embargo, estas probabilidades representan la proporción de sujetos.
3. Selección de variables
Una vez que hemos estimado los parámetros, hemos de determinar si las variables del modelo
son significativas o no. Esto supone la formulación de tests de hipótesis para determinar si las varia-
bles independientes del modelo están relacionadas significativamente con la variable respuesta. El
método para realizar estos tests es bastante general y difiere sólo de un modelo a otro en pequeños
detalles. Comenzamos con un enfoque general para el caso en el que hay una sola variable indepen-
diente en el modelo. Esta metodologı́a se basa en la siguiente pregunta: ¿El modelo que incluye la
variable en cuestión nos da más información sobre la variable respuesta que un modelo que no la
incluya?. La respuesta a esta pregunta se hace comparando los valores observados con los valores
predichos por ambos modelos. Si los valores predichos por el modelo que incluye la variable en
cuestión son mejores (en algún sentido) que los predichos cuando la variable no está en el modelo,
diremos que la variable es significativa. Es importante que distingamos esta cuestión de la que nos
plantearemos cuando se discuta la bondad de ajuste del modelo (ya que en ese caso nos fijaremos
en la adecuación de los valores ajustados en un sentido absoluto).
Ilustramos la metodologı́a partiendo del método de regresión lineal simple. En este caso el test
se realiza mediante la tabla del análisis de la varianza. La tabla se basa en la división de la suma
de cuadrados de la distancia entre las observaciones y su media en dos partes: (1) SSE = suma de
cuadrados de las desviaciones entre las observaciones y la recta, también se llama suma de cuadra-
dos residual, y (2) SSR = suma de cuadrados de las desviaciones entre los valores ajustados por
el modelo y la media de las observaciones, también llamada suma de cuadrados debida a la regresión.
6.5 Inferencia
Esto nos ofrece una forma muy simple de comparar los valores observados con los ajustados por
ambos modelos. En el modelo de regresión, comparamos los valores ajustados y los observados
Contraste de regresión: Descomposición de la variabilidad
∑( y − y) = ∑( y ) + ∑( y
ˆi − y )
2 2 2
i i −y
ˆí
41
mediante SSE:
n
X
SSE = (yi − ŷi )2 ,
i=1
donde yˆi representan los valores ajustados por el modelo.
Si definimos un modelo saturado como aquel en que hay tantos parámetros como observaciones,
entonces en dicho modelo ŷi = yi , y la comparación entre valores observados y ajustados de hace
mediante:
verosimilitud del modelo ajustado
D = −2 ln
verosimilitud del modelo saturado
la cantidad dentro de los corchetes se llama razón de verosimilitud, a esta cantidad se le toma
logaritmo y se multiplica por −2 porque de esta manera obtenemos una cantidad que sigue una
distribución conocida χ2 y por lo tanto se pueden realizar contrastes de hipótesis, a este test se le
llama test de la razón de verosimilitud. En el caso de un modelo de regresión logı́stica viene
dado por
n
1 − p̂(xi )
X p̂(xi )
−2 yi ln + (1 − yi ) ln
yi 1 − yi
i=1
Al estadı́stico D se le llama devicance. Cuando la variable respuesta es dicotónica, la verosimilitud
del modelo saturado es 1 por lo tanto, en un modelo de regresión logı́stica la deviance es:
logistica4
Coefficients:
(Intercept) sexo2
1.6432 -0.3775
42
A la hora de comprobar si una variable en el modelo es significativa lo que hacemos es comparar
el valor de D con y sin la variable independiente en el modelo:
verosimilitud del modelo sin la variable
G = −2 ln
verosimilitud del modelo con la variable
= D(modelo sin la variable) − D(modelo con la variable).
En el ejemplo anterior:
anova(logistica4,test="Chisq")
Analysis of Deviance Table
Response: g02
A la vista de estos resultados lo único que podemos decir es que la variable es significativa, sin
embargo para determinar que la variable debe estar en el modelo hay que comprobar que el modelo
es el adecuado, ası́ como incluir otras variables.
Otro test alternativo es el Wald test, este test compara el estimador máximo verosı́mil del paráme-
tro con su error estándar, bajo ha hipótesis nula H0 : β1 = 0 la razón entre estas dos cantidades
sigue una distribución N (0, 1), pero este test lleva a no rechazar H0 cuando el parámetro es signi-
ficativo, por lo tanto se debe utilizar el test de la razón de verosimilitud.
Si en vez de tener una sola variable tenemos más, este test se hace de la misma forma con la única
diferencia que los grados de libertad de la distribución χ2 serán igual a la diferencia en número de
parámetros entre los dos modelos que estamos comparando. La decisión de incluir o no de un con-
junto de variables en un modelo no puede basarse sólo en los test de significación. Un complemento
a los test de hipótesis para los parámetros son los intervalos de confianza, que se calculan como:
β̂i ± z1−α/2 SE
b β̂i ,
como hemos visto antes, a partir de esta expresión, es sencillo calcular los intervalos de confianza
para el logit y para la probabilidad estimada.
Hasta ahora nos hemos centrado en la estimación, contraste e interpretación de los coeficeintes
del modelo. Los ejemplos que hemos utilizado incluı́an pocas variables explicativas y, por lo tanto,
es bastante sencillo seleccionar el mejor modelo. Sin embargo, hay situaciones en las que hay mu-
chas variables explicativas que, en principio, podrı́an estar en el modelo. El objetivo de cualquier
método de selección de variables es elegir aquellas variables que dan lugar al mejor modelo dentro
del contexto cientı́fico del problema que se trata. Para conseguir esto necesitamos:
43
2. Un conjunto de métodos para comprobar el ajuste del modelo, tanto para cada variable de
forma individual, como para todas en conjunto.
Encontrar un modelo adecuado es en parte ciencia, parte métodos estadı́sticos, parte experiencia y
sobre todo sentido común.
logistica10=glm(g02~peso,family=binomial(link=logit))
anova(logistica10,test="Chisq")
44
cientı́fico.
De entre las siguientes variables: educa, edad2, sexo, con.tab, peso ¿Cuáles incluirı́as en el
análisis multivariante?.
anova(glm(g02~educa,family=binomial(link=logit)),test="Chisq")
.
.
.
logistica12=glm(g02~educa+edad2+sexo+peso,family=binomial(link=logit))
summary(logistica12)
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 2.745780 0.250075 10.980 < 2e-16 ***
educa2 0.458386 0.104607 4.382 1.18e-05 ***
educa3 1.031458 0.111568 9.245 < 2e-16 ***
educa4 1.438206 0.112947 12.733 < 2e-16 ***
edad22 -0.314390 0.092066 -3.415 0.000638 ***
edad23 -1.072312 0.089383 -11.997 < 2e-16 ***
sexo2 -0.631798 0.077985 -8.102 5.43e-16 ***
peso -0.018155 0.002796 -6.493 8.39e-11 ***
---
glm(g02~educa,family=binomial(link=logit))
.
.
.
45
4. Comprobar las interacciones
Una vez que hemos seleccionado las variables hay que comprobar las interacciones. Recorde-
mos que la interacción entre dos variables significa que el efecto de una de las dos variables
no es constante para todos los niveles de la otra. La decisión final sobre si un término de
interacción debe ser incluı́do en el modelo debe basarse tanto en consideraciones estadı́sticas
como en prácticas.
Empezaremos por incluir las interacciones entre pares de variables que tengan alguna base
cientı́fica para interaccionar. Introducimos una interacción cada vez y vemos si es significati-
va utilizando el test de la razón de verosimilitud. La inclusión de una interacción que no sea
significativa tiene el efecto de no cambiar el valor de los parámetros estimados, pero aumenta
el error estándar.
logistica13=glm(g02~educa+edad2+sexo*peso,family=binomial(link=logit))
anova(logistica12,logistica13, test="Chisq")
Analysis of Deviance Table
Podemos realizar gráficos para representar el efecto de las variables explicativas e interacciones.
Para ello utilizamos la librerı́a effects:
library(effects)
plot(effect("educa",logistica13),ylab="Prob(salud)")
plot(effect("sexo*peso",logistica13),ylab="Prob(salud)")
0.85
●
0.8
Prob(salud)
Prob(salud)
0.80 0.7
0.6
0.75 ● 0.5
0.4
0.70
0.3
0.65 ●
0.2
educa peso
En algunas ocasiones no sabemos qué variables pueden ser relevantes en el modelo, en estos
casos podemos introducir todas y utilizar stepwise para elegir entre las variables de forma rápida y
sencilla. Cualquier método stepwise está basado en un algoritmo que comprueba la importancia de
las variables en el modelo y las incluye o excluye de acuerdo a una regla fija. En el caso de regresión
logı́stica (y de cualquier otro glm) se considera la variable más importante, aquella que da lugar al
cambio más importante en un criterio llamado AIC, el cual está basado en el deviance y el número
46
de parámetros del modelo. El proceso empieza ajustando el modelo con sólo la constante y com-
parándolo con el modelo que resulta de introducir cada una de las variables, aquella que da lugar
a un valor del AIC más pequeño es considerada la más importante y se introduce en el modelo.
A continuación se compara el modelo con una variable con los modelos que resultan de introducir
otra variables más, y ası́ sucesivamente. Además en cada paso se comprueba que la variable que se
ha introducido en paso anterior sigue siendo significativa. Una vez que se han elegido ası́ las va-
riables y sus interacciones, habrı́a que comprobar una a una con el test de la razón de verosimilitud.
Son medidas de la diferencia entre los valores ajustados y observados basadas en los residuos del
modelo, los Pearson residuals son:
yj − mj p̂j
r(yj , p̂j ) = p
mj p̂j (1 − p̂j )
donde mj es el número de individuos que comparten el mismo patrón de covariables, es decir la
misma combinación de las variables explicativas. El estadı́stico X2 de Pearson es
J
X
2
X = r(yj , p̂j )2 ,
j=1
donde J es el número de patrones diferentes. Los Pearson residuals estandarizados siguen aproxi-
madamente una distribución N(0,1) por lo que deberı́an estar en el intervalo (−3, 3)
El otro estadı́stico está basado en los Deviance residuals que se calculan a partir de la defini-
ción de la deviance que vimos anteriormente. En ambos casos, se considerará que un valor del
estadı́stico por encima de 4 podrı́a ser un indicio de que el modelo no ajusta bien. Este test sólo
es posible utilizarlo cuando el número de datos es bastante más grande que el número de patrones.
En el caso en el que una de las variables es continua no deben usarse estos tests. Si este es el caso
hay que utilizar el test de Hosmer- Lemeshow.
En la librerı́a ResourceSelection hay una función que ajusta el test de Hosmer- Lemeshow.
47
library(ResourceSelection)
hoslem.test(g02,fitted(logistica13))
La probabilidad es 0.63, lo que indicarı́a que el modelo ajusta correctamente los datos.
Esta tabla resulta de cruzar la variable respuesta, y, con una variable dicotómica cuyos valores
resultan de las probabilidades estimadas en el modelo. Para definir esta variable hemos de decidir
un punto de corte c y comparar las probabilidades estimadas con c, si son mayores, la variable vale
1 y si son menores 0. Lo más normal es tomar c = 0,5 o un valor mayor. Sin embargo, la tabla
de clasificación por si sola no es una buena medida de ajuste, aunque puede ser útil junto a otras
medidas basadas en los residuos.
Las tablas no deben usarse para comparar modelos ya que depende en gran parte de la distribu-
ción de las probabilidades en la muestra en la que están basadas, el mismo modelo evaluado en
dos muestras diferentes puede dar lugar a clasificaciones distintas. Si el objetivo del análisis no
es la clasificación de sujetos, entonces las tablas de clasificación son sólo el complemento de otras
medidas de ajuste.
48
Cada vez que elegimos un punto de corte la sensitividad y especificidad cambian, si nuestro objetivo
es buscar el punto de corte óptimo desde el punto de vista de la clasificación, entonces buscaremos
aquel que maximiza la sensitividad y especificidad. La curva ROC (Receiver Operating Characte-
ristic) es un gráfico de sensibilidad
Models frenteLineals
a 1−especificidad (tasa de falsos positivos) para todos los
Generalitzats
puntos de corte. El área por debajo de esa curva puede tomar valores entre 0 y 1, y nos proporciona
CIDAD PREDICTIVA
una medida de la habilidad del modelo para DEL MODELO
discriminar entre aquellos individuos que presentan la
respuesta de interés frente a los que no la presentan.
En general:
cuestión se da el siguiente criterio en función del
área bajo la curva
Si ROC ROC:
≤ 0,5 el modelo no ayuda a discriminar
Si 0,8 ≤ ROC.80-.90
≤ 0,9 el modelo= buena
discrimina (B)
de forma excelente
Curs 2.005-2.006
5. Diagnosis en regresión logı́stica
Cuando se violan las hipótesis en las que se basa el modelo de regresión logı́stica, el modelo
ajustado puede dar lugar a los siguientes errores:
Coeficientes sesgados
Estimadores ineficientes
49
1.0
0.8
lr.eta = 0.800
Sens: 72.3%
0.6
Spec: 59.9%
Sensitivity
PV+: 88.4%
PV−: 33.8%
0.4
educa2 0.450 (0.105)
educa3 1.017 (0.112)
educa4 1.417 (0.113)
edad22 −0.317 (0.092)
edad23 −1.065 (0.089)
0.2
sexo2 0.167 (0.407)
peso −0.013 (0.004)
sexo2:peso −0.011 (0.006)
1−Specificity
en los que la significación de los coeficientes es inexacta. Además, valores inusualmente altos o bajos
de las variables independientes (high leverage points) o de la variable respuesta (outliers) pueden
ser puntos influyentes que distorsionen la influencia de los parámetros. Nos vamos a centrar en las
consecuencias de no satisfacer las hipótesis y en cómo detectarlas.
library(mgcv)
logistica13.3=gam(g02~educa+edad2+s(peso,by=sexo),family=binomial,method="REML")
par(mfrow=c(1,2))
plot(logistica13.3)
La detección de la no aditividad hay que hacerla contrastando si las interacciones entre las variables
son significativas o no. La correlación entre las variables explicativas (multicolinealidad) puede
afectar también al sesgo de los coeficientes, un valor de la correlación mayor de 0.8 se considera
alto y dará lugar a coeficientes elevados pero que son estadı́sticamente no significativos.
50
2
2
0
0
−2
−2
s(peso,4.98):sexo1
s(peso,1.01):sexo2
−4
−4
−6
−6
−8
−8
−10
−10
40 80 120 160 40 80 120 160
peso peso
Las observaciones que a priori tienen influencia en los parámetros del P modelo pueden ser iden-
tificadas por un alto valor del leverage hi (en regresión simple ŷj = hij yj ), este coeficiente
captura la influencia de la observación yj en el valor predicho ŷj . En regresión logı́stica hay varias
medidas de la influencia, las principales son:
2. ∆β de Pregibon que da una aproximación de lo que cambian los coeficientes al omitir cada
observación.
∆β frente a p̂j
En el primer gráfico, los patrones de covariables que ajustan mal son aquellos con puntos en la
parte superior derecha o izquierda del gráfico. Se considera un valor elevado aquel que está por
encima de 3. En el gráfico de ∆β, para que un patrón de variable tenga efecto en los coeficientes
estimados, el valor ha de ser mayor que 1.
La función influence.measures(), nos da esta información.
51
El efecto principal es la variable continua peso, hay además una variable nominal dicotómica,
sexo, dos variables politónicas, edad (edad2) y nivel de estudios (educa), además se incluye la in-
teracción entre sexo y peso.
exp(confint(logistica13))
Waiting for profiling to be done...
2.5 % 97.5 %
(Intercept) 5.2863677 19.3239718
educa2 1.2765170 1.9250822
educa3 2.2208226 3.4433198
educa4 3.3046966 5.1561349
edad22 0.6074493 0.8717621
edad23 0.2889436 0.4104118
sexo2 0.5330294 2.6248014
peso 0.9798893 0.9952553
sexo2:peso 0.9779375 0.9997543
52
Valor de la variable Odds Ratio I.C. 95 %
Edad
Menor de 29 1.00
30-44 0.73 0.61 0.87
45-64 0.34 0.29 0.41
Educación
Bajo 1.00
Medio-Bajo 1.56 1.27 1.92
Medio-Alto 2.76 2.22 3.44
Alto 4.12 3.3 5.15
considera raro cuando es menor del 15 %. En nuestro ejemplo significarı́a que la posibilidad de que
un individuo tenga buena salud es pequeña, y en realidad es del 80 %. El intervalo de confianza
es (0,61, 0,87) sugiere que el odds de buena salud para personas de mediana edad puede ser tan
pequeño como 0.61 y tan grande como 0.87. Para personas de más edad el odds es menos de la
mitad. En el caso de la educación todos los valores del odd están por encima del uno, lo que indica
que tener más nivel de estudios es una ventaja a la hora de tener buena salud.
El caso para la interacción entre sexo y peso es diferente, para empezar no podemos interpretar las
variables por separado. Empezamos por describir el efecto de un incremento del peso en la salud,
ajustando por sexo; supongamos que queremos calcular el OR que corresponde a un incremento del
peso en 30 kilos para los hombres o las mujeres cuando las demás variables se mantienen constantes
(por esta razón no las incluı́mos al calcular el logit):
logit(sexo, peso) = β̂0 + β̂1 sexo + β̂2 peso + β̂3 sexo × peso
logit(sexo, peso + 30) = β̂0 + β̂1 sexo + β̂2 (peso + 30) + β̂3 sexo × (peso + 30)
logit(sexo, peso + 30) − logit(sexo, peso) = β̂2 30 + β̂3 sexo × 30
OR = exp β̂2 30 + β̂3 sexo × 30
exp(30*-0.0125)
[1] 0.6872893
exp(30*-0.0125-0.01257*30)
[1] 0.4893878
El odds ratio es mayor en los hombres que en las mujeres cuando el peso incrementa 30Kg. Si lo
hacemos para distintos pesos veremos que cuanto mayor el el incremento del peso más distancia
hay entre OR para hombres y mujeres. Queda describir el efecto del sexo ajustando por peso, en
este caso
OR = exp β̂1 + β̂3 peso
OR_M=exp(0.16689-0.01125*peso)
plot(peso,OR_M,col=2,ylab="OR Mujeres sobre Hombres")
53
0.2 0.3 0.4 0.5 0.6 0.7 0.8
●
●
●●
●●
●●
●●
●
●
●
●
peso
El gráfico muestra el OR de mujeres sobre hombres para distintos valores del peso, se ve cla-
ramente que las mujeres están en desventaja con respecto a los hombres (ya que los valores son
menores que 1), y esa desventaja se acentúa con el peso.
En la literatura aparecen varias alternativas para el análisis de datos binarios en estudios transver-
sales estimando directamente la PR:
1. Transformar OR en RP:
Los resultados de ajustar un modelo de regresión logı́stica, además de proporcionar los OR,
proporcionan las PR, simplemente dividiendo las las probabilidades estimadas. Sin embar-
go, esto presenta dos dificultades: 1) Es necesario hacer un análisis estratificado, lo cual se
complica bastante cuando hay varias variables politómicas o continuas y 2) el cálculo de los
errores estándar no es inmediato, con lo cual es difı́cil obtener intervalos de confianza.
2. Regresión de Breslow-Cox:
El modelo de Cox estima el RR de presentar una condición en aquellos individuos que han
sufrido una exposición respecto a aquellos que no la han sufrido, ajustando por unas ciertas
54
variables teniendo en cuenta también el tiempo de exposición a partir de la función de riesgo
acumulado:
h(t) = h0 (t)exp (β1 X1 + . . . βk Xk )
El principal inconveniente de este modelo es que asume que los errores del modelo siguen una
distribución de Poisson, cuando en realidad son binomiales, esto dará lugar a que la varianza
de los coeficientes sea sobrestimada
3. Regression de Poisson:
La regresión de Poisson se utiliza fundamentalmente para analizar estudios longitudinales
donde la variable respuesta es el número de individuos con una caracterı́stica que ocurren en
un periodo de tiempo, n
log = β0 + β1 X1 + . . . βk Xk
t
En este contexto, la regresión de Poisson es equivalente a la regresión de Cox, sin embargo la
regresión de Poisson da lugar en ciertas ocasiones a estimaciones de la prevalencia mayor que
uno.
log(p) = β0 + β1 X1 + . . . βk Xk
por lo tanto,
log(p(X1 = 1)) = β0 + β1 + . . . βk Xk
log(p(X1 = 0)) = β0 + . . . βk Xk
log(p(X1 = 1)) − log(p(X1 = 0)) = β1
p(X1 = 1)
PR =
p(X1 = 0)
logistica14=glm(g02~educa+edad2+sexo*peso,family=binomial(link=log))
55
-----------------------------------------------------------------
low Peso al nacer (0 = Peso $>$ 2500g,
l = Peso $<$ 2500g)
age Edad de la madre en a\~nos
lwt Peso de la madre en el \’ultimo ciclo menstrual
race Raza (1 = Blance, 2 = Negra, 3 = Otra)
smoke Fumadora durante el embarazo (1 = S\’i, 0 = No)
-----------------------------------------------------------------
El modelo
1. Empezamos haciendo una regresión logı́stica univariante, es decir, los modelos continen una
sola de las variables explicativas:
glm1=glm(low~lwtfamily=binomial)
glm2=glm(low~race,family=binomial)
glm3=glm(low~smoke,family=binomial)
glm4=glm(low~age,family=binomial)
Comprueba que obtienes los siguientes resultados, donde la información de cada columna
corresponde a: (1) coeficiente estimado, (2) error estándar estimado, (3) odds ratio estimado,
(4) intervalo de confianza al 95 % para el odds ration, (5) el deviance del modelo, (6) el cambio
en el deviance cuando contrastamos la hipótesis de que el modelo es igual a cero, (7) el p-valor
para este test (usa la función anova()).
Variable β̂ s.e.(
ˆ β̂) Odds-ratio 95 % C.I. Deviance ∆D p
Constant -0.798 0.157 234.7
age -0.051 0.031 0.6 (0.32,1.11) 231.9 2.76 0.1
lwt -0.014 0.006 0.87 (0.77,0.98) 228.7 5.98 0.02
race2 0.845 0.463 2.33 (0.94,5.77) 229.7 5.01 0.08
race3 0.636 0.347 1.89 (0.96,3.73)
smoke 0.704 0.319 2.02 (1.08,3.78) 229.8 4.87 0.03
2. Basándonos en estos los modelos con una sola variables, ajustamos un modelos con todas las
variables excepto age. Comprueba que los resultados que obtienes en este caso coinciden con
los de la siguiente tabla:
Variable β̂ s.e.(
ˆ β̂) β̂/s.e.(
ˆ β̂)
Constant -0.109 0.882 -0.124
lwt -0.013 0.006 -2.101
race2 1.29 0.511 2.525
race3 0.97 0.412 2.354
smoke 1.06 0.378 2.802
3. Hemos de comprobar también las interacciones entre las variables del modelo anterior. Como
hay sólo tres variables, es sencillo hacerlo. En los casos en los que haya un alto número de
56
variables es aconsejable comprobar sólo aquellas que tengan sentido cientı́fico o sobre las que
tengamos alguna información.
Ajusta todas las posibles interacciones y usa la función anova() para comprobar si son signi-
ficativas o no, debes obtener los siguientes resultados:
Interaction Deviance ∆D df p
Main effects only 215.01
lwt×race 213.51 1.498 2 0.473
lwt ×smoke 214.09 0.918 1 0.338
race×smoke 212.61 2.403 2 0.301
6. Usa el test de Hosman-Lemeshow para ver la bondad de ajuste del modelo final (usando 10
grupos).
7. Usa los residuos deviance para realizar los gráficos de diagnóstico. Calcula el Delta Deviance,
del Delta de Pearson. Comprueba que el punto de corte optimo es 0.339. ¿es un buen modelo
predictor?
A=influence.measures(birth.glm)$infmat
dr=residuals(birth.glm,"deviance")
pr=predict(birth.glm,type="response")
plot(pr,dr)
plot(birth.glm,1)
plot(dr,A[,6])
plot(dr,A[,1]) #...............
9. Ejercicios
Desastre del transbordador Challenger
El 7 de Enero de 1986, la noche antes del despegue del transbordador, hubo una reunión en la
que se discutio sobre la la temperatura mı́nima predicha para del dı́a siguiente, 31o F , y el efecto de
la misma sobre el sello en las juntas de los O-rings. En la discusión utilizaron el siguiente gráfico en
el que se muestra la relación entre la temperatura y el número de O-rings que sufrı́an problemas
57
ing the relationship between the number of O-rings hav-
ing some thermal distress and the temperature to decide
whether the shuttle should take-off as planned.
3.0
●
2.5
2.0
Number of incidents
●
1.5
1.0
● ● ● ●
0.5
−0.5
50 55 60 65 70 75 80 85
temperature
El primer error que cometieron, fue el no dibujar los casos en los que no habı́a incidentes, para
saber cuál eran las temperaturas más propicias. La decisión final fue permitir el despegue en el que
murieron 7 astronautas debido a la combustión de gas a través de un O-ring.
En el fichero de datos challenger.txt hay dos variables: temperatura y una variable dicotómi-
ca con valor 0 ó 1 que indica si hubo fallo del O-ring o no. Utlizando ese fichero responde a las
siguientes preguntas:
4. Por debajo de qué temperatura la probabilidad de fallo es mayor de 0.5? (para responder a
la pregunta utiliza el valor del parámetro estimado).
5. Si tú hubieras estado en esa reunión, cuál habrı́a sido tu decisión?, en qué te basas para
tomarla?
Ensayo toxicológico
El ensayo tiene como objetivo comparar tres tipos de insecticidas, aplicándolos a grupos de
insectos en 17 dosis distintas (en escala logarı́tmica),pasadas 24 horas se contó el número de insectos
muertos. Los datos están en el fichero insectos.txt:
A la vista de los resultados anteriores, recodifica insecticida para que tenga sólo dos niveles
y vuleve a ajustar el modelo.
58
Mortalidad por esfuerzo reproductivo
El objetivo de este estudio fue el analizar el coste reproductivo en plantas perennes. Se recogio
información sobre el número de semillas producidas por un grupo de plantas, el tamaño de su
raı́z, y si al llegar al final de la estación estaban vivas o muertas. Los datos están en el ficheros
flores.txt. Analiza si la probabilidad de muerte se ve influenciada por el número de semillas y el
tamaño de la raı́z.
59
Capı́tulo 3
Regresión Multinomial
Hasta ahora nos hemos centrado en el caso en el que la variable respuesta era dicotómica. Ahora
nos centramos en el caso en el que la variable de interés tiene más de dos categorı́as, por simplicidad,
vamos a ilustrar la metodologı́a para el caso de tres categorı́as, ya que la generalización a más de
tres es inmediata.
Ahora el modelo necesita dos funciones logit ya que tenemos tres categorı́as, y necesitamos decidir
que categorı́as queremos comparar. Lo más general es utilizar Y = 0 como referencia y formar logits
comparándola con Y = 1 y Y = 2. Supongamos que tenemos k variables explicativas, entonces:
P r(Y = 1)
log = β10 + β11 X1 + β12 X2 + . . . + β1k Xk
P r(Y = 0)
P r(Y = 2)
log = β20 + β21 X1 + β22 X2 + . . . + β2k Xk
P r(Y = 0)
con lo cual ahora tenemos el doble de coeficientes que en el caso de regresión logı́stica.
60
Los datos que vamos a utilzar en este caso provienen de un estudio cuyo objetivo es estudiar
los factores que influyen en el conocimiento, actitud y comportamiento de mujeres hacia las mamo-
grafı́as. Son datos sobre 412 mujeres y las variables son:
mamexp=read.table( "mamexp.txt",header=TRUE)
names(mamexp)
mamexp$symp=factor(mamexp$symp)
mamexp$hist=factor(mamexp$hist)
mamexp$bse=factor(mamexp$bse)
mamexp$dect=factor(mamexp$dect)
attach(mamexp)
table(me)
me
0 1 2
234 104 74
1. El procedimiento multinom() en R
La sintaxis del comando multinom es similar a la de los comandos para regresión logı́stica. Para
utilizar esta función necesitamos cargar una nueva librerı́a
library(nnet)
multi1=multinom(me~hist)
multi1
Coefficients:
(Intercept) hist1
1 -0.9509794 1.256531
2 -1.2504803 1.009384
61
logit(Último año/Nunca|hist) = −0,95 + 1,25 × hist
logit(Más de un año/Nunca|hist) = −1,25 + 1,01 × hist
Por defecto, el nivel estamos tomando como referencia es el primer nivel. El output es similar al de
regresión logı́stica, sin embargo, tenemos dos grupos de parámetros, uno para cada logit.
En este caso, no tenemos un p-valor para los coeficientes, si queremos saber si la variable explicativa
es significativa, utilizamos el test de la razón de verosimilitud
multi0=multinom(me~1)
anova(multi1,multi0)
Donde j indica el nivel de la variable respuesta con el que estamos comparando y a y b son los
valores que toman las variable explicativas. Si sólo tenemos una variable explicativa dicotómica que
toma valores 0 y 1, entonces tendrı́amos Rj (0, 1). En el ejemplo:
table(me,hist)
hist
me 0 1
0 220 14
1 85 19
2 63 11
19 × 220
OR
d1 = = 3,51 = exp(1,25)
85 × 14
11 × 220
OR
d2 = = 2,74 = exp(1,009)
63 × 14
La interpretación de los parámetros, los OR es similar al caso de regresión logı́stica. La interpreta-
ción del efecto de la historia familiar en la frecuencia de mamografı́as es la siguiente:
Mujeres con historia familiar de cancer de pecho tienen un odds de haberse hecho una ma-
mografı́a en el último año que es 3.51 veces mayor que el de las mujeres sin historia familiar.
Mujeres con historia familiar de cancer de pecho tienen un odds de haberse hecho una mamo-
grafı́a hace más de un año que es 2.7 veces mayor que el de las mujeres sin historia familiar.
En otras palabras, tener un familiar directo con cancer de pecho es un factor significativo en el uso
de mamografı́as.
Si en vez de hist introducimos dect (la opinión de las mujeres sobre la habilidad de la mamografı́a
para detectar el cancer):
62
multi2=multinom(me~dect)
summary(multi2)
Call:
multinom(formula = me ~ dect)
Coefficients:
(Intercept) dect1 dect2
1 -2.565201 0.7062589 2.1062453
2 -1.178617 -0.3926042 0.1977986
Std. Errors:
(Intercept) dect1 dect2
1 1.037867 1.083278 1.0464712
2 0.571762 0.634349 0.5936115
exp(coef(multi2))
(Intercept) dect1 dect2
1 0.07690374 2.0263961 8.217330
2 0.30770391 0.6752959 1.218717
Si nos fijamos en los errores estándar, vemos que todos los intervalos de confianza contendrı́an
al 0 excepto uno, ese OR se interpretarı́a de la siguiente forma: El odds de hacerse una mamografı́a
dentro del último año entre las mujeres que piensan que es muy probable que la mamografı́a detecte
un nuevo caso de cáncer es 8.22 veces mayor que el el odds entre las mujeres que piensan que no es
probable que la mamografı́a lo detecte.
3. Selección de variables
Los pasos a seguir serı́an los mismos que para regresión logı́stica, comenzarı́amos viendo si cada
una de las variables por separado son significativas. Si tenemos los modelos
multi3=multinom(me~symp)
multi4=multinom(me~bse)
multi5=multinom(me~pb)
multi6=multinom( me~hist+dect+symp+bse+pb)
summary(multi6)
Call:
multinom(formula = me ~ hist + dect + symp + bse + pb)
63
Coefficients:
(Intercept) hist1 dect1 dect2 symp2 symp3 symp4
1 -2.9990607 1.366274 0.01700706 0.9041717 0.1101408 1.9249158 2.457230
2 -0.9860258 1.065446 -0.92448094 -0.6906153 -0.2901346 0.8172916 1.132224
bse1 pb
1 1.291772 -0.2194421
2 1.052183 -0.1482079
Std. Errors:
(Intercept) hist1 dect1 dect2 symp2 symp3 symp4
1 1.539293 0.4375239 1.1619394 1.1268643 0.9228324 0.7776651 0.775400
2 1.111829 0.4593986 0.7137332 0.6871025 0.6440622 0.5397872 0.547666
bse1 pb
1 0.5299080 0.07551477
2 0.5149934 0.07636886
Los dos coeficientes estimados para symp que estiman el log-odds de las que están de acuerdo)
frente al grupo de referencia (que son las que están muy de acuerdo no parecen ser significativos,
por lo que podrı́amos simplificar la codificación de la variable agrupando los dos primeros niveles.
Vemos además que ninguno de los cuatro coeficientes de detc parece ser significativo, por lo que
decidimos ajustar el modelo sin esta variable y nos fijamos en dos cosas: 1) si los parámetros de las
demás variables cambian (con lo cual estamos comprobando si es una variable de confusión) y 2)
qué nos dice el test de la razón de verosimilitud.
multi7=multinom( me~hist+symp+bse+pb)
coef(multi6)
coef(multi7)
anova(multi6,multi7)
En cuanto a la variable pb vamos a codificarla para que sea más sencillo comprobar si la
relación es lineal (ya que la función gam que usamos en el capı́tulo anterior no permite usar la
familia multinomial):
benef=pb
benef[benef<=5]=0
benef[benef>5 & benef<=7]=1
benef[benef>7 & benef<=9]=2
benef[benef>9]=3
benef=factor(benef)
multi8=multinom( me~hist+symp+bse+benef)
coefi=coef(multi8)
coefi=coefi[,7:9]
matplot(t(coefi),type="l",xlab="Niveles",ylab="Coeficientes")
64
−0.4
−0.6
Coeficientes
−0.8
−1.0
−1.2
−1.4
Niveles
El gráfico confirma que la relación es lineal, con lo cual tendrı́amos la opción de dejar la variable
continua o utilizar la categorizada.
Ahora tenemos que comprobar si las interacciones son significativas, introduciendolas una a una en
el modelo. En este caso, ninguna de las diez posibles intercacciones es significtiva.
Los OR estimados:
exp(coef(multi7))
(Intercept) hist1 symp2 symp3 symp4 bse1 pb
1 0.1128529 3.950369 1.1653385 8.049259 13.721009 3.548813 0.7785954
2 0.1766115 3.051151 0.7353411 2.320669 3.135382 2.668927 0.8710831
Los OR estimados muestran que hay un aumento en el odds de hacerse una mamografı́a para ambas
categorı́as de frecuencia frente a la categorı́a “nunca” (excepto para la variable beneficio, ya que
valores más altos de esta variable corresponden a una menor creencia en el beneficio de este tipo de
diagnóstico). Las estimaciones de los OR son mayores para reciente”frente a ”nunca”, lo que indica
que los dos grupos perciben de forma diferente el valor de la mamografı́a.
En el caso de la variable sı́ntoma, las mujeres que no están de acuerdo con la frase: ”La
mamografı́a no es necesaria a menos que aparezca algún sı́ntoma”tienen un odds 13.65 ve-
ces mayor de haberse hecho una mamografı́a recientemente, y un odds 3.2 veces mayor de
habérsela hacho no tan recientemente, comparado con mujeres que no están en desacuerdo
con esa frase.
Las mujeres con historia familiar de cáncer tienen un odds 3.9 veces mayor de haber hecho
uso de la mamografı́a recientemente y 3 veces mayor en el caso no tan reciente comparado
con mujeres que no tienen un familiar próximo con cáncer.
Haber aprendido a explorarse el pecho es un factor significtivo a la hora de haberse hecho una
mamografı́a en el último año, pero no lo es a la hora de hacerlo no tan recientemente (ver los
errores estándar).
65
La variable pb tiene un OR < 1 ya que valores más altos indica creencia de menor beneficio,
además, cuanto más aumenta la desconfianza más disminuye el odds de someterse a una
mamografı́a ya sea reciente o no recientemente.
Podemos ver como cambia la probabilidad de frecuencia del chequeo para las distintas variables de
forma gráfica:
plot(effect("symp",multi7))
plot(effect("hist",multi7))
plot(effect("bse",multi7))
plot(effect("pb",multi7),style="stacked")
me : 2 me : 2
0.8 0.6
0.6 0.5
0.4 0.4
0.2 ● ● 0.3 ●
● ● 0.2 ●
me : 1 me : 1
me (probability)
me (probability)
0.8 0.6
0.6 0.5
0.4 ● 0.4
●
● 0.2
0.3
● 0.2
● ●
me : 0 me : 0
0.8 ● ● 0.6 ●
0.6 0.5
●
0.4 ● 0.4
0.3 ●
0.2
0.2
1 2 3 4 0 1
symp hist
0.8
me (probability)
0.6 0.6
0.4
● 0.2
● 0.4
me : 0
0.8 ●
0.6 ● 0.2
0.4
0.2
0 1 6 8 10 12 14 16
bse pb
66
4. Ejemplo
Los datos que vamos a analizar fueron recogidos por Lowe, Roberts y Lloyd (1971) y corres-
ponden a nacimientos de niños vivos con malformaciones del sistema nervioso central en Gales:
malf=read.table("malformaciones.txt",header=TRUE)
malf
Area NoCNS An Sp Other Water Work
1 Cardiff 4091 5 9 5 110 NonManual
2 Newport 1515 1 7 0 100 NonManual
3 Swansea 2394 9 5 0 95 NonManual
4 GlamorganE 3163 9 14 3 42 NonManual
5 GlamorganW 1979 5 10 1 39 NonManual
6 GlamorganC 4838 11 12 2 161 NonManual
7 MonmouthV 2362 6 8 4 83 NonManual
8 MonmouthOther 1604 3 6 0 122 NonManual
9 Cardiff 9424 31 33 14 110 Manual
10 Newport 4610 3 15 6 100 Manual
11 Swansea 5526 19 30 4 95 Manual
12 GlamorganE 13217 55 71 19 42 Manual
13 GlamorganW 8195 30 44 10 39 Manual
14 GlamorganC 7803 25 28 12 161 Manual
15 MonmouthV 9962 36 37 13 83 Manual
16 MonmouthOther 3172 8 13 3 122 Manual
NoCNS indica el número de casos sin malformaciones, An, casos de anencefalia, Sp, espina bı́fida, y
Other, otro tipo de malformaciones. Water es la dureza del agua, Area indica los diferentes mu-
nicipios, y Work indica el tipo de trabajo realizado por los padres. Podrı́amos analizar los datos
mediante un modelo multinomial con cuatro categorı́as, sin embargo, casi todos los casos correspon-
den a niños sin malformaciones. En este tipo de casos es mejor considerar un modelo de respuesta
jerárquica:
NACIMIENTOS
An Sp Other
De modo que primero ajustamos un modelo binomial agrupando todos los tipos de malforma-
ciones, y después, condicionado ha que hay una malformación, ajustamos un modelo multinomial
con tres categorı́as.
malf$CNS <- malf$An+malf$Sp+malf$Other
attach(malf)
67
Vemos si las variables son significativas:
bino1=glm(cbind(CNS,NoCNS) ~ Water,family=binomial)
anova(bino1,test="Chi")
bino2=glm(cbind(CNS,NoCNS) ~ Area,family=binomial)
anova(bino2,test="Chi")
Df Deviance Resid. Df Resid. Dev Pr(>Chi)
NULL 15 41.047
Area 7 24.509 8 16.539 0.0009269 ***
bino3=glm(cbind(CNS,NoCNS) ~ Work,family=binomial)
anova(bino3,test="Chi")
Ahora, las incluı́mos todas en el modelo y comparamos los coeficientes con los que se obtienen con
los modelos con una sola variables:
bino4=glm(cbind(CNS,NoCNS) ~ Water+Area+Work,family=binomial)
bino4
bino1
bino2
Vemos que los coefficientes de Area y Water cambian mucho por lo que esas variable están confun-
didas, para ver con cual de las dos nos quedamos vemos cual es significativa al ponerlas juntas:
bino5=glm(cbind(CNS,NoCNS) ~ Area+Work,family=binomial)
bino6=glm(cbind(CNS,NoCNS) ~ Water+Work,family=binomial)
anova(bino5,bino4,test="Chi")
anova(bino6,bino4,test="Chi")
bino7=glm(cbind(CNS,NoCNS) ~ Water*Work,family=binomial)
anova(bino6,bino7,test="Chi")
summary((bino6)
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -4.4325803 0.0897889 -49.367 < 2e-16 ***
Water -0.0032644 0.0009684 -3.371 0.000749 ***
WorkNonManual -0.3390577 0.0970943 -3.492 0.000479 ***
68
Dado que exp(−0,3390577) = 0,71, los nacidos de trabajadores no manuales tienen un 29 % menos
de posibilidad de nacer con una malformación del sistema nervioso central. Un incremento de la
dureza del agua de 80 unidades: exp(−0,0032644 ∗ 80) = 0,77, supondrı́a un descenso del 23 % de
la posibilidad de nacer con malformaciones.
mult1=multinom(cbind(An,Sp,Other) ~ Water)
mult2=multinom(cbind(An,Sp,Other) ~ Work)
mult0=multinom(cbind(An,Sp,Other) ~ 1)
anova(mult1,mult0)
anova(mult2,mult0)
Por lo que concluimos que la dureza del agua y la profesión de los padres tiene relación con la
probabilidad de una malformación al nacer, pero no tienen efecto en el tipo de malformación.
ambas variables son significativas, pero no hubiérmos descubierto que no afectan al tipo de malfor-
mación.
5. Ejercicios
Intención de voto en USA
Los datos del archivo elections.txt corresponden a un subconjunto de datos pertenecientes a
un estudio de intención de voto en la elecciones americanas de 1996 (Faraway, 2006). Por simplicidad
consideramos sólo las variables age (edad, variable continua), educa (variable categórica, con dos
categorı́as Low, si no tienen estudios universitarios, y High, si tienen estudios universitarios), income
(ingresos en miles de dólares, variable continua). La variable respuesta es party, intención de voto,
con tres categorı́as: Democrat (que es la categorı́a base), Independent y Republican. Bus el modelo
que mejor predice la intención de voto.
Caimanes
Los datos del archivo gator.txt corresponden a 219 caimanes capturados en cuatro lagos de
Florida. La variable respuesta es el tipo de comida encontrada en el el estómago de los caimanes y
tiene 5 categorı́as:
1. Pescado
2. invertebrados
3. Reptiles
4. Pájaros
5. Otros
69
1. El lago donde se capturaron: Hancock,Oklawaha, Trafford, George
2. Sexo
70
Capı́tulo 4
¿Cuándo unos datos son ordinales? Son datos que toman valores que tienen un orden natural,
para los cuales los intervalos entre valores no tiene por qué tener un significado. Un ejemplo de datos
ordinales: estado de salud: Excelente, muy bueno, bueno, regular, malo; encuestas de satisfacción:
Mucho, Poco, Nada, etc.
Vamos a trabajar con datos de un estudio cuyo interés es buscar los factores que influyen en
un graduado a la hora de decidir va a realizar estudios de postgrado o no. A 400 estudiantes de
grado se les preguntó si era: nada probable, algo problable, o muy probable que realizaran estudios
de postgrado. Se recogieron datos sobre el nivel de educación de sus padres (0=bajo, 1=alto), si el
centro en el que estaban estudiando era público o privado, y su nota de expediente académico.
Cuando nos encontramos con este tipo de datos podemos tomar varias decisiones:
1. Recodificar los datos, pasar a una variable dicotómica y utilizar los modelos que vimos en el
capı́tulo 2.
2. Analizar cada unas de las categorı́as por separado:Muy probable/Algo probable/Nada pro-
bable
Estos modelos son fáciles de interpretar, pero son estadı́sticamente ineficientes ya que no utili-
zan toda la información que proporcionan los datos. La regresión logı́stistica ordinal combina los
modelos anteriores en uno solo.
71
En el modelo de odds-proporcionales se comparan la probabilidad de obtener una respuesta <= k
con la de tener una respuesta > k
p1
logit(p̃1 ) = log = α1 − β1 X1 + . . . − βm Xm
1 − p1
p1 + p2
logit(p̃2 ) = log = α2 − β1 X1 + . . . − βm Xm
1 − p1 − p2
p1 + p2 + . . . + pk
logit(p̃k ) = log = αk − β1 X1 + . . . − βm Xm
1 − p1 − p2 − . . . − pk
1 = p1 + p2 + . . . + pk + pk+1
El modelo asume que los coeficientes que acompañan a las covariables son iguales, y la única dife-
rencia es en la ordenada en el origen, αi .
¿Por qué ponemos −βi en ver de +βi ?: por analogı́a con regresión logı́stica. En regresión logis-
tica tenemos una variable W que toma valores 0 ó 1:
1, 2 3
|{z}
|{z}
0 1
Entonces:
1−p
P r(Y ≤ 2|x) = P r(W = 0|x) = 1 − p ⇒ logit(P r(Y ≤ 2|x) = log = −β1 x
p
Por eso, los βi se interpretan como el cambio en el log-odds de categorı́a más alta frente a otra más
baja, asociado con un incremento en una unidad de Xi , manteniendo las demás variables constantes.
Este cambio es el mismo para cualquiera de las categorı́as ya que, por ejemplo:
= e−β1 X1 +...−βm Xp
Si una cierta combinación de variables explicativas duplica el odds de estar en la categorı́a 1, tam-
bién dobla el odds de estar en la categorı́a 2, etc. Los odds solo se diferencian en el punto de partida
(cuando todas las covariables son cero), es decir, en eαi .
Los modelos de regresión ordinal se puede interpretar a partir de variables latentes. Suponga-
mos que la variable que observamos, Y , proviene de una variable no observada Z, la cual hemos
discretizado:
cj−1 < Z ≤ cj ⇒ Y = j j = 1, . . . , k + 1
72
logit(θij2 ) = α2 + x0ij β2 None/Some vs. Marked
Proportional odds assumption: regression functions are parallel on the logit
scale i.e., β1 = β2 .
Proportional Odds Model
Pr(Y>1)
4
1.0 Pr(Y>1)
Pr(Y>2) 3
0.8 Pr(Y>2)
Pr(Y>3) 2
Probability
Pr(Y>3)
Log Odds
1
0.6
0.4
-1
0.2 -2
-3
0.0
-4
0 20 40 60 80 100 0 20 40 60 80 100
Predictor Predictor
7 / 64 8 / 64
Z = β1 X1 + . . . + βm Xm +
y
F −1 (pi + . . . pj ) = αj − β1 X1 + . . . − βm Xm
Si F −1 = logit, tenemos el modelo de odds-proporcionales.
2. La función polr en R
Esta función forma parte de la librerı́a MASSS. Es importante tener en cuenta que esta fun-
ción usa una parametrización que implica que los odds ratio son de estar en una categorı́a superior
73
library(MASS)
ord1=polr(apply~pared,postgrado)
summary(ord1)
Coefficients:
Value Std. Error t value
pared1 1.127 0.2634 4.28
Intercepts:
Value Std. Error t value
unlikely|somewhat likely 0.3768 0.1103 3.4152
somewhat likely|very likely 2.4519 0.1826 13.4302
Los parámetros se pueden interpretar de manera similar al caso de regresión logı́stica, pero ahora
hay dos transiciones en vez de una (que serı́a el caso de una variable dicotómica). El parámetro
para pared es positivo lo que indica que el hecho de que los padres tengan estudios aumenta la
posibilidad de hacer estudios de postgrado
ord2=polr(apply~public,postgrado)
summary(ord2)
ord3=polr(apply~gpa,postgrado)
summary(ord3)
ord0=polr(apply~1,postgrado)
anova(ord0,ord1)
anova(ord0,ord2)
anova(ord0,ord3)
El parámetro de gpa también es positivo, lo que indica que la nota media de expediente predispone
a elegir los estudios, y el hecho de que el alumno esté en una Universidad pública o privada no
afecta a la elección de estudios de postgrado. Si introducimos las variables juntas:
ord4=polr(apply~pared+gpa,postgrado)
Antes de seguir interpretando el modelo, hemos de comprobar que se satisface las condiciones del
modelo de odds proporcionales, es decir, que si creáramos dos variable dicotómicas correspodientes a
las dos transiciones y a justáramos las variables, los coeficientes en ambos casos serı́a muy similares.
Para comprobarlo podemos utilizar la librerı́a VGAM:
apply2=ordered(postgrado$apply)
m0 <- vglm(apply2~pared+gpa,family=cumulative(parallel=T),
data=postgrado)
m1 <- vglm(apply2~pared+gpa,family=cumulative(parallel=F),
data=postgrado)
74
Por lo que podemos aceptar la hipótesis de odds proporcionales.
summary(ord4)
Coefficients:
Value Std. Error t value
pared1 1.0457 0.2656 3.937
gpa 0.6042 0.2539 2.379
Intercepts:
Value Std. Error t value
unlikely|somewhat likely 2.1763 0.7671 2.8370
somewhat likely|very likely 4.2716 0.7922 5.3924
ci=confint(ord4)
exp(cbind(OR=coef(ord4),ci))
OR 2.5 % 97.5 %
pared1 2.845412 1.693056 4.806454
gpa 1.829873 1.115180 3.022320
Entonces, la posibilidad de pasar de nada probable a algo o muy probable, es 2.8 veces mayor para
los alumnos cuyos padres tienen estudios que para los que no los tienen (también serı́a 2.8 veces
más probable para de nada o algo probable a muy probable). Algo similar ocurre con cada unidad
que aumenta la nota del expediente. Las ordenadas en el origen corresponderı́a a los umbrales de
corte de la variable latente.
pr=predict(ord4,postgrado,type="p")
0.8 0.8
apply (probability)
apply (probability)
0.6 0.6
0.4 0.4
0.2 0.2
pared gpa
75
No hay métodos equivalentes a los vistos anteriormente para la diagnosis del modelo, con lo
cual tendrı́amos que hacer las regresiones logı́sticas por separado para comprobar si se cumplen las
hipótesis.
3. Ejercicios
3.1. Artritis
Los datos corresponden a un estudio sobre el efecto de un determinado tratamiento para la
artritis. La variable respuesta Improved tiene tres categorı́as: None, Some, Marked, y hay tres
variable explicativas: Treatment (Placebo, Tratado), age, sex (Mujer Hombre). Para obtener los
datos:
library(vcd)
data("Arthritis")
¿Qué variables son significativas?, ¿hay interacciones?, ¿cómo interpretas los coeficientes?
76
Capı́tulo 5
Regresión de Poisson
Gran cantidad de datos son recogidos por cientı́ficos, médicos, o empresas como datos de conteo.
En general, este tipo de datos aparecen en cuantro formatos distintos:
Datos como frecuencias, donde contamos cuantas veces ocurre algo, pero no sabemos cuantas
veces no ocurre.
Datos como proporciones, donde ambos, el número de veces que ocurre algo, y el tamaño total
del grupo es conocido.
Datos por categorı́as, donde la varible cuenta cuántos individuos hay en cada nivel de una
variable categórica.
Los datos como frecuencias y datos binarios han sido tratados en el capı́tulo de regresión logı́stica.
Hay cuatro razones por las que es erroneo utlizar un modelo de regresión normal para
datos de conteo :
4. Los ceros que aparecen en la variable respuesta dan problemas a la hora de transformar la
variables.
Sin embargo, si los datos son elevados, es posible utilizar la distribución Normal.
1. La distribución de Poisson
La principal diferencia entre la distribución de Poisson y la Binomial, es que, aunque ambas
cuentan el número de veces que ocurre algo, en la distribución de Poisson no sabesmos cuantas
veces no ocurrio, y en la Binomial sı́ lo sabemos.
Supongamos que estamos haciendo un estudio sobre cuantas larvas de insectos hay en ciertos árbo-
les, los datos de los que disponemos corresponden al número de larvas por hoja (y). Habrá hojas
77
que no tengan ninguna, y otras que tenga hasta 5 ó 6. Si el número medio de larvas por hoja es µ,
la probabilidad de observar x larvas por hoja viene dada por:
e µ µy
P (y) =
y!
y µ serı́a el número de larvas, por la probabilidad de que una hoja tenga una larva. Implı́citamente,
lo que estamos haciendo es una aproximación:
µ = np
para n grande y p pequeño. Es decir, que una distribución de Poisson se obtiene a partir de una
Binomial con p pequeño y n grande y donde µ = np. Veremos más adelante que si utilizamos una
regresión logı́stica con datos agrupados obtenemos los mismo coeficientes que si utilizamos una
regresión de Poisson, pero la interpretación de ambas sólo es similar cuando la prevalencia es baja.
En general, estamos interesados en relación la media de nuestra variable respuesta con las co-
variables, es decir:
µ = β0 + β1 X1 + . . . + βK Xk
sin embargo, la parte izquierda de la ecuación puede tomar cualquier valor, mientras que la derecha
sólo toma valores positivos. Una solución inmediata es tomar logaritmos:
log(µ) = β0 + β1 X1 + . . . + βK Xk
de modo que es una transformación de la media la que tiene una relación lineal con las covariables,
y eβi representa un efector multiplicador del i-ésimo predictor sobre la media, ya que al incrementar
Xi en una unidad, la media queda multiplicada por un factor eβi . Una de las ventajas de utilizar
este tipo de modelo es que, en general, en el caso de datos de conteo, los predictores son multiplica-
tivos y no aditivos, es decir, observamos conteos pequeños para efectos pequeños y conteos grandes
para efectos grandes (o viceversa).
78
2. Ejemplo
Un experimento agrı́cola consta de 90 parcelas de pradera, de 25m2 cada una, que se dife-
rencian entre sı́, en biomasa, pH del suelo, y la riqueza en especies. Es sabido que la riqueza
de especies decrece cuando aumenta la biomasa, pero la cuestión de interés aquı́ es si esa
disminución cambia con el pH del suelo. Las parcelas se clasificaron de acuerdo a tres niveles
de pH: alto (=2), medio (=1) y bajo (=0). La variable respuesta es el número de especies
por parcela, y las variable predictora son la biomasa media medida en el mes de Junio, y la
variable categórica correspondiente al pH del suelo.
points(Biomasa[pH==0],Especies[pH==0])
points(Biomasa[pH==1],Especies[pH==1],pch=2,col=2)
points(Biomasa[pH==2],Especies[pH==2],pch=3,col=3)
legend(4,45,legend=c("Bajo","Medio","Alto"),pch=c(1,2,3),col=c(1,2,3))
● Bajo
Medio
40
Alto
30
Especies
20
● ● ●
●
●
● ●
● ● ●
● ● ●
● ●
● ●
●
10
●
● ●
● ● ●
●
●
● ●
●
●
0 2 4 6 8 10
Biomasa
Viendo el dibujo, podemos tener la tentación de ajustar un modelos de regresión lineal, pero
serı́a erroneo ya que predecirı́a valores negativos para el número de especies si el valor para
la variable Biomasa es alto. Sin embargo, podemos dibujar las lı́neas a modo de análisis
exploratorio:
abline(lm(Especies[pH==0]~Biomasa[pH==0]))
abline(lm(Especies[pH==1]~Biomasa[pH==1]))
abline(lm(Especies[pH==2]~Biomasa[pH==2]))
● Bajo
Medio
40
Alto
30
Especies
20
● ● ●
●
●
● ●
● ● ●
● ● ●
● ●
● ●
●
10
●
● ●
● ● ●
●
●
● ●
●
●
0 2 4 6 8 10
Biomasa
79
Se puede observar claramente la diferencia en biomasa media para distinto valor del pH (hay
distancia entre las rectas), pero no se aprecia que la pendiente varı́e significativamente (las
rectas son aproximadamente paralelas). Si hubiéramos ajustado un modelo de regresión li-
neal, hubiéramos obtenido que la interacción entre Biomasa y pH no era significativa. Veamos
qué ocurre cuando analizamos los datos utilizando un modelo de regresión de poisson.
especies0=glm(Especies~Biomasa+pH,family=poisson)
especies1=glm(Especies~Biomasa*pH,family=poisson)
especies2=update(especies1,~.-Biomasa:pH)
anova(especies2,especies1,test="Chi")
Analysis of Deviance Table
Lo que nos indica que asumir que el descenso en número de especies cuando aumenta la
biomasa es similar sea cual sea el pH, es erroneo.
summary(especies1)
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) 2.95255 0.08240 35.833 < 2e-16 ***
Biomasa -0.26216 0.03803 -6.893 5.47e-12 ***
pH1 0.48411 0.10723 4.515 6.34e-06 ***
pH2 0.81557 0.10284 7.931 2.18e-15 ***
Biomasa:pH1 0.12314 0.04270 2.884 0.003927 **
Biomasa:pH2 0.15503 0.04003 3.873 0.000108 ***
80
Un cambio en una unidad de Biomasa supodrı́a un número de especies exp(−0,262 +
0,155) = 0,898 menor en suelos con pH alto
En el siguiente gráfico vemos las curvas ajustadas, y se aprecia cómo el utilizar un modelo de
poisson resuelve el problema de los valores positivos, al ajustar una curva exponencial en vez
de una recta. Podemos hacer un análisis de residuos:
● Bajo
Medio
40
Alto
30
Especies
20
● ● ●
●
●
● ●
● ● ●
● ● ●
● ●
● ●
●
10
●
● ●
● ● ●
●
●
● ●
●
●
0 2 4 6 8 10
Biomasa
par(mfrow=c(1,2))
plot(predict(especies1),residuals(especies1))
qqnorm(residuals(especies1))
● ●
3
● ●
2
2
residuals(especies1)
●● ● ●● ●
Sample Quantiles
● ● ●
● ●● ●●●●
● ● ●●
1
● ● ●● ● ● ●
●
●
●●
●
● ●
● ●●
●
● ●
● ● ●● ● ● ●●
●●
●
●
● ● ●
●
● ● ● ● ●
●●
●
●●
● ● ● ● ● ● ●●
●
●●
●●
● ● ●●
●
0
● ● ●
●
●●● ● ● ●
●●
●
●
● ● ● ●●
● ● ●
●●
● ● ● ● ● ● ● ● ●
●
●●
●●
●
●
● ● ● ● ●●
●
●
● ● ●● ● ●●
●●
● ● ●●
−1
−1
●
● ● ● ● ●●●
●
● ● ●●
● ● ● ● ●
●●●
● ●
●
● ●●
● ●
−2
−2
● ●
En el caso de datos de Poisson, la media es igual a la varianza, si los datos no cumplen esta
hipótesis los errores estándar de los estimadores de los parámetros serán incorrectos. En estas
ocasiones podemos introducir un parámetro de dispersión, φ, de modo que V ar(Y ) = φµ
(si φ = 1 estamos en el caso Poisson). Dicho parámetro se puede estimar como:
Deviance
φ̂ =
n−p
En el ejemplo anterior, Deaviance = 83,2 y n−p = 84, por lo que el parámetro es muy próximo
a 1. Podemos utilizar en la función glm, la familia quasipoisson, que automáticamente estima
el parámetros de dispersión. dará lugar a los mismos valores de los parámetros pero cambiarán
los errores estándar.
especies2=glm(Especies~Biomasa*pH,family=quasipoisson)
especies2
81
3. Regresión de Poisson para tasas de incidencia
Podemos usar la regresión logı́stica para estimar la prevalencia (proporción), pero no pode-
mos usarala para estimar la incidencia, ya que en este caso necesitamos utilizar el tiempo
de exposición al riesgo, ya que en la tasas de incidencia medimos el número de sucesos en la
unidad de tiempo.
Supongamos que la variable Y representa el número de eventos que aparecen con una ta-
sa λ por unidad de tiempo de exposición y que la exposición es E (E se suele dar en términos
de personas por año o 1000×personas por año) y va a determinar las unidades en las que se
expresa la tasa. Dado que nuestro interés es la tasa, λ, y esta puede depender de distintas
covariables, podrı́amos ajustar el modelo:
log(λ) = β0 + β1 X1 + . . . + Xk βk
Pero es Y quien sigue una distribución de Poisson y no λ. Dado que , y ∼ P (µ) y el número
medio de eventos E[Y ] = µ = λ × E:
Al log(E) se le llama offset y es una cantidad fija y no hay que estimar ningún parámetro
para ella. La interpretación de los parámetros va unida al concepto de riesgo relativo. Por
ejemplo, supomgamos que tenemos una sola covariable X
log(λ) = β0 + Xβ1
3.1. Ejemplo
82
Variable Valores
sexo 1=Varón
2=Mujer
edad 1=0-4
2=5-9
3=10-15
mes (numérica del 1 al 12)
periodo 1997-2003
casos número de casos por estrato
poblacio número de personas en el estrato
estacion 1=frı́a (Octubre a Marzo)
2= caliente (Abril a Septiembre)
a) Ver si hay cambios en la incidencia en los 7 años de registro globalmente y por grupos
de edad y sexo
b) Explorar la posibilidad de que la incidencia sea diferente en las diferentes estaciones del
año, ası́ como explicar si hay variaciones significativas en la incidencia según el mes.
diabetes=read.table("diabetes.txt",header=TRUE)
names(diabetes)
diabetes$periodo=factor(diabetes$periodo)
diabetes$estacion=factor(diabetes$estacion)
diabetes$sexo=factor(diabetes$sexo)
diabetes$mes=factor(diabetes$mes)
diabetes[1:10,]
edad sexo mes periodo casos poblacion estacion
1 1 2 12 1997 2 110324 1
2 1 2 8 1997 1 110324 2
3 2 2 9 1997 0 120910 2
4 3 2 1 1997 1 146712 1
5 1 1 11 1997 1 116134 1
6 2 2 10 1997 3 120910 2
7 3 1 5 1997 3 154741 2
8 1 2 6 1997 0 110324 2
9 1 2 10 1997 0 110324 2
10 3 2 3 1997 3 146712 1
λ = y/E
por ejemplo para niños, entre 0 y 4 años, en el mes de Diciembre del año 1997, y = 2 y
E = 110324, por lo tanto:
2
λ= = 0,0000181 o 1.81 cada 100000 personas
110324
El uso de la función glm() es similar a los ejemplos anteriores, aunque con la peculiaridad de
que hemos de especificar E, para especificarlo utilizamos offset():
83
logpobla=log(poblacion)
diabetes1=glm(casos~periodo+offset(logpobla),family=poisson)
summary(diabetes1)
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -11.21951 0.08944 -125.438 <2e-16 ***
periodo1998 0.02386 0.12649 0.189 0.850
periodo1999 0.04955 0.12599 0.393 0.694
periodo2000 0.13387 0.12391 1.080 0.280
periodo2001 -0.15710 0.13238 -1.187 0.235
periodo2002 0.08106 0.12369 0.655 0.512
periodo2003 0.03106 0.12527 0.248 0.804
---
Null deviance: 686.27 on 503 degrees of freedom
Residual deviance: 680.44 on 497 degrees of freedom
Podemos ver que el año no es una variable significativa. ¿Cómo usarı́as la función anova()
para comprobarlo?.
exp(0.04955-0.02386)
> exp(diabetes1$coeff)
(Intercept) periodo1998 periodo1999 periodo2000 periodo2001 periodo2002
1.340994e-05 1.024145e+00 1.050797e+00 1.143247e+00 8.546228e-01 1.084431e+00
periodo2003
1.031550e+00
> exp(confint(diabetes1))
Waiting for profiling to be done...
2.5 % 97.5 %
(Intercept) 1.119437e-05 0.0000159
periodo1998 7.990119e-01 1.3127114
periodo1999 8.206769e-01 1.3456605
periodo2000 8.968513e-01 1.4585479
periodo2001 6.584309e-01 1.1071044
periodo2002 8.511035e-01 1.3829685
periodo2003 8.068865e-01 1.3192888
diabetes1.resid=rstandard(diabetes1)
summary(diabetes1.resid)
diabetes1.ajustados=predict(diabetes1,type="response")
tasa1.ajustada=diabetes1.ajustados/poblacion
84
Ahora estamos listos para responder a las cuestiones que se planteaban al principio
¡¡MANOS A LA OBRA!!
85
Capı́tulo 6
Cuando se lleva a cabo un estudio, se mide un número limitado de variables, por lo que es
inevitable que pasemos por alto variables que tienen gran influencia en nuestro estudio. Sin em-
bargo, este problema ocurre frecuentemente porque agregamos datos sobre una variable predictora
importante.
Supongamos que se ha llevado a cabo un estudio sobre las defensas de los árboles frente a in-
sectos que comen hojas. Un estudio preliminar habı́a sugerido que la presencia de áfidos cuando la
hoja es pequeña, puede causar cambios quı́micos en la hoja que reduzcan la probabilidad de que
éstas sean atacadas por insectos más adelante. En el estudio se marcaron un gran número de hojas
y se recogio información sobre cuantas eran infectadas por áfidos y cuantas aparecieron agujereadas
al final de la estación. El estudio se llevó a cabo en dos tipos de árboles y los resultados (que están
en el fichero arboles.txt) son:
Hay 4 variables,
86
Vamos a ajustar en primer lugar el modelo saturado, es decir, el que tiene tantos parámetros como
datos. El ajuste es perfecto, pero no hay grados de libertad disponibles.
arboles=read.table("arboles.txt", header=TRUE)
attach(arboles)
poisson1=glm(Hojas~Arbol*Afido*Oruga,family=poisson)
Coefficients:
(Intercept) Arbol Afido Oruga
7.467371 -0.063701 -0.423338 -3.912023
Arbol:Afido Arbol:Oruga Afido:Oruga Arbol:Afido:Oruga
-1.172190 1.491959 0.003484 0.009634
El asterisco asegura que todas los efectos principales e interacciones se están ajustando en el modelo.
Este modelo no tiene sentido, por lo que comenzamos por eliminar la interacción de orden 3, para
eso podemo utilizar la función update:
poisson2=update(poisson1,~.-Arbol:Afido:Oruga)
La puntuación utilizada es importante, estamos diciendo que al modelo anterior hay que quitarle
sólo la interacción de orden 3 (por eso utilizamos : en vez de *). Para saber si este término es
significativo utilizamos la función anova():
anova(poisson2,poisson1,test="Chi")
Analysis of Deviance Table
Esto muestra claramente que la interacción entre oruga y áfido no difiere de árbol a árbol. Si esta
interacción hubiera sido significativa ya hubiéramos terminado la selección del modelo. En este caso
podemos continuar y responder a la pregunta de interés para este estudio, ¿hay interacción entre
la presencia de áfidos y los agujeros en las hojas?. Para comprobar esto eliminamos la interacción
Afido:Oruga:
poisson3=update(poisson2,~.-Afido:Oruga)
anova(poisson3,poisson2,test="Chi")
Analysis of Deviance Table
87
Por lo que podemos concluir que no hay evidencia de que la presencia de áfidos al principio de la
estación mejore la defensa del árbol frente a las orugas.
Ahora, vamos a realizar el mismo análisis de forma errónea, para mostrar el peligro que tiene
colapsar tablas de contingencia sobre variables importantes. Supongamos que no tenemos en cuen-
ta el efecto del árbol, de modo que ajustamos el modelo:
poisson4=glm(Hojas~Afido*Oruga,family=poisson)
poisson5=update(poisson4,~.-Afido:Oruga)
anova(poisson5,poisson5,test="Chi")
Analysis of Deviance Table
La conclusión hubiera sido que el número de hojas agujereados disminuye (ya que el coeficiente
es negativo) cuando se infectan los árboles con áfidos. El error es debido a la proporción de hojas
agujereadas en un tipo de árbol es 4 veces mayor que en la del otro
88
Capı́tulo 7
1. La familia exponencial
Un concepto importante que unifica todos los GLms es la familia exponencial de distribu-
ciones . Este concepto fue presentado por primera vez en Fisher (1934).
Todas las distribuciones pertenecientes a la familia exponencial tiene una función de densidad (o
de probabilidad) que se puede expresar de la siguiente forma:
yθ − b(θ)
f (y; θ, φ) = exp + c(y, φ) (7.1)
a(φ)
donde, en cada caso, a(.), b(.) y c(.) serán funciones especı́ficas. El parámetro θ es lo que se llama
parámetro canónico de localización y φ es un parámetro de dispersión. La distribucion Binomial,
Poisson y Normal (entre otras) son miembros de la familia exponencial. El caso más importante es
el de la distribución Normal, cuya función de densidad es:
1
exp −[y − µ]2 /2σ 2
f (y; µ, σ) = √ que podemos reescribir como
2πσ
2 2 1 2 2 2
= exp (yµ − µ /2)/σ − y /σ + ln(2πσ )
2
1 y2
2
c(y, φ) = − + ln(2πσ )
2 σ2
yθ − b(θ) yθ − b(θ)
l(θ, φ|y) = ln exp + c(y, φ) = + c(y, φ) (7.2)
a(φ) a(φ)
La función score es la primdera derivada la función anterior con respecto a los parámetros de
interés. Por simplicidad, trataremos φ como un parámetro de ruido (no de interés primordial), y
89
calcularemos las derivadas con respecto a θ, la función score resultante es:
∂
∂l(θ) y− b(θ) y − b0 (θ)
∂θ
= = (7.3)
∂θ a(φ) a(φ)
2
∂ l(θ) 00
b (θ)
= − (7.4)
∂θ 2 a(φ)
La siguiente tabla muestra las funcionen link canónicas para las distribuciones más comunes usadas
en los GLMs:
Podemos ver la elección de función link como algo sismilar a la elección de transformaciones de
la variable respuesta. Sin embargo, la función link es una transformación de la media poblacional,
no de los datos. Se pueden encontrar más detalles sobre funciones link en McCullagh and Nelder
(1989, chap. 2)
90
3. Estimación de Modelos Lineales Generalizados
Anteriormente vimos como estimar el parámetro canónico, θ, mediante máxima verosimilitud.
Sin embargo, esto no es útil en la práctica, ya que θ dependerá de variables explicativas, y cuando
usamos la link canónica, θ = η = Xβ, por lo tanto,β y no θ son nuestros parámetros de interés.
tenemos que
g(b0 (θi )) = β 0 xi
∂θi
g 0 (b0 (θi ))b00 (θi ) = xi
∂β
∂θi
por tanto g 0 (µi )b00 (θi ) = xi
∂β
n
∂l X (yi − µi )
y = xi
∂β a(φ)g 0 (µi )b00 (θi )
i=1
n
∂l X (yi − µi )
i.e. = xi
∂β g 0 (µi )Vi
i=1
91
En la práctica, el valor de la segunda derivada se sustituye por su valor esperado, a esto se le
llama Mı́nimos cuadrados iterativamente reponderados . Usando
∂l(β) 2
2
∂ l(β)
E = −E
∂ββ 0 ∂β
Tenemos que
n
!
∂ 2 l(β) (yi − µi )2
X
E = −E xi x0i
∂ββ 0 i=1
(g 0 (µ )V )2
i i
n
X Vi 0
= − 2 2 xi xi
i=1
(g 0 (µ
i )) V i
Xn
= − wi xi x0i
i=1
donde wi = 1/Vi (g 0 (µi ))2 . Podemos escribir la expresión anterior en forma matricial:
2
∂ l(β)
E = −X 0 W X
∂ββ 0
donde W es una matriz diagonal con elementos wi .Por lo tanto, podemos decir que si β̂ es solución
∂l(β )
de = 0, entonces β̂ es asintóticamente Normal con media β y matriz de covarianzas(X 0 W X)−1 .
∂β
∂l(β) −1
∂l
β new = β old − E
∂ββ 0 β ∂β β
old old
donde z = Xβ old + (y − µold )g 0 (µold ) = η old + (y − µold )g 0 (µold ), y z se llama working vector.
4. Calcular nuevos estimadores β̂ new , y repetir los pasos 2 al 4 hasta que converja.
92
Wedderburn (1974) desarrolló el concepto de quasi-verosimilitud que usa el hecho de que en la
función score la distribución de la variable respuesta sólo está presente a través de los momentos
de primer y segundo orden, es decir, para definir la quasi-verosimilitud sólo necesitamos esoecificar
la relación entre la media y la varianza de las observaciones.
Para una familia exponencial de un sólo parámetro, la verosiimilitud es la misma que la quasi-
verosimilitud.
3.3. Ejemplo 1
Usaremos una regresión lineal simple a través del origen como ejemplo. Estamos en el caso
yi ∼ N ( βxi , σ 2 ).
|{z}
µi
β̂ = (x0 x)−1 xy
4. Inferencia
Volviendo al modelo GLM original, cuya función de verosimilitid viene dada por (7.6), con
E(y) = µ, g(µ) = Xβ. Hay varias maneras de hacer contrastes de hipótesis sobre las componentes
de β.
93
1. Si queremos contrastar por ejemplo, β1 = 0 (el primer componente de β), el procedimiento
serı́a calcular β̂1 y se(β̂1 ) y comparar |β̂1 |/se(β̂1 ) con N (0, 1), y rechazar β1 = 0 si esa cantidad
es demasiado grande.
recuerda que se(β̂1 ) es la raı́z cuadrada del elemento (1, 1) de la inversa de la matriz
∂ 2 l
∂β∂β 0 β̂
De modo que aquı́ estamo usando la normalidad asintótica del estimador máximo versı́mil β̂,
y la fórmula de su varianza asintótica. ¡Por lo tanto necesitamos una muestra grande!
donde θ̃i =eml (estimador máximo verosı́mil) bajo ωr y θ̂i =eml bajo ωf .
La distribución de S(ωr , ωf ) se aproxima por una χ2 con grados de libertad igual a la di-
ferencia entre el número de parámetros en el modelo completo y el reducido ( si estamos
contrastando β1 = 0, entonces, χ21 ). Los intervalos de confianza para los parámetros se calcu-
lan también usando la distribución χ2 .
Deviance escalado: Un modelo saturado, es un modelo que ajusta perfectamente los datos
(es decir, que tiene tantos parámetros como observaciones y los valores ajustados son iguales a los
observados). Sea ls el logaritmo de la verosimilitud de modelo saturado, y sea lm el valor maximizado
del logarirmo de la verosimilitud del modelo de interés. El Deviance escalado del modelo de interés
es
Deviance escalado = S(y, µ̂) = −2(L(µ̂, φ, y) − L(y, φ, y) = −2(lm − ls )
y el deviance es
Deviance = D(y, µ̂) = S(y, µ̂)φ
94
Por lo tanto, el deviance escalado se puede ver como un test estadı́stico para contrastar la hipótesis
de que los parámetros del modelo saturado (y que no está en el modelo de interés) son iguales a 0.
En el caso de datos de Poisson y Binomial, φ = 1, y por lo tanto ambos deviance coinciden. En el
caso de la Normal, φ = σ 2 , entonces, el deviance escalado sigue una distribución F .
5.1. Residuos
En el modelo de rgersión lineal ordinario, los residuos yi − µ̂i se usan para detecta la violación
de las hipótesis del modelo, como son la varianza no homgenea, independencia, etc. En GLMs hay
tres tipos de residuos:
2. Residuos de Pearso:
yi − µ̂i
ri,P = q
V\ar(yi )
Tienen varianza constante y media cero. Son útiles para comprobar si la varianza no se ha
especificado correctamente.
3. Residuos deviance: q
sign(yi − µ̂i ) d2i
donde di es la contribución de la i-ésima observación al deviance del modelo. estos residuos
tienen la propiedad de tener el mismo signo yi − µ̂i , y su suma de cuadrados es el deviance.
En muchos modelos, los residuos deviance están más próximos a una Normal que los residuos
de Pearson, por eso se usan más frecuentemente para construir gráficos de diagnóstico.
4. residuos estandarizados: Los residuos deviance y perason pueden ser corregidos p para tener
varianza estandarizada y evitar los efectos del leverage si se dividen por φ(1 − hii ), en
muchos casos φ = 1, y cuando no lo es, se reemplaza por un estimador. Estos residuos
deberı́an ser aproximadamente N (0, 1) en el caso de datos de Poisson y Biomiales con valores
altos de conteo, y por lo tanto los residuos deverı́a estar entre -2 y +2. McCullagh and Nelder
(1989, chap. 12) recomienda hacer el siguiente chequeo:
a) Chequeo informal usando los residuos: Dibujar los residuos deviance estandarizados
frente al predictor lineal η̂ o frente a los valores ajustados µ̂, en este gráfico no deberı́a
aparecer ningún patrón. las deviaciones más comunes son:
Aparece curvatura en la media.
Cambio sistemático de rango en los valores ajustados.
La curvatura puede aparecer por: elección equivocada de la función link, elección equi-
vocada de la escala de la covariables.
95
b) Comprobar la función varianza: Dibujar los valores absolutos de los residuos frente a
los valores ajustados, si la función varianza no se ha elegido correctamente esto dará lugar
a una tendencia en la media. Por ejemplo, podemos elegir que la varianza sea una función
lineal de la media, pero podrı́a ser en realidad una función cuadrática.
c) Comprobar la función link: Gráfico del working vector z que se describio en la página
8, frente al predictor lineal η. Si la función link es correcta, el patrón del gráfico deberı́a
ser una lı́nea recta, (¿por qué?).
d ) Media del leverage: En regresión lineal, usamos los elementos diagonales de la matriz
de proyección como una medida del leverage. Ahora, la matriz de proyección se obtiene
en la última iteración del algoritmo IRLS. ¿Qué forma tiene esta matriz?.
e) Medidas de infuencia: Lo equivalente a la distnacia de Cook en GLMs es
96
Bibliografı́a
Fisher, R. (1934). Thow new properties of mathematical likelihood. Proceedings of the Royal
Statistical Society of London, A, 144:285–307.
McCullagh, P. and Nelder, J. (1989). Generalized Linear Models. Chapman & Hall, New York.
Wedderburn, R. (1974). Quasi-likelihood functions, generalized linear models and the gauss newton
method. Biometrika, 61:439–447.
97