Sunteți pe pagina 1din 184

Analisis de datos con R

para Ingeniera Informatica

Guillermo Ayala Gallego1

4 de junio de 2009

1
Departamento de Estadstica e Investigacion Operativa. Universidad de Valencia. Gui-
llermo.Ayala@uv.es Pagina personal, Pagina de grupo
2
Indice general

1. Probabilidad: lo bueno si . . . 1
1.1. Experimento y probabilidad . . . . . . . . . . . . . . . . . . . . . . . 1
1.2. Variable aleatoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2.1. Teorema de Bayes . . . . . . . . . . . . . . . . . . . . . . . . 13
1.3. Vectores aleatorios . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.4. Distribucion normal multivariante . . . . . . . . . . . . . . . . . . . 14

2. Un muy breve repaso a la Estadstica 1


2.1. Algo de Estadstica Descriptiva, poco . . . . . . . . . . . . . . . . . 1
2.2. Verosimilitud . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
2.3. Estimacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
2.3.1. Estimacion insesgada de media y varianza . . . . . . . . . . . 10
2.3.2. Estimacion insesgada del vector de medias y la matriz de covarianzas 11
2.4. Estimador maximo verosmil . . . . . . . . . . . . . . . . . . . . . . 13
2.5. Contraste de hipotesis . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.5.1. Test del cociente de verosimilitudes . . . . . . . . . . . . . . 16
2.5.2. Test de Wald . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
2.5.3. Intervalos de confianza . . . . . . . . . . . . . . . . . . . . . 17

3. Regresion 1
3.1. Regresion lineal simple . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3.2. Regresion lineal multiple . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.3. Estimacion de . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.4. Algunos casos particulares . . . . . . . . . . . . . . . . . . . . . . . . 7
3.5. Verosimilitud . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.6. Algunos ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.7. Distribucion muestral de . . . . . . . . . . . . . . . . . . . . . . . 11
3.8. Bondad de ajuste . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.9. Valoracion de las hipotesis del modelo . . . . . . . . . . . . . . . . . 12
3.10. Inferencia sobre el modelo . . . . . . . . . . . . . . . . . . . . . . . . 30
3.11. Seleccion de variables . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.11.1. Procedimientos que comparan modelos . . . . . . . . . . . . . 36
3.11.2. Procedimientos basados en criterios . . . . . . . . . . . . . . 39
3.12. Algunos ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

4. Analisis cluster 1
4.1. Disimilaridades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
4.1.1. Disimilaridades entre observaciones . . . . . . . . . . . . . . 3
4.1.2. Disimilaridades entre grupos de observaciones . . . . . . . . 6
4.2. Cluster jerarquico . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
4.3. Metodos de particionamiento . . . . . . . . . . . . . . . . . . . . . . 10
4.3.1. Metodo de las k-medias . . . . . . . . . . . . . . . . . . . . . 10

3
4.3.2. Particionamiento alrededor de los mediodes . . . . . . . . . . 11
4.4. Silueta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.5. Algunos ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

5. Analisis discriminante o de como clasificar con muestra de entrenamiento 1


5.1. Un problema de probabilidad sencillo . . . . . . . . . . . . . . . . . 3
5.2. Dos poblaciones normales . . . . . . . . . . . . . . . . . . . . . . . . 4
5.3. Dos normales multivariantes . . . . . . . . . . . . . . . . . . . . . . 5
5.4. Dos poblaciones normales multivariantes con parametros desconocidos 6
5.5. Analisis discriminante con mas de dos poblaciones normales . . . . 10
5.6. Valoracion del procedimiento de clasificacion . . . . . . . . . . . . . 12
5.7. Variables discriminantes canonicas o discriminantes lineales . . . . . 16
5.8. Algunos ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

6. Componentes principales 1

7. Analisis de datos categoricos 1


7.1. Variables respuesta categoricas . . . . . . . . . . . . . . . . . . . . . 1
7.2. Inferencia con la distribucion binomial . . . . . . . . . . . . . . . . . 3
7.2.1. Contraste de hipotesis simples . . . . . . . . . . . . . . . . . 4
7.2.2. Intervalo de confianza . . . . . . . . . . . . . . . . . . . . . . 5
7.3. Inferencia para la multinomial . . . . . . . . . . . . . . . . . . . . . . 6
7.3.1. Contraste de una multinomial dada . . . . . . . . . . . . . . 7
7.4. Tablas de contingencia . . . . . . . . . . . . . . . . . . . . . . . . . 8
7.4.1. Tablas de contingencia: distribucion conjunta, distribucion condicionada e independencia 8
7.4.2. Tipo de muestreo . . . . . . . . . . . . . . . . . . . . . . . . . 11
7.4.3. Comparacion de dos proporciones . . . . . . . . . . . . . . . 12
7.4.4. Odds y odds ratio . . . . . . . . . . . . . . . . . . . . . . . . 12
7.5. Asociacion parcial en tablas 2 2 estratificadas . . . . . . . . . . . . 14
7.6. Inferencia en tablas de contingencia . . . . . . . . . . . . . . . . . . 16
7.6.1. Intervalos de confianza para parametros de asociacion . . . . 16
7.6.2. Contraste de independencia en tablas de doble entrada . . . . 18
7.7. Mas alla del test ji-cuadrado . . . . . . . . . . . . . . . . . . . . . . . 18
7.7.1. Residuos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
7.8. Test de independencia con muestras pequenas . . . . . . . . . . . . . 19
7.8.1. Test exacto de Fisher para tablas 2 2 . . . . . . . . . . . . 19
7.9. Test exacto de Fisher y alternativa bilateral . . . . . . . . . . . . . . 19

8. Modelos lineales generalizados 1


8.1. Componentes de un modelo lineal generalizado . . . . . . . . . . . . 1
8.1.1. Modelos logit binomiales para datos binarios . . . . . . . . . 2
8.1.2. Modelo loglineal de Poisson para conteos . . . . . . . . . . . 2
8.1.3. Desviacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
8.2. GLM para datos binarios . . . . . . . . . . . . . . . . . . . . . . . . 3
8.2.1. Funcion link identidad . . . . . . . . . . . . . . . . . . . . . 4
8.2.2. Ejemplo: Ronquido y enfermedad cardAaca . . . . . . . . . . 4
8.3. GLM para conteos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
8.3.1. Apareamiento de cangrejos herradura . . . . . . . . . . . . . 4
8.4. Respuesta ordinal: modelos logit acumulados . . . . . . . . . . . . . 8
8.5. Sobre la interpretacion de los coeficientes . . . . . . . . . . . . . . 10
8.6. Verosimilitud de un modelo lineal generalizado . . . . . . . . . . . . 10

9. Miscelanea 11
9.1. Dibujo de la media-diferencia de Tukey o dibujo de Bland-Altman . 11

4
10.De como usar R en un tiempo razonable (no facil, no) 13
10.1. Instalacion y como trabajar con R . . . . . . . . . . . . . . . . . . . 14
10.1.1. R y Windows . . . . . . . . . . . . . . . . . . . . . . . . . . 14
10.1.2. R y Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
10.2. Como fijar el directorio de trabajo? . . . . . . . . . . . . . . . . . . 15
10.3. Etiquetas de valor y de variable . . . . . . . . . . . . . . . . . . . . . 15
10.3.1. Como etiquetar una variable? . . . . . . . . . . . . . . . . . 15
10.4. Elaboracion de un informe a partir del codigo R . . . . . . . . . . . 15
10.4.1. Sweave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
10.5. R y Octave/Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

11.Matrices 17
11.1. Determinante de una matriz . . . . . . . . . . . . . . . . . . . . . . . 17
11.2. Determinante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
11.3. Valores y vectores propios . . . . . . . . . . . . . . . . . . . . . . . . 17

12.Datos 19
12.1. scoremaster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
12.2. Avispa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
12.3. Datos wbca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

5
6
Prologo

Cada vez hay mas datos. Tenemos mas datos introducidos en ficheros. Y esto
es lo peor. Si los datos estuvieran en hojas sueltas y perdidas pues no pasa nada.
Se archivan los papeles y los datos no molestan. No, ahora los propios ordenadores
o bien muchas personas accediendo desde distintos lugares, tienen el mal gusto de
crear unas bancos de datos cada vez mayores. Cada vez con mas casos y con mas
variables. El problema no es conseguir datos. Los tienes a precio de saldo. Te los dan
sin que los pidas. Si tienes conocidos biologos, medicos, qumicos, psicologos seguro
que tienen datos para analizar. Si trabajais en un hospital, tendreis una legion de
medicos (y cada vez mas enfermeros) con datos. Todo el mundo tiene datos. A los
que tienen carino. Que creen que tienen mucho valor. Pero que no saben que hacer
con ellos. En el mejor de los casos algun dibujo estilo pastel (bueno, se le llama
diagrama de sectores pero es un pastel) o histograma. Que Dios nos libre de tanto
dibujo que solo sirve para gastar papel y tinta!
En estas notas se pretende (solo se pretende) partiendo de unos conocimientos
informaticos que no sean basicos y de unos conocimientos probabilsticos y estads-
ticos mas bien basicos, llegar a poder hacer algo decente con un banco de datos.
La parte de analisis descriptivo de datos se obvia. Simplemente a lo largo del
curso se va utilizando y recordando. Ya esta bien de perder el tiempo explicando
como hacer un histograma si luego lo hace un programa.
El tono de estas notas pretende ser ameno pues bastante toston es lo que se
cuenta. No inutil. Pero s toston. Hay que asumirlo desde un principio. Esto no es
Sexo en Nueva York. 1 Son unas notas de Estadstica con R [? ]. 2
Este documento contiene unas notas de clase para la asignatura de Analisis de
Datos de Ingeniera Informatica de la Universidad de Valencia. Pretende en cada
tema empezar desde un nivel basico de contenidos para llegar al uso de la tecnica
correspondiente. Es una realidad que el informatico acaba realizando analisis de
datos. Entre otras cosas porque suele ser la persona mas a mano o bien porque ya ha
programado el resto de la aplicacion que tambien incorporar algun tipo de analisis
mas o menos sencillo. Y es una pena ver como se desaprovecha la informacion.
Por ello en estas notas pretendo tratar rapidamente muchos temas y, ademas, que
podamos utilizarlas. Por ello se recurre a R. Por su potencia y por su disponibilidad.
Incluso en su propia casa y con una conexion a Internet no demasiado rapida puede
el estudiante instalarse R y cualquier paquete que se necesite. Esto ya es bastante
desde el punto de vista docente. Ademas, cualquier procedimiento estadstico esta
en R. Casi se puede decir, que si no lo esta, no merece la pena de utilizarse.
Se proponen distintos apendices como apoyo a conceptos anteriores necesarios.
Se hace un repaso rapido de los conceptos basicos de la Probabilidad en el tema
1. Las ideas basicas de la Estadstica que utilizamos en el resto del curso aparecen
1 Sin duda, la mejor serie de television de la historia. Hay que verla.
2 Un anuncio de la radio (Cadena Ser para mas senas) hablaba de una persona que no entenda
porque su profesor de Estadstica lo haba suspendido. Es de suponer que la persona que escribio el
anuncio estudiara Periodismo. All hay una asignatura de Estadstica. Claramente le ha servido.
Ha hecho un anuncio y le habran pagado por ello.

7
en el tema 2. Ambos captulos con meros resumenes que no sustituyen el repaso
de muchos de los conceptos en algunos de los textos que se citan en los captulos
correspondientes.
Estas notas estan orientadas para estudiantes de Ingeniera Informatica y por
ello en muchas ocasiones se incluyen definiciones y conceptos basicos que dicho
estudiante no tiene. Una introduccion generica a la Probabilidad y la Estadstica
que es adecuado hojear pues cubre los conceptos previos es el libro de texto de [? ].
El interes fundamental de estas notas es dar una vision muy amplia sin perder
demasiado tiempo en detalles de cada tecnica. En este sentido se intenta ir directo
al grano con lo que eso supone de dificultad anadida. Sin embargo, tiene la com-
pensacion de ver como muchos de los conceptos que se estudian son reescritura uno
de otro.
Por fin, un signo de edad es tener que escribir las cosas para que no se nos
olviden. Quizas para que uno mismo lo aprenda y para no olvidarlo despues. En el
fondo, todos vamos aprendiendo segun lo explicamos y lo escuchamos.
Sin duda, unas notas como las que siguen solo se pueden hacer utilizando LATEX
para escribir y el programa R [? ] 3 para realizar el analisis de los datos. Son dos
herramientas imprescindibles que se complementan perfectamente. Un tratamiento
estadstico no acaba con un codigo o con unos dibujos aislados. Acaba con un
informe. Con frecuencia, se dedica mas tiempo a explicar lo que se ha hecho, a
escribir el informe, que a la preparacion y tratamiento de los datos, al analisis de
los datos. En este sentido, creo que una herramienta como LATEX es fundamental
utilizada con R. En este texto hablamos de analisis de datos. No de LATEX. Sin
embargo, uno aprende a veces cosas importantes mientras estudia otras que cree
que lo son mas. En este sentido, habra referencias a LATEX.
Finalmente veamos una gua de lectura del documento. Es muy habitual que
si uno empieza a leer un texto por el principio nunca pase mas alla del primer o
segundo captulo, y eso con suerte. Las notas estan escritas de manera que se lean
cada tema por separado sin mas conexiones entre ellos. De modo que si quieres un
pequeno repaso de Probabilidad consulta el tema 1. Si patinas un poco en lo basico
de la Estadstica pues entonces hay que leer el tema 2. Son los unicos temas de
caracter basico. Los demas van al grano. En particular si te interesa como reducir
la dimension del banco de datos lee el tema 6. Si el problema que te quita el sueno
es como dadas unas variables sobre un individuo clasificarlo en uno de g posibles
grupos conocidos a priori y de los cuales tienes ejemplos entonces no lo dudes y
lee el tema 5. Si tienes datos y no saben si se disponen formando grupos y ni tan
siquiera del numero de grupos que tienes entonces has de acudir sin remision al
tema 4. Finalmente en los temas ??, 8 y ?? viene la artillera pesada. Como todos
sabemos los modelos lineales son el corazon de la Estadstica, sin ellos, otras tecnicas
de analisis de datos se la hubieran ventilado. Los modelos lineales es un esfuerzo
colectivo que ha construido una teora redonda, util, facil de aprender y aplicar.
Parece que casi todo esta previsto y bien resuelto. Los modelos lineales generalizados
surgen de la envidia que todo lo corroe. Cuando la variable respuesta, en lugar de
ser continua, como en los modelos lineales, es una respuesta binaria, o multinomial,
o bien un conteo. Que hacer? La teora de modelos lineales no se puede aplicar
ni con calzadores. Sin embargo, con unos cuantos cambios tecnicamente simples
surgen unos modelos probabilsticos para analizar estos datos que son absolutamente
preciosos.
Un detalle practico de enorme interes. Para programar con R en el sistema opera-
tiva Windows lo mas comodo es utilizar RWinEdt ([? ]) mientras que si trabajamos
3 La primera leccion sobre R es como citar el programa. En la lnea de comandos escribimos

citation y nos devuelve la referencia bibliografica. Del mismo modo lo podemos hacer si utilizamos
otro paquete. Por ejemplo tecleando citation(cluster) nos indica como citar el paquete cluster
que utilizamos en el tema 4.

8
en Linux la opcion mas comoda es utilizar emacs con el paquete ESS. Se pueden
encontrar detalles adicionales R.
R es libre. Esto significa que es malo? Tiene pocas funciones? Lo que tiene no
es de fiar? Hay una idea muy extendida de que el precio de las cosas esta ntimamente
relacionado con la calidad. No se si en general es cierto. En el caso de R no lo es.
Algunos artculos de prensa que apoyan el comentario son
Tambien podeis encontrar algunas empresas que, basandose en R, desarrollan
productos comerciales como Revolution Computing.

9
10
Captulo 1

Probabilidad: lo bueno si . . .

Empezamos por donde hay que empezar. Con la Probabilidad. Temida, odiada.
Despreciada porque habla de juegos. Por encima de todo, util, de una utilidad
extrana. Da verguenza hablar de Estadstica sin citar algo de Probabilidad. 1 Y
no lo vamos a hacer. Vamos a cumplir con la papeleta. En cualquier caso, si no
te manejas bien con los conceptos basicos probabilsticos (variable aleatoria, vector
aleatorio, distribucion conjunta y marginal, . . .) hay que leer algun texto. Uno muy
bueno, pero no facil de encontrar, es [? ].

1.1. Experimento y probabilidad


Dadas un conjunto de condiciones, un experimento, no siempre podemos predecir
exactamente lo que va a ocurrir. La Probabilidad es la disciplina matematica que
estudia estos experimentos.
En primer lugar determinamos el conjunto de posibles resultados que se puede
producir en la experiencia, es el espacio muestral, . Los posibles subconjuntos
de A son los sucesos aleatorios y la probabilidad no nos dice si cada suceso
si va a producir o no sino que se limita a cuantificar para cada experimento la
mayor o menor certidumbre que tenemos en la ocurrencia de A antes de realizar la
experiencia. P (A) es como se suele denotar habitualmente la probabilidad del suceso
A. Obviamente cada suceso tiene asignada una probabilidad. Han de darse unas
condiciones de consistencia mnimas que han de verificar las distintas probabilidades
de los sucesos aleatorios. Son las siguientes

Definition 1 (Medida de probabilidad) P funcion de conjunto definida sobre


los sucesos es una medida de probabilidad si:

1. (No negativa) P (A) 0 para todo A .

2. (La probabilidad del espacio muestral es uno) P () = 1.

3. (Numerablemente aditiva o aditiva) Si {An }n1 es una sucesion de sucesos


disjuntos entonces
X
P (n1 An ) = P (An ).
n1

1 De hecho, hay una teora muy extendida que dice que podemos saber Estadstica sin ningun

conocimiento de Probabilidad. Esta creencia se considera un nuevo tipo de enfermedad mental. Si


bien en una version leve de dicha enfermedad.

1
Si el espacio muestral es finito y consideramos que todos los elementos que lo
componen son equiprobables entonces la probabilidad de un suceso A vendra dada
como
#(A)
P (A) = (1.1)
#()
siendo # el cardinal del conjunto. Se comprueba con facilidad que es una medida
de probabilidad que verifica la axiomatica previa.
Nota de R 1 (notaR544) Consideramos un conjunto finito y numeramos sus ele-
mentos de 1 a n. Nuestro espacio muestral es {1, . . . , n}. Veamos como extraer k
elementos (con k n) sin reemplazamiento de este conjunto. La funcion sample es
la funcion basica. En el siguiente codigo tenemos k = 6.
> n = 30
> omega = 1:n
> sample(omega, size = 6, replace = FALSE)
[1] 11 4 23 1 30 8
Ahora lo repetimos con reemplazamiento.
> sample(omega, size = 6, replace = TRUE)
[1] 7 11 4 21 4 17
PDF Rcode

1.2. Variable aleatoria


Supongamos el experimento consistente en elegir a una individuo al azar de la
Comunidad Valenciana. Obviamente el espacio muestral esta formado por los dis-
tintos individuos. Si los numeramos tendramos = {i }N i=i donde N es el numero
total de personas de la Comunidad. Eleccion al azar supone que cada individuo
tiene la misma probabilidad de ser elegido y viene dada por P ({i }) = N1 . Obvia-
mente cuando se elige una muestra de personas pensamos en alguna caracterstica
numerica de la misma por ejemplo su edad. Denotemos por X R la aplicacion
tal que X() es la edad de la persona . Puesto que el individuo es seleccionado
de un modo aleatorio, tambien sera aleatoria la cantidad X(). La aplicacion X
recibe el nombre de variable aleatoria. Si B es un subconjunto arbitrario de nu-
meros reales entonces cualquier afirmacion de interes sobre la variable aleatoria X
suele poderse expresar como P ({ : X() B}). Por ejemplo, si nos interesa la
proporcion de personas que tienen 37 o mas anos esto supone plantearse el valor de
P ({ : X() [37, +)}).
Dos son los tipos de variables de mayor interes practico, las variables aleatorias
discretas y las continuas. Una variable aleatoria se dice discreta si toma un conjunto
de valores discreto, esto es, finito o si infinito numerable. Si el conjunto de valores
que puede tomar lo denotamos por D entonces se define la funcion de probabilidad
de X como P (X = x). En estas variables se tiene que
X
P (a X b) = P (X = x), (1.2)
axb

para cualesquiera valores reales a b.


Una variable aleatoria se dice continua cuando
Z b
P (a X b) = f (x)dx, (1.3)
a

2
para cualesquiera valores reales a b. La funcion f recibe el nombre de funcion
de densidad (de probabilidad) de la variable X.
De un modo generico cuando se habla de la distribucion de una variable aleatoria
X hablamos de las probabilidades P (X B) para cualquier subconjunto B de R.
Obviamente, para variables discretas,
X
P (X B) = P (X = x) (1.4)
xB

y para variables continuas


Z
P (X B) = f (x)dx. (1.5)
A

En resumen, si conocemos la funcion de probabilidad o la de densidad conocemos


la distribucion de la variable.
Se define la funcion de distribucion de una variable aleatoria X como la funcion
real de variable real dada por F (x) = P (X x) con x R.
Una variable suele describirse de un modo simple mediante su media y su va-
rianza. La media nos da una idea de alrededor de que valor se producen los va-
lores aleatorios de la variable mientras que la varianza cuantifica la dispersion
de estos valores alrededor de laPmedia. Se definen para variables discretas co-
mo: la media es EX = = P xD xP (X = x); mientras que la varianza es
var(X) = 2 = E(X )2 = xD (x )2 P (X = x). Habitualmente ademas
de lapvarianza se suele utilizar para medir variabilidad la desviacion tpica dada por
= var(X).
En variables continuas las definiciones de media y varianza son las analogas susti-
tuyendo
R + sumatorios por integrales, de modo que la media se define
R + como EX ==
2 2

xf (x)dx mientras que la varianza sera var(X) = =
(x ) f (x)dx.
En tablas 1.1 y 1.2 presentamos un breve resumen de las distribuciones que
vamos a utilizar en este curso.

Nota de R 2 (notaR545) En R se trabaja con las distribuciones de probabilidad


mediante grupos de cuatro funciones. Por ejemplo, supongamos que estamos traba-
jando con la binomial. Entonces la funcion de probabilidad es dbinom, la funcion
de distribucion es pbinom, la inversa de la funcion de distribucion que nos da los
percentiles es qbinom y, finalmente, podemos generar datos con distribucion bino-
mial mediante la funcion rbinom. Consideramos una binomial con 10 pruebas y una
probabilidad de exito en cada prueba de 0,23.

> dbinom(0:10, size = 10, prob = 0.23)

[1] 7.326680e-02 2.188489e-01 2.941670e-01 2.343149e-01 1.224828e-01


[6] 4.390291e-02 1.092821e-02 1.865298e-03 2.089376e-04 1.386888e-05
[11] 4.142651e-07

De hecho podemos ver la forma que tiene esta funcion de probabilidad para todos
los valores posibles.

> plot(dbinom(0:10, size = 10, prob = 0.23), xlab = "")

3
Cuadro 1.1: Distribuciones discretas
Distribucion Funcion de probabilidad Media Varianza
Bernoulli f (x|p) = px (1
 p)
1x
si x = 0, 1 p p(1 p)
n
Binomial f (x|n, p) = p (1 p)nx si x = 0, 1, . . . , n
x
np np(1 p)
x0 10 1
@
A A@ B A
x nx

4
nA nAB(A+Bn)
Hipergeometrica f (x|A, B, n) = 0 1 si x = 0, . . . , n. A+B (A+B)2 (A+B1)
@
A+B A
n
x 1p 1p
Geometrica f (x|p) = p(1 p) si x = 0, 1, 2, . . . p2
  p
r+x1 r(1p) r(1p)
Binomial Negativa f (x|r, p) = pr (1 p)x si x = 0, 1, 2, . . . p p2
x
x
Poisson f (x|) = e x! si x = 0, 1, . . .
Cuadro 1.2: Distribuciones continuas
Distribucion Funcion de densidad Media Varianza
1 + ()2
Uniforme f (x|, ) = si < x < 2 12
1 x 2
Normal, N (, 2 ) f (x|, 2 ) = 12 e 2 ( ) x R 2

1 x
Gamma Ga(, ) f (x|, ) = () x e si x > 0 a 2
1 x 2
Exponencial Expo() f (x | ) = exp si x 0
Ji-Cuadrado 2 () X 2 () si X Ga( 2 , 12 ) 2
5

(+) 1
Beta Be(, ) f (x|, ) = ()() x (1 x)1 si 0 < x < 1 + (+)2 (++1)
  +1
( +12 ) x2 2

t-Student t() f (x) = ( 1 + x R 0 si > 1 2 si > 2
2)
( m+n ) m/2 n/2 x m/21
n 2n2 (m+n2)
F-Snedecor F (m, n) f (x) = ( m )( 2
n m n (mx+n) (m+n)/2 si x > 0 (n2) si n>2 m(n2)2 (n4) si n > 4
2 2)
1 x 1 2 2 1 2 1
Weibull(, ) f (x | , ) = x exp ( ) si x > 0 ( ) (2( ) ( ))
2 X 2
Lognormal X N (, ) e LN (, )
R +
a La funcion gamma se define como () = 0
x1 exp{x}dx, que existe y es finita > 0
0.30
0.25
dbinom(0:10, size = 10, prob = 0.23)

0.20
0.15
0.10
0.05
0.00

2 4 6 8 10

Es interesante ver como se modifica la forma de la funcion de probabilidad cuan-


do modificamos la probabilidad de exito manteniendo constante el numero de pruebas
que realizamos. Indicamos con 1 y 2 la primera y segunda funciones de probabilidad.

> plot(dbinom(0:10, size = 10, prob = 0.23), xlab = "", pch = "1")
> points(dbinom(0:10, size = 10, prob = 0.77), xlab = "", pch = "2")

6
0.30

1 2
0.25
dbinom(0:10, size = 10, prob = 0.23)

1 2
1 2
0.20
0.15

1 2
0.10

1 2
0.05

2
1

2 1
0.00

2 2 2 2 1 1 1 1

2 4 6 8 10

La funcion de distribucion la podemos conseguir con pbinom.

> pbinom(0:10, size = 10, prob = 0.23)

[1] 0.0732668 0.2921157 0.5862827 0.8205976 0.9430804 0.9869833 0.9979115


[8] 0.9997768 0.9999857 0.9999996 1.0000000

> plot(stepfun(0:10, c(pbinom(0:10, size = 10, prob = 0.23), 1)),


+ verticals = F)

7
stepfun(0:10, c(pbinom(0:10, size = 10, prob = 0.23), 1))
1.0
0.8
0.6
f(x)

0.4
0.2

0 2 4 6 8 10

La inversa de la funcion de distribucion, esto es, los cuantiles nos la dara qbi-
nom.
> qbinom(0.3, size = 10, prob = 0.23)
[1] 2
Podemos simular valores de la distribucion binomial con rbinom.
> rbinom(5, size = 10, prob = 0.23)
[1] 2 2 4 1 1
PDF Rcode
Nota de R 3 (notaR546) La funcion de densidad y de distribucion las obtene-
mos con dpois y ppois.
> dpois(0:60, lambda = 12)
[1] 6.144212e-06 7.373055e-05 4.423833e-04 1.769533e-03 5.308599e-03
[6] 1.274064e-02 2.548128e-02 4.368219e-02 6.552328e-02 8.736438e-02
[11] 1.048373e-01 1.143679e-01 1.143679e-01 1.055704e-01 9.048890e-02
[16] 7.239112e-02 5.429334e-02 3.832471e-02 2.554981e-02 1.613672e-02
[21] 9.682032e-03 5.532590e-03 3.017776e-03 1.574492e-03 7.872460e-04
[26] 3.778781e-04 1.744053e-04 7.751345e-05 3.322005e-05 1.374623e-05
[31] 5.498491e-06 2.128448e-06 7.981681e-07 2.902429e-07 1.024387e-07
[36] 3.512183e-08 1.170728e-08 3.796955e-09 1.199038e-09 3.689349e-10
[41] 1.106805e-10 3.239428e-11 9.255510e-12 2.582933e-12 7.044362e-13
[46] 1.878497e-13 4.900426e-14 1.251173e-14 3.127932e-15 7.660241e-16
[51] 1.838458e-16 4.325783e-17 9.982576e-18 2.260206e-18 5.022680e-19
[56] 1.095857e-19 2.348266e-20 4.943718e-21 1.022838e-21 2.080349e-22
[61] 4.160697e-23

8
Representamos las funciones de probabilidad de dos distribuciones Poisson mo-
dificando el valor de que es su media y varianza de modo que un valor de mayor
se traduce en una densidad que toma valores mayores y mas dispersa.

> plot(0:60, dpois(0:60, lambda = 12), xlab = "", pch = "1")


> points(0:60, dpois(0:60, lambda = 24), xlab = "", pch = "2")

11
1 1
0.10

1
1
0.08
dpois(0:60, lambda = 12)

22
2 2
1 2 2
1 2
0.06

2
1 2 2

1 2
0.04

2
1 2
2
2
1 1
0.02

2 2
2 1 2
1 2
2 1 22
1 2 1 22222
1
0.00

1 222 11111111111111111111111111111111111111
111
2222222222 2222222222222222222

0 10 20 30 40 50 60

Los cuantiles obtenidos como inversa de la funcion de distribucion se obtienen


con qpois.

> qpois(seq(0.1, 0.9, 0.1), lambda = 12)

[1] 8 9 10 11 12 13 14 15 17

Y finalmente podemos generar valores con esta distribucion con rpois.

> rpois(50, lambda = 12)

[1] 16 16 15 11 7 17 12 12 11 14 10 13 14 11 7 8 12 11 14 11 16 11 12 11 10
[26] 17 8 11 8 15 18 10 16 14 10 19 14 10 10 10 13 13 12 7 12 12 17 11 16 16

PDF Rcode

Nota de R 4 (notaR547) Las funciones para trabajar con la distribucion normal


son dnorm, pnorm, qnorm y rnorm. Por ejemplo, en el siguiente grafico podemos
ver las densidades de dos distribuciones normales, con medias i y varianzas i2 con
i = 1, 2 donde podemos ver el efecto de modificar la media y las varianzas (observad
que le pasamos la desviacion tpica.

> x = seq(-10, 20, 0.01)


> plot(x, dnorm(x, mean = -3, sd = 2), type = "l")
> lines(x, dnorm(x, mean = 4, sd = 4), lty = 2)

9
0.20
0.15
dnorm(x, mean = 3, sd = 2)

0.10
0.05
0.00

10 5 0 5 10 15 20

La funcion de distribucion de la normal estandar o tpica vendra la podemos


representar como sigue.

> x = seq(-3, 3, 0.01)


> plot(x, pnorm(x, mean = 0, sd = 1), type = "l")
1.0
0.8
pnorm(x, mean = 0, sd = 1)

0.6
0.4
0.2
0.0

3 2 1 0 1 2 3

10
Veamos el efecto que tiene modificar media y varianza sobre la forma de las
correspondientes funciones de distribucion.

> x = seq(-10, 20, 0.01)


> plot(x, pnorm(x, mean = -3, sd = 2), type = "l")
> lines(x, pnorm(x, mean = 4, sd = 4), lty = 2)
1.0
0.8
pnorm(x, mean = 3, sd = 2)

0.6
0.4
0.2
0.0

10 5 0 5 10 15 20

Podemos representar los percentiles de dos distribuciones normales con distintas


medias y varianzas. La primera opcion es poner en abscisas la probabilidad y en
ordenadas el percentil correspondiente. Es lo que aparece en el siguiente grafico.

> x = seq(0, 1, 0.01)


> plot(x, qnorm(x, mean = -3, sd = 2), type = "l", ylim = c(-8,
+ 15))
> lines(x, qnorm(x, mean = 4, sd = 4), lty = 2)

11
15
10
qnorm(x, mean = 3, sd = 2)

5
0
5

0.0 0.2 0.4 0.6 0.8 1.0

La segunda opcion, mas facil de interpretar, es mostrar los percentiles de una


frente a los percentiles de la otra.

> plot(qnorm(x, mean = -3, sd = 2), qnorm(x, mean = 4, sd = 4),


+ type = "l")
10
qnorm(x, mean = 4, sd = 4)

5
0
5

8 6 4 2 0 2

qnorm(x, mean = 3, sd = 2)

12
No es casual que salga una lnea recta. Unos son funcion lineal de los otros. Pero
no son iguales.
PDF Rcode

1.2.1. Teorema de Bayes


Tenemos el espacio muestral y una particion de dicho espacio, B1 , . . . , Bk , esto
es, sucesos disjuntos dos a dos y tales que su union cubren todo el espacio muestral.
Entonces se tiene que, para cualquier suceso A,

P (A | Bi )P (Bi )
P (Bi | A) = Pk (1.6)
j=1 P (A | Bj )P (Bj )

1.3. Vectores aleatorios


Supongamos X = (X1 , . . . , Xd ) un vector aleatorio con d componentes. Tanto
si el vector es discreto (todas sus variables aleatorias componentes son discretas)
como si es continuo denotaremos la correspondiente funcion de probabilidad o de
densidad conjunta mediante f (x1 , . . . , xn ). Si X es discreto entonces f (x1 , . . . , xn ) =
P (X1 = x1 , . . . , Xn = xn ) y hablamos de funcion de probabilidad. En lo que sigue
hablamos del caso continuo. Todas las expresiones son analogas en el caso discreto
sustituyendo la integral por el sumatorio correspondiente.
Si X = (X1 , . . . , Xd ) es un vector continuo entonces
Z b1 Z bd
P (a1 X1 b1 , . . . , ad X1 bd ) = ... f (x1 , . . . , xd )dx1 . . . dxn , (1.7)
a1 ad

para cualesquiera ai bi con i = 1, . . . , d.


En particular la distribucion del vector suele venir descrita mediante el vector
de medias y por la matriz de covarianzas.
Si para la i-esima variable Xi consideramos la media i = EXi entonces el
vector de medias viene dado por


1

X = ...
d

Si no hace falta indicar el vector X entonces denotaremos simplemente en lugar


de X .
Para cada par de variables Xi y Xj podemos considerar su covarianza definida
como ij = cov(Xi , Xj ) = E(Xi EXi )(Xj EXj ) = E(Xi Xj ) EXi EXj .
Obviamente si Xi = Xj entonces cov(Xi , Xi ) = var(Xi ), es decir, la covarianza
de una variable consigo misma es la varianza de la variable, es decir, ii = var(Xi ).
Dado el vector aleatorio X podemos consider la covarianza de cada par de variables
y construir la matriz que en la posicion (i, j) tiene dicha covarianza. Es la matriz
de covarianzas, tambien llamada en la literatura matriz de varianzas, matriz de
varianzas-covarianzas o matriz de dispersion. La denotaremos por , es decir,

11 . . . 1d
..
= ... ..
. .
d1 . . . dd

13
En general si consideramos dos vectores aleatorios X = (X1 , . . . , Xd ) e Y =
(Y1 , . . . , Yp ) denotaremos

cov(X1 , Y1 ) . . . cov(X1 , Yp )
.. .. ..
cov(X, Y ) = . . .
cov(Xd , Y1 ) . . . cov(Xd , Yp )

y sera la matriz de covarianzas entre dichos vectores.


Si los vectores X e Y son independientes se verifica que cov(X, Y ) = 0.
Dado el vector X = (X1 , . . . , Xd ) podemos considerar la matriz de correla-
ciones que en la posicion (j, k) tiene el coeficiente de correlacion entre las variables
jk
Xi y Xj , jk = jjkk , es decir,

1 12 . . . 1d
.. .. .. ..
P = . . . .
d1 d2 ... 1

Obviamente, como la matriz de covarianzas, la matriz de correlaciones es simetrica


ya que jk = kj . Si denotamos por D = diag(11 , . . . , dd ) entonces tenemos que

1 1
P = D 2 D 2 . (1.8)

Propiedades del vector de medias y la matriz de covarianzas


Supongamos que tenemos una matriz A de dimensiones pd con p d y de rango
p (tiene pues p filas y p columnas que son linealmente independientes). Tenemos un
vector aleatorio X con d componentes y consideramos el vector Y = Ax, esto es,
consideramos la transformacion lineal del vector X asociada a la matriz A. Entonces
se tiene que
Y = E[Y ] = AE[X] = AX . (1.9)
y
cov(Y ) = cov(AX) = Acov(X)A . (1.10)

1.4. Distribucion normal multivariante


Veamos dos definiciones equivalentes.

Definition 2 Sea Y = (Y1 , . . . , Yd ) un vector aleatorio d-dimensional. Se dice que


el vector Y tiene una distribucion normal multivariante si tiene por funcion de
densidad conjunta
 
1 1 1
f (y|, ) = d 1 exp (y ) (y ) , (1.11)
(2) 2 || 2 2

donde < yj < +, j = 1, . . . , d y = [jk ] es una matriz definida positiva


( > 0).

Se puede probar que EY = y var(Y ) = y por ello se suele denotar

Y Nd (, ). (1.12)

Se tiene que si Y1 , . . . , Yd son variables aleatorias con distribucion normal indepen-


dientes con medias nulas y varianza comun 2 entonces se tiene que Y Nd (0, 2 Id ).

14
Teorema 1 Supongamos Y Nd (, ) y sea
 (1)   (1)   
Y 11 12
Y = , = (2) , = ,
Y (2) 21 22

donde Y (i) y (i) son vectores di 1 y ii es una matriz di di (con d1 + d2 = d).


Se verifican las siguientes propiedades:
1. Si C es una matriz q d de rango q entonces CY Nq (C, CC ).
2. Cualquier subvector de Y tiene una distribucion normal multivariante. En
particular, se tiene que Y (1) Nd1 ((1) , 11 ).
3. Y (1) e Y (2) son independientes si cov(Y (1) , Y (2) ) = 0.
4. Si Ui = Ai Y (i = 1, . . . , m) y cov(Ui , Uj ) = 0 para i 6= j entonces los distintos
vectores Ui son independientes.
5. (Y ) 1 (Y ) 2d .
6. La distribucion condicionada de Y (2) , dado Y (1) = y (1) es Nd2 ((2) +21 1
11 [y
(1)

(1) 1
], 22,1 ) donde 22,1 = 22 21 11 12 .

Una segunda manera en que podemos definir la distribucion normal multivarian-


te es del siguiente modo.
Pd
Definition 3 Y tiene una distribucion normal multivariante si a Y = i=1 ai Yi
tiene una distribucion normal univariante para cualquier vector a = (a1 , . . . , ad ) .
Si EY = and cov(Y ) = > 0 entonces Y Nd (, ).

Nota de R 5 (notaR106) Uno de los paquetes o libreras para trabajar con la


normal multivariante es el paquete mvtnorm [? ].

> library(mvtnorm)

Fijamos el vector de medias y la matriz de covarianzas de una normal bivariante.

> mu = c(4.5, 7.3)


> Sigma = matrix(c(7.097258, 3.885963, 3.885963, 3.371314), 2,
+ 2)

Fijamos los puntos en los que vamos evaluar dicha funcion de densidad conjunta

> npuntos = 50
> x = seq(mu[1] - 3 * sqrt(Sigma[1, 1]), mu[1] + 3 * sqrt(Sigma[1,
+ 1]), len = npuntos)
> y = seq(mu[2] - 3 * sqrt(Sigma[2, 2]), mu[2] + 3 * sqrt(Sigma[2,
+ 2]), len = npuntos)

y la evaluamos.

> z = NULL
> for (i in 1:npuntos) {
+ for (j in 1:npuntos) {
+ z = rbind(z, c(x[i], y[j], dmvnorm(c(x[i], y[j]), mean = mu,
+ sigma = Sigma)))
+ }
+ }
> persp(z)
> contour(z)

15
Vamos a generar datos de una normal multivariante. Consideremos un vector de
medias generado al azar con valores entre 0 y 1. La matriz de covarianzas la ge-
neramos tambien aleatoriamente. Para ello, generamos en primer lugar una matriz
cuyos elementos son uniformes en el intervalo unitario. El producto de esta matriz
por su traspuesta es definida positiva y la podemos utilizar como matriz de cova-
rianzas.
> mu = runif(5)
> A = matrix(runif(5 * 5), ncol = 5, nrow = 5)
> Sigma = t(A) %*% A
Generamos datos con el vector de medias y matriz de covarianzas .
> (x = rmvnorm(10, mean = mu, sigma = Sigma))

[,1] [,2] [,3] [,4] [,5]


[1,] 0.04626379 0.32918631 -0.04695225 0.002834841 0.18000803
[2,] 0.51980285 0.52731654 0.02064197 -0.745765897 0.69932741
[3,] 0.93910466 0.14741164 0.39708107 1.054602945 0.43937750
[4,] -0.93727400 -0.66975913 -1.26176770 -0.851706308 -1.43128300
[5,] 2.01566202 -1.13718701 0.36493671 0.001325096 0.70368074
[6,] 1.33616692 0.05515794 1.09361434 0.680272699 0.21761448
[7,] 2.66822927 -0.79760284 0.82721854 0.952181785 1.57756306
[8,] -0.42695860 2.10878124 1.44171438 0.793136255 0.03363357
[9,] 0.31569666 -2.16317506 -0.56474025 -1.249219791 -0.65422967
[10,] 0.75057308 0.70954046 0.10655627 0.777328071 -0.49805546

PDF Rcode

NA

16
Captulo 2

Un muy breve repaso a la


Estadstica

Solo pretendemos fijar notacion y recordar algunos de los conceptos basicos. Es


mas que recomendable consultar algun texto de introduccion a la Estadstica. Hay
tantos y, muchos, tan buenos que es casi un pecado recomendar alguno. El que se
tenga a mano sera bueno. Teniendo en cuenta que este texto esta muy orientado al
uso de la Estadstica con R [? ] sera bueno consultar [? ] en donde se presenta la
estadstica basica con el programa.

2.1. Algo de Estadstica Descriptiva, poco


Cuando tenemos un banco de datos lo primero y conveniente es describir de un
modo sencillo dichos datos, bien mediante unos resumenes numericos o bien median-
te unos resumenes graficos. Esto es lo que se conoce como Estadstica descriptiva.
Veamos algun ejemplo para recordar estos conceptos.

Nota de R 6 (notaR150) Vamos a realizar un analisis descriptivo de unos datos


relativos a hospitalizacion ambulatoria. Empezamos cargando el fichero de datos.

> load("../data/scoremaster")

Lo que acabamos de cargar es un data frame cuyo nombre es scoremaster. Hemos


de saber cuales son las variables que lo componen.

> names(scoremaster)

[1] "score" "eg1" "d1" "t1" "s1"


[6] "score2" "eg2" "d2" "t2" "s2"
[11] "score3" "eg3" "d3" "t3" "s3"
[16] "score4" "score5" "especialidad" "intensidad" "tipoanes"
[21] "asa" "sexo" "T.TOTALP" "T.QUIRUR" "edad"

Para poder trabajar con los nombres de las variables hemos de adjuntar el banco
de datos

> attach(scoremaster)

Podemos ver los primeros diez valores de la variable score

> score[1:10]

1
[1] 6 4 5 6 7 6 7 8 6 5
Levels: 3 < 4 < 5 < 6 < 7 < 8
De las variables consideradas algunas son categoricas como puede ser la especia-
lidad o tipoanes (tipo de anestesia), otras son ordinales como score, score2, score3,
. . . mientras que otras son continuas como T.TOTALP o T.QUIRUR.
Es interesante utilizar la funcion extractora summary sobre un data frame.
> summary(scoremaster)
score eg1 d1 t1 s1 score2 eg2 d2
3: 13 0: 18 0: 18 0: 50 0: 17 3 : 7 0 : 27 0 : 36
4: 89 1:545 1:360 1:359 1:307 4 : 33 1 :377 1 :359
5:199 2:359 2:544 2:513 2:598 5 :133 2 :359 2 :366
6:276 6 :234 NA's:159 NA's:161
7:219 7 :192
8:126 8 :162
NA's:161
t2 s2 score3 eg3 d3 t3 s3
0 : 11 0 : 3 3 : 2 0 : 9 0 : 10 0 : 0 0 : 0
1 : 59 1 :237 4 : 3 1 : 78 1 : 76 1 : 9 1 : 45
2 :691 2 :522 5 : 34 2 : 51 2 : 51 2 :127 2 : 92
NA's:161 NA's:160 6 : 45 NA's:784 NA's:785 NA's:786 NA's:785
7 : 34
8 : 20
NA's:784
score4 score5 especialidad intensidad tipoanes asa
Min. : 5.0 Min. : 4.0 1 :325 1:168 General:746 1:555
1st Qu.: 6.0 1st Qu.: 5.5 2 :163 2:426 Plexo :108 2:332
Median : 6.5 Median : 6.5 4 :136 3:328 CAM : 65 3: 35
Mean : 6.4 Mean : 6.0 5 : 55 NA's : 3
3rd Qu.: 7.0 3rd Qu.: 7.0 7 :157
Max. : 8.0 Max. : 7.0 8 : 74
NA's :902.0 NA's :918.0 NA's: 12
sexo T.TOTALP T.QUIRUR edad
0 :329 Min. : 900 Min. : 600 Min. : 4.00
1 :590 1st Qu.: 6060 1st Qu.: 2640 1st Qu.: 31.00
NA's: 3 Median : 8790 Median : 3600 Median : 43.00
Mean : 9881 Mean : 3903 Mean : 43.48
3rd Qu.:12420 3rd Qu.: 4860 3rd Qu.: 56.00
Max. :35160 Max. :16200 Max. : 84.00
NA's :194.00
En el resumen anterior vemos que cuando se trata de una variable categorica
nos muestra los conteos asociados a cada uno de los valores posibles (si hay muchas
categoras solo pone algunas y las demas las agrupa en una ultima categora). En
las variables numericas saca unas descriptivas numericas. Observemos la descriptiva
numerica de T.TOTALP
> summary(T.TOTALP)
Min. 1st Qu. Median Mean 3rd Qu. Max.
900 6060 8790 9881 12420 35160
Nos aparece el mnimo, el primer cuartil (o percentil 0,25), la mediana, la media,
el tercer cuartil (o percentil 0,75) y el maximo de las observaciones.
Para una variable categorica podemos pedirle una tabla de frecuencias.

2
> table(tipoanes)

tipoanes
General Plexo CAM
746 108 65

La tabla anterior es algo parca en su presentacion. Si queremos un diagrama de


barras (que es lo mismo pero en dibujo) lo podemos conseguir haciendo

> barplot(table(tipoanes))
700
600
500
400
300
200
100
0

General Plexo CAM

Repetimos las tablas y los diagramas de barras para el resto de variables catego-
ricas.

> table(intensidad)

intensidad
1 2 3
168 426 328

> barplot(table(intensidad))

3
400
300
200
100
0

1 2 3

> table(especialidad)

especialidad
1 2 4 5 7 8
325 163 136 55 157 74

> barplot(table(especialidad), names.arg = c("Gine", "Cir. Gen.",


+ "ORL", "Estoma", "COT", "Uro"))

4
300
250
200
150
100
50
0

Gine Cir. Gen. ORL Estoma COT Uro

En la variable asa (y para no aburrirnos mas con los diagramas de barras) sus-
tituimos un diagrama de barras por un diagrama de sectores.

> table(asa)

asa
1 2 3
555 332 35

> pie(table(asa), labels = c("I", "II", "III"))

5
I

III

II

Cuando consideramos una variable numerica hay dos tipos de representaciones


que son robustas y sencillas de interpretar. Son el diagrama de cajas y el diagrama
de tallo y hojas. El primero de ellos se obtiene con

> boxplot(T.QUIRUR/60)
250
200
150
100
50
0

6
Observemos que en el diagrama de cajas hemos expresado los tiempos quirurgicos
en minutos. La variable intensidad es una variable ordinal que expresa el grado de
agresion que supone la intervencion quirurgica. Para logico comparar graficamente
los tiempos quirurgicos teniendo en consideracion la intensidad de la intervencion.

> boxplot(T.QUIRUR/60 ~ intensidad)


250
200
150
100
50
0

1 2 3

Y finalmente consideremos un diagrama de tallo y hojas para la misma variable.

> stem(T.QUIRUR/60)

The decimal point is 1 digit(s) to the right of the |

0 | 0256667889999
2 | 00000122333445555555555677788888999999000000000000000001111222222222+82
4 | 00000000000000000000000011111111111122222222233333334444444444555555+183
6 | 00000000000000000000000000111111111122222222222333333334444444444444+154
8 | 00000000000000011111111111222222222333333344444445555555555555666666+58
10 | 00000000001122233333344444555566667777788888999900000112235555778899
12 | 000001134555566680014458
14 | 23489039
16 | 0252
18 | 09
20 | 55
22 |
24 |
26 | 0

7
Y yo creo que como analisis descriptivo inicial ya esta mas que bien.
PDF Rcode

2.2. Verosimilitud
Sea y = (y1 , . . . , yn ) una realizacion del vector aleatorio Y = (Y1 , . . . , Yn ). Es
habitual asumir que Y tiene una funcion de densidad conjunta f en una cierta familia
F . Para una funcion dada f , el valor f (y) nos muestra como vara la densidad dentro
del espacio muestral de valores posibles de y. Y viceversa, si consideramos unos datos
y y lo que hacemos variar es la funcion de densidad entonces estamos viendo como
de verosmil es cada una de las funciones dados los datos y. Esta funcion recibe el
nombre de verosimilitud de f dados los datos y y se suele denotar como

V erosimilitud[f ; y] = L(f ; y) = f (y). (2.1)

Con frecuenica, es conveniente trabajar con el logaritmo natural de la funcion an-


terior y hablaremos de la log-verosimilitud.

l[f ; y] = log f (y). (2.2)

Una simplificacion adicional (que es habitual en las aplicaciones) supone que la


funcion de densidad f pertenece a una familia parametrica F , esto es, cada elemento
de la familia es conocido completamente salvo un numero finito de parametros
= (1 , . . . , p ) de modo que denotaremos f (y; ) o fY (y; ). Al conjunto de valores
posibles de se le llama espacio parametrico y lo denotaremos por . En este
caso, la logverosimilitud es una funcion de y denotaremos

V erosimilitud[; y] = l(; y) = log f (y; ). (2.3)

8
Supongamos una transformacion 1-1 de Y a Z, Z = g(Y ). Las densidades de
ambos vectores se relacionan segun la siguiente relacion

y
fZ (z) = fY (y) ,
z


donde y
z es el jacobiano de la transformacion de z a y. Se tiene la siguiente relacion
entre las verosimilitudes
y
LZ (; z) = LY (; y).
z
Esto sugiere que es mejor trabajar con el cociente de las verosimilitudes para dos
vectores de parametros 1 y 2 en lugar de los valores aislados.
Si asumimos que los distintos Y1 , . . . , Yn son independientes entonces
n
Y
LY (; y) = fY (y) = fYi (yi ),
i=1

y
n
X n
X
ly (; y) = log fYi (yi ) = LYi (; yi ).
i=1 i=1

Veamos algunos ejemplos de verosimilitud.

Ejemplo 1 (Pruebas Bernoulli) Y1 , . . . , Yn son independientes y con la misma


distribucion (i.i.d.) P (Yi = yi ) = yi (1 )1yi y
Pn Pn
yi
L(; y) = i=1 (1 )n i=1 yi

Ejemplo 2 (Numero de exitos en n pruebas Bernoulli) Nuestros datos son


ahora el numero total de exitos en un numero dado de pruebas de Bernoulli, r. En-
tonces la variable correspondiente R tiene una distribucion binomial con n pruebas
y una probabilidad de exito . La verosimilitud viene dada por
 
n r
L(; r) = (1 )nr
r

Ejemplo 3 (Muestreo Bernoulli inverso) Nuestros datos son ahora el numero


total de pruebas necesarias para alcanzar un numero previamente especificado de
exitos. La variable aleatoria correspondiente N tendra una distribucion binomial
negativa con r exitos y una probabilidad de exito . La funcion de verosimilitud
correspondiente viene dada por
 
n1 r
L(; n) = (1 )nr
r1

Consideremos los tres ejemplos anteriores 1, 2 y 3. Si consideramos dos valores del


parametro 1 y 2 entonces el cociente de las verosimilitudes calculados en ambos
valores tiene el mismo valor en los tres ejemplos.

2.3. Estimacion
Denotamos por el espacio formado por los valores que puede tomar o espacio
parametrico. Un estimador del parametros o vector parametrico es cualquier
funcion de la muestra X1 , . . . , Xn que toma valores en el espacio parametrico.

9
Si (X1 , . . . , Xn ) es un estimador del parametro entonces se define el error
cuadratico medio como
M SE() = E[(X1 , . . . , Xn ) ]2 (2.4)
En el caso en que se verifique que E(X1 , . . . , Xn ) = = , es decir, que el
estimador sea insesgado entonces:
M SE() = E[(X1 , . . . , Xn ) ]2 = E[(X1 , . . . , Xn ) ]]2 = var().
Y el error cuadratico medio no es mas que la varianza del estimador.
Consideremos la siguiente cadena de igualdades. Denotamos
M SE() = E[ ]2 = E[ + ]2 = E[ ]2 + [ ]2 (2.5)
La diferencia entre la media del estimador y el parametro, , recibe el nombre
de sesgo. Finalmente lo que nos dice la ecuacion anterior es que el error cuadratico
medio M SE() lo podemos expresar como la suma de la varianza del estimador,
E[ ]2 , mas el sesgo al cuadrado, [ ]2 .
A la raz cuadrada de la varianza de un estimador, es decir, a su desviacion
tpica o estandar se le llama error estandar. La expresion error estandar se usa
en ocasiones indistintamente para referirse o bien dicha desviacion tpica o bien al
estimador de la misma.

2.3.1. Estimacion insesgada de media y varianza


Dada una muestra Y1 , . . . , Yn de una variable. Un estimador habitualmente uti-
lizado para estimar = EYi es la media muestral dada por
n
1X
Y = Yi . (2.6)
n i=1

Notemos que
n n n
1X 1X 1X
E Y = E[ Yi ] = EYi = = .
n i=1 n i=1 n i=1
En definitiva, la media muestral es un estimador que no tiene ningun sesgo cuando
estima la media de Yi (la media poblacional) o, lo que es lo mismo, es un estimador
insesgado.
Para estimar de un modo insesgado la varianza 2 a partir de una muestra
Y1 , . . . , Yn se utiliza la varianza muestral dada por
n
2 1 X
S = (Yi Y )2 . (2.7)
n 1 i=1

La razon de la division por n 1 en lugar de dividir por n viene de las siguientes


igualdades.
n
X
E (Yi Y )2 =
i=1
n
X n
X
E [(Yi ) (Y )2 )]2 = E(Yi )2 nE(Y )2 , (2.8)
i=1 i=1

pero E(Yi )2 = 2 y E(Y )2 = var(Y ) = 2 /n. En consecuencia,


n
X 2
E (Yi Y )2 = n 2 = n 2 2 = (n 1) 2 ,
i=1
n

10
de donde,
n
1 X
ES 2 = E (Yi Y )2 = 2 ,
n 1 i=1
es decir, S 2 estima la varianza 2 sin sesgo.

Nota de R 7 (notaR151) Vamos a estimar la media y la varianza de un modo


insesgado. Empezamos leyendo los datos scoremaster.

> load("../data/scoremaster")
> attach(scoremaster)

La media muestral del tiempo total quirurgico (en segundos) lo obtenemos con

> mean(T.QUIRUR)

[1] 3903.449

Mientras que la varianza y desviacion tpica muestral vienen dadas por

> var(T.QUIRUR)

[1] 3107898

> sd(T.QUIRUR)

[1] 1762.923

PDF Rcode

2.3.2. Estimacion insesgada del vector de medias y la matriz


de covarianzas
Ahora consideramos una muestra de un vector de dimension d, Y1 , . . . , Yn i.i.d.
con vector de medias = EYi y matriz de covarianzas = cov(Yi ). Los estima-
dores insesgados de y son las versiones multivariantes de la media y varianza
muestrales. Si

Yi1
..
Yi = .
Yip
Entonces podemos representar toda la muestra como la siguiente matriz

Y1 Y11 . . . Y1d
..
Y = ... = ... ..
. .
Yn Yn1 . . . Ynd
mientras que los datos observados, la matriz de datos, vendra dada por

y1 y11 . . . y1d
..
y = ... = ... ..
. .

yn yn1 . . . ynd
El vector de medias muestral viene dado por la siguiente expresion en terminos de
la matriz Y ,
n
1X 1
Y = Yi = Y 1n . (2.9)
n i=1 n

11
siendo 1n el vector n 1 con todos los valores iguales a uno. Tambien denotaremos

Y1
..
Y = .
Yp

El estimador de la matriz de covarianzas (poblacional) sera la matriz de co-


varianzas muestral que tiene en la posicion (j, k) la covarianza muestral entre las
componentes j y k,
n
1 X
Sjk = (Yij Yj )(Yik Yk ),
n 1 i=1

de modo que


S11 ... S1d n
.. .. .. = 1 X 1
S= . . . (Yi Y )(Yi Y ) = Q.
n 1 i=1 n1
Sd1 . . . Sdd

Es inmediato que E Y = porque componente a componente hemos visto que se


verifica la igualdad. A partir de los vectores Yi consideramos Xi = Yi de modo
que se verifica X = X . Se sigue que
n
X n
X n
X
(Yi Y )(Yi Y ) = (Xi X)(Xi X) = Xi Xi nX X .
i=1 i=1 i=1

Los vectores X1 , . . . , Xn tienen vector de medias nulo y matriz de covarianzas , la


misma que los Yi . En consecuencia, E X X = y
n
X
EQ = cov(Yi ) n cov(Y ) = n n cov(Y ) = n n = (n 1).
i=1
n

Tenemos pues que S es un estimador insesgado de la matriz .


Finalmente, si denotamos por rjk el coeficiente de correlacion entre las variables
j y k, es decir,
Pn
(Yij Yj )(Yik Yk ) Sjk
rjk = qP i=1 P = p (2.10)
n
(Y Y )2 n
(Y Y )2 S jj Skk
i=1 ij j i=1 ik k

Denotaremos por R la matriz de correlaciones muestrales R = [rjk ].

Nota de R 8 (notaR152) Vamos a estimar la media y la varianza de un modo


insesgado. Empezamos leyendo los datos scoremaster.

> load("../data/scoremaster")
> attach(scoremaster)

La covarianza y la correlacion muestrales entre el timepo total quirurgico y el


tiempo total postquirurgico los obtenemos con

> cov(T.QUIRUR, T.TOTALP)

[1] 2308272

12
> cor(T.QUIRUR, T.TOTALP)

[1] 0.2364658

La matriz de covarianzas muestral vendra dada por

> cov(cbind(T.QUIRUR, T.TOTALP))

T.QUIRUR T.TOTALP
T.QUIRUR 3107898 2308272
T.TOTALP 2308272 30659874

y la de correlaciones sera

> cor(cbind(T.QUIRUR, T.TOTALP))

T.QUIRUR T.TOTALP
T.QUIRUR 1.0000000 0.2364658
T.TOTALP 0.2364658 1.0000000

PDF Rcode

2.4. Estimador maximo verosmil


El metodo de estimacion que vamos a utilizar en este curso el metodo de
maxima verosimilitud. El estimador maximo verosmil de , que denotaremos
por , se obtienen maximizando la funcion de verosimilitud o, equivalentemente,
la transformacion monotona de dicha funcion que es la funcion de logverosimilitud.
Utilizaremos para denotar el estimador maximo verosmil la notacion inglesa MLE.

L() = max L(), (2.11)


o tambien
= argmax L(), (2.12)
Pn
xi
Ejemplo 4 (Bernoulli) Se puede comprobar sin dificultad que p = i=1
n .

Una propiedad importante de los estimadores maximo verosmiles consiste en


que si = f () siendo f una biyeccion entonces el estimador maximo verosmil de
es verifica que
= f (). (2.13)

Ejemplo 5 (Normal) En este caso se comprueba que = Xn y que c2 = n1 S 2 =


1 Pn
n
2
n i=1 (Xi q
Xn ) . Teniendo en que cuenta la propiedad enunciada en 2.13 tendre-
mos que = n1 2
n S .

En muchas situaciones la funcion L() es concava y el estimador maximo ve-


rosmil es la solucion de las ecuaciones de verosimilitud L( = 0. Si cov()
denota la matriz de covarianzas de entonces, para un tamano muestral grande y
bajo ciertas condiciones de regularidad (ver [? ], pagina 364), se verifica que cov()
es la inversa de la matriz de informacion cuyo elemento (j, k) viene dado por
 2 
l()
E (2.14)
j k

13
Notemos que el error estandar de j sera el elemento que ocupa la posicion (j, j)
en la inversa de la matriz de informacion. Cuanto mayor es la curvatura de la
logverosimilitud menores seran los errores estandar. La racionalidad que hay detras
de esto es que si la curvatura es mayor entonces la logverosimilitud cae rapidamente
cuando el vector se aleja de . En resumen, es de esperar que este mas proximo
a .

Ejemplo 6 (Binomial) Supongamos que una muestra en una poblacion finita y


consideremos como valor observado el numero de exitos. Entonces la verosimilitud
sera  
n y
L(p) = p (1 p)ny , (2.15)
y
y la logverosimilitud viene dada como
 
n
l(p) = log + y log p + (n y) log(1 p), (2.16)
y
La ecuacion de verosimilitud sera
l(p) y ny y np
= = . (2.17)
p p 1p p(1 p)

Igualando a cero tenemos que la solucion es p = ny que no es mas que la proporcion


muestral de exitos en las n pruebas. La varianza asntotica sera
 2   
l(p) y ny n
E = E + = . (2.18)
p2 p2 (1 p)2 p(1 p)

En consecuencia asintoticamente p tiene varianza p(1p)


n lo cual era de prever pues
si consideramos la variable Y que nos da el numero de exitos entonces sabemos que
EY = np y que var(Y ) = np(1 p).

2.5. Contraste de hipotesis


Genericamente vamos a considerar situaciones en donde particionamos el espacio
parametrico en dos conjuntos 0 y 1 , es decir, 0 1 = (son disjuntos) y
y 0 1 = (cubren todo el espacio parametrico). Consideramos el contraste de
hipotesis siguiente.

H0 : 0 (2.19)
H1 : 1 (2.20)

Basandonos en una muestra aleatoria X1 , . . . , Xn hemos de tomar una decision.


Las decisiones a tomar son una entre dos posibles: (i) Rechazar la hipotesis nula o
bien (ii) no rechazar la hipotesis nula. Notemos que, una vez hemos tomado una
decision, podemos tener dos posibles tipos de error como recoge la siguiente tabla.
En las columnas indicamos la realidad mientras que en las filas indicamos la decision
que tomamos.

H0 H1
Rechazamos H0 Error tipo I
No rechazamos H0 Error tipo II

Supongamos que Rn es el conjunto de valores que puede tomar el vector aleatorio


(X1 , . . . , Xn ). Entonces el contraste de hipotesis se basa en tomar un estadstico o

14
funcion de la muestra que denotamos (X1 , . . . , Xn ) de modo que si (X1 , . . . , Xn )
C entonces rechazamos la hipotesis nula mientras que si (X1 , . . . , Xn )
/ C entonces
no rechazamos la hipotesis nula. Notemos que simplemente estamos particionando
el espacio muestral (que suponemos) Rn en dos partes, C y C c , de modo que to-
mamos una decision basandonos en si el estadstico esta en C o bien esta en el
complementario de C. Al conjunto C se le suele llamar la region crtica. La funcion
potencia se define como
() = P ( C|). (2.21)

Contraste de la media en la poblaciones normales


Si tenemos una muestra X1 , . . . , Xn de una poblacion normal con media y
varianza 2 donde ambos parametros se asumen desconocidos un test habitualmente
considerado es si la media toma un valor dado. El test formalmente planteado sera:

H0 : = 0 , (2.22)
6 0 .
H1 : = (2.23)
Pn 2
i=1 (Xi X)
Siendo S 2 = n1 , el estadstico habitualmente utilizado es el siguiente

X 0
T = .
S/ n

Bajo la hipotesis nula este estadstico sigue una distribucion t de Student con n 1
grados de libertad,
T t(n 1).

Si suponemos que trabajamos con un nivel de significacion la region crtica en la


cual rechazamos la hipotesis nula sera

|T | > tn1,1 2 .

Nota de R 9 (notaR153) En el analisis de los tiempos quirurgicos se conside-


ra que un valor promedio global de los mismos es del orden de 50 minutos (3000
segundos).

> load("../data/scoremaster")
> attach(scoremaster)

Aplicamos un test de la t en donde la hipotesis nula es que la media vale 3000.

> t.test(T.QUIRUR, mu = 3000)

One Sample t-test

data: T.QUIRUR
t = 15.5609, df = 921, p-value < 2.2e-16
alternative hypothesis: true mean is not equal to 3000
95 percent confidence interval:
3789.506 4017.392
sample estimates:
mean of x
3903.449

15
Podemos ver en la primera lnea el valor del estadstico, los grados de libertad
de la distribucion nula y el p-valor. Tambien nos indica la hipotesis alternativa y
por lo tanto la nula como la negacion de esta. Atendiendo al p-valor rechazamos la
hipotesis nula.
Podemos plantearnos la hipotesis de que el valor no sea tan optimista como
pensabamos y realmente sea de unos 4000 segundos.

> t.test(T.QUIRUR, mu = 4000)

One Sample t-test

data: T.QUIRUR
t = -1.663, df = 921, p-value = 0.09666
alternative hypothesis: true mean is not equal to 4000
95 percent confidence interval:
3789.506 4017.392
sample estimates:
mean of x
3903.449

Y en este caso no rechazamos.


PDF Rcode

2.5.1. Test del cociente de verosimilitudes


El cociente de verosimilitudes para contrastar estas hipotesis se define como

max0 L()
= (2.24)
max L()

Es razonable pensar que en la medida en que tome valores menores entonces la hi-
potesis alternativa sea mas plausible que la hipotesis nula y por lo tanto rechacemos
la hipotesis nula. Realmente se suele trabajar con 2 log pues bajo la hipotesis
nula tiene una distribucion asintotica ji-cuadrado donde el numero de grados de li-
bertad es la diferencia de las dimensiones de los espacios parametricos = 0 1
y 0 . Si denotamos L0 = max0 L() y L1 = max L() entonces = L L1 y
0

L0
2 log = 2 log = 2(l0 l1 ) (2.25)
L1
siendo l0 y l1 los logaritmos de L0 y L1 respectivamente que tambien corresponden
con los maximos de la logverosimilitud sobre 0 y sobre .

2.5.2. Test de Wald


Supongamos que el es un parametro y denota su estimador maximo verosmil.
Supongamos que queremos contrastar las siguientes hipotesis:

H0 : = 0 , (2.26)
6 0 .
H1 : = (2.27)

Denotamos por SE() el error estandar bajo la hipotesis alternativa de . Entonces


el estadstico
0
z= (2.28)
SE()

16
tiene, bajo la hipotesis nula, aproximadamente una distribucion normal estandar,
z N (0, 1). Este tipo de estadsticos donde se utiliza el error estandar del estimador
bajo la hipotesis alternativa recibe el nombre de estadstico de Wald.
Supongamos que es un vector de parametros y queremos contrastar las hipote-
sis dadas en 2.26. La version multivariante del estadstico dado en 2.28 viene dada
por
W = ( 0 ) [cov()]1 ( 0 ), (2.29)
donde cov() se estima como la matriz de informacion observada en el MLE . La
distribucion asintotica de W bajo la hipotesis nula es una distribucion ji-cuadrado
donde el numero de grados de libertad coincide con el numero de parametros no
redundantes en .

2.5.3. Intervalos de confianza


Empezamos recordando el concepto de intervalo de confianza con un ejemplo
muy conocido como es la estimacion de la media en poblaciones normales.

Ejemplo 7 (Intervalo de confianza para la media de una normal) Veamoslo


con un ejemplo y luego planteamos la situacion mas general. Tenemos una muestra
aleatoria X1 , . . . , Xn i.i.d. tales que Xi N (, 2). Entonces es conocido que

Xn
tn1 . (2.30)
S/ n

Vemos como X
n
S/ n
depende tanto de la muestra que conocemos como de un pa-
rametro (la media ) que desconocemos. Fijamos un valor de (habitualmente
tomaremos = 0,05) y elegimos un valor tn1,1/2 tal que

Xn
P (tn1,1/2 tn1,1/2 ) = 1 . (2.31)
S/ n

La ecuacion anterior la podemos reescribir como

S S
P (Xn tn1,1/2 Xn + tn1,1/2 ) = 1 . (2.32)
n n

Tenemos una muestra aleatoria X1 , . . . , Xn y por lo tanto tenemos un intervalo


aleatorio dado por [Xn tn1,1/2 Sn , Xn +tn1,1/2 Sn ]. Este intervalo tiene una
probabilidad de 1 de contener a la verdadera media. Tomemos ahora la muestra
y consideremos no los valores aleatorios de Xn y de S 2 sino los valores observados
xn y s. Tenemos ahora un intervalo [xn tn1,1/2 sn , xn + tn1,1/2 sn ] fijo. Es
posible que este en este intervalo y es posible que no lo este. Sabemos que antes
de tomar la muestra tenamos una probabilidad de 1 de contener a la verdadera
media pero despues de tomar la muestra tenemos una confianza de 1 de contener
a la verdadera media. Al intervalo [xn tn1,1/2 sn , xn +tn1,1/2 sn ] se le llama
intervalo de confianza para con nivel de confianza 1 .

Vamos a ver un planteamiento mas general del problema.


Supongamos que tenemos un test para contrastar la hipotesis simple H0 : = 0
frente a la alternativa H1 : 6= 0 . Supongamos que elegimos un nivel de significa-
cion para contrastar las hipotesis anteriores y consideramos el siguiente conjunto
formado por todos los 0 tales que no rechazamos la hipotesis nula al nivel . Es-
te conjunto es un conjunto de confianza al nivel 1 . Cuando el conjunto de
confianza es un intervalo hablamos de intervalo de confianza.

17
Supongamos que consideramos el test del cociente de verosimilitudes. Denotemos
por 2k (1 ) el percentil 1 de una distribucion ji-cuadrado con k grados de
libertad. Entonces el intervalo de confianza al nivel 1 sera el conjunto

{0 : 2[l(0 ) l()] < 2k (1 )} (2.33)

Consideremos ahora un test de Wald. En este caso, el intervalo de confianza de


Wald vendra dado por el siguiente conjunto:

| 0 |
{0 : < Z1/2 } (2.34)
SE()

donde SE() es el error estandar estimado de bajo la hipotesis alternativa.

18
Captulo 3

Regresion

El problema que se trata en este tema es basico. Estudiar relaciones entre una
variable que llamaremos variable respuesta y una (o mas de una) variable que lla-
maremos variables predictoras. Tambien se utilizan las denominaciones de variable
dependiente para la variable respuesta y variables independientes en lugar en pre-
dictoras.

Si denotamos a la variable respuesta por Y (al valor observado lo denotaremos


por y) y a la variable predictora por X nuestro problema es intentar conocer el valor
de Y cuando conocemos el valor de la variable X.

Nota de R 10 (notaR100) El primer conjunto de datos fueron publicados por


Fisher[? ]. El fichero contiene tres variables correspondientes al peso del corazon,
el peso del cuerpo y el sexo de una muestra de gatos. Tenemos 47 hembras y de 97
machos.

> library(MASS)
> attach(cats)
> names(cats)

Empezamos representando el peso del corazon frente al peso del cuerpo para las
hembras.

> plot(Bwt[Sex == "F"], Hwt[Sex == "F"])

1
13
12
11
Hwt[Sex == "F"]

10
9
8
7

2.0 2.2 2.4 2.6 2.8 3.0

Bwt[Sex == "F"]

Repetimos el dibujo para los machos.

> plot(Bwt[Sex == "M"], Hwt[Sex == "M"])


20
18
16
Hwt[Sex == "M"]

14
12
10
8
6

2.0 2.5 3.0 3.5

Bwt[Sex == "M"]

Nuestro problema es intentar predecir el peso del corazon a partir del peso del
cuerpo. Ademas parece razonable plantearse si esta relacion es similar para machos

2
y hembras.
PDF Rcode

Nota de R 11 (notaR101) Tenemos velocidades y tiempos de parada de una se-


rie de vehculos.

> require(stats)

En abscisas consideramos las velocidades y en ordenadas los tiempos de parada.

> plot(cars, xlab = "Speed (mph)", ylab = "Stopping distance (ft)",


+ las = 1)

120

100
Stopping distance (ft)

80

60

40

20

5 10 15 20 25

Speed (mph)

La pregunta es si podemos predecir de algun modo el tiempo de parada a partir


de la velocidad del vehculo.
PDF Rcode

En este tema utilizamos de un modo importante el paquete faraway [? ].

3.1. Regresion lineal simple


En todos los ejemplos antes comentados el problema comun es determinar el va-
lor de Y a partir del valor de X. Obviamente la respuesta mas simple sera buscar
una funcion que podemos denotar por f de modo que para un valor dado x simple-
mente calculamos y = f (x). Un poco de imaginacion y conocimiento de la posible
relacion entre x e y podran darnos una idea de que funcion f buscar. Este plantea-
miento es de base muy restrictivo. Por que? Pues en primer lugar porque estamos
asumiendo que, para un valor de x, existe un unico valor de y asociado. Y esto
nunca (o casi) es as. Un detalle, a veces X es una variable aleatoria que observa-
mos simultaneamente con Y , en otras ocasiones es un valor que nosotros prefijamos

3
(dosis de medicacion, tratamiento en un problema de diseno de experimentos). Sin
embargo, desde el punto de vista de la regresion X siempre lo consideramos fijo y
estudiamos como se comporta Y dado el valor de X = x. Es decir, de la distribucion
condicionada de Y al valor de X = x.
Un ejemplo muy famoso de Galton. Se tomaba como variable predictora la es-
tatura del padre y como variable respuesta o a predecir, la estatura de un hijo. Es
claro que para un mismo padre la estatura de sus hijos es variable. No todos los hijos
de un mismo padre miden lo mismo. No tiene ningun sentido asumir una relacion
funcional entre la estatura de un padre y la de un hijo.
Tan tontos no son los estadsticos (que no estadistas). De hecho, lo que se mo-
deliza es la relacion entre el valor x y el valor medio de la variable Y dado ese
valor x. Siguiendo con el ejemplo de Galton. Si consideramos un padre de estatura
X = 178 centmetros. Supondremos que la media de la variable Y que nos da la
estatura aleatoria de un hijo es la que se relaciona con x. Denotemos por E[Y | x]
esta media (estatura media de todos los hijos de un padre con estatura 178 cent-
metros). Hemos de admitir que ademas de lo que mide el padre, algo tendra que
decir la madre, y tambien otros muchos factores que todos podemos imaginar. De
modo que Y , conocida la estatura del padre, sigue siendo una cantidad aleatoria.
De hecho, se asume que la distribucion de Y es normal cuya media depende de Y ,
E[Y | x], pero cuya varianza no depende de x, es decir, es una cantidad constante
que denotaremos por 2 . En resumen, estamos asumiendo que

Y N (E[Y | x], 2 ). (3.1)

En el modelo de regresion mas simple con el que se trabaja se asume que la media
condicionada E[Y | x] es una funcion lineal de x, en otras palabras, se asume que

E[Y | x] = 0 + 1 x. (3.2)

Las hipotesis asumidas en 3.1 y 3.2, podemos expresarlas conjuntamente diciendo


que la variable respuesta Y se puede expresar como

Y = 0 + 1 x + , (3.3)

donde
N (0, 2 ). (3.4)

En la formulacion de 3.3 expresamos el valor aleatorio de Y como suma de una


parte que sistematicamente depende de x (la componente sistematica del modelo)
y un termino aleatorio con distribucion normal, un termino de error o desajuste del
modelo. En esta variable normal con media cero y varianza constante 2 estamos
incluyendo todas las posibles causas que influyen el valor de Y y que no vienen
dadas por la variable predictora.
No consideramos un solo valor aleatorio de Y dado un valor fijo de x. Realmente,
tenemos n valores observados cuyos valores son independientes entre s pero no
tienen la misma distribucion. Hemos de pensar que cad a Yi tiene una variable
predictora distinta que influye en la distribucion de Yi . Tenemos pares (xi , Yi ) donde
la xi viene dada y consideramos la distribucion de Yi condicionada a xi , es decir,
Yi | xi .
Resumiendo, estamos asumiendo que Yi N (0 +1 xi , 2 ) y que los distintos Yi
son independientes entre si. Utilizando propiedades de la distribucion normal multi-
variante tenemos que estas hipotesis las podemos expresar conjuntamente diciendo
que
Y Nn (X, 2 Inn ), (3.5)

4
donde

Y1 1 x1  
.. ..
Y = ... X = . . = 0
1
Yn 1 xn
Si consideramos que

1
..
=.
n
donde los i N (0, 2 ) e independientes entre si. Entonces el modelo dado en 3.5
lo podemos reescribir como
Y = X + , (3.6)
con Nn (0, 2 Inn ).
Este modelo probabilstico es conocido como el modelo de regresion lineal
simple. No lo estudiaremos en mas detalle porque nos vamos a ocupar de la situa-
cion mas general en que tenemos mas de una variable predictora. No es mas que
un caso particular y sin mucha dificultad adicional se puede estudiar el situacion
general de regresion lineal multiple.

3.2. Regresion lineal multiple


Pretendemos determinar la relacion que liga a una variable respuesta Y como
funcion de p 1 variables predictoras, x1 , . . . , xp1 . Siguiendo el razonamiento an-
terior podemos plantearnos un modelo muy general como el que sigue.
Y = f (x1 , . . . , xn ) + , (3.7)
donde f es una funcion desconocida y es el termino del error. Vamos a asumir
una situacion mas simple. En concreto que la funcion f es lineal de modo que la
relacion sera Y = 0 + 1 x1 + . . . + p1 xp1 . Realmente observamos n vectores
(yi , xi1 , . . . , xi,p1 ) en consecuencia nuestro modelo estocastico ha de considerar el
modelo para los n valores aleatorios Yi , donde cada Yi tiene asociado un vector xi .
Vamos a suponer que para una combinacion de valores (xi1 , . . . , xi,p1 ) vamos a
observar un valor aleatorio Yi con distribucion normal cuya media es 0 + 1 xi1 +
. . .+p1 xi,p1 y cuya varianza va a ser constante e igual a 2 . Ademas los distintos
Yi son independientes entre si.
Vamos a formular conjuntamente estas hipotesis. Denotaremos

0
Y1 1 x11 . . . x1,p1 1 1
.. .. .
.. .
.. .
Y = . X = . = .. = ..
.
Yn 1 xn1 . . . xn,p1 n
p1
El modelo estocastico basico es el que sigue
Y = X + . (3.8)
En este modelo a X le llamaremos la parte sistematica mientras que es la com-
ponente aleatoria del modelo. Estamos expresando los datos como la suma de una
parte sistematica mas una parte aleatoria. La parte sistematica es la media del vec-
tor Y . Notemos que la dimension del espacio en que estamos trabajando es n, el
numero de observaciones. El vector de medias o parte sistematica del modelo tiene
dimension p por lo que la parte no explicada, el residuo, tiene dimension n p.

5
y
Residuo

Espacio
engendrado
por X

Valor ajustado

Figura 3.1: Expresamos la observacion y como suma ortogonal de una parte siste-
matica mas un residuo.

3.3. Estimacion de
Como estimamos los parametros ? Nuestros datos son (yi , xi1 , . . . , xi,p1 ) con
i = 1, . . . , n. Nuestro objetivo es estimar los coeficientes de modo que X este
proximo a y. En concreto vamos a minimizar
n
X
2i = = (y X) (y X). (3.9)
i=1

Si desarrollamos la expresion anterior tendremos que


(y X) (y X) = y y 2 X y + + X X.
Diferenciando respecto de los distintos j e igualando a cero nos da el siguiente
sistema de ecuaciones normales:
X X = X y. (3.10)
Si asumimos que la matriz X X es una matriz no singular entonces tendremos que
= (X X)1 X y, (3.11)
y en consecuencia se sigue que
X = X(X X)1 X y = Hy. (3.12)
La matriz H = X(X X)1 X y = Hy es la matriz de proyeccion de y sobre el espacio
engendrado por los p vectores columna de la matriz X. Es una matriz n n.
Utilizando la matriz H podemos calcular las predicciones para cada una de los
xi originales. Vienen dadas por
y = Hy = X . (3.13)
Tambien tenemos los residuos, esto es, las diferencias entre los valores observados
originalmente y las predicciones que de ellos hacemos. Los residuos en terminos de
la matriz H vienen dados por
= y Hy = (I H)y. (3.14)
Finalmente, hemos determinado los coeficientes que nos minimizaban la suma de
cuadrados. El valor mnimo que hemos obtenido que recibe el nombre de suma de
cuadrados residual o suma de cuadrados del error que viene dada por
n
X
SS(Error) = (yi yi )2 , (3.15)
i=1

6
y sera, como funcion de la matriz H,

= y (I H)(I H)y = y (I H)y. (3.16)

Veamos una interpretacion geometrica que nos ayude a entender que son los estima-
dores mnimo cuadraticos que utilizamos. Estamos minimizando (y X) (y X).
Si vemos la figura 3.1 el valor de que nos da el mnimo coincide con el punto que
nos da la proyeccion ortogonal de y sobre el plano que viene engendrado por las
columnas de la matriz X. De este modo es claro que

(y y1n ) (y y1n ) = (y X ) (y X ) + (y y1n ) (y y1n ). (3.17)

o de otro modo la ecuacion anterior la podemos expresar como


n
X n
X n
X
(yi y)2 = (yi yi )2 + (yi y)2 . (3.18)
i=1 i=1 i=1

Las sumas de cuadrados que acabamos de considerar reciben la siguiente denomi-


nacion:
Suma de cuadrados total
n
X

SS(T otal) = (y y1n ) (y y1n ) = (yi y)2 . (3.19)
i=1

Suma de cuadrados del error


n
X
SS(Error) = (y X ) (y X ) = (yi yi )2 . (3.20)
i=1

Suma de cuadrados de la regresion


n
X
SS(Regresion) = (y y1n ) (y y1n ) = (yi y)2 . (3.21)
i=1

3.4. Algunos casos particulares


Supongamos en primer lugar la situacion en que no tenemos ningun predictor.
Esto es, nuestro modelo es Y = + . En este caso se tiene que la matriz de diseno
X = 1n = (1, . . . , 1) , X X = n y, finalmente, = (X X)1 X y = n1 1n y = y.
El segundo ejemplo que podemos considerar sera con una sola variable pre-
dictora o lo que es lo mismo, el modelo de regresion lineal simple. En este caso,
tendremos

Y1 1 x1   1
.. .. . 0
. = . .. + ...
1
Yn 1 xn n

Notemos que podemos hacer Yi = 0 + 1 x + 1 (xi x) + i . Nuestra matriz de


diseno sera


1 x1 x
.. ..
X = . .
1 xn x

7
con
 
n Pn 0
XX= 2
0 i=1 i x)
(x
Finalmente se comprueba sin dificultad que
Pn
(xi x)yi
= Pi=1n 2
(3.22)
i=1 (xi x)

3.5. Verosimilitud
Dados los datos (xi , yi ) con i = 1, . . . , n la verosimilitud de y = (y1 , . . . , yn )
vendra dada por
1 1
L(, ) = n exp{ 2 (y X) (y X)} (3.23)
(2) 2 n 2
y la logverosimilitud sera
n 1
l(, ) = log(2) n log 2 (y X) (y X). (3.24)
2 2
El estimador maximo verosmil de se obtiene maximizando cualquiera de las dos
funciones anteriores. Es obvio que el maximo respecto de se obtiene como el
valor que minimiza (y X) (y X), en definitiva, que los estimadores maximo
verosmiles no son mas que los estimadores mnimo cuadraticos.

3.6. Algunos ejemplos


Nota de R 12 (notaR118) En este banco de datos (Orange) tenemos la variable
predictora que nos da la edad del arbol y como variable respuesta la circunferencia
del arbol.
Obtenemos el ajuste de regresion lineal simple con la funcion lm. La salida basica
que produce nos muestra los estimadores mnimo cuadraticos de los coeficientes .
Vemos tambien como obtener las predicciones y los residuos observados. Finalmente
mostramos los residuos frente a las predicciones de los valores. En principio, bajo
la hipotesis de que el error tiene varianza constante no debieramos de observar
residuos mayores cuando las predicciones son mayores. En este caso parece que es
esto lo que observamos.
Leemos los datos.
> data(Orange)
> attach(Orange)
Representamos en abscisas la edad y en ordenadas el numero de anillos. Ajus-
tamos el modelo de regresion lineal simple y anadimos la recta de regresion a los
datos.
> plot(age, circumference)
> lm(circumference ~ age, data = Orange)
Call:
lm(formula = circumference ~ age, data = Orange)

Coefficients:
(Intercept) age
17.3997 0.1068

8
> abline(lm(circumference ~ age, data = Orange))
200
150
circumference

100
50

500 1000 1500

age

Vamos a explorar la informacion que podemos obtener del ajuste.

> orange.lm = lm(circumference ~ age, data = Orange)


> attributes(orange.lm)

names
[1] "coefficients" "residuals" "effects" "rank"
[5] "fitted.values" "assign" "qr" "df.residual"
[9] "xlevels" "call" "terms" "model"

class
[1] "lm"

Los valores ajustados o predicciones los obtenemos con

> orange.lm$fitted.values

1 2 3 4 5 6 7 8
29.99855 69.07649 88.29515 124.59706 148.83392 163.88854 186.31030 29.99855
9 10 11 12 13 14 15 16
69.07649 88.29515 124.59706 148.83392 163.88854 186.31030 29.99855 69.07649
17 18 19 20 21 22 23 24
88.29515 124.59706 148.83392 163.88854 186.31030 29.99855 69.07649 88.29515
25 26 27 28 29 30 31 32
124.59706 148.83392 163.88854 186.31030 29.99855 69.07649 88.29515 124.59706
33 34 35
148.83392 163.88854 186.31030

Y los residuos observados se obtiene con

9
> orange.lm$residuals

1 2 3 4 5
0.001451402 -11.076487573 -1.295146086 -9.597056609 -28.833920400
6 7 8 9 10
-21.888536235 -41.310304499 3.001451402 -0.076487573 22.704853914
11 12 13 14 15
31.402943391 23.166079600 39.111463765 16.689695501 0.001451402
16 17 18 19 20
-18.076487573 -13.295146086 -16.597056609 -33.833920400 -24.888536235
21 22 23 24 25
-46.310304499 2.001451402 -7.076487573 23.704853914 42.402943391
26 27 28 29 30
30.166079600 45.111463765 27.689695501 0.001451402 -20.076487573
31 32 33 34 35
-7.295146086 0.402943391 -6.833920400 10.111463765 -9.310304499

PDF Rcode

Nota de R 13 (notaR119) Vamos a trabajar con un banco de datos relativo a


precios de la vivienda. Es un fichero que viene con el paquete SPSS. Tenemos las
siguientes variables:
VALTERR Valor de tasacion del terreno.
VALMEJOR Valor de tasacion de las mejoras.
VALTOT Valor de tasacion total.
PRECIO Precio de venta.
TASA Razon del precio de venta sobre el valor de tasacion total.
BARRIO Barrio en el que se encuentra la vivienda.
Nos planteamos predecir el precio de venta de la vivienda utilizando como variables
predictoras el valor de tasacion del terreno y de las mejoras. Notemos que el valor
total no es mas que la suma de la tasacion del terreno mas el valor de las mejoras.
Comenzamos leyendo los datos. Notemos que por estar en formato de SPSS
utilizamos el paquete foreign [? ].

> library(foreign)
> x = read.spss(file = "../data/venta_casas.sav", to.data.frame = T)
> attach(x)

Nos planteamos predecir el precio de la vivienda utilizando como variables pre-


dictoras el precio de terreno y el valor de las mejoras.

> (casas.lm = lm(precio ~ valterr + valmejor))

Call:
lm(formula = precio ~ valterr + valmejor)

Coefficients:
(Intercept) valterr valmejor
767.4080 3.1916 0.4779

PDF Rcode

10
3.7. Distribucion muestral de
Hemos visto que = (X X)1 X Y . Aplicando propiedades simples de la media
tenemos que
E = (X X)1 X (EY ) = , (3.25)
o, lo que es lo mismo, que es un estimador insesgado de , el estimador tiene
por vector de medias el vector de parametros que estima. Es una buena propiedad.
La matriz de covarianzas del error se obtiene facilmente como

var() = (X X)1 X ( 2 I)X(X X)1 = (X X)1 2 . (3.26)

Esta matriz de covarianzas depende de la varianza desconocida del error 2 . Si


estimamos esta varianza tendremos un estimador de dicha matriz de covarianzas.
Se puede probar que
E[SS(Error)] = (n p) 2 (3.27)
de donde, un estimador insesgado para la varianza 2 viene dado por


2 = . (3.28)
np

Ya podemos estimar var(). Este estimador sera

ar() = (X X)1 2 .
vd (3.29)

Si (X X)1 = [aij ]i,j=1,...,p entonces el estimador de la varianza de i , var(i ), sera


aii 2 . Recordemos que i es un estimador insesgado de i y por lo tanto su varianza
coincide con su error cuadratico medio. Finalmente el error estandar de i , es decir,
su desviacion tpica (raz cuadrada de su varianza) sera

d i ) = aii .
SE( (3.30)

Realmente de sabemos mas cosas: = (X X)1 X Y y puesto que Y


Nn (X, 2 Inn ) entonces, por propiedades basicas de la distribucion normal mul-
tivariante (ver apartado 1.4) se tiene que

Np (, (X X)1 2 ). (3.31)

Nota de R 14 (notaR121) Una vez realizado el ajuste con la funcion summary


podemos observar los valores estimados de (etiquetado como Residual standard
error y los errores estandar de i .
Veamos el resumen basico del ajuste de regresion donde la respuesta es el precio
de la vivienda y los predictores son el valor del terreno y el valor de las mejoras.

> summary(casas.lm)

Call:
lm(formula = precio ~ valterr + valmejor)

Residuals:
Min 1Q Median 3Q Max
-153634.1 -10451.5 -575.7 8689.8 356418.3

Coefficients:
Estimate Std. Error t value Pr(>|t|)

11
(Intercept) 7.674e+02 1.290e+03 0.595 0.552
valterr 3.192e+00 5.339e-02 59.777 <2e-16 ***
valmejor 4.779e-01 2.552e-02 18.728 <2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 28070 on 2437 degrees of freedom


Multiple R-squared: 0.6756, Adjusted R-squared: 0.6754
F-statistic: 2538 on 2 and 2437 DF, p-value: < 2.2e-16
PDF Rcode

3.8. Bondad de ajuste


Hemos supuesto una relacion lineal entre la media de la variable respuesta y las
variables predictoras. Asumiendo la relacion hemos considerado una funcion objetivo
y minimizando dicha funcion hemos obtenido los estimadores mnimo cuadraticos.
Sin embargo, la primera pregunta que hay que responder es: tenemos un ajuste
razonable? La respuesta se da utilizando medidas que comparan los valores observa-
dos con las predicciones asumiendo el modelo, es decir, comparando yi con yi para
los distintos datos. En concreto, con diferencia la mas utilizada es el coeficiente
de determinacion que se denota por R2 y se define como
Pn
(yi yi )2 SS(Error)
R2 = 1 Pni=1 2
= 1 . (3.32)
i=1 (y i y i ) SS(T otal)
Pn
Es habitual denominar a Pi=1 (yi yi )2 , suma de cuadrados del error mientras
n
que a SS(Regresion) = i=1 (yi y)2 se le llama suma de cuadrados de la
regresion. Tenemos pues que
Pn
2 (yi y)2 SS(Regresion)
R = Pni=1 2
= . (3.33)
i=1 (yi yi ) SS(T otal)
El ajuste que estamos realizando se supone que sera tanto mejor cuanto mas pe-
quena sea SS(Error). Tampoco sera natural que SS(Error) fuera nula pues sera
tanto como asumir que los distintos valores aleatorios son iguales a su media. No-
temos que SS(T otal) es una cuantificacion de la variabilidad de los distintos yi sin
tener en cuenta las variables predictoras mientras que SS(Error) nos cuantifica la
variacion residual despues de utilizar las variables predictoras. Es de esperar que un
mejor ajuste vaya acompanado de un valor de SS(Error) pequeno en relacion con
SS(T otal). Esa es la idea del coeficiente de determinacion. Toma valores entre 0 y
1 y cuanto mas cerca de 1 mejor es el ajuste.
Tiene un pequeno inconveniente y es que no tiene en cuenta el numero de va-
riables predictoras que estamos utilizando para predecir la variable respuesta. Una
pequena modificacion de R2 para incorporar esta informacion es el coeficiente de
determinacion ajustado que podemos denotar R2 -ajustado y se define como
Pn
(yi yi )2 /(n p)
R2 ajustado = 1 Pi=1 n 2
, (3.34)
i=1 (yi y) /(n 1)
donde suponemos que tenemos p 1 variables predictoras.

3.9. Valoracion de las hipotesis del modelo


Un modelo de regresion lineal multiple supone, como hemos visto, varias hipo-
tesis. Es necesario valorar lo razonables, lo asumibles que son estas hipotesis. Las
hipotesis del modelo que vamos a valorar son las siguientes:

12
1. Tenemos errores independientes, con la misma varianza y con distribucion
normal? Esto es, nos preguntamos si es asumible la hipotesis Nn (0, 2 Inn ).
2. Asumimos que E[Yi | xi ] = 0 + 1 xi1 + . . . + p1 xi,p1 .
Los errores no son directamente observables. Observamos los residuos = y y
que no es lo mismo. Las propiedades de ambos vectores son distintas. En particular,
estamos asumiendo que var() = 2 Inn . Sin embargo, esta afirmacion no es cierta
para los residuos observados . Notemos que

y = X(X X)1 X y = Hy.

De modo que

= y y = (I H)y = (I H)X + (I H) = (I H).

La tercera igualdad anterior es consecuencia de que HX = X porque H es la


matriz de proyeccion sobre el espacio engendrado por las columnas de X y X esta
en este espacio por lo que la proyeccion es el propio punto. Notemos que I H
tambien es una matriz de proyeccion (sobre el espacio ortogonal al engendrado por
las columnas de X) de modo que (I H)2 = I H. Aplicando esta propiedad se
tiene que
var() = var(I H) = (I H) 2 , (3.35)
ya que var() = 2 Inn . Vemos pues que, aunque asumimos que los errores son
incorrelados y con la misma varianza, esto no es cierto para los residuos .

Homogeneidad de la varianza
La mera observacion de los residuos sin considerar su posible asociacion con otra
variable no nos proporciona informacion sobre si la varianza de los mismos es cons-
tante. Hemos de considerarlos en relacion con otras variables. Es habitual considerar
un diagrama de puntos de los residuos como funcion de las predicciones y. Cuan-
do la varianza es constante debemos de observar los residuos dispersos de un modo
aleatorio respecto del eje de abscisas. Tambien podemos ver un comportamiento no
aleatorio alrededor del eje de abscisas cuando la parte estructural del modelo no es
lineal, es decir, cuando no se verifica que EY = X.

Nota de R 15 (notaR122) Los datos que vamos a utilizar para valorar las hi-
potesis del modelo son los datos savings contenido en la librera faraway ([? ]).
Se pretende estudiar la relacion que liga la fraccion de ahorro con la proporcion de
poblacion menor de 15 anos, mayor de 75 y las variables dpi y ddpi. El siguiente dia-
grama de puntos muestra en abscisas las predicciones y en ordenadas los residuos.
No parece en principio que no podamos asumir una varianza constante. Vemos tam-
bien que nos indica los tres pases con los residuos mas extremos: Chile, Filipinas
y Zambia.

> library(faraway)
> data(savings)
> attach(savings)

Hacemos el ajuste lineal.

> savings.lm = lm(sr ~ pop15 + pop75 + dpi + ddpi, savings)

Notemos que elegimos el primer dibujo.

> plot(savings.lm, which = 1)

13
Residuals vs Fitted
10

Zambia

Philippines
5
Residuals

0
5

Chile
10

6 8 10 12 14 16

Fitted values
lm(sr ~ pop15 + pop75 + dpi + ddpi)

PDF Rcode

Cuando no tenemos una varianza constante una opcion es transformar las varia-
bles. Si y es la variable original y h(y) la transformada queremos determinar h de
modo que la transformada tenga varianza constante. Transformaciones habituales
que podemos valorar son la raz cuadrada o el logaritmo de la variable respuesta.

Que tipo de representacion cabe esperar cuando la varianza no es constante?


Veamos distintas representaciones de los residuos frente a los valores ajustados co-
rrespondiendo a varianza constante, varianzas no constantes y situaciones en que
no hay linealidad.

Nota de R 16 (notaR123) Ilustramos como observaramos residuos cuya varian-


za es constante. En la siguiente figura tenemos 50 posibles residuos en donde la
varianza es constante.

> par(mfrow = c(2, 2))


> for (i in 1:4) plot(1:50, rnorm(50))

14
3

2
2
rnorm(50)

rnorm(50)

1
1

0
0

1
2

0 10 20 30 40 50 0 10 20 30 40 50

1:50 1:50
2

2
1

1
rnorm(50)

rnorm(50)
0

0
1

1
2

0 10 20 30 40 50 0 10 20 30 40 50

1:50 1:50

En la siguiente figura tenemos como abscisas valores que van de 1 a 50 en


incrementos unitarios. El valor de residuo que generamos tienen varianza creciente.
En concreto vamos multiplicando el valor con distribucion N (0, 1) por una constante
c. La varianza es del orden del cuadrado del valor por el que multiplicamos.

> par(mfrow = c(2, 2))


> for (i in 1:4) plot(1:50, (1:50) * rnorm(50))

15
(1:50) * rnorm(50)

(1:50) * rnorm(50)
50

60
20
0

20
50

60
0 10 20 30 40 50 0 10 20 30 40 50

1:50 1:50
100
(1:50) * rnorm(50)

(1:50) * rnorm(50)
50

50
0

0
50
100

0 10 20 30 40 50 0 10 20 30 40 50

1:50 1:50


En la siguiente figura los valores por los que multiplicamos son 1, 2, 3, . . . , 50
por lo que las varianzas se incrementan muy menos de una abscisa a la siguiente.

> par(mfrow = c(2, 2))


> for (i in 1:4) plot(1:50, sqrt((1:50)) * rnorm(50))
10 15
sqrt((1:50)) * rnorm(50)

sqrt((1:50)) * rnorm(50)

10
5
5

0
0

5
10

15

0 10 20 30 40 50 0 10 20 30 40 50

1:50 1:50
sqrt((1:50)) * rnorm(50)

sqrt((1:50)) * rnorm(50)
10

10
5
5

0
0
5

10

0 10 20 30 40 50 0 10 20 30 40 50

1:50 1:50

16
Finalmente en la siguiente figura mostramos un ejemplo de un residuo no lineal.
Es un caso en que no podemos suponer que la media es una funcion lineal de los
predictores.

> par(mfrow = c(2, 2))


> for (i in 1:4) plot(1:50, cos((1:50) * pi/25) + rnorm(50))
cos((1:50) * pi/25) + rnorm(50)

cos((1:50) * pi/25) + rnorm(50)

4
2

3
2
1

1
0

0
2

0 10 20 30 40 50 0 10 20 30 40 50

1:50 1:50
cos((1:50) * pi/25) + rnorm(50)

cos((1:50) * pi/25) + rnorm(50)


3

2
2

1
1

0
0

2 1
2

0 10 20 30 40 50 0 10 20 30 40 50

1:50 1:50

PDF Rcode

Normalidad

La siguiente hipotesis a valorar es la normalidad de los errores. La herramienta


grafica mas habitual es el dibujo q-q o la representacion cuantil-cuantil. Ordenamos
i
los residuos y representamos los residuos ordenados en funcion de 1 ( n+1 ) para
i = 1, . . . , n. Si los residuos tienen una distribucion normal entonces deben estar
alineados. El histograma no es muy adecuado para ver la normalidad de los residuos.

Nota de R 17 (notaR124) Para los datos savings representamos un dibujo q-


q. En la figura que sigue mostramos como hacerlo despues de ajustar el modelo y
utilizando la funcion plot (realmente estamos utilizando plot.lm).

> plot(savings.lm, which = 2)

17
Normal QQ
3

Zambia
2

Philippines
Standardized residuals

1
0
1
2

Chile

2 1 0 1 2

Theoretical Quantiles
lm(sr ~ pop15 + pop75 + dpi + ddpi)

En la siguiente figura aparece un dibujo q-q utilizando las funciones qqnorm que
construye el dibujo y qqline que anade una lnea uniendo el primer y tercer cuartil.
Como vemos es el mismo dibujo.

> qqnorm(residuals(savings.lm), ylab = "Residuos")


> qqline(residuals(savings.lm))

18
Normal QQ Plot
10
5
Residuos

0
5

2 1 0 1 2

Theoretical Quantiles

PDF Rcode

Hemos visto como es una dibujo q-q cuando tenemos normalidad. Pero: y que
pasa cuando no tenemos normalidad. Esto es lo interesante saber que tenemos que
buscar para detectar que los residuos no siguen una distribucion normal.

Nota de R 18 (notaR125) Veamos como se modifican los dibujos q-q con otras
distribuciones de probabilidad. En esta nota consideramos cuatro distribuciones de
probabilidad. En la siguiente aparecen las densidades de los modelos considerados. La
primera es la correspondiente a la distribucion normal. Luego tenemos la lognormal,
la densidad de una Cauchy y la densidad uniforme. La lognormal se toma como
ejemplo de distribucion asimetrica, la Cauchy como ejemplo de una distribucion
con las colas mas largas que la normal y finalmente la uniforme como ejemplo de
distribucion con las colas mas cortas.

> par(mfrow = c(2, 2))


> curve(dnorm, xlim = c(-3, 3))
> curve(dlnorm, xlim = c(-3, 3))
> curve(dcauchy, xlim = c(-3, 3))
> curve(dunif, xlim = c(-3, 3))

19
0.4

0.6
0.3

dlnorm (x)
dnorm (x)

0.4
0.2

0.2
0.1

0.0
0.0

3 2 1 0 1 2 3 3 2 1 0 1 2 3

x x
0.8
0.25
dcauchy (x)

dunif (x)
0.15

0.4
0.05

0.0

3 2 1 0 1 2 3 3 2 1 0 1 2 3

x x

En la figura que sigue tenemos nueve dibujos q-q realizados con datos simulados
con una distribucion normal.

> par(mfrow = c(2, 2))


> for (i in 1:4) {
+ residuos = rnorm(50)
+ qqnorm(residuos)
+ qqline(residuos)
+ }

20
Normal QQ Plot Normal QQ Plot
1 2 3

1.0
Sample Quantiles

Sample Quantiles

0.0
1

2.0 1.0
3

2 1 0 1 2 2 1 0 1 2

Theoretical Quantiles Theoretical Quantiles

Normal QQ Plot Normal QQ Plot


2.0

3
Sample Quantiles

Sample Quantiles
1.0

2
1
0.0

0
1.5

2 1 0 1 2 2 1 0 1 2

Theoretical Quantiles Theoretical Quantiles

La figura que sigue muestra el dibujo q-q con datos simulados correspondientes
a la distribucion lognormal.

> par(mfrow = c(2, 2))


> for (i in 1:4) {
+ residuos = exp(rnorm(50))
+ qqnorm(residuos)
+ qqline(residuos)
+ }

21
Normal QQ Plot Normal QQ Plot
4

8
Sample Quantiles

Sample Quantiles
3

6
2

4
1

2
0
0

2 1 0 1 2 2 1 0 1 2

Theoretical Quantiles Theoretical Quantiles

Normal QQ Plot Normal QQ Plot


8

15
Sample Quantiles

Sample Quantiles
6

10
4

5
2

0
0

2 1 0 1 2 2 1 0 1 2

Theoretical Quantiles Theoretical Quantiles

La figura que sigue muestra el dibujo q-q con datos simulados correspondientes
a la distribucion de Cauchy.

> par(mfrow = c(2, 2))


> for (i in 1:4) {
+ residuos = rcauchy(50)
+ qqnorm(residuos)
+ qqline(residuos)
+ }

22
Normal QQ Plot Normal QQ Plot
50

20
Sample Quantiles

Sample Quantiles
50

0
20
250 150

60
2 1 0 1 2 2 1 0 1 2

Theoretical Quantiles Theoretical Quantiles

Normal QQ Plot Normal QQ Plot


10
Sample Quantiles

Sample Quantiles

15
5
0

5
5

5
15

15

2 1 0 1 2 2 1 0 1 2

Theoretical Quantiles Theoretical Quantiles

La figura que sigue muestra el dibujo q-q con datos simulados correspondientes
a la distribucion de uniforme.

> par(mfrow = c(2, 2))


> for (i in 1:4) {
+ residuos = runif(50)
+ qqnorm(residuos)
+ qqline(residuos)
+ }

23
Normal QQ Plot Normal QQ Plot

1.0
Sample Quantiles

Sample Quantiles
0.8

0.6
0.4

0.2
0.0

2 1 0 1 2 2 1 0 1 2

Theoretical Quantiles Theoretical Quantiles

Normal QQ Plot Normal QQ Plot


Sample Quantiles

Sample Quantiles

0.8
0.8

0.4
0.4

0.0
0.0

2 1 0 1 2 2 1 0 1 2

Theoretical Quantiles Theoretical Quantiles

PDF Rcode

Como vemos no es simple la interpretacion de estos dibujos. Por ejemplo, no es


facil diferenciar entre una distribucion con colas mas largas de una situacion en don-
de tenemos observaciones anomalas. Como hacerlo? Si quitamos las observaciones
extremas y aparecen otras estamos en una distribucion con colas largas.
Si tenemos muestras grandes el problema de la no normalidad se alivia. El pro-
blema de la no normalidad es mayor para colas largas que para colas mas cortas.
La asimetra se resolvera transformando los datos.
Tambien podemos usar un test de normalidad. Un test de normalidad es un
cualquier test estadstico donde la hipotesis nula es que los datos observados (en
nuestro caso los residuos observados) proceden de una distribucion normal. Una
opcion que viene implementada con la funcion shapiro.test es el test de Shapiro-
Wilk.

Nota de R 19 (notaR126) Aplicamos un test de Shapiro-Wilks a los residuos


observados en el ajuste de los datos savings. Vemos que el p-valor observado es muy
grande y no podemos rechazar la normalidad de los residuos.

> residuals(savings.lm)

Australia Austria Belgium Bolivia Brazil


0.8635798 0.6163860 2.2189579 -0.6983191 3.5528094
Canada Chile China Colombia Costa Rica
-0.3168924 -8.2422307 2.5360361 -1.4517071 5.1250782
Denmark Ecuador Finland France Germany
5.4002388 -2.4056313 -1.6810857 2.4754718 -0.1806993
Greece Guatamala Honduras Iceland India
-3.1161685 -3.3552838 0.7100245 -6.2105820 0.5086740
Ireland Italy Japan Korea Luxembourg

24
3.3911306 1.9267549 5.2814855 -6.1069814 -1.6708066
Malta Norway Netherlands New Zealand Nicaragua
2.9749098 -0.8717854 0.4255455 2.2855548 0.6463966
Panama Paraguay Peru Philippines Portugal
-3.2941656 -6.1257589 6.5394410 6.6750084 -0.7684447
South Africa South Rhodesia Spain Sweden Switzerland
0.4831656 1.2914342 -0.6711565 -4.2602834 2.4868259
Turkey Tunisia United Kingdom United States Venezuela
-2.6656824 -2.8179200 -2.6924128 -1.1115901 3.6325177
Zambia Jamaica Uruguay Libya Malaysia
9.7509138 -3.0185314 -2.2638273 -2.8295257 -2.9708690

> shapiro.test(residuals(savings.lm))

Shapiro-Wilk normality test

data: residuals(savings.lm)
W = 0.987, p-value = 0.8524

PDF Rcode

Incorrelacion de los errores


Estamos asumiendo que los errores son incorrelados. La correlacion entre
los datos pueden venir de que han sido observados proximos bien en el tiempo bien
en el espacio. Como contrastar si los residuos son incorrelados?
Un test de la hipotesis de incorrelacion es el test de Durbin-Watson que utiliza
el siguiente estadstico Pn
(i i1 )2
DW = i=2Pn 2 , (3.36)
i=1 i
bajo la hipotesis nula de incorrelacion la distribucion es una combinacion lineal de
distintas distribuciones 2 .

Nota de R 20 (notaR127) Vamos a aplicar el test de Durbin-Watson de corre-


lacion serial.

> library(lmtest)

Aplicamos el test de Durbin-Watson.

> dwtest(savings.lm)

Durbin-Watson test

data: savings.lm
DW = 1.9341, p-value = 0.3897
alternative hypothesis: true autocorrelation is greater than 0

PDF Rcode

Observaciones anomalas y observaciones influyentes


Algunas observaciones no ajustan bien al modelo y son llamadas observaciones
anomalas. Otras observaciones influyen mucho en el ajuste y lo modifican de un
modo substantivo. Estas ultimas reciben el nombre de observaciones influyentes.
Una observacion dada puede ser o bien anomala o bien influyente o ambas cosas.

25
Empecemos estudiando que se entiende por influencia de una observacion. Lla-
maremos a hi = Hii , esto es, el valor en la posicion (i, i) de la matriz H la influencia
(leverage en ingles). Notemos que var(i ) = 2 (1 hi ). En consecuencia, una in-
fluencia alta supone una varianza del correspondiente
Pp residuo baja. Forzamos al
ajuste a que este proximo a yi . Se tiene que i=1 hi = p. En consecuencia el valor
medio de los hi es p/n. Como una regla simple de aplicar si la influencia hi es mayor
que 2p/n debemos de observar el dato con atencion. Buscamos valores grandes de
las influencias.

Nota de R 21 (notaR128) Calculamos las influencias para los datos savings. En


la siguiente figura aparece una representacion de las influencias respecto de los re-
siduos estandarizados.

Calculamos las influencias y las representamos.

> savings.inf = influence(savings.lm)


> savings.inf$hat

Australia Austria Belgium Bolivia Brazil


0.06771343 0.12038393 0.08748248 0.08947114 0.06955944
Canada Chile China Colombia Costa Rica
0.15840239 0.03729796 0.07795899 0.05730171 0.07546780
Denmark Ecuador Finland France Germany
0.06271782 0.06372651 0.09204246 0.13620478 0.08735739
Greece Guatamala Honduras Iceland India
0.09662073 0.06049212 0.06008079 0.07049590 0.07145213
Ireland Italy Japan Korea Luxembourg
0.21223634 0.06651170 0.22330989 0.06079915 0.08634787
Malta Norway Netherlands New Zealand Nicaragua
0.07940290 0.04793213 0.09061400 0.05421789 0.05035056
Panama Paraguay Peru Philippines Portugal
0.03897459 0.06937188 0.06504891 0.06425415 0.09714946
South Africa South Rhodesia Spain Sweden Switzerland
0.06510405 0.16080923 0.07732854 0.12398898 0.07359423
Turkey Tunisia United Kingdom United States Venezuela
0.03964224 0.07456729 0.11651375 0.33368800 0.08628365
Zambia Jamaica Uruguay Libya Malaysia
0.06433163 0.14076016 0.09794717 0.53145676 0.06523300

> plot(savings.lm, which = 5)

26
Residuals vs Leverage
3

Zambia

1
2

Japan
0.5
Standardized residuals

1
0
1

Libya
0.5
2

Cooks distance

0.0 0.1 0.2 0.3 0.4 0.5

Leverage
lm(sr ~ pop15 + pop75 + dpi + ddpi) Notemos que Li-
bia es el pais que tiene un mayor valor de la influencia.
PDF Rcode
Otra posibilidad es para encontrar observaciones anomalas consiste en trabajar
con los residuos estudentizados. Veamos su definicion. Notemos que var(i ) = 2 (1
hi ) lo que sugiere tomar
i
ri = (3.37)
1 hi
Estos son los residuos estudentizados. Si el modelo que asumimos es correcto enton-
ces la varianza de estos residuos es uno y son aproximadamente incorrelados. Note-
mos que la estudentizacion corrige las varianzas desiguales de los residuos cuando
las varianzas de los errores son iguales entre si. En otro caso esto no es cierto. Si
las varianzas de los errores no son iguales (tenemos heterocedasticidad) entonces la
estudentizacion no hace homogeneas las varianzas de los residuos.
Algunos autores (y programas) tienden a usar en lugar de los residuos originales,
los residuos estudentizados.
Una observacion anomala es una observacion que no se ajusta a nuestro mo-
delo. Hemos de protegernos frente a este tipo de puntos. Un test para observaciones
anomalas es util si nos permite distinguir entre observaciones que son realmente
anomala y aquellas que simplemente tienen un residuo grande aunque no excepcio-
nalmente grande.
Para detectar este tipo de puntos, lo que hacemos es excluir el punto i-esimo y
2
ajustamos el modelo sin ese punto obteniendo los estimadores (i) y (i) . Tendremos
para el punto i-esimo la siguiente estimacion
y(i) = xi (i) . (3.38)
Si el valor yi y(i) es grande entonces el caso i es una observacion anomala. Con
objeto de valorar si estos nuevos residuos son anormales hemos de estandarizarlos.
Notemos que
2
vd
ar(yi y(i) ) = (i) (1 + xi (X(i)

X(i) )1 xi )

27
de modo que podemos definir los residuos jackknife como
yi y(i) yi y(i)
ti = p = q tnp1 ,
vd
ar(yi y(i) ) X )1 x
(i) 1 + xi (X(i) (i) i

asumiendo que el modelo es correcto. Se tiene la siguiente expresion


 1/2
i np1
ti = = ri .
(i) 1 hi n p ri2

Puesto que cada uno de los ti sigue una distribucion conocida podemos contrastar si
tenemos una observacion anomala. En principio el procedimiento sera simplemente
fijar un nivel de significacion y determinar el percentil 1 2 de una distribucion
t de Student con n p 1 grados de libertad. Si denotamos el percentil como
tnp1,1 2 entonces residuos que no esten en el intervalo [tnp1,1 2 , tnp1,1 2 ]
seran sospechosos. Esto no es adecuado. Porque estamos analizando n residuos
estudentizados. Con uno solo s que sera aplicable el razonamiento. Tenemos un
problema de muchos tests simultaneamente considerados. Si aplicamos la correccion
de Bonferroni tendramos que corregir el nivel de significacion y trabajar con
/n. Por tanto, consideramos como sospechosos aquellos residuos estandarizados
que esten fuera del intervalo [tnp1,1 2n
,t ].
np1,1 2n

Nota de R 22 (notaR130) Calculamos para los datos savings los residuos estu-
dentizados con la funcion rstudent. La pregunta que nos hacemos es si alguno de
estos residuos es muy grande o muy pequeno. Comparamos el modulo de los residuos
estandarizados con tnp1,1 2n
.

> savings.rs = rstudent(savings.lm)

Comparamos los residuos con el percentil correspondiente.

> abs(savings.rs) > qt(1 - 0.05/(50 * 2), 44)

Australia Austria Belgium Bolivia Brazil


FALSE FALSE FALSE FALSE FALSE
Canada Chile China Colombia Costa Rica
FALSE FALSE FALSE FALSE FALSE
Denmark Ecuador Finland France Germany
FALSE FALSE FALSE FALSE FALSE
Greece Guatamala Honduras Iceland India
FALSE FALSE FALSE FALSE FALSE
Ireland Italy Japan Korea Luxembourg
FALSE FALSE FALSE FALSE FALSE
Malta Norway Netherlands New Zealand Nicaragua
FALSE FALSE FALSE FALSE FALSE
Panama Paraguay Peru Philippines Portugal
FALSE FALSE FALSE FALSE FALSE
South Africa South Rhodesia Spain Sweden Switzerland
FALSE FALSE FALSE FALSE FALSE
Turkey Tunisia United Kingdom United States Venezuela
FALSE FALSE FALSE FALSE FALSE
Zambia Jamaica Uruguay Libya Malaysia
FALSE FALSE FALSE FALSE FALSE

PDF Rcode

28
Un punto influyente es aquel que cuando lo quitamos causa una modificacion
importante del ajuste. Un punto influyente puede ser o no una observacion anomala,
puede tener o no una alta influencia pero tendera a tener al menos una de las dos
propiedades. El estadstico de Cook es una de las maneras de medir la influencia.
Se define como
(yi y(i) ) (yi y(i) ) 1 hi
Di = 2
= ri2 . (3.39)
p p 1 hi
Nota de R 23 (notaR129) Con los datos savings representamos las distancias
de Cook y las obtenemos utilizando la funcion Cooks.distance. Vemos Lbia, Zambia
y Japon son observaciones que influyen mucho en el ajuste. Habra que valorar el
ajuste con y sin estas observaciones.

> plot(savings.lm, which = 4)

Cooks distance

Libya
0.25
0.20
Cooks distance

0.15

Japan
0.10

Zambia
0.05
0.00

0 10 20 30 40 50

Obs. number
lm(sr ~ pop15 + pop75 + dpi + ddpi)
Tambien podemos ver los valores de la distancia de Cook.

> cooks.distance(savings.lm)

Australia Austria Belgium Bolivia Brazil


8.035888e-04 8.175997e-04 7.154674e-03 7.278744e-04 1.402735e-02
Canada Chile China Colombia Costa Rica
3.106199e-04 3.781324e-02 8.156984e-03 1.879460e-03 3.207537e-02
Denmark Ecuador Finland France Germany
2.879580e-02 5.818699e-03 4.364051e-03 1.547176e-02 4.736572e-05
Greece Guatamala Honduras Iceland India
1.590102e-02 1.067111e-02 4.741920e-04 4.352902e-02 2.965778e-04
Ireland Italy Japan Korea Luxembourg
5.439637e-02 3.919100e-03 1.428162e-01 3.555386e-02 3.993882e-03
Malta Norway Netherlands New Zealand Nicaragua
1.146827e-02 5.558570e-04 2.744377e-04 4.379219e-03 3.226479e-04

29
Panama Paraguay Peru Philippines Portugal
6.333674e-03 4.157229e-02 4.401457e-02 4.522120e-02 9.733900e-04
South Africa South Rhodesia Spain Sweden Switzerland
2.405063e-04 5.267290e-03 5.659085e-04 4.055963e-02 7.334746e-03
Turkey Tunisia United Kingdom United States Venezuela
4.224370e-03 9.562447e-03 1.496628e-02 1.284481e-02 1.886141e-02
Zambia Jamaica Uruguay Libya Malaysia
9.663275e-02 2.402677e-02 8.532329e-03 2.680704e-01 9.113404e-03
PDF Rcode

3.10. Inferencia sobre el modelo


Hemos formulado un modelo probabilstico en donde relacionamos la variable
respuesta con una serie de variables predictoras. Es claro que el experimentador
introduce en el modelo como variables predictoras variables que a priori sospecha
que pueden ser relevantes a la hora de predecir. Esto no quiere decir que luego
podamos prescindir de alguna o algunas de ellas. Bien porque se demuestra que
dicha variable no es relevante o bien porque la informacion que contiene esa variable
predictora esta contenida en las otras.
Supongamos que nos planteamos el siguiente contraste de hipotesis: H0 : i1 =
. . . = ir = 0 frente a la alternativa H1 : No H0 . Si un coeficiente determinado i es
nulo entonces la variable respuesta Y no dependera de la variable asociada a dicho
coeficiente. En definitiva, la hipotesis nula considerada se podra formular diciendo
que la variable Y no depende de las variables xi1 , . . . , xir . Como contrastar las
hipotesis indicadas? Se puede hacer mediante el test del cociente de verosimilitudes,
es decir, utilizando el estadstico
max(,)0 L(, )
= (3.40)
max(,) L(, )
1
siendo L(, ) = n exp{ 21 2 (y X) (y X)}, 0 = {(, ) Rp
(2) 2 n
(0, +) : i1 = . . . = ir = 0} y = Rp (0, +). Como es habitual en un test del
cociente de verosimilitudes rechazaramos la hipotesis nula si es pequeno (menor
que una cierta constante) que se prueba es equivalente a que
SS(Error)0 SS(Error)
SS(Error)
sea grande (mayor que una cierta constante). Denotamos por SS(Error)0 la suma
de cuadrados del error bajo la hipotesis nula y SS(Error) la suma de cuadrados
sobre todo el espacio parametrico. Bajo la hipotesis nula se verifica que
SS(Error)0 SS(Error)
2r
2 r
y
SS(Error)
2np
2 (n p)
ademas ambas cantidades son independientes. Por ello se verifica que
(SS(Error)0 SS(Error) )/r
F = Fr,np .
(SS(Error) )/(n p)
De modo que rechazaremos la hipotesis nula de que H0 : i1 = . . . = ir = 0 si
F > Fr,np,1

30
donde Fr,np,1 es el percentil 1 de una F con r y n p grados de libertad.
Realmente depende la variable respuesta de alguna de las variables predictoras?
Realmente nos estamos planteando la hipotesis de que todos los coeficientes, salvo el
termino constante 0 , valen cero, es decir, la hipotesis nula H0 : 1 = . . . = p1 = 0.
En este caso tendremos que

((y 1n y) (y 1n y) (y X ) (y X ))/(p 1)
F = Fp1,np .
(y X ) (y X )/(n p)

Como segundo caso tendramos la situacion en que contrastamos que un solo coe-
ficiente vale cero, es decir, la hipotesis nula H0 : i = 0 frente a la alternativa
H1 : i 6= 0. Tenemos que bajo la hipotesis nula indicada

i
ti = tnp
SE(i )

donde SE(i ) es el error estandar de i y viene dado en ecuacion 3.30. Se tiene, de


hecho, que
F = t2i .
Rechazaremos la hipotesis nula si

|ti | > tnp,1 2

o bien si
F = t2i > F1,np,1 2 .
Ambos procedimientos son equivalentes como se puede ver facilmente.

Nota de R 24 (notaR131) Utilizando los datos savings podemos ver en la ultima


lnea el contraste de que todas las variables predictoras tienen su coeficiente asociado
nulo. El p-valor es 0,0007904, es decir, es muy pequeno por lo que rechazamos la hi-
potesis nula. Al menos una de las variables predictoras tiene su coeficiente asociado
no nulo.
Cuando contrastamos la hipotesis de que cada coeficiente valga cero vemos que
no podemos rechazarlo para las variables pop75 y dpi.
Realizamos un summary del modelo de regresion ajustado.

> summary(savings.lm)

Call:
lm(formula = sr ~ pop15 + pop75 + dpi + ddpi, data = savings)

Residuals:
Min 1Q Median 3Q Max
-8.2422 -2.6857 -0.2488 2.4280 9.7509

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 28.5660865 7.3545161 3.884 0.000334 ***
pop15 -0.4611931 0.1446422 -3.189 0.002603 **
pop75 -1.6914977 1.0835989 -1.561 0.125530
dpi -0.0003369 0.0009311 -0.362 0.719173
ddpi 0.4096949 0.1961971 2.088 0.042471 *
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

31
Residual standard error: 3.803 on 45 degrees of freedom
Multiple R-squared: 0.3385, Adjusted R-squared: 0.2797
F-statistic: 5.756 on 4 and 45 DF, p-value: 0.0007904

PDF Rcode

Podemos tener intervalos de confianza para cada uno de los coeficientes i .


i i
Teniendo en cuenta que SE( i )
tnp entonces el intervalo de confianza al nivel
1 para el coeficiente i sera

i tnp,1 2 SE(i ).

Nota de R 25 (notaR132) Calculamos los intervalos de confianza para los coe-


ficientes de savings con la funcion confint.

> confint(savings.lm)

2.5 % 97.5 %
(Intercept) 13.753330728 43.378842354
pop15 -0.752517542 -0.169868752
pop75 -3.873977955 0.490982602
dpi -0.002212248 0.001538444
ddpi 0.014533628 0.804856227

PDF Rcode

Supongamos que consideramos un vector de predictores x0 y pretendemos pre-


decir la correspondiente media de la variable respuesta. Esta media viene dada por

E[Y |x0 ] = x0 .

La estimacion de esta media es


x0 ,
que tiene varianza
var(x0 ) = x0 (X X)1 x0 2 .
Esta varianza la estimamos mediante

ar(x0 ) = x0 (X X)1 x0 2 .
vd

Y el intervalo de confianza sera


q
x0 tnp,1 2 x0 (X X)1 x0 .

Supongamos que, en lugar de predecir la media de la variable respuesta para un


conjunto de predictores dados, pretendemos predecir la propia variable respuesta.
Recordemos que segun nuestro modelo tenemos

Y = x0 + .

En consecuencia la prediccion de la propia observacion sera

x0

pero hay que considerar la varianza anadida por el error de modo que la varianza
al predecir Y dado x0 sera
var(x0 ) + 2

32
que estimaramos como

ar(x0 ) + 2 = x0 (X X)1 x0 2 + 2 = (x0 (X X)1 x0 + 1) 2 .


vd

Finalmente tendremos que el intervalo de confianza para una observacion Y que


tiene predictores x0 es el siguiente
q
x0 tnp,1 2 x0 (X X)1 x0 + 1

Nota de R 26 (notaR133) Con los datos savings consideramos como obtener las
predicciones, intervalos de confianza para las medias y para las predicciones. Utili-
zamos los propios datos que se han utilizado para ajustar el modelo. Con la funcion
predict obtenemos las predicciones as como los intervalos de confianza para las me-
dias de las predicciones (predict con la opcion interval=confidence) y los intervalos
de confianza para las observaciones (predict con la opcion interval=prediction).
Primero obtengamos las predicciones para los propios datos.

> savings.lm = lm(sr ~ pop15 + pop75 + dpi + ddpi, savings)


> predict(savings.lm)

Australia Austria Belgium Bolivia Brazil


10.566420 11.453614 10.951042 6.448319 9.327191
Canada Chile China Colombia Costa Rica
9.106892 8.842231 9.363964 6.431707 5.654922
Denmark Ecuador Finland France Germany
11.449761 5.995631 12.921086 10.164528 12.730699
Greece Guatamala Honduras Iceland India
13.786168 6.365284 6.989976 7.480582 8.491326
Ireland Italy Japan Korea Luxembourg
7.948869 12.353245 15.818514 10.086981 12.020807
Malta Norway Netherlands New Zealand Nicaragua
12.505090 11.121785 14.224454 8.384445 6.653603
Panama Paraguay Peru Philippines Portugal
7.734166 8.145759 6.160559 6.104992 13.258445
South Africa South Rhodesia Spain Sweden Switzerland
10.656834 12.008566 12.441156 11.120283 11.643174
Turkey Tunisia United Kingdom United States Venezuela
7.795682 5.627920 10.502413 8.671590 5.587482
Zambia Jamaica Uruguay Libya Malaysia
8.809086 10.738531 11.503827 11.719526 7.680869

En segundo lugar, obtenemos los intervalos de confianza para la prediccion de la


media.

> predict(savings.lm, interval = "confidence")

fit lwr upr


Australia 10.566420 8.573419 12.559422
Austria 11.453614 8.796229 14.110999
Belgium 10.951042 8.685716 13.216369
Bolivia 6.448319 4.157390 8.739249
Brazil 9.327191 7.307205 11.347176
Canada 9.106892 6.058639 12.155146
Chile 8.842231 7.363079 10.321383
China 9.363964 7.225493 11.502435

33
Colombia 6.431707 4.598321 8.265094
Costa Rica 5.654922 3.550896 7.758948
Denmark 11.449761 9.531686 13.367837
Ecuador 5.995631 4.062193 7.929070
Finland 12.921086 10.597470 15.244702
France 10.164528 7.337915 12.991142
Germany 12.730699 10.466993 14.994406
Greece 13.786168 11.405464 16.166872
Guatamala 6.365284 4.481549 8.249018
Honduras 6.989976 5.112657 8.867294
Iceland 7.480582 5.447045 9.514119
India 8.491326 6.444043 10.538609
Ireland 7.948869 4.420451 11.477288
Italy 12.353245 10.378008 14.328482
Japan 15.818514 12.199217 19.437811
Korea 10.086981 8.198473 11.975490
Luxembourg 12.020807 9.770218 14.271395
Malta 12.505090 10.346906 14.663274
Norway 11.121785 9.444976 12.798594
Netherlands 14.224454 11.918940 16.529969
New Zealand 8.384445 6.601075 10.167815
Nicaragua 6.653603 4.935013 8.372194
Panama 7.734166 6.222133 9.246198
Paraguay 8.145759 6.128498 10.163019
Peru 6.160559 4.207163 8.113955
Philippines 6.104992 4.163566 8.046418
Portugal 13.258445 10.871236 15.645654
South Africa 10.656834 8.702611 12.611058
South Rhodesia 12.008566 8.937241 15.079891
Spain 12.441156 10.311350 14.570963
Sweden 11.120283 8.423402 13.817164
Switzerland 11.643174 9.565430 13.720919
Turkey 7.795682 6.270754 9.320610
Tunisia 5.627920 3.536485 7.719355
United Kingdom 10.502413 7.888092 13.116733
United States 8.671590 4.247331 13.095849
Venezuela 5.587482 3.337731 7.837234
Zambia 8.809086 6.866490 10.751682
Jamaica 10.738531 7.865039 13.612024
Uruguay 11.503827 9.106837 13.900817
Libya 11.719526 6.136055 17.302996
Malaysia 7.680869 5.724711 9.637027
Y finalmente obtenemos los intervalos de confianza para la prediccion de la ob-
servacion.
> predict(savings.lm, interval = "prediction")
fit lwr upr
Australia 10.566420 2.65239197 18.48045
Austria 11.453614 3.34673522 19.56049
Belgium 10.951042 2.96408447 18.93800
Bolivia 6.448319 -1.54593794 14.44258
Brazil 9.327191 1.40632381 17.24806
Canada 9.106892 0.86361399 17.35017

34
Chile 8.842231 1.04173848 16.64272
China 9.363964 1.41205561 17.31587
Colombia 6.431707 -1.44364012 14.30705
Costa Rica 5.654922 -2.28779264 13.59764
Denmark 11.449761 3.55426865 19.34525
Ecuador 5.995631 -1.90360737 13.89487
Finland 12.921086 4.91740032 20.92477
France 10.164528 2.00061173 18.32844
Germany 12.730699 4.74420105 20.71720
Greece 13.786168 5.76572337 21.80661
Guatamala 6.365284 -1.52193644 14.25250
Honduras 6.989976 -0.89571495 14.87567
Iceland 7.480582 -0.44375158 15.40492
India 8.491326 0.56345398 16.41920
Ireland 7.948869 -0.48377711 16.38152
Italy 12.353245 4.44367177 20.26282
Japan 15.818514 7.34744022 24.28959
Korea 10.086981 2.19861958 17.97534
Luxembourg 12.020807 4.03801659 20.00360
Malta 12.505090 4.54785797 20.46232
Norway 11.121785 3.28141059 18.96216
Netherlands 14.224454 6.22600553 22.22290
New Zealand 8.384445 0.52059132 16.24830
Nicaragua 6.653603 -1.19581320 14.50302
Panama 7.734166 -0.07262817 15.54096
Paraguay 8.145759 0.22558667 16.06593
Peru 6.160559 -1.74358821 14.06471
Philippines 6.104992 -1.79620600 14.00619
Portugal 13.258445 5.23606633 21.28082
South Africa 10.656834 2.75248263 18.56119
South Rhodesia 12.008566 3.75672820 20.26040
Spain 12.441156 4.49157384 20.39074
Sweden 11.120283 3.00037235 19.24019
Switzerland 11.643174 3.70738117 19.57897
Turkey 7.795682 -0.01361931 15.60498
Tunisia 5.627920 -2.31146847 13.56731
United Kingdom 10.502413 2.40954804 18.59528
United States 8.671590 -0.17340027 17.51658
Venezuela 5.587482 -2.39507172 13.57004
Zambia 8.809086 0.90760106 16.71057
Jamaica 10.738531 2.55826556 18.91880
Uruguay 11.503827 3.47853305 19.52912
Libya 11.719526 2.24139669 21.19765
Malaysia 7.680869 -0.22396122 15.58570

PDF Rcode

3.11. Seleccion de variables


Habitualmente tenemos un gran conjunto de variables y pretendemos determinar
un buen conjunto de variables. En que sentido bueno? En primer lugar, bueno en
el sentido de sencillo. Tener pocas variables supone un modelo mas simple, mas
facil de entender. Es bueno tener pocas variables porque luego no tendremos que

35
recoger esta informacion. Es bueno porque los estimadores de los parametros que
intervienen en el modelo son mucho menos variables.
Dos son las aproximaciones al problema de la seleccion de variables. En la prime-
ra vamos comparando modelos sucesivos y, basicamente, consideramos si los modelos
sucesivos que comparamos difieren significativamente como modelos. En la segun-
da se adopta una medida de calidad global del ajuste y se plantea el problema de
determinar el modelo que optimiza ese criterio global.

3.11.1. Procedimientos que comparan modelos


Tres procedimientos se pueden considerar: seleccion backward, seleccion for-
ward y seleccion stepwise. En el primer procedimiento, seleccion backward
(seleccion hacia atras), empezamos el proceso de seleccion con un modelo en que
tenemos todas las variables consideradas a priori. Elegimos aquella que, cuando la
quitamos, el p-valor resultante de comparar ambos modelos (completo y aquel que
le falta la variable considerada) es mayor. Si este p-valor es mayor que un valor
previamente especificado entonces eliminamos la variable del modelo. Y as conti-
nuamos hasta que al eliminar una variable el p-valor correspondiente sea menor que
el elegido.
El procedimiento seleccion forward (o hacia adelante) empezamos con un
modelo en el cual solamente tenemos la constante. Elegimos para entrar la variable
tal que cuando se incorpora el modelo cambia lo mas posible. Esto es, el p-valor es
el mas significativo. Si el p-valor de la comparacion de los modelos es menor que
(siempre elegido antes de iniciar el proceso de seleccion y no reajustado a lo largo del
mismo) entonces la variable entra en el modelo. Continuamos hasta que el modelo
no cambia significativamente.
El procedimiento mas usado es el seleccion stepwise (hacia adelante y hacia
atras). Vistos los anteriores es de esperar como funciona este metodo. Despues de la
inclusion de una variable consideramos la posible exclusion de las variables que estan
en el modelo. Si es posible eliminar una lo hacemos y nos planteamos la inclusion
de la variable que produzca un cambio mas significativo.

Nota de R 27 (notaR146) Utilizamos los datos state y aplicamos un procedi-


miento de seleccion backward.

> data(state)
> statedata = data.frame(state.x77, row.names = state.abb, check.names = T)

> g = lm(Life.Exp ~ ., data = statedata)


> summary(g)

Call:
lm(formula = Life.Exp ~ ., data = statedata)

Residuals:
Min 1Q Median 3Q Max
-1.48895 -0.51232 -0.02747 0.57002 1.49447

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 7.094e+01 1.748e+00 40.586 < 2e-16 ***
Population 5.180e-05 2.919e-05 1.775 0.0832 .
Income -2.180e-05 2.444e-04 -0.089 0.9293
Illiteracy 3.382e-02 3.663e-01 0.092 0.9269
Murder -3.011e-01 4.662e-02 -6.459 8.68e-08 ***

36
HS.Grad 4.893e-02 2.332e-02 2.098 0.0420 *
Frost -5.735e-03 3.143e-03 -1.825 0.0752 .
Area -7.383e-08 1.668e-06 -0.044 0.9649
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.7448 on 42 degrees of freedom


Multiple R-squared: 0.7362, Adjusted R-squared: 0.6922
F-statistic: 16.74 on 7 and 42 DF, p-value: 2.534e-10

> g = update(g, . ~ . - Area)


> summary(g)

Call:
lm(formula = Life.Exp ~ Population + Income + Illiteracy + Murder +
HS.Grad + Frost, data = statedata)

Residuals:
Min 1Q Median 3Q Max
-1.49047 -0.52533 -0.02546 0.57160 1.50374

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 7.099e+01 1.387e+00 51.165 < 2e-16 ***
Population 5.188e-05 2.879e-05 1.802 0.0785 .
Income -2.444e-05 2.343e-04 -0.104 0.9174
Illiteracy 2.846e-02 3.416e-01 0.083 0.9340
Murder -3.018e-01 4.334e-02 -6.963 1.45e-08 ***
HS.Grad 4.847e-02 2.067e-02 2.345 0.0237 *
Frost -5.776e-03 2.970e-03 -1.945 0.0584 .
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.7361 on 43 degrees of freedom


Multiple R-squared: 0.7361, Adjusted R-squared: 0.6993
F-statistic: 19.99 on 6 and 43 DF, p-value: 5.362e-11

> g = update(g, . ~ . - Illiteracy)


> summary(g)

Call:
lm(formula = Life.Exp ~ Population + Income + Murder + HS.Grad +
Frost, data = statedata)

Residuals:
Min 1Q Median 3Q Max
-1.48921 -0.51224 -0.03290 0.56447 1.51662

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 7.107e+01 1.029e+00 69.067 < 2e-16 ***
Population 5.115e-05 2.709e-05 1.888 0.0657 .
Income -2.477e-05 2.316e-04 -0.107 0.9153
Murder -3.000e-01 3.704e-02 -8.099 2.91e-10 ***
HS.Grad 4.776e-02 1.859e-02 2.569 0.0137 *

37
Frost -5.910e-03 2.468e-03 -2.395 0.0210 *
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.7277 on 44 degrees of freedom


Multiple R-squared: 0.7361, Adjusted R-squared: 0.7061
F-statistic: 24.55 on 5 and 44 DF, p-value: 1.019e-11

> g = update(g, . ~ . - Income)


> summary(g)

Call:
lm(formula = Life.Exp ~ Population + Murder + HS.Grad + Frost,
data = statedata)

Residuals:
Min 1Q Median 3Q Max
-1.47095 -0.53464 -0.03701 0.57621 1.50683

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 7.103e+01 9.529e-01 74.542 < 2e-16 ***
Population 5.014e-05 2.512e-05 1.996 0.05201 .
Murder -3.001e-01 3.661e-02 -8.199 1.77e-10 ***
HS.Grad 4.658e-02 1.483e-02 3.142 0.00297 **
Frost -5.943e-03 2.421e-03 -2.455 0.01802 *
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.7197 on 45 degrees of freedom


Multiple R-squared: 0.736, Adjusted R-squared: 0.7126
F-statistic: 31.37 on 4 and 45 DF, p-value: 1.696e-12

> g = update(g, . ~ . - Population)


> summary(g)

Call:
lm(formula = Life.Exp ~ Murder + HS.Grad + Frost, data = statedata)

Residuals:
Min 1Q Median 3Q Max
-1.5015 -0.5391 0.1014 0.5921 1.2268

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 71.036379 0.983262 72.246 < 2e-16 ***
Murder -0.283065 0.036731 -7.706 8.04e-10 ***
HS.Grad 0.049949 0.015201 3.286 0.00195 **
Frost -0.006912 0.002447 -2.824 0.00699 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.7427 on 46 degrees of freedom


Multiple R-squared: 0.7127, Adjusted R-squared: 0.6939
F-statistic: 38.03 on 3 and 46 DF, p-value: 1.634e-12

38
PDF Rcode

3.11.2. Procedimientos basados en criterios


Estamos ajustando un modelo de regresion lineal multiple con algun proposito.
Podemos fijarnos en una medida global de calidad del ajuste y buscar la seleccion
de variables que nos da el optimo segun ese criterio.
Una medida global puede ser AIC (Akaike Information Criterion) definido como

AIC = 2 max logverosimilitud + 2p.

A partir de la definicion de esta medida global es claro que un valor pequeno


indica un mejor ajuste.

Nota de R 28 (notaR147) Notemos que con en la funcion step podemos indicar


con el argumento direction si queremos both (stepwise), o bien backward o bien
forward.

> data(state)
> statedata = data.frame(state.x77, row.names = state.abb, check.names = T)
> g = lm(Life.Exp ~ ., data = statedata)
> step(g)

Start: AIC=-22.18
Life.Exp ~ Population + Income + Illiteracy + Murder + HS.Grad +
Frost + Area

Df Sum of Sq RSS AIC


- Area 1 0.001 23.298 -24.182
- Income 1 0.004 23.302 -24.175
- Illiteracy 1 0.005 23.302 -24.174
<none> 23.297 -22.185
- Population 1 1.747 25.044 -20.569
- Frost 1 1.847 25.144 -20.371
- HS.Grad 1 2.441 25.738 -19.202
- Murder 1 23.141 46.438 10.305

Step: AIC=-24.18
Life.Exp ~ Population + Income + Illiteracy + Murder + HS.Grad +
Frost

Df Sum of Sq RSS AIC


- Illiteracy 1 0.004 23.302 -26.174
- Income 1 0.006 23.304 -26.170
<none> 23.298 -24.182
- Population 1 1.760 25.058 -22.541
- Frost 1 2.049 25.347 -21.968
- HS.Grad 1 2.980 26.279 -20.163
- Murder 1 26.272 49.570 11.568

Step: AIC=-26.17
Life.Exp ~ Population + Income + Murder + HS.Grad + Frost

Df Sum of Sq RSS AIC


- Income 1 0.006 23.308 -28.161

39
<none> 23.302 -26.174
- Population 1 1.887 25.189 -24.280
- Frost 1 3.037 26.339 -22.048
- HS.Grad 1 3.495 26.797 -21.187
- Murder 1 34.739 58.041 17.457

Step: AIC=-28.16
Life.Exp ~ Population + Murder + HS.Grad + Frost

Df Sum of Sq RSS AIC


<none> 23.308 -28.161
- Population 1 2.064 25.372 -25.920
- Frost 1 3.122 26.430 -23.876
- HS.Grad 1 5.112 28.420 -20.246
- Murder 1 34.816 58.124 15.528

Call:
lm(formula = Life.Exp ~ Population + Murder + HS.Grad + Frost, data = statedata)

Coefficients:
(Intercept) Population Murder HS.Grad Frost
7.103e+01 5.014e-05 -3.001e-01 4.658e-02 -5.943e-03
Utilizamos stepAIC de la librera MASS [? ].
> library(MASS)
> data(state)
> statedata = data.frame(state.x77, row.names = state.abb, check.names = T)
> g = lm(Life.Exp ~ ., data = statedata)
> stepAIC(g)
Start: AIC=-22.18
Life.Exp ~ Population + Income + Illiteracy + Murder + HS.Grad +
Frost + Area

Df Sum of Sq RSS AIC


- Area 1 0.001 23.298 -24.182
- Income 1 0.004 23.302 -24.175
- Illiteracy 1 0.005 23.302 -24.174
<none> 23.297 -22.185
- Population 1 1.747 25.044 -20.569
- Frost 1 1.847 25.144 -20.371
- HS.Grad 1 2.441 25.738 -19.202
- Murder 1 23.141 46.438 10.305

Step: AIC=-24.18
Life.Exp ~ Population + Income + Illiteracy + Murder + HS.Grad +
Frost

Df Sum of Sq RSS AIC


- Illiteracy 1 0.004 23.302 -26.174
- Income 1 0.006 23.304 -26.170
<none> 23.298 -24.182
- Population 1 1.760 25.058 -22.541
- Frost 1 2.049 25.347 -21.968

40
- HS.Grad 1 2.980 26.279 -20.163
- Murder 1 26.272 49.570 11.568

Step: AIC=-26.17
Life.Exp ~ Population + Income + Murder + HS.Grad + Frost

Df Sum of Sq RSS AIC


- Income 1 0.006 23.308 -28.161
<none> 23.302 -26.174
- Population 1 1.887 25.189 -24.280
- Frost 1 3.037 26.339 -22.048
- HS.Grad 1 3.495 26.797 -21.187
- Murder 1 34.739 58.041 17.457

Step: AIC=-28.16
Life.Exp ~ Population + Murder + HS.Grad + Frost

Df Sum of Sq RSS AIC


<none> 23.308 -28.161
- Population 1 2.064 25.372 -25.920
- Frost 1 3.122 26.430 -23.876
- HS.Grad 1 5.112 28.420 -20.246
- Murder 1 34.816 58.124 15.528

Call:
lm(formula = Life.Exp ~ Population + Murder + HS.Grad + Frost, data = statedata)

Coefficients:
(Intercept) Population Murder HS.Grad Frost
7.103e+01 5.014e-05 -3.001e-01 4.658e-02 -5.943e-03

Vemos que se obtiene el mismo resultado.


PDF Rcode

3.12. Algunos ejemplos


Terminamos el tema con algunos ejemplos.

Nota de R 29 (notaR137) Son unos datos sobre el abulon. Es un molusco. Se


trata de predecir su edad a partir de una serie de caractersticas fsicas. Los datos se
pueden encontrar en http://www.liacc.up.pt/ ltorgo/Regression/DataSets.html.
La edad del abalon se calcula habitualmente cortando la concha y contando el
numero de anillos utilizando un microscopio. Es una tarea bastante laboriosa. Se
pretende predecir la edad del animal utilizando distintas medidas que son mas faciles
de obtener.
Vemos como quitando un par de observaciones con un leverage alto el ajuste
mejora.

> x = read.table(file = "../data/abalone.dat", sep = ",")


> attach(x)

41
> xnam <- paste("V", 1:8, sep = "")
> (fmla <- as.formula(paste("y ~ ", paste(xnam, collapse = "+"))))
> y = log(x[, 9])
> y.fit = lm(fmla, data = x)
> summary(y.fit)

42
> x = x[-2052, ]
> attach(x)

xnam <- paste(V, 1:8, sep=) (fmla <- as.formula(paste( 2


, paste(xnam, co-
llapse= +)))) y = log(x[,9])

43
y.fit = lm (fmla,data=x)

summary(y.fit)

> x = x[-1418, ]
> attach(x)

> xnam <- paste("V", 1:8, sep = "")


> (fmla <- as.formula(paste("y ~ ", paste(xnam, collapse = "+"))))
> y = log(x[, 9])
> y.fit = lm(fmla, data = x)
> summary(y.fit)

44
PDF Rcode

Nota de R 30 (notaR140) Se trata de unos datos utilizados para reducir costes


de produccion. En concreto se pretende valorar el consumo de agua en una fabrica.
Se tiene el consumo de agua en distintos meses (en galones) como variable respuesta.
Las variables predictoras seran la temperatura media en el mes, la produccion (en
libras), numero de das que ha funcionado la fabrica durante ese mes, numero de
personas trabajando. Los datos han sido obtenidos en esta pagina.

> x = read.table(file = "../data/agua.txt", header = T)


> attach(x)

Ajustamos el modelo.

> a.lm = lm(agua ~ temperatura + produccion + dias + personas)


> summary(a.lm)

Call:
lm(formula = agua ~ temperatura + produccion + dias + personas)

Residuals:
Min 1Q Median 3Q Max
-444.986 -131.522 2.575 108.969 368.516

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 6360.33733 1314.39161 4.839 0.000406 ***
temperatura 13.86886 5.15982 2.688 0.019748 *
produccion 0.21170 0.04554 4.648 0.000562 ***
dias -126.69036 48.02234 -2.638 0.021647 *
personas -21.81796 7.28452 -2.995 0.011168 *

45
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 249 on 12 degrees of freedom


Multiple R-squared: 0.767, Adjusted R-squared: 0.6894
F-statistic: 9.877 on 4 and 12 DF, p-value: 0.0008958

Introducimos un termino cuadratico y otro cubico en la produccion.

> b.lm = lm(agua ~ temperatura + poly(produccion, 3) + dias + personas)


> summary(b.lm)

Call:
lm(formula = agua ~ temperatura + poly(produccion, 3) + dias +
personas)

Residuals:
Min 1Q Median 3Q Max
-435.85 -103.78 29.41 123.85 388.38

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 8734.088 2393.471 3.649 0.00447 **
temperatura 14.521 6.524 2.226 0.05021 .
poly(produccion, 3)1 2742.288 851.981 3.219 0.00920 **
poly(produccion, 3)2 208.891 337.555 0.619 0.54986
poly(produccion, 3)3 -108.677 357.638 -0.304 0.76745
dias -138.467 66.880 -2.070 0.06524 .
personas -18.695 9.872 -1.894 0.08752 .
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 265.6 on 10 degrees of freedom


Multiple R-squared: 0.7791, Adjusted R-squared: 0.6466
F-statistic: 5.878 on 6 and 10 DF, p-value: 0.007365

Veamos los distintos procedimientos graficos para el diagnostico del modelo.

> plot(a.lm, which = 1)

46
Residuals vs Fitted
400

6
15
200
Residuals

0
200
400

14

3000 3500 4000

Fitted values
lm(agua ~ temperatura + produccion + dias + personas)

> plot(a.lm, which = 2)

Normal QQ
2

6
1
Standardized residuals

0
1

17

14
2

2 1 0 1 2

Theoretical Quantiles
lm(agua ~ temperatura + produccion + dias + personas)

> plot(a.lm, which = 3)

47
ScaleLocation
1.4

14
6
1.2

17
1.0
Standardized residuals

0.8
0.6
0.4
0.2
0.0

3000 3500 4000

Fitted values
lm(agua ~ temperatura + produccion + dias + personas)

> plot(a.lm, which = 4)

Cooks distance

1
0.20
0.15
Cooks distance

4
16
0.10
0.05
0.00

5 10 15

Obs. number
lm(agua ~ temperatura + produccion + dias + personas)

> plot(a.lm, which = 5)

48
Residuals vs Leverage
2

0.5
1

16
Standardized residuals

1
1

4
0.5

1
2

Cooks distance

0.0 0.1 0.2 0.3 0.4 0.5 0.6

Leverage
lm(agua ~ temperatura + produccion + dias + personas)

> plot(a.lm, which = 6)

"Cooks dist vs Leverage " * h[ii]/(1 h[ii])


21.5 1 0.5
1
0.20
0.15
Cooks distance

4
16
0.10
0.05
0.00

0 0.1 0.2 0.3 0.4 0.5 0.6

Leverage hii
lm(agua ~ temperatura + produccion + dias + personas)
Intervalo de confianza para observaciones.

> predict(a.lm, interval = "prediction")

49
fit lwr upr
1 3205.385 2520.884 3889.885
2 2750.249 2130.559 3369.940
3 2657.037 2036.241 3277.833
4 3227.559 2601.448 3853.670
5 3213.522 2562.575 3864.470
6 3529.484 2940.043 4118.924
7 3538.372 2944.767 4131.977
8 3138.032 2556.061 3720.004
9 3116.283 2526.273 3706.292
10 3283.425 2663.590 3903.260
11 3469.345 2825.351 4113.339
12 3148.126 2500.847 3795.405
13 2913.031 2309.106 3516.957
14 3366.986 2802.927 3931.045
15 3626.584 3050.307 4202.861
16 4362.459 3690.845 5034.073
17 3617.121 3026.185 4208.057

Intervalo de confianza para la media.

> predict(a.lm, interval = "confidence")

fit lwr upr


1 3205.385 2787.900 3622.869
2 2750.249 2450.635 3049.864
3 2657.037 2355.143 2958.930
4 3227.559 2914.881 3540.237
5 3213.522 2853.682 3573.362
6 3529.484 3298.849 3760.118
7 3538.372 3297.292 3779.451
8 3138.032 2927.217 3348.848
9 3116.283 2884.197 3348.368
10 3283.425 2983.512 3583.338
11 3469.345 3122.242 3816.448
12 3148.126 2794.965 3501.287
13 2913.031 2647.554 3178.509
14 3366.986 3212.342 3521.630
15 3626.584 3432.039 3821.129
16 4362.459 3966.457 4758.461
17 3617.121 3382.691 3851.551

PDF Rcode

Nota de R 31 (notaR141) Se trata de unos datos utilizados para reducir cos-


tes de produccion. En concreto se pretende valorar el consumo de agua en una
fabrica. Se tiene el consumo de agua en distintos meses (en galones) como va-
riable respuesta. Las variables predictoras seran la temperatura media en el mes,
la produccion (en libras), numero de das que ha funcionado la fabrica durante
ese mes, numero de personas trabajando. Los datos han sido obtenidos en la pa-
gina http: // www. statsci. org/ data/ general/ water. html . Las variables son
las siguientes:

Variable Description
M percentage of males aged 1424

50
So indicator variable for a southern state
Ed mean years of schooling
Po1 police expenditure in 1960
Po2 police expenditure in 1959
LF labour force participation rate
M.F number of males per 1000 females
Pop state population
NW number of nonwhites per 1000 people
U1 unemployment rate of urban males 1424
U2 unemployment rate of urban males 3539
GDP gross domestic product per head
Ineq income inequality
Prob probability of imprisonment
Time average time served in state prisons
Crime rate of crimes in a particular category per head of population

Se pretende predecir la variable Crime a partir de las demas. Se proponen dos


modelos y se ve que no hay diferencias significativas entre ellos.

> x = read.table(file = "../data/uscrime.txt", header = T)


> attach(x)

> crime.lm = lm(Crime ~ M + So + Ed + Po1 + Po2 + LF + M.F + Pop +


+ NW + U1 + U2 + GDP + Ineq + Prob + Time)
> summary(crime.lm)

Call:
lm(formula = Crime ~ M + So + Ed + Po1 + Po2 + LF + M.F + Pop +
NW + U1 + U2 + GDP + Ineq + Prob + Time)

Residuals:
Min 1Q Median 3Q Max
-395.738 -98.088 -6.695 112.989 512.671

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -5984.2876 1628.3184 -3.675 0.000893 ***
M 8.7830 4.1714 2.106 0.043443 *
So -3.8035 148.7551 -0.026 0.979765
Ed 18.8324 6.2088 3.033 0.004861 **
Po1 19.2804 10.6110 1.817 0.078892 .
Po2 -10.9422 11.7478 -0.931 0.358830
LF -0.6638 1.4697 -0.452 0.654654
M.F 1.7407 2.0354 0.855 0.398995
Pop -0.7330 1.2896 -0.568 0.573845
NW 0.4204 0.6481 0.649 0.521279
U1 -5.8271 4.2103 -1.384 0.176238
U2 16.7800 8.2336 2.038 0.050161 .
GDP 0.9617 1.0367 0.928 0.360754
Ineq 7.0672 2.2717 3.111 0.003983 **
Prob -4855.2658 2272.3746 -2.137 0.040627 *
Time -3.4790 7.1653 -0.486 0.630708
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

51
Residual standard error: 209.1 on 31 degrees of freedom
Multiple R-squared: 0.8031, Adjusted R-squared: 0.7078
F-statistic: 8.429 on 15 and 31 DF, p-value: 3.539e-07

> crime.lm2 = lm(Crime ~ M + Ed + Po1 + U2 + Ineq + Prob)


> summary(crime.lm2)

Call:
lm(formula = Crime ~ M + Ed + Po1 + U2 + Ineq + Prob)

Residuals:
Min 1Q Median 3Q Max
-470.68 -78.41 -19.68 133.12 556.23

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -5040.505 899.843 -5.602 1.72e-06 ***
M 10.502 3.330 3.154 0.00305 **
Ed 19.647 4.475 4.390 8.07e-05 ***
Po1 11.502 1.375 8.363 2.56e-10 ***
U2 8.937 4.091 2.185 0.03483 *
Ineq 6.765 1.394 4.855 1.88e-05 ***
Prob -3801.836 1528.097 -2.488 0.01711 *
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 200.7 on 40 degrees of freedom


Multiple R-squared: 0.7659, Adjusted R-squared: 0.7307
F-statistic: 21.81 on 6 and 40 DF, p-value: 3.418e-11

Podemos ver que no hay diferencias significativas entre ambos modelos.

> anova(crime.lm, crime.lm2)

Analysis of Variance Table

Model 1: Crime ~ M + So + Ed + Po1 + Po2 + LF + M.F + Pop + NW + U1 +


U2 + GDP + Ineq + Prob + Time
Model 2: Crime ~ M + Ed + Po1 + U2 + Ineq + Prob
Res.Df RSS Df Sum of Sq F Pr(>F)
1 31 1354946
2 40 1611057 -9 -256111 0.6511 0.7451

PDF Rcode

52
Captulo 4

Analisis cluster

En este tema vamos a tratar lo que en la literatura estadstica recibe el nombre de


analisis cluster 1 o, en mejor castellano, analisis de conglomerados. En la literatura
de Inteligencia Artificial se utiliza la expresion clasificacion no supervisada. Tenemos
una muestra de observaciones multivariantes de dimension d. Que pretendemos
hacer con ellos? Encontrar grupos. Muy breve la respuesta pero: que son grupos?
Imaginemos una imagen aerea fija de un patio de un colegio. En esta imagen los
datos son las posiciones de los ninos. Se agrupan los ninos formando grupos o
todos estan jugando con todos y los grupos son una consecuencia pasajera del juego
(delanteros y defensas que aparecen agrupados en un ataque)?
Parece claro y simple el problema. S, lo parece. Que es un grupo? Como
defino un grupo? Cuantos grupos distingo en los datos? Estamos viendo el efecto
del ruido o realmente hay una estructura debajo que la vemos en un entorno con
ruido.
Que quiere decir encontrar grupos? Se trata de clasificar las observaciones en
grupos de modo que las observaciones de un mismo grupo sean lo mas similares que
podamos y que los grupos entre s sean muy distintos. El numero de procedimientos
que se han propuesto en la literatura es muy grande. La mayor parte de ellos no tie-
nen un modelo probabilstico debajo, no son procedimientos basados en modelo. Son
metodos que esencialmente utilizan el concepto de proximidad. Valoran de distintas
formas lo proximos, lo cercanos que estan los puntos, dentro de un mismo grupo
y entre distintos grupos. Es pues, el primer punto a tratar: como cuantificamos
lo cerca o lejos que estan los distintos puntos? En la seccion 4.1 nos ocupamos de
este punto. Tambien sera necesario, como veremos en el tema, valorar cuando dos
conjuntos de puntos son mas o menos parecidos, proximos, similares. En la misma
seccion nos ocupamos de ello. Supongamos que ya hemos clasificado en distintos
grupos. Hemos tenido exito al hacerla? Cuando tenemos un analisis discriminante
tenemos una muestra donde sabemos a que grupo pertenece el individuo y donde lo
hemos clasificado. Esto nos permita valorar si nuestro procedimiento clasifica bien
o no. Aqu no vamos a tener esta referencia que nos da la muestra de entrenamien-
to. Como valorarlo? Un concepto conocido por silueta y debido a Rousseeuw [? ]
nos va a servir para ello. No es ni tan simple ni tan satisfactorio como en analisis
discriminante (como es de esperar si tenemos menos informacion para trabajar). Lo
estudiamos en la seccion 4.4.
Entre los muchos procedimientos de obtener los grupos a partir de los datos,
los mas utilizados son dos tipos: procedimientos jerarquicos y metodos de parti-
cionamiento. De los jerarquicos nos ocupamos en la seccion 4.2. El metodo de las
k-medias y el metodo de las k-mediodes (el castellano como siempre es muy sufrido
1 Por cierto que la palabra cluster no existe en castellano

1
pues no existe la palabra) son metodos de particionamiento y los tratamos en la
seccion 4.3.
Empezamos viendo un conjunto de datos que nos sugieran el problema y como
tratarlo.

Nota de R 32 (notaR109) Generamos tres muestras correspondientes a distri-


buciones bivariates normales. La matriz de covarianzas vamos a suponer que es
la matriz identidad. Los vectores de medias son 1 = c(1, 1), 2 = c(3, 3) y 2 =
c(7, 7). Es resumen un vector Xi Nd (i , I22 . Vamos a generar cien datos de cada
grupo. Vamos a utilizar el paquete mvtnor [? ] para simular las distintas normales
bivariantes.

> library(mvtnorm)
> x1 = rmvnorm(n = 100, mean = c(1, 1))
> x2 = rmvnorm(n = 100, mean = c(3.3, 4.1))
> x3 = rmvnorm(n = 100, mean = c(6, 5.5))

El siguiente dibujo muestra los datos generados.

> limite.x = c(-1, 8)


> limite.y = limite.x
> plot(x1, xlim = limite.x, ylim = limite.y)
> points(x2, pch = 2)
> points(x3, pch = 3)
8
6
4
x1[,2]

2
0

0 2 4 6 8

x1[,1]

Se ve que hay tres grupos pero estos no estan muy claramente delimitados. No-
sotros no disponemos de esta informacion. Conocemos los valores que componen los
vectores de datos pero no conocemos el grupo al que podra pertenecer cada uno de
ellos. Tampoco tenemos porque tener prefijado el numero de grupos. Los datos son
artificiales pero ilustran bien el problema.
PDF Rcode

2
Una referencia muy adecuada que se puede consultar es el texto de [? ]. Cualquier
texto de reconocimiento de patrones es adecuado.
En lo que sigue vamos a basarnos fundamentalmente en la librera cluster [? ] y
denotaremos los datos a agrupar con xi con i = 1, . . . n siendo xi = xi1 , . . . , xid .

4.1. Disimilaridades
4.1.1. Disimilaridades entre observaciones
Empezamos tratando el problema de cuantificar el grado de proximidad, de
similaridad entre dos puntos en el espacio de dimension d. Tradicionalmente este
tema en Matematicas se ha formalizado a traves del concepto de distancia o metrica.
Una metrica es una funcion que a cada par de puntos x, y Rd le asocia un valor
positivo de modo que cuando mayor es mas distantes son, mas alejados estan. Como
siempre la formalizacion matematica de un concepto intuitivo ha de ser prudente
y pedir que se verifiquen ciertos axiomas que resulten razonables y generalmente
admisibles. En concreto la funcion d definida en el espacio producto Rd Rd se dice
que es una metrica si verifica:
No negativa d(x, y) 0.
Un punto dista 0 de s mismo d(x, x) = 0.
Simetra d(x, y) = d(y, x).
Desigualdad triangular d(x, z) d(x, y) + d(y, z), para todo x, y, z Rd .
Las distancias mas utilizadas en analisis cluster son la distancia eucldea y la dis-
tancia de Manhattan. Para dos vectores u e v (en Rd ) entonces la distancia eucldea
se define como v
u d
uX
d(x, y) = t (xk yk )2 , (4.1)
k=1
d
con x, y R . La distancia de Manhattan viene dada por
d
X
d(x, y) = |xk yk |. (4.2)
k=1

Las distancias eucldea y de Manhattan son adecuadas cuando trabajamos con va-
riables continuas y que ademas esten en una misma escala. 2 Notemos que cada una
de las componentes del vector pesan igualmente. Si tenemos variables que no estan
igualmente escaladas estas distancias pueden pesar mas unas variables que otras no
por lo diferentes que sean entre los individuos sino simplemente por su escala.
Con mucha frecuencia nos encontramos trabajando con variables que aun siendo
continuas estan medidas en escalas muy diversas o bien tenemos variables que son
continuas, otras que son binarias, otras categoricas con mas de dos categoras o bien
variable ordinales. En resumen, todos los posibles tipos de variables simultaneamen-
te considerados. Es lo habitual. Una variable binaria la codificamos habitualmente
como 1 y 0 indicando presencia o ausencia del atributo que estemos considerando.
En una variable categorica la codificacion es completamente arbitraria y por lo tanto
no tiene sentido la aplicacion de una de estas distancias.
Todo esto plantea el hecho de que no es recomendable, ni tampoco facil, en un
banco de datos con distintos tipos de variables considerar una metrica o distancia,
2 La funcion dist de [? ] es una buena opcion para el calculo de estas y otras distancias. Tambien

lo es la funcion daisy del paquete cluster [? ].

3
Cuadro 4.1: Conteos asociados a dos casos descritos por variables binarias

1 0
1 A B A+B
0 C D C+D
A+C B+D d=A+B+C+D

esto es, algo que verifique las propiedades anteriores. Son demasiado exigentes estas
propiedades. Lo que se hace es proponer medidas entre los vectores de caracters-
ticas que tienen algunas de las propiedades y son, ademas, razonables. Por ello no
hablaremos, en general, de una distancia o una metrica, sino de una medida de
disimilaridad. Finalmente, valores grandes estaran asociados con vectores de carac-
tersticas que tienen una mayor diferencia. Se han propuesto distintas medidas de
disimilaridad entre variables cualitativas (binarias simetricas o asimetricas, cualita-
tivas, ordinales) y cuantitativas. En lo que sigue comentamos con algun detalle la
que lleva la funcion daisy de la librera cluster [? ]. Es una opcion muy generica y
razonable.
Consideramos el problema cuando solo tenemos un tipo de variable. Finalmente
combinaremos todo en una sola medida de disimilaridad.
Supongamos descrita al individuo o caso mediante d variables binarias. Es natu-
ral construir la tabla de contingencia 2 2 que aparece en la tabla 4.1 donde las filas
corresponden con el individuo i y las columnas con el individuo j. Segun la tabla los
individuos i y j coincidiran en la presencia de A atributos y en la no presencia de
D atributos. Tenemos B atributos en i que no estan en j y C atributos que no estan
en i pero s que estan en j.

El total de variables binarias es de d = A + B + C + D. Basandonos en esta tabla


se pueden definir distintas medidas de disimilaridad. Vamos a considerar dos situa-
ciones distintas. En la primera trabajamos con variables binarias simetricas y otra
para variables binarias no simetricas. Una variable binaria es simetrica cuando las
dos categoras que indica son intercambiables, cuando no tenemos una preferencia
especial en que resultado lo codificamos como 1 y que resultado codificamos como
0. Un ejemplo frecuente es el sexo de la persona. Si las variables son todas bina-
rias simetricas es natural utilizar como disimilaridad el coeficiente de acoplamiento
simple definido como
B+C A+D
d(i, j) = =1 .
A+B+C +D A+B+C +D
La interpretacion de esta medida de disimilaridad es simple. Dos individuos son
tanto mas disimilares cuantas mas variables binarias tienen distintas. Notemos que
la presencia o ausencia de un atributo tienen el mismo peso.
Supongamos que las variable que describen al individuo son binarias asimetri-
cas. Ejemplos de esto pueden ser la presencia o ausencia de un atributo muy poco
frecuente. Por ejemplo, tener o no tener sida. Dos personas que tienen el sida, tienen
mas es comun, estan mas proximas, que dos personas que no lo tienen. Supongamos
que codificamos el atributo menos frecuente como 1 y el mas frecuente como 0. Esta
claro que un acoplamiento 1-1 o acoplamiento positivo es mas significativo que un
acoplamiento negativo o acoplamiento 0-0 por lo que A, numero de acoplamientos
positivos, ha de tener mas peso que d o numero de acoplamientos negativos. El mas
conocido es el coeficiente de Jaccard que se define como
B+C A
d(i, j) = =1
A+B+C A+B+C

4
en el que simplemente no consideramos los acoplamientos negativos.
Consideremos ahora el caso de variables categoricas con mas de dos categoras.
Si todas las variables son de este tipo y tenemos un total de d variables entonces
los individuos i y j son tanto mas disimilares cuanto mas variables categoricas son
distintas. Si denotamos por u el numero de variables en las que coinciden los dos
individuos entonces la medida de disimilaridad sera
du
d(i, j) = .
d
Finalmente veamos como tratar las variables ordinales. Lo que haremos para varia-
bles de este tipo es transformarlas al intervalo [0, 1]. Si xij denota la j-esima variable
del i-esimo individuo entonces consideramos la transformacion
xik 1
yik =
Mk 1
siendo 1, . . . , Mk los valores que puede tomar la j-esima variable ordinal. Lo que
estamos haciendo con este procedimiento es transformar la variable ordinal es una
variable numerica con una escala comun. En la medida en que el numero de cate-
goras sea mayor esta transformacion tendra mas sentido.
Hemos visto como tratar cada tipo de variable aisladamente. El problema es
combinar todas ellas en una sola medida de disimilaridad. La funcion daisy del
paquete cluster [? ] utiliza la siguiente medida:
Pd (k) (k)
k=1 ij dij
d(i, j) = Pd (k)
, (4.3)
k=1 ij

donde:
(k)
ij vale uno cuando las medidas xik y xjk no son valores faltantes y cero en
otro caso;
(k)
ij vale 0 cuando la variable k es binaria asimetrica y tenemos entre los
individuos i y j un acoplamiento 0-0;
(k)
el valor dij es lo que contribuye a la disimilaridad entre i y j la variable k.
(k)
Si la variable k es binaria o categorica entonces dij es definida como
(k)
dij = 1 si xik 6= xjk y 0 en otro caso.
Si la variable k es numerica entonces
(k) |xik xjk |
dij =
Rk
siendo Rk el rango de la variable k definido como

Rk = max xhk mn xhk


h h

donde h vara entre todos los individuos con valor no faltante de la va-
riable k.
Si todas las variables son categoricas entonces 4.3 nos da el numero de acoplamientos
del total de pares disponibles, en definitiva, el coeficiente de acoplamiento simple. Si
todas son variables binarias simetricas entonces obtenemos otra vez el coeficiente de
acoplamiento simple. Si las variables son binarias asimetricas entonces obtenemos
el coeficiente de Jaccard. Cuando todas las variables con las que trabajamos son

5
numericas la medida de disimilaridad es la distancia de Manhattan donde cada
variable esta normalizada.
Dado un conjunto de datos xi con i = 1, . . . , n tendremos, utilizando algunas
de las medidas de disimilaridades comentadas, una matriz de dimension n n que
tiene en la posicion (i, j) la disimilaridad entre xi y xj , d(i, j): [d(i, j)]i,j=1,...,n .
Con esta matriz cuantificamos la disimilaridad que hay entre los elementos ori-
ginales de la muestra. Algunos de los procedimientos de agrupamiento que vamos
a considerar en lo que sigue no necesitan conocer los datos originales. Pueden apli-
carse con solo conocer esta matriz de disimilaridades. Otros no. Otros utilizan los
datos a lo largo de las distintas etapas de aplicacion del procedimiento.

4.1.2. Disimilaridades entre grupos de observaciones


En algunos procedimientos de agrupamiento (en particular, los jerarquicos) va-
mos a necesitar calcular disimilaridades entre conjuntos disjuntos de las observacio-
nes originales. Estas disimilaridades las podemos calcular a partir de las disimilarida-
des originales punto a punto que hemos comentado en la seccion 4.1.1. Supongamos
que tenemos un banco de datos con n individuos cuyos ndices son {1, . . . , n}. Sean
A y B dos subconjuntos disjuntos del conjunto de ndices de la muestra {1, . . . , n},
esto es, dos subconjuntos de observaciones disjuntos. Como podemos definir una
disimilaridad entre A y B partiendo de las disimilaridades entre los datos individua-
les? Se han propuesto muchos procedimientos. Si denotamos la disimilaridad entre
A y B como d(A, B) entonces las disimilaridades mas habitualmente utilizadas son
las siguientes:
Enlace simple La disimilaridad entre los dos grupos es el mnimo de las disimi-
laridades entre las observaciones de uno y de otro. Tomamos la disimilaridad
de los objetos que mas se parecen en uno y otro grupo.

d(A, B) = mn d(a, b)
aA,bB

Enlace completo Ahora tomamos como disimilaridad entre los grupos como el
maximo de las disimilaridades, en definitiva, la disimilaridad entre los objetos
mas alejados o mas distintos.

d(A, B) = max d(a, b)


aA,bB

Promedio La disimilaridad es el promedio de las disimilaridades entre todos los


posibles pares.
1 X
d(A, B) = d(a, b)
|A| |B|
aA,bB

donde |A| es el cardinal del conjunto A.


Es importante notar que solamente necesitamos conocer las disimilaridades entre
los individuos para poder calcular las disimilaridades entre grupos de individuos.
En la siguiente seccion nos vamos a ocupar de los metodos jerarquicos en los
cuales es fundamental el procedimiento que elijamos para calcular distintas entre
grupos.

4.2. Cluster jerarquico


La idea de estos procedimientos es construir una jerarqua de particiones del
conjunto de ndices.

6
Sea {1, . . . , n} el conjunto de ndices que indexan las distintas observaciones.
Supongamos que {C1 , . . . , Cr } es una particion de este conjunto de ndices:
Ci {1, . . . , n}; son disjuntos dos a dos, Ci Cj = si i 6= j con i, j = 1, . . . , n
y
ri= Ci = {1, . . . , n}.
Dada una particion del conjunto de ndices podemos calcular la matriz r r que
en la posicion (i, j) tiene la disimilaridad entre el conjunto Ci y Cj , d(Ci , Cj ) segun
alguno de los procedimientos antes indicados.
Veamos los procedimientos jerarquicos aglomerativos. En estos procedimientos
vamos a iniciar el agrupamiento con la particion: Ci = {i} con i = 1, . . . , n, es
decir, cada grupo es un individuo. En cada iteracion vamos agrupando el par de
conjuntos (elementos de la particion que tengamos en esa iteracion) que esten mas
proximos segun la disimilaridad entre grupos que estemos utilizando. El proceso
continua hasta que tengamos un unico grupo.
Un esquema algortmico del procedimiento indicado puede ser el siguiente:
Paso 0 Tenemos grupos unitarios formados por cada una de las observaciones.
Tenemos pues una particion inicial Ci = {i} con i = 1, . . . , n. En un principio,
cada dato es un grupo.
Paso 1 Calculamos las disimilaridades entre los elementos de la particion. Para ello
utilizamos cualquiera de los procedimientos antes indicados.
Paso 2 Agrupamos los dos conjuntos de la particion mas proximos y dejamos los
demas conjuntos igual. Tenemos ahora Ci con i = 1, . . . , k.
Paso 3 Si tenemos un solo conjunto en la particion paramos el procedimiento.
Paso 4 Volvemos al paso 1.
Hay una representacion grafica muy utilizada para describir los resultados de
un cluster jerarquico aglomerativo como el que acabamos de describir. Esta repre-
sentacion tiene el nombre de dendograma. En el dendograma se va mostrando
a que valor de la medida de disimilaridad se produce la union de los grupos y si-
multaneamente que grupos se estan uniendo para esa disimilaridad. Tambien nos
permite una valoracion rapida de cuantos grupos puede haber en el banco de datos.
Simplemente trazando una linea horizontal a la altura en que tengamos el numero
de grupos que pensamos que puede haber.

Nota de R 33 (notaR135) Veamos un ejemplo de analisis cluster. Los datos han


sido obtenidos de esta pagina. Tenemos cuatro variables que nos dan las puntuacio-
nes obtenidas en 25 escuelas de New Haven en aritmetica y lectura al principio del
cuarto curso y al principio del sexto curso. Empezamos cargando el paquete cluster
[? ] y leyendo los datos.
> library(cluster)
> x = read.table("../data/achieve.txt")
> names(x) = c("centro", "lec4", "aritme4", "lec6", "aritme6")
> attach(x)
Eliminamos la primera columna en que aparece el nombre de la escuela.

> y = x[, 2:ncol(x)]

Hacemos un analisis cluster jerarquico utilizando la funcion agnes del paquete


cluster.

7
> y.ag = agnes(y)

Veamos el dendograma.

> plot(y.ag, which = 2)

Dendrogram of agnes(x = y)
3.0
2.5
2.0
1.5
Height

1.0

10
13
25
0.5

9
3
7
2

23
0.0

16

11
17
1

12
19
5
21
8
18

4
22
15
14
20

6
24

y
Agglomerative Coefficient = 0.84

Observando el dendograma parece razonable considerar tres grupos.


PDF Rcode

Nota de R 34 (notaR112) Veamos un analisis cluster jerarquico. Los datos son


los porcentajes de votas que recibio el candidato republicano en las elecciones ame-
ricanas entre los anos 1856 y 1976. Cada observacion corresponde a un estado y las
variables corresponden con las distintas elecciones.

> library(cluster)
> data(votes.repub)
> agn1 = agnes(votes.repub, metric = "manhattan", stand = TRUE)

El dendograma sera el siguiente.

> plot(agn1, which = 2)

8
Dendrogram of agnes(x = daisy(votes.repub), diss = TRUE, method = "complete")

Dendrogram of agnes(x = votes.repub, metric = "manhattan", stand = TR


> plot(agn2, which = 2)
> agn2 = agnes(daisy(votes.repub), diss = TRUE, method = "complete")

calculo de las disimilaridades entre grupos.


Height Height

Pasamos ahora la matriz de distancias y cambiamos el procedimiento para el


0 50 100 150 200 250 0 20 40 60 80

Alabama Alabama
Georgia Georgia
Louisiana Arkansas
Arkansas Louisiana
Florida Mississippi
Texas South Carolina
Mississippi Alaska
South Carolina Vermont
Alaska Arizona
Michigan Montana
Connecticut Nevada
New York Colorado
Agglomerative Coefficient = 0.88

New Hampshire Idaho

Agglomerative Coefficient = 0.8


Indiana Wyoming
Ohio Utah
Illinois California
New Jersey Oregon
Pennsylvania Washington
daisy(votes.repub)

Minnesota Minnesota
North Dakota Connecticut
Wisconsin New York

votes.repub
Iowa New Jersey
South Dakota Illinois
Kansas Ohio
Nebraska Indiana
Arizona Michigan
Nevada Pennsylvania
Montana New Hampshire
Oklahoma Wisconsin
Colorado Delaware
Idaho Kentucky
9

Wyoming Maryland
Utah Missouri
California New Mexico
Oregon West Virginia
Washington Iowa
Missouri South Dakota
New Mexico North Dakota
West Virginia Kansas
Delaware Nebraska
Kentucky Maine
Maryland Massachusetts
North Carolina Rhode Island
Tennessee Florida
Virginia North Carolina
Hawaii Tennessee
Maine Virginia
Massachusetts Oklahoma
Rhode Island Hawaii
Vermont Texas
PDF Rcode

Un procedimiento jerarquico aglomerativo tiene interes cuando el banco de datos


no tiene muchos individuos. En otro caso es muy difcil de interpretar un dendo-
grama o de seleccionar el numero de grupos que hay. En todo caso lo hemos de ver
como un analisis exploratorio para decidir el numero de grupos y posteriormente
utilizar algun metodo de particionamiento como los que vamos a ver.

4.3. Metodos de particionamiento


Suponemos ahora que tenemos una idea de cuantos grupos hay. Posiblemente
hemos realizado un analisis jerarquico previo con todos los datos o, si eran muchos,
con una seleccion aleatoria de los datos. Tenemos pues una idea de cuantos grupos
tendremos que considerar. Obviamente podemos luego evaluar los resultados modi-
ficando el numero de grupos. En principio, vamos a suponer que fijamos el numero
de grupos a considerar. Suponemos pues que sabemos el numero de grupos y lo
denotamos por k.

4.3.1. Metodo de las k-medias


El primer procedimiento que vamos a ver es el metodo de las k-medias (que por
alguna extrana razon en la literatura de Inteligencia Artificial se le llama de las
c-medias lo que demuestra que cada persona copia a sus amigos o, simplemente,
conocidos). Supongamos que tenemos C1 , . . . , Ck una particion de {1, . . . , n}. Un
modo bastante natural de valorar la calidad de del agrupamiento que la particion
nos indica sera simplemente considerar la siguiente funcion.
k X
X
dE (xj , xCi )2 , (4.4)
i=1 jCi

donde dE denota aqu la distancia eucldea y


1 X
xCi = xj , (4.5)
|Ci |
jCi

es el vector de medias del grupo cuyos ndices estan en Ci . Una particion sera tanto
mejor cuanto menor sea el valor de la funcion dada en 4.4. El procedimiento de
agrupamiento de las k-medias simplemente se basa en elegir como particion de los
datos aquella que nos da el mnimo de la funcion objetivo considerada en ecuacion
4.4. Notemos que en muchos textos se hablan del algoritmo de las k-medias y se
identifica con un procedimiento concreto para encontrar el mnimo de la funcion.
Aqu entendemos el procedimiento como la minimizacion de la funcion objetivo.
De hecho, R ofrece hasta cuatro posibles procedimientos de los muchos que cabe
proponer. Hay que diferenciar claramente el procedimiento del metodo de aplicacion
del mismo, del metodo de obtencion de dicho mnimo.

Nota de R 35 (notaR113) Aplicamos un procedimiento de particionamiento de


las k-medias con el algoritmo de Hartigan-Wong [? ]. Los datos son descriptores de
una base de datos de imagenes. En la primera columna tenemos un identificador de
la imagen sin informacion sobre la misma.

> x = read.table("..//data//descriptores.txt")
> y = x[, 2:ncol(x)]

Aplicamos k-medias con algoritmo de Hartigan-Wong.

10
> y.km = kmeans(y, centers = 5, iter.max = 100)

Como resultado tenemos la clasificacion final de cada individuo. Los primeros


datos seran.

> y.km$cluster[1:10]

[1] 5 4 5 5 1 3 5 4 3 2

Los centros de los grupos se obtienen con

> y.km$centers

El numero de datos en cada grupo lo obtenemos con

> y.km$size

[1] 1459 678 1288 1321 1027

Como medida de lo compactos que son los grupos encontrados tenemos tambien
la suma de cuadrados de cada grupo. Notemos que la suma de todos estos cuadrados
es la que hemos minimizado imponiendo simplemente el numero total de grupos.

> y.km$withinss

[1] 585.8410 423.9542 441.9083 764.1557 356.2032

PDF Rcode

Es importante darnos cuenta de que el procedimiento que acabamos de ver esta


basado en la utilizacion de la distancia eucldea y en que, dado un grupo, podemos
calcular el vector de medias y esto solo lo podemos hacer si todas las variables son
cuantitativas.

4.3.2. Particionamiento alrededor de los mediodes


Y si no podemos calcular el vector de medias? Y si no tiene sentido calcular el
vector de medias? Como promediar dos configuraciones de puntos distintas? Como
promediamos dos formas distintas descritas numericamente? Cuando el concepto de
promedio aritmetico no tiene sentido podemos generalizar el procedimiento anterior
y hablar de (perdon por el neologismo) de k-mediodes.
La idea ahora es sustituir esos centros calculados como vectores de medias de los
individuos de un mismo grupo por individuos bien centrados, por individuos tpicos,
que sustituyan a las medias.
Supongamos que tomamos k individuos de la muestra que denotamos por mi
con i = 1, . . . , k. Particionamos la muestra en k grupos de modo que el grupo Ci
esta formado por los individuos mas proximos a mi que a cualquier otro mj con
j 6= i,
Ci = {l : d(l, i) = mn d(l, j)}.
j6=i

Consideremos la siguiente cantidad:


k X
X
d(j, mi ). (4.6)
i=1 jCi

En el metodo de particionamiento alrededor de los mediodes nos planteamos encon-


trar las observaciones m1 , . . . , mk que minimizan el valor dado en 4.6.

11
Nota de R 36 (notaR114) Aplicamos a los datos descriptores (descriptores de
una base de datos de imagenes digitales) un procedimiento de k-mediodes con cinco
grupos.
Realizamos el analisis cluster.

> y.med = pam(y, 5)

Una representacion grafica de la clasificacion la podemos obtener con la funcion


extractora plot utilizando which = 2. En ella se utilizan las dos primeras compo-
nentes principales.

> plot(y.med, which = 1)

clusplot(pam(x = y, k = 5))
5
0
Component 2

5
10

15 10 5 0 5 10

Component 1
These two components explain 26.02 % of the point variability.
Los mediodes los podemos obtener con el siguiente codigo.

> y.med$medoids

PDF Rcode

4.4. Silueta
Veamos como se construye la silueta. Para la observacion i y el grupo C consi-
deramos
X
C) = 1
d(i, d(i, j),
|C|
jC

la disimilaridad media i con los elementos del grupo C. Para cada observacion i,
sea A el cluster al cual lo ha asignado el procedimiento cluster que empleamos
y calculamos a(i) la disimilaridad media de i con todos los demas individuos del
A). Obviamente estamos asumiendo que A contiene al menos
grupo A, a(i) = d(i,

12
Cuadro 4.2: Silueta media y estructura en un conjunto de datos

SC Interpretacion
0,71 1,00 Fuerte estructura
0,51 0,70 Estructura razonable
0,26 0,50 Estructura debil. Probar otros metodos
0,25 No se encuentra estructura

C) para todos los grupos C 6= A y seleccionemos el


otro objeto. Consideremos d(i,
que tiene el mnimo valor:
C).
b(i) = mn d(i,
C6=A

B) = b(i) se le llama vecino


El grupo B donde se alcanza este mnimo, es decir, d(i,
3
del objeto i. Definimos s(i) como

a(i)
s(i) = 1 si a(i) < b(i), (4.7)
b(i)
= 0 si a(i) = b(i), (4.8)
b(i)
= 1 si a(i) > b(i). (4.9)
a(i)

Esto se puede expresar en una unica ecuacion como

b(i) a(i)
s(i) = .
max{a(i), b(i)}

En el caso en que el grupo A contenga un unico objeto no esta muy claro como
definir a(i). Tomaremos s(i) = 0 que es una eleccion arbitraria. Se comprueba con
facilidad que 1 s(i) 1 para cualquier objeto i.
Para interpretar el significado de s(i) es bueno ver los valores extremos. Si s(i)
es proximo a uno significa que a(i) es mucho menor que b(i) o lo que es lo mismo,
que el objeto i esta bien clasificado pues la disimilaridad con los de su propio grupo
es mucho menor que la disimilaridad con los del grupo mas proximo que no es el
suyo. Un valor proximo a cero significa que a(i) y b(i) son similares y no tenemos
muy claro si clasificarlo en A o en B. Finalmente un valor de s(i) proximo a 1
significa que a(i) es claramente mayor que b(i). Su disimilaridad media con B es
menor que la que tiene con A. Estara mejor clasificado en B que en A. No esta
bien clasificado.
Los valores de s(i) apareceran representados para cada cluster en orden decre-
ciente. Para cada objeto se representa una barra horizontal con longitud propor-
cional al valor s(i). Una buena separacion entre grupos o cluster viene indicada
por unos valores positivos grandes de s(i). Ademas de la representacion grafica se
proporciona un analisis descriptivo. En concreto la media de los valores de la silueta
dentro de cada cluster y la media de la silueta para todo el conjunto de datos. La
clasificacion sera tanto mejor cuanto mayor sean estos valores medios. De hecho, se
puede decidir el numero de grupos en funcion del valor medio de las silueta sobre
toda la muestra. Vamos probando distintos numeros de grupos y nos quedamos con
el numero que nos da la silueta media maxima.
Cuando podemos decir que hay estructura de grupos en los datos que estamos
analizando? Experiencias con datos sugieren la tabla 4.2.
3 No parece un nombre inadecuado.

13
Nota de R 37 (notaR115) Utilizamos los datos descriptores. Hemos aplicado una
particionamiento alrededor de los mediodes con cinco grupos.
La silueta de la clasificacion la obtenemos con la funcion silhouette del paquete
cluster [? ].

> y.si = silhouette(y.med)

La funcion extractora summary nos proporciona un resumen en donde tenemos


el numero de elementos de cada grupo y el valor medio de la silueta en cada uno de
los grupos. Se incluye tambien el resumen habitual de un conjunto de datos: mnimo,
maximo, media, mediana y los cuartiles.

> summary(y.si)

Silhouette of 5773 units in 5 clusters from pam(x = y, k = 5) :


Cluster sizes and average silhouette widths:
1130 385 1694 1444 1120
0.29803506 0.36812793 0.14175502 0.29011448 0.09241103
Individual silhouette widths:
Min. 1st Qu. Median Mean 3rd Qu. Max.
-0.3259 0.1022 0.2019 0.2150 0.3231 0.5523

Vemos que los resultados son realmente malos. No hay estructura cluster de
ningun tipo. El dibujo de la silueta la obtenemos con la funcion plot.

> plot(y.si)

Silhouette plot of pam(x = y, k = 5)


n = 5773 5 clusters Cj
j : nj | aveiCj si

1 : 1130 | 0.30

2 : 385 | 0.37

3 : 1694 | 0.14

4 : 1444 | 0.29

5 : 1120 | 0.09

0.2 0.0 0.2 0.4 0.6 0.8 1.0


Silhouette width si
Average silhouette width : 0.21
PDF Rcode

14
4.5. Algunos ejemplos
Para acabar el tema inclumos algunos ejemplos de analisis cluster.

Nota de R 38 (Fichero notaR116) Analizamos los datos Ruspini, muy conoci-


dos en la literatura de analisis cluster. Primero se hace un particionamiento alre-
dedor de los k-mediodes con cuatro grupos. La figura 4.1 muestra los resultados.
Despues hacemos un analisis jerarquico aglomerativo y observamos la silueta con
cinco y con dos grupos. Ver figuras 4.2 and 4.3 respectivamente.

data(ruspini)
pr4 <- pam(ruspini, 4)
str(si <- silhouette(pr4))
(ssi <- summary(si))
plot(si) # silhouette plot

## Silueta con un cluster jerarquico

ar <- agnes(ruspini)
#Se utilizan 5 grupos
si3 <- silhouette(cutree(ar, k = 5), daisy(ruspini))
plot(si3, nmax = 80, cex.names = 0.5)

## Repetimos el analisis anterior con dos grupos


si4 <- silhouette(cutree(ar, k = 2), daisy(ruspini))
plot(si4, nmax = 80, cex.names = 0.5)

Silhouette plot of pam(x = ruspini, k = 4)


n = 75 4 clusters Cj
10 j : nj | aveiCj si
6
9
11
8
12
3
14
2
16
13 1 : 20 | 0.73
4
18
15
19
1
5
20
17
7
26
32
27
25
28
35
33
23
22
34
31
36 2 : 23 | 0.75
24
29
30
21
37
39
38
40
42
43
41
54
57
55
50
52
56
59
49
51
60 3 : 17 | 0.67
58
53
45
46
47
48
44
70
67
65
69
71
66
62
64 4 : 15 | 0.80
73
63
72
61
68
74
75

0.0 0.2 0.4 0.6 0.8 1.0


Silhouette width si
Average silhouette width : 0.74

Figura 4.1:

15
Silhouette plot of (x = cutree(ar, k = 5), dist = daisy(ruspini))
n = 75 5 clusters Cj
1
j : nj | aveiCj si
2
3
4
5
6
7
8
9
10
11
12
1 : 20 | 0.71
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 2 : 23 | 0.74
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
3 : 14 | 0.56
53
54
55
56
57
58
59
60 4 : 3 | 0.78
61
62
63
64
65
66
67
68
69 5 : 15 | 0.80
70
71
72
73
74
75

0.0 0.2 0.4 0.6 0.8 1.0


Silhouette width si
Average silhouette width : 0.71

Figura 4.2:

Silhouette plot of (x = cutree(ar, k = 2), dist = daisy(ruspini))


n = 75 2 clusters Cj
1
j : nj | aveiCj si
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 1 : 35 | 0.58
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
2 : 40 | 0.59
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75

0.0 0.2 0.4 0.6 0.8 1.0


Silhouette width si
Average silhouette width : 0.58

Figura 4.3:

Nota de R 39 (notaR135) Veamos un ejemplo de analisis cluster. Los datos han


sido obtenidos de esta pagina. Tenemos cuatro variables que nos dan las puntuacio-
nes obtenidas en 25 escuelas de New Haven en aritmetica y lectura al principio del
cuarto curso y al principio del sexto curso. Empezamos cargando el paquete cluster
[? ] y leyendo los datos.
> library(cluster)
> x = read.table("../data/achieve.txt")
> names(x) = c("centro", "lec4", "aritme4", "lec6", "aritme6")
> attach(x)
Eliminamos la primera columna en que aparece el nombre de la escuela.

> y = x[, 2:ncol(x)]

16
Hacemos un analisis cluster jerarquico utilizando la funcion agnes del paquete
cluster.

> y.ag = agnes(y)

Veamos el dendograma.

> plot(y.ag, which = 2)

Dendrogram of agnes(x = y)
3.0
2.5
2.0
1.5
Height

1.0

10
13
25
0.5

9
3
7
2

23
0.0

16

11
17
1

12
19
5
21
8
18

4
22
15
14
20

6
24

y
Agglomerative Coefficient = 0.84
Observando el dendograma parece razonable considerar tres grupos.
PDF Rcode

Nota de R 40 (Fichero notaR136) Veamos un ejemplo de analisis cluster. Los


datos proceden de la siguiente pagina web: http://www.uni-koeln.de/themen/Statistik/data/cluster/.
Los datos son las tasas de nacimiento y muerte en 70 pases. Observemos que
los datos se leen desde un fichero de SPSS por lo que hay que usar la librera foreign
[? ].
Hacemos un analisis cluster jerarquico. Observando el dendograma parece razo-
nable considerar tres grupos. Aplicamos un particionamiento alrededor de los me-
diodes con tres grupos y valoramos el resultado.
Si probamos con dos o cuatro vemos que no mejora el resultado global del analisis
cluster.

#Datos achieve
library(cluster)
library(foreign)

x= read.spss('../data/birth.sav',to.data.frame=T)

names(x) = c("country","birth","death")

17
attach(x)
y = x[,2:ncol(x)]

y.ag = agnes(y)

plot(y.ag)

#Parece que hay tres grupos

y.pam = pam(y,3)

summary(y.pam)

y.si = silhouette(y.pam)
plot(y.si)

#Parece que los dos ultimos grupos no estan bien definidos.


#Vamos a probar con distintos numero de grupos.

y.pam = pam(y,2)

summary(y.pam)

y.si = silhouette(y.pam)
plot(y.si)

y.pam = pam(y,4)

summary(y.pam)

y.si = silhouette(y.pam)
plot(y.si)

#Repetimos el analisis con k-medias y comparamos con k-mediodes

y.pam = pam(y,2)
y.km = kmeans(y,2)
table(y.pam$cluster,y.km$cluster)

18
Captulo 5

Analisis discriminante o de
como clasificar con muestra
de entrenamiento

Discriminar es clasificar. Es una palabra mal vista. Cuando una persona le dice a
otra: Usted me discrimina esta indicando algo negativo en la medida en que piensa
que lo esta separando para perjudicarle. Se asume la discriminacion como algo que
se realiza en un sentido negativo. Pues no. El analisis discriminante simplemente se
refiere al problema de clasificar en distintos grupos un conjunto de observaciones
vectoriales. Clasificar y discriminar se usan como sinonimos.
Tenemos distintos conjuntos de datos multivariantes. Que quiere que tenemos
grupos y que pretendemos hacer con ellos? Una biologa ha recogido una serie de
animales y ha observado en cada uno unas caractersticas numericas. Esta biologa
ha podido clasificar a los animales en distintas especies utilizando las variables x
de las que dispone y, posiblemente, algunas otras cuya consecucion ya no es tan
simple y, en ocasiones, ni posible. Esta interesada en disenar un procedimiento que,
partiendo de las variables de las que siempre dispone x, le permita decidir la especie
a la que pertenece un animal futuro del cual solamente tiene las caractersticas x.
Tiene esta persona un problema de clasificacion que pretende hacer bien y clasificar
a cada animal en su especie con un esfuerzo pequeno.
Otro ejemplo puede ser el siguiente. Una persona ha pasado una enfermedad
(como la hidatidosis) y por lo tanto guarda en su organismo anticuerpos frente al
virus que lo infecto y le causo la enfermedad. A este individuo se le controla a lo
largo de los anos. Cuando se le aplica un procedimiento diagnostico el resultado
puede ser positivo debido a dos razones: el individuo ha recado en la enfermedad y
por lo tanto ha de ser tratado. Sin embargo, si el procedimiento es muy sensible el
resultado positivo del test puede ser simplemente producidos por los anticuerpos que
la persona conserva. Diferenciar una situacion de la otra supone otra exploracion
(placas del torax) y, por ello, una complicacion adicional. En la realizacion del test
se han recogido la presencia o ausencia de una serie de aminoacidos. Tenemos que
nuestro vector de caractersticas son variables binarias o dicotomicas y pretendemos
poder decidir a partir de ellas si la persona esta sana sin anticuerpos, sana con
anticuerpos o finalmente enferma utilizando la presencia o ausencia de los distintos
anticuerpos. Este es un segundo problema de interes a tratar aqu.
Pretendemos clasificar a un individuo dado utilizando algunas caractersticas
del mismo. Pero para poder hacerlo tenemos que conocer para una muestra, que
podemos llamar muestra de entrenamiento (training sample), en que grupo esta
cada individuo con los que trabajamos. Esto hace bastante natural el nombre mas

1
utilizado en el contexto de la Informatica de clasificacion supervisada.
Nota de R 41 (notaR102) Tenemos pacientes de los cuales se conocen algunas
variables obtenidas de un analisis de orina. En concreto las variables nos dan la
gravidez especfica (grav), la osmolaridad (osmo), la conductibilidad (conduc), la
concentracion de urea (urea) y la concentracion de calcio (calcio). Tambien tenemos
una variable que nos indica la presencia o ausencia de cristales en la orina del
individuo (grupo donde 1 indica ausencia y 2 indica presencia). El problema que
nos planteamos es disenar un procedimiento de clasificacion de modo que, dado
el vector de caractersticas de la orina, nos permita clasificar a un individuo en
uno de los dos posibles grupos, esto es, que va a desarrollar cristales en la orina
o no. En el diseno del procedimiento pretendemos utilizar la informacion que ya
tenemos, esto es, conocemos para una serie de individuos si tiene o no cristales y
los vectores de caractersticas asociados. En una observacion futura tendremos el
vector de caractersticas pero no conoceremos la clasificacion. Leemos los datos de
un fichero de SPSS utilizando el paquete foreign [? ] y mostramos las seis primeras
observaciones.
> library(foreign)
> x = read.spss(file = "../data/cristal.sav", to.data.frame = T)
> x[x == -1] = NA
> cc = complete.cases(x)
> x = x[cc, ]
> attach(x)
> x[1:6, ]
Incluimos un analisis descriptivo de los datos.
> summary(x)
IND GRUPO GRAV PH
Min. : 2.00 ausencia de cristales :44 Min. :1.005 Min. :4.760
1st Qu.:21.00 presencia de cristales:33 1st Qu.:1.012 1st Qu.:5.530
Median :40.00 Median :1.018 Median :5.940
Mean :40.31 Mean :1.018 Mean :6.041
3rd Qu.:60.00 3rd Qu.:1.024 3rd Qu.:6.400
Max. :79.00 Max. :1.040 Max. :7.940
OSMO CONDUC UREA CALCIO
Min. : 187.0 Min. : 5.10 Min. : 10.0 Min. : 0.17
1st Qu.: 410.0 1st Qu.:14.30 1st Qu.:159.0 1st Qu.: 1.45
Median : 594.0 Median :21.40 Median :255.0 Median : 3.16
Mean : 613.6 Mean :20.91 Mean :262.4 Mean : 4.16
3rd Qu.: 803.0 3rd Qu.:27.00 3rd Qu.:362.0 3rd Qu.: 6.19
Max. :1236.0 Max. :38.00 Max. :620.0 Max. :14.34
PDF Rcode
Nota de R 42 (notaR103) Los datos corresponden a una serie de personas de
las cuales conocemos informacion que previsiblemente nos permitira predecir si son
diabeticos o no. Incluso dentro de los diabeticos pretendemos discriminar (distin-
guir) entre diabetes clnica y diabetes manifiesta. La variable tipo nos indica en que
grupo esta la persona observada de los tres grupos indicados. El resto de variables
nos describen al paciente: peso es el peso relativo, gpb es la glucosa plasmatica en
ayunas, garea el area bajo la curva de la glucosa, iarea el area bajo la curva de
insulina y sspg la glucosa plasmatica en estado estacionario. Pretendemos clasificar
a un individuo en uno de los tres grupos posibles teniendo en cuenta las variables
consideradas.

2
> library(foreign)
> x = read.spss(file = "../data/diabetes.sav", to.data.frame = T)
> x[1:2, ]

IND PESO GPB GAREA IAREA SSPG TIPO LIAREA


1 1 0.81 80 356 124 55 control 4.820282
2 2 0.95 97 289 117 76 control 4.762174

Veamos un breve analisis descriptivo de los datos.

> summary(x)

IND PESO GPB GAREA


Min. : 1 Min. :0.7100 Min. : 70.0 Min. : 269.0
1st Qu.: 37 1st Qu.:0.8800 1st Qu.: 90.0 1st Qu.: 352.0
Median : 73 Median :0.9800 Median : 97.0 Median : 413.0
Mean : 73 Mean :0.9773 Mean :122.0 Mean : 543.6
3rd Qu.:109 3rd Qu.:1.0800 3rd Qu.:112.0 3rd Qu.: 558.0
Max. :145 Max. :1.2000 Max. :353.0 Max. :1568.0
IAREA SSPG TIPO LIAREA
Min. : 10.0 Min. : 29.0 diabetes manifiesta:33 Min. :2.303
1st Qu.:118.0 1st Qu.:100.0 diabetes quimica :36 1st Qu.:4.771
Median :156.0 Median :159.0 control :76 Median :5.050
Mean :186.1 Mean :184.2 Mean :5.019
3rd Qu.:221.0 3rd Qu.:257.0 3rd Qu.:5.398
Max. :748.0 Max. :480.0 Max. :6.617

PDF Rcode

El captulo esta organizado del siguiente modo. Empezamos (seccion 5.1) recor-
dando el teorema de Bayes con un ejemplo muy simple de urnas (no funerarias). De
este modo vemos la idea basica del metodo de clasificacion basado en probabilidades
a posteriori. Consideramos, en la seccion 5.2, el caso (de interes puramente acade-
mico) de dos poblaciones normales univariantes con la misma varianza y con los
parametros conocidos 1 . En la seccion 5.3 abordamos la situacion con dos poblacio-
nes normales multivariantes. All consideramos tanto el caso en que las matrices de
covarianzas son la misma como cuando son distintas. En la seccion 5.4 nos plantea-
mos la estimacion de los vectores de medias y las matrices de covarianzas y vemos la
implementacion practica del metodo. El problema de la reduccion de la dimension
dentro del problema de la clasificacion es considerado en la seccion 5.7

5.1. Un problema de probabilidad sencillo


Veamos un problema de probabilidad basico que nos servira para introducir el
procedimiento de clasificacion que vamos a utilizar. No le falta ningun detalle y
muchos lo hemos resuelto. Tenemos dos urnas. En la primera de ellas hay una bola
blanca y dos negras mientras que en la segunda urna hay dos bolas blancas y una
negra. Elegimos al azar una urna (no sabemos cual es la elegida). Posteriormente de
la urna elegida, elegimos a su vez una bola. Resulta que la bola elegida es blanca.
La pregunta que nos hacemos es: De que urna la hemos elegido? La solucion es una
aplicacion del teorema de Bayes (ver 1.2.1). Denotamos Bi el suceso consistente en
que la bola ha sido extrada de la i-esima urna y por el A el suceso de que la bola
es blanca. A priori, antes de realizar el experimento, las dos urnas tenan la misma
1 En datos reales los parametros no son conocidos.

3
probabilidad (elegimos al azar una de las urnas) y por tanto la probabilidad (previa
o a priori) de los sucesos Bi seran P (Bi ) = 1/2. No sabemos si la urna elegida ha
sido la primera o la segunda pero nos podemos plantear que probabilidad tenemos
de que sea blanca si efectivamente es la urna 1 la elegida y lo mismo para la dos.
Es obvio que P (A | B1 ) = 1/3 y P (A | B2 ) = 2/3. Esta informacion se puede
combinar aplicando el teorema de Bayes para determinar la probabilidad de que sea
la primera o la segunda urna la elegida sabiendo (teniendo pues una informacion
adicional sobre el experimento) que ha salido blanca. En concreto tenemos que
P (Bi | A) = PkP (A|B i )P (Bi )
P (A|B )P (B )
. Finalmente podemos comprobar que P (B1 | A) =
j=1 j j

1/3 y P (B2 | A) = 2/3.


Las probabilidades P (B1 ) y P (B2 ) reciben el nombre de probabilidades a
priori. Vamos a denotarlas en lo que sigue por i , esto es, la probabilidad de la urna
i. Nuestra informacion consiste en la ocurrencia del suceso A (la bola ha sido blanca)
de modo que las probabilidades P (A | B1 ) y P (A | B2 ) seran las verosimilitudes
de que ocurra lo que ha ocurrido si la urna es la primera o la segunda. Finalmente
tenemos P (B1 | A) y P (B2 | A) que nos daran las probabilidades a posteriori.
Hemos de tomar una decision: cual fue la urna elegida? Parece natural elegir
aquella que tiene a posteriori una maxima probabilidad y quedarnos con la segunda
urna.
Vamos a reescribir lo que acabamos de hacer que nos acerque al planteamiento
mas generico del problema. Supongamos que describimos el color de la bola elegida
mediante una variable dicotomica o binaria. Consideramos la variable aleatoria X
que vale uno si es blanca la bola y cero en otro caso. Es lo que se llama una
variable indicatriz pues nos indica si se ha producido el suceso que nos interesa. 2
El comportamiento aleatorio de X, su distribucion de probabilidad, depende que
estemos extrayendo una bola de la primera o de la segunda urna. En concreto en la
primera urna X sigue una distribucion Bernoulli con probabilidad de exito p1 = 1/3
mientras que en la segunda urna tenemos una Bernoulli con probabilidad de exito
p2 = 2/3. Cada urna es una poblacion distinta donde el comportamiento aleatorio
de la misma cantidad es distinto. X en la i-esima poblacion tiene una funcion de
probabilidad
fi (x) = pxi (1 pi )1x con x = 0, 1.
Tenamos unas probabilidades a priori de que X estuviera siendo observada en la
poblacion i-esima que denotamos por (i) donde (1) + (2) = 1 y (1), (2) 0.
Las probabilidades a posteriori obtenidas por la aplicacion del teorema de Bayes
vienen dadas por
fi (x)(i)
(i | x) = .
f1 (x)(1) + f2 (x)(2)
Finalmente nos hemos quedado con la poblacion i tal que tena un valor de (i | x)
mayor, aquella que, una vez observado el valor de X = x, haca mas probable la
poblacion.

5.2. Dos poblaciones normales


Supongamos ahora que tenemos que decidir entre dos poblaciones basandonos
en un valor aleatorio continuo con distribucion normal. En concreto supondremos
que en la primera poblacion X es normal con media 1 y varianza 2 . En la segunda
poblacion X tiene distribucion normal con media 2 y varianza 2 . Graficamente en
la figura 5.1 aparece la situacion con la que nos encontramos. Supongamos conocidos
2 Si A es el suceso de interes entonces X() = 1 si A y cero en otro caso. A veces se denota

como X() = 1A ().

4
los valores de las media y la varianza comun. Observamos un valor de la variable
X = x: cual de las dos distribuciones lo ha generado? De otro modo: a que
poblacion pertenece este valor generado?
La idea para clasificar este valor generado es la misma de antes. Ahora tendremos
 
2 1 1 2
fi (x) = f (x | i , ) = exp 2 (x i ) ,
2 2

aunque fi (x) no es la probabilidad del valor x asumiendo que estamos en la po-


blacion i. No obstante, fi (x)dx s que tiene este sentido. Hablando en un sentido
amplio tenemos una interpretacion similar. La observacion x la clasificaramos en
la poblacion 1 si
(1)f (x | 1 , 2 )
> 1,
(2)f (x | 2 , 2 )
Facilmente comprobamos que esto equivale con que
 
1 1 (2)
(1 2 ) x (1 + 2 ) > log .
2 2 (1)
0.4
0.3
0.2
0.1
0.0

0 2 4 6

Figura 5.1: Dos densidades normales con la misma varianza y distinta media.

5.3. Dos normales multivariantes


En la seccion 5.2 nos planteabamos la situacion de dos normales univariantes. En
las aplicaciones es mas habitual el caso en que trabajamos con varias caractersticas
simultaneamente. En particular, vamos a asumir ahora que X puede pertenecer a

5
una de dos poblaciones normales multivariantes. La primera con vector de medias
1 y matriz de covarianzas y la segunda con vector de medias 2 y matriz de cova-
rianzas . Dada una observacion multivariante x, la clasificaremos en la poblacion
1 si
(1)f (x | 1 , )
> 1,
(2)f (x | 2 , )
pero,

f (x | 1 , )
=
f (x | 2 , )
 
1 1 1 1
exp (x 1 ) (x 1 ) + (x 2 ) (x 2 ) =
2 2
 
1 1 1
exp (1 2 ) x (1 2 ) (1 + 2 ) . (5.1)
2

Sea = 1 (1 2 ), entonces la observacion es asignada a la primera poblacion


si  
1 (2)
D(x) = x (1 + 2 ) > log . (5.2)
2 (1)
Notemos que la ecuacion D(x) = log (2)
(1) nos define un hiperplano que separa las
dos poblaciones.
Que ocurre si no asumimos que tenemos una misma matriz de covarianzas? En
este caso se tiene que:

f (x | 1 , 1 )
Q(x) = log =
f (x | 2 , 2 )
1 |2 | 1 1
log (x 1 ) 1 1
1 (x 1 ) + (x 2 ) 2 (x 2 ) =
2 |1 | 2 2
 
1 |2 | 1 1 1 1 1
log x (1 2 )x 2x (1 1 2 2 ) . (5.3)
2 |1 | 2
Como en el caso anterior asignamos la observacion x a la primera poblacion si
(2)
Q(x) > log .
(1)

Notemos que ahora Q(x) = log (2)


(1) no es un hiperplano sino que tenemos una
superficie no plana.

5.4. Dos poblaciones normales multivariantes con


parametros desconocidos
Lo visto en las secciones anteriores tena como objeto mostrar de un modo suave
la transicion desde el resultado probabilstico basico, el teorema de Bayes, y su
aplicacion en el problema de la clasificacion. Sin embargo, no es real asumir que
conocemos completamente la distribucion de las observaciones en cada poblacion o
clase. En las aplicaciones los vectores de medias y la matriz o matrices de covarianzas
no son conocidas. Hemos de estimarlas a partir de los datos. Veamos primero como
hacerlo y luego como usar estos parametros en el procedimiento de clasificacion.
Empezamos por el caso en que tenemos dos poblaciones normales con vectores
de medias 1 y 2 y matrices de covarianzas 1 y 2 . Lo que tenemos son dos
muestras aleatorias correspondientes a cada una de las poblaciones.

6
Supongamos que tenemos ni individuos de la poblacion i y los vectores de ca-
ractersticas son los vectores columna xij Rd (con i = 1, 2 y j = 1, . . . , ni ).
Denotamos Pni P2 Pni
j=1 xij i=1 j=1 xij
xi = , x = (5.4)
ni n
donde n = n1 + n2 . Sea Si la matriz de varianzas o de dispersion de la poblacion i,
es decir, Pni
j=1 (xij xi )(xij xi )
Si = . (5.5)
ni 1
El vector i es estimado mediante i = xi . La matriz i la estimamos mediante
Si . En el caso particular en que asumamos que = 1 = 2 entonces la matriz de
covarianzas comun la estimamos con
P2
(ni 1)Si
Sp = i=1 .
n2
Como clasificamos? Las distribuciones teoricas que suponamos conocidas son
reemplazadas por las distribuciones normales con los parametros estimados.
Si asumimos una matriz de covarianza comun a ambas poblaciones entonces
asignamos x a la primera poblacion si

(2)
Ds (x) > log , (5.6)
(1)

donde
1
Ds (x) = (x (x1 + x2 ) (5.7)
2
y
= S1
p (x1 x2 ). (5.8)
La funcion Ds recibe el nombre de funcion discriminante lineal. La razon es obvia:
clasificamos en uno o en otro grupo utilizando una funcion lineal de las distintas
variables.
En el caso particular en que (1) = (2), esto es, consideramos a priori igual-
mente probables ambos grupos entonces la regla de clasificacion propuesta sera:
clasificamos en la poblacion o clase 1 si,
1
x > ( x1 + x2 ).
2
Es es el procedimiento que propuso R.A. Fisher en 1936.
Notemos que las probabilidades de pertenencia a posteriori a cada una de las
poblaciones pueden ser estimadas mediante

(i)f (x|xi , Sp )
(i|x) = . (5.9)
(1)f (x|x1 , Sp ) + (2)f (x|x2 , Sp )

Una vez tenemos las probabilidades a posteriori estimadas el individuo es clasificado


en el grupo que tiene una mayor probabilidad a posteriori.
En la situacion mas general no asumiremos una misma matriz de covarianzas
en las dos poblaciones. En este caso estimamos la matriz i mediante la matriz Si
dada en la ecuacion 5.5. Las probabilidades a posteriori las estimamos como

(i)f (x|xi , Si )
(i|x) = . (5.10)
(1)f (x|x1 , S1 ) + (2)f (x|x2 , S2 )

7
Nota de R 43 (notaR104) Vamos a trabajar con los datos de cristales en la ori-
na. Esta nota es un ejemplo de analisis discriminante lineal con dos grupos. Con-
sideramos dos casos. En el primero las probabilidades a priori de cada grupo se
asumen iguales entre s y, por lo tanto, iguales a 0,5. En el segundo caso, las pro-
babilidades a priori coinciden con las proporciones observadas dentro de la muestra
de cada una de las poblaciones o clases. Leemos los datos.

> library(foreign)
> x = read.spss(file = "../data/cristal.sav", to.data.frame = T)

Definimos el valor -1 como dato faltante.

> x[x == -1] = NA

Eliminamos del estudio todos los casos en los que hay algun dato faltante.

> cc = complete.cases(x)
> attach(x[cc, ])

Suponemos matrices de covarianzas iguales y probabilidades a priori iguales.

> library(MASS)
> z = lda(GRUPO ~ CALCIO + CONDUC + GRAV + OSMO + PH + UREA, prior = c(1,
+ 1)/2)

Veamos como recuperar los distintos elementos del analisis.

> attributes(z)

names
[1] "prior" "counts" "means" "scaling" "lev" "svd" "N"
[8] "call" "terms" "xlevels"

class
[1] "lda"

Las probabilidades a priori vienen dadas por

> z$prior

ausencia de cristales presencia de cristales


0.5 0.5

El numero de datos por grupo es

> z$counts

ausencia de cristales presencia de cristales


44 33

El vector de medias estimado en cada grupo lo obtenemos con

> z$means

CALCIO CONDUC GRAV OSMO PH UREA


ausencia de cristales 2.628864 20.55000 1.015364 561.6591 6.125682 232.4318
presencia de cristales 6.202424 21.37879 1.021576 682.8788 5.927273 302.3636

8
Vamos a obtener las probabilidades a posteriori. Observar la opcion CV=TRUE.

> z = lda(GRUPO ~ CALCIO + CONDUC + GRAV + OSMO + PH + UREA, prior = c(1,


+ 1)/2, CV = TRUE)
> attributes(z)

names
[1] "class" "posterior" "terms" "call" "xlevels"

Obtengamos las probabilidades a posteriori.

> z$posterior[1:10, ]

ausencia de cristales presencia de cristales


1 0.6410723 0.35892766
2 0.8700260 0.12997404
3 0.8483785 0.15162147
4 0.9053400 0.09465995
5 0.5761861 0.42381394
6 0.8967915 0.10320847
7 0.2665533 0.73344672
8 0.8239856 0.17601445
9 0.8961114 0.10388860
10 0.7538165 0.24618354

y las clasificaciones para cada los distintos casos.

> z$class[1:10]

[1] ausencia de cristales ausencia de cristales ausencia de cristales


[4] ausencia de cristales ausencia de cristales ausencia de cristales
[7] presencia de cristales ausencia de cristales ausencia de cristales
[10] ausencia de cristales
Levels: ausencia de cristales presencia de cristales

Las probabilidades a priori corresponden con proporciones observadas.

> z1 = lda(GRUPO ~ CALCIO + CONDUC + GRAV + OSMO + PH + UREA, CV = TRUE)

Las probabilidades a posteriori son ahora

> z1$posterior[1:10]

[1] 0.7042676 0.8992456 0.8818036 0.9272842 0.6444699 0.9205435 0.3264031


[8] 0.8619128 0.9200059 0.8032534

PDF Rcode

Nota de R 44 (notaR105) Con los datos de los cristales en la orina realizamos


un analisis discriminante cuadratico en donde no asumimos una matriz de cova-
rianzas comun.

> z = qda(GRUPO ~ CALCIO + CONDUC + GRAV + OSMO + PH + UREA, prior = c(1,


+ 1)/2, CV = TRUE)

Podemos ver las probabilidades a posteriori.

> z$posterior[1:10, ]

9
ausencia de cristales presencia de cristales
1 0.7658585 0.23414150
2 0.9465173 0.05348267
3 0.9718836 0.02811645
4 0.9811643 0.01883569
5 0.5413410 0.45865904
6 0.9434295 0.05657054
7 0.2934976 0.70650235
8 0.9161927 0.08380735
9 0.8622328 0.13776719
10 0.9597205 0.04027955

Volvemos a realizar un analisis discriminante pero modificamos las probabilida-


des a priori. Tomamos como probabilidades a priori las frecuencias observadas en
la muestra.

> z1 <- qda(GRUPO ~ CALCIO + CONDUC + GRAV + OSMO + PH + UREA,


+ CV = TRUE)

Y podemos ver las nuevas probabilidades a posteriori.

> z1$posterior[1:10, ]

ausencia de cristales presencia de cristales


1 0.8134756 0.18652440
2 0.9593444 0.04065560
3 0.9787634 0.02123661
4 0.9858064 0.01419361
5 0.6114531 0.38854692
6 0.9569634 0.04303655
7 0.3564571 0.64354291
8 0.9357994 0.06420063
9 0.8929890 0.10701104
10 0.9694830 0.03051696

PDF Rcode

5.5. Analisis discriminante con mas de dos pobla-


ciones normales
Supongamos que tenemos unas probabilidades Pga priori (i) de que el caso per-
tenezca al grupo i con i = 1, . . . , g (obviamente i=1 (i) = 1). Si x son las carac-
tersticas de un caso entonces vamos a asumir que x tiene una distribucion normal
multivariante con media i y matriz de varianzas i en la clase i. Su densidad de
probabilidad viene dada por

1
f (x | i , i ) = (2)d/2 | i |1/2 exp{ (x i ) 1
i (x i )}. (5.11)
2
Utilizando el teorema de Bayes tenemos que las probabilidades a posteriori vienen
dadas por
(i)f (x | i , i )
(i | x) = Pg . (5.12)
j=1 (j)f (x | j , j )

10
Un metodo de clasificacion consiste en clasificar al individuo con caractersticas
x en la clase o grupo tal que la probabilidad a posteriori (i | x) es maxima o lo
que es lo mismo: clasificamos en el grupo tal que

(i)f (x|i , i ) = max j f (x|j , j ).


j

Obviamente, habitualmente no conocemos los parametros (i , i ) de las distintas


clases por lo que hemos de estimarlos.
Supongamos que tenemos ni individuos en la clase i y los vectores de carac-
tersticas son los vectores columna xij Rd (con i = 1, . . . , g y j = 1, . . . , ni ).
Denotamos Pni Pg Pni
j=1 xij i=1 j=1 xij
xi = , x = (5.13)
ni n
Pg
donde n = i=1 ni . Sea Si la matriz de varianzas o de dispersion de la clase i, es
decir, Pni
j=1 (xij xi )(xij xi )
Si = . (5.14)
ni 1
El vector i es estimado mediante i = xi . En cuanto a la estimacion de las matrices
i se utilizan dos estimadores. En el caso en que asumamos que todas son iguales
entonces el estimador de = 1 = . . . = g es = Sp donde
Pg
1)Si
i=1 (ni
Sp = .
ng

Si no asumimos que las distintas matrices de varianzas son iguales entonces cada
i es estimada mediante Si .
Es claro que el procedimiento indicado en la ecuacion 5.5 no es aplicable pues
no conocemos los parametros. Veamos como queda el procedimiento en las dos
situaciones posibles: asumiendo igualdad de las matrices de covarianzas y asumiendo
que son distintas.
Bajo la hipotesis de matriz de varianza comun tendremos que

1
log[(i)f (x|xi , Sp )] = log (i) + c (x xi ) S1
p (x xi ).
2

Le quitamos a log[(i)f (x|xi , Sp )] la parte que no depende de i dada por c 12 x S1


p x
y obtenemos la funcion

1
Li (x) = log (i) + xi S1
p (x xi ).
2
Asignamos x al grupo que tiene un valor mayor de la funcion Li (x). Estas funciones
reciben el nombre de funciones discriminantes. Observemos que las diferencias entre
distintas funciones Li son hiperplanos y por ello se habla de analisis discriminante
lineal.
En el caso en que no se asume una matriz de varianzas comun entonces
la regla de clasificacion consiste en clasificar donde es maxima la siguiente funcion

Qi (x) = 2 log (i) log |Si | (x xi ) Si1 (x xi ). (5.15)

Notemos que el ultimo termino no es mas que la distancia de Mahalanobis de x al


centro estimado de la clase, xi . La diferencia entre las funciones Qi para dos clases
distintas es una funcion cuadratica y por ello el metodo recibe el nombre de analisis
discriminante cuadratico.

11
5.6. Valoracion del procedimiento de clasificacion
Nuestros datos son (xi , yi ) con i = 1, . . . , n siendo xi el vector de caracterstica
del individuo y denotando yi la clase poblacion o grupo al que pertenece realmente
el individuo. Tenemos unas probabilidades a posteriori (j|x) para cada x que nos
queramos plantearla. Clasificamos x en la clase j tal que tiene maxima probabilidad
de las posibles. Pero el metodo as construido, va bien o es un desastre? Parece
que todos coincidimos en que ir bien quiere decir clasificar a los individuos en los
grupos a los que realmente pertenecen.
Una primera practica que pretende valorar la probabilidad (y por lo tanto la
frecuencia de veces que ocurre) de una clasificacion correcta es, una vez estimadas
las probabilidades a posteriori para los propios elementos de la muestra. Esto es,
nos planteamos clasificar a los individuos utilizados para construir el procedimiento
de clasificacion. Tendremos para cada data, yi , el grupo al que pertenece e yi el
grupo en el que lo clasificamos. Podemos considerar una valoracion del resultado de
la clasificacion la siguiente cantidad,
n
X yi ,y i
I= , (5.16)
i=1
n

donde y,y = 1 si y = y y cero en otro caso. La cantidad definida en 5.16 es de


uso habitual en la literatura de reconocimiento de patrones. Es, sin duda, un modo
razonable de valorar la calidad del procedimiento de clasificacion. Se queda pobre.
Al menos parece insuficiente. Como nos equivocamos cuando clasificamos? La si-
guiente opcion habitual es utilizar la tabla de clasificacion en donde cruzamos los
valores (yi , yi ). En esta tabla tendremos en la fila (r, c) el numero de casos que ori-
ginalmente son de la clase r y los hemos clasificado en el grupo c. Valorando la tabla
de clasificacion podemos valorar el metodo de clasificacion. Es importante tener en
cuenta aqu que no todos los errores de clasificacion tienen la misma importancia.
Independientemente de la valoracion numerica que hagamos del procedimiento
de clasificacion hemos de tener en cuenta sobre que casos estamos realizando es-
ta valoracion. Si un mismo caso lo utilizamos para construir el procedimiento de
valoracion y lo volvemos a utilizar para clasificarlo estamos sesgando la valoracion
del procedimiento a favor del mismo. Un procedimiento de clasificacion siempre ira
mejor con los casos que utilizamos para construirlo y peor sobre otros casos. Hemos
de intentar corregirlo.
Una primera idea es dejar uno fuera cada vez. Para cada j consideramos toda
la muestra menos xj . Utilizando el resto de la muestra estimamos los vectores de
medias y las matrices de covarianzas y, finalmente, las probabilidades a posteriori
del individuo j en cada clase. Lo clasificamos del modo habitual. Repetimos el
procedimiento para cada j y construimos la tabla correspondiente. En ingles es la
tecnica conocida como leaving one out. Realmente el metodo de clasificacion que
valoramos en cada ocasion no es exactamente el mismo pero no es muy diferente. En
cada ocasion solamente estamos prescindiendo de un caso y los vectores de medias
y matrices de covarianzas no se modifican mucho. Estamos valorando esencialmente
el mismo metodo.
Una segunda opcion; mejor en su validez peor en sus necesidades. Si tenemos una
muestra de tamano n elegimos una muestra sin reemplazamiento de tamano m. Los
m datos seleccionados son utilizadas para estimar las probabilidades a posteriori y
los n m restantes son clasificados y podemos valorar las distintas proporciones de
error. Es una estimacion del error basada en un metodo de aleatorizacion. Si elegimos
las sucesivas muestras con reemplazamiento tendramos un metodo bootstrap.
Nota de R 45 (notaR300) Consideremos los datos iris tratados originalmente
por Fisher. Vemos como se utiliza una muestra para estimar las matrices de co-

12
varianzas y los vectores de medias mientras que clasificamos a los individuos no
utilizados en la estimacion de los parametros. Se utilizan los datos iris de Fisher.

> library(MASS)
> data(iris3)
> Iris <- data.frame(rbind(iris3[, , 1], iris3[, , 2], iris3[,
+ , 3]), Sp = rep(c("s", "c", "v"), rep(50, 3)))

Tomamos una muestra y con esta muestra estimamos los vectores de medias y
la matriz de covarianzas.

> train <- sample(1:150, 75)


> table(Iris$Sp[train])
> z <- lda(Sp ~ ., Iris, prior = c(1, 1, 1)/3, subset = train)

Con los estimadores podemos ahora clasificar los demas datos de la muestra.

> predict(z, Iris[-train, ])$class

[1] s s s s s s s s s s s s s s s s s s s s s s s s s s s c c c c c c c c v c c
[39] c c v c c c c c c c c v v v v v v v v v v v v v v v v v c v v v v v v v v
Levels: c s v

PDF Rcode

Nota de R 46 (notaR107) Vamos a analizar el banco de datos de la diabetes. En


este caso pretendemos clasificar entre tres grupos: no diabeticos, diabetes clnica y
diabetes manifiesta. Realizamos un analisis discriminante lineal (asumiendo matriz
de varianzas comun) y un analisis discriminante cuadratico.
Realizamos el analisis discriminante.

> z = lda(TIPO ~ PESO + GPB + GAREA + IAREA + SSPG, CV = TRUE)

Calculamos la tabla de clasificacion correcta (o incorrecta segun se mire. En la


diagonal principal aparecen los casos correctamente clasificados mientras que fuera
de la diagonal principal tenemos los casos que no hemos clasificado correctamente.

> table(TIPO, z$class)

TIPO diabetes manifiesta diabetes quimica control


diabetes manifiesta 26 6 1
diabetes quimica 0 30 6
control 0 3 73

Vamos a probar ahora realizando un analisis discriminante cuadratico.

> z1 = qda(TIPO ~ PESO + GPB + GAREA + IAREA + SSPG, CV = TRUE)

Y volvemos a calcular la tabla de clasificacion.

> table(TIPO, z1$class)

TIPO diabetes manifiesta diabetes quimica control


diabetes manifiesta 30 3 0
diabetes quimica 3 29 4
control 0 4 72

13
No parece que mejoren mucho los resultados de la clasificacion. Tambien podemos
comparar ambas clasificaciones.

> table(z$class, z1$class)

diabetes manifiesta diabetes quimica control


diabetes manifiesta 26 0 0
diabetes quimica 7 30 2
control 0 6 74

PDF Rcode

Nota de R 47 (notaR149) Seguimos con los datos de la orina. Notemos que con-
sideramos probabilidades a priori correspondientes a las proporciones en la muestra.
Nos limitamos a construir la tabla de clasificacion.
Suponemos matrices de covarianzas iguales y probabilidades a priori dadas por
las proporciones de cada clase en la muestra.

> z1 = lda(GRUPO ~ CALCIO + CONDUC + GRAV + OSMO + PH + UREA, CV = TRUE)

Construimos la tabla de clasificaciones.

> table(GRUPO, z1$class)

GRUPO ausencia de cristales presencia de cristales


ausencia de cristales 42 2
presencia de cristales 14 19

PDF Rcode

Nota de R 48 (notaR139) Consideramos unos datos de correo electronico. El


objetivo del analisis es decidir si el correo es basura o no basandonos en informacion
de dicho correo. Estos datos se pueden encontrar en [? ].
Realizamos un analisis discriminante linear y un analisis cuadratico. Vemos que
el lineal nos proporciona mejores resultados.

> library(MASS)
> x = read.table(file = "../data/spambase_data", sep = ",")
> attach(x)
> xnam <- paste("V", 1:57, sep = "")
> (fmla = as.formula(paste("y ~ ", paste(xnam, collapse = "+"))))
> y = x[, 58]

Realizamos el analisis discriminante lineal.

> z = lda(fmla, data = x, prior = c(1, 1)/2, CV = T)

La tabla de clasificacion es la siguiente.

> table(V58, z$class)

V58 0 1
0 2627 161
1 267 1546

Realizamos el analisis discriminante cuadratico y obtenemos la nueva tabla de


clasificacion.

14
> z = qda(fmla, data = x, prior = c(1, 1)/2, CV = T)
> table(V58, z$class)
V58 0 1
0 2086 695
1 86 1723
Vamos a realizar una valoracion de los resultados de clasificacion con el analisis
discriminante lineal utilizando remuestreo. Elegimos la muestra de entrenamiento
como una seleccion aleatoria de los datos.
> entrenamiento = sample(nrow(x), 2000)
Vemos la distribucion del correo en la muestra de entrenamiento.
> table(y[entrenamiento])
0 1
1193 807
Realizamos el analisis discriminante lineal.
> z = lda(fmla, data = x, prior = c(1, 1)/2, subset = entrenamiento)
Vemos la tabla de clasificacion sobre los datos de entrenamiento.
> table(predict(z, x[entrenamiento, ])$class, y[entrenamiento])
0 1
0 1122 111
1 71 696
Vemos la tabla de clasificacion sobre el resto de los datos.
> table(predict(z, x[-entrenamiento, ])$class, y[-entrenamiento])
0 1
0 1493 132
1 102 874
Repetimos en muestras con reemplazamiento.
> entrenamiento = sample(nrow(x), 2000, replace = T)
> table(y[entrenamiento])
0 1
1218 782
> z = lda(fmla, data = x, prior = c(1, 1)/2, subset = entrenamiento)
Vemos la tabla de clasificacion sobre los datos de entrenamiento.
> table(predict(z, x[entrenamiento, ])$class, y[entrenamiento])
0 1
0 1163 116
1 55 666
Vemos la tabla de clasificacion sobre el resto de los datos.
> table(predict(z, x[-entrenamiento, ])$class, y[-entrenamiento])
0 1
0 1692 175
1 104 1000
PDF Rcode

15
5.7. Variables discriminantes canonicas o discrimi-
nantes lineales
Vamos a estudiar una tecnica de reduccion de la dimension relacionada con el
planteamiento que del analisis discriminante lineal hizo Fisher. Consideramos las
matrices W y B definidas como
g X
X ni g
X
W = (xij xi )(xij xi ) = (ni 1)Si , (5.17)
i=1 j=1 i=1

y
g X
X ni g
X
B= (xi x )(xi x ) = ni (xi x )(xi x ) (5.18)
i=1 j=1 i=1

Notemos que
W
Sp = (5.19)
ng
Estas matrices reciben el nombre de matrices intra grupos y entre grupos respectiva-
mente. Son las versiones matriciales de las sumas de cuadrados intra y entre grupos
habituales en analisis de la varianza.
Es claro que cuando mas agrupados esten los datos dentro de los grupos y mas
separados esten para grupos distintos tendremos que la magnitud de W ha de ser
menor que la de B. Supongamos que reducimos las observaciones multivariantes xij
a datos univariantes mediante tomando zij = c xij . Las sumas de cuadrados intra
y entre vendran dadas por c W c y c Bc. El cociente Fc = c Bc/c W c nos compara
la variabilidad intra con la variabilidad entre. Fisher (1936) introdujo el analisis
discriminante lineal buscando el vector c tal que el cociente Fc sea el mayor posible.
Ese fue su objetivo inicial.
La matriz W es suma de matrices semidefinidas positivas por lo que es defi-
nida positiva y consideramos su descomposicion de Cholesky dada por W = T T .
Tomamos b = T c. Se tiene
c Bc b (T )1 BT 1 b b Ab
Fc = = = = a Aa, (5.20)
c W c b b b b
donde a = b/ k b k, esto es, a tiene modulo unitario y A = (T )1 BT 1 . Se nos
plantea el problema de maximizar a Aa con la restriccion de k a a k= 1. Por resulta-
dos estandar del algebra lineal se tiene que a1 es el vector propio de A con el mayor
propio 1 verificando que 1 = a1 Aai . Hemos encontrado una combinacion lineal
que, en el sentido que hemos indicado, es optima a la hora de separar los grupos.
Parece logico buscar la siguiente combinacion lineal que verifique el mismo criterio
de optimalidad pero que el vector correspondiente sea ortogonal al ya calculado. Nos
planteamos pues maximizar a Aa con la restriccion de k a k= 1 y que sea ortogonal
con el anterior. La solucion viene dada por el vector propio de A asociado a su se-
gundo valor propio por orden de magnitud, 2 (Aa2 = 2 a2 por lo que 2 = a2 Aa2 ).
Procedemos del mismo modo obteniendo k direcciones ortogonales que nos dan las
combinaciones optimas que separan a los grupos. El valor de k es el mnimo entre
el numero de grupos menos uno, g 1 y el numero de datos n, k = mn g 1, n.
Notemos que los sucesivos ar constituyen una base ortonormal tales que

(T )1 BT 1 ar = Aar = r ar ,

con 1 2 . . . k . Si multiplicamos por la izquierda por la matriz T 1 (n


g)1/2 se deduce que
W 1 Bcr = r cr ,

16
donde cr = (n g)1/2 T 1 ar . En consecuencia W 1 B tiene valores propios r y
vectores propios cr con r = 1, . . . , k. Ademas los vectores ar = T cr (n g)1/2
constituyen una base ortonormal. Consideremos la matriz C que tiene por fila r-
esima el vector cr . Sea zij = Cxij . Estos valores reciben el nombre de coordenadas
discriminantes. Vemos que estas coordenadas pretenden destacar las diferencias
entre los grupos con un orden decreciente de relevancia. Tenemos que decidir con
cuantas de ellas nos quedamos. Es habitual estudiar los cocientes
Pj
i=1 i
Pk (5.21)
i=1 i

como funcion de j y quedarse con las coordenadas discriminantes hasta un j proximo


a uno.
Es muy importante darse cuenta que las coordenadas discriminantes estan tipi-
ficadas y son independientes entre ellas. Recordemos que W = T T y que la matriz
de covarianzas agrupada viene dada por Sp = W/(g 1). Por tanto tendremos que

cr Sp cs = (n g)1 cr T T cs = ar as = rs , (5.22)

donde rs = 1 si r = s y cero en otro caso. Tenemos pues que CSp C = Ik .


Asumiendo que las matrices de dispersion son iguales para los distintos grupos
tendremos que cov(cr xij , cs xij ) = cr cs y reemplazando por Sp tenemos que los
zij tienen covarianzas muestrales nulas y varianzas muestrales unitarias.

Nota de R 49 (notaR108) Repetimos el analisis discriminante tanto para los


datos de cristales en la orina como para los datos de la diabetes.
En la siguietne figura vemos un histograma de la primera variable discriminante
canonica en el primer y segundo grupo.

> plot(z)
0.0 0.4 0.8

2 1 0 1 2 3 4

group ausencia de cristales


0.0 0.4 0.8

2 1 0 1 2 3 4

group presencia de cristales

17
Para los datos de las diabetes podemos tendremos dos variables discriminantes
canonicas. Mostramos dos posibles representaciones graficas.

> plot(z)
4

diabetes manifiesta
diabetes manifiesta
diabetes manifiesta
diabetes manifiesta
diabetes manifiesta
diabetes manifiesta
control
2

diabetes manifiesta control


diabetes
diabetes manifiesta
manifiesta control
diabetes control
control
control
diabetes manifiesta diabetesmanifiesta
manifiesta control
control
control
control
control
control
control
control
control
control
control
diabetes
diabetes manifiesta manifiesta diabetes manifiesta
control control
control
control
diabetes manifiesta control
controlcontrol
control
control
control
control
control
control
control control
control
control
control
control
control control
control
control
diabetesdiabetes manifiesta
manifiesta diabetes diabetes
manifiesta
diabetes
quimica
diabetes
manifiesta
control
control
quimica control
control
control
control
control
control
control control
diabetes
diabetesmanifiesta
manifiesta control
controlcontrol
diabetes quimicacontrol
control
controlcontrol
LD2

diabetes manifiesta diabetes quimica control


control control
control
diabetes manifiesta
diabetes manifiesta diabetes
diabetes quimica
quimica controlcontrol
diabetes quimica
diabetes quimica
control control
control
control
control
diabetes manifiesta
diabetes manifiesta diabetes quimica
diabetes quimica
diabetes control
quimica
diabetes quimica
diabetes manifiesta
diabetes manifiesta diabetes diabetes
quimica quimica
diabetes quimica
diabetes
diabetes
diabetes quimica
quimica
quimica
diabetes manifiesta diabetes quimica
control
control
diabetes quimica
diabetes
diabetesquimica
quimica
diabetes
diabetes diabetes
quimica
diabetes
manifiesta quimica
quimica
diabetes quimica
diabetes
diabetes manifiesta diabetesmanifiesta
quimica
diabetes quimica
2

diabetes quimica control


diabetes
diabetes
diabetes quimica
quimica
quimica
diabetes quimica
diabetes quimica
diabetes quimica
diabetes quimica
4

6 4 2 0 2

LD1

> pairs(z)

18
4 2 0 2

4
control
control
control
control
control
control
control
control
control
control
control
control
controlcontrol
control
control
control
control
control
control control
control
control
control
control
control control
control
control
control
control
control
control
control
control
control control
control
control
control
control
control
control
control
control
control
control
control
control
control
control control
control
control
control
control

2
control
controlcontrol
control
diabetes
control control
control
control
control quimica
diabetes
diabetes
control control
quimica
control
quimica
diabetes quimica
diabetes
diabetes
diabetes
control quimica
quimica
diabetes quimica
quimica
diabetes manifiesta
diabetes
diabetes quimica
diabetes
diabetes quimica
quimica
diabetes
quimica
diabetes
diabetes quimica
diabetes
quimicaquimica quimica
diabetes quimica
diabetes quimica
diabetes diabetes
quimica quimica
diabetes
diabetes
diabetes quimica
diabetes quimica
quimica
diabetes quimica
manifiesta
diabetes
diabetes quimica
quimica diabetes manifiesta

0
diabetes quimica
diabetes diabetes
quimica
diabetes quimica
quimica
diabetes quimica
diabetes quimica
diabetes
diabetes
diabetes diabetes manifiesta
quimica
manifiesta
quimica
LD1 diabetes quimica
diabetesdiabetes manifiesta
manifiesta

2
diabetes manifiesta
diabetes manifiesta
diabetes
diabetes
diabetesmanifiesta
manifiesta
manifiesta
diabetes manifiesta
diabetes
diabetes
diabetes diabetesmanifiesta
manifiesta
manifiesta
manifiesta
diabetes manifiesta
diabetes diabetes manifiesta
manifiesta
diabetes manifiesta diabetes manifiesta

4
diabetes diabetes
manifiesta
diabetes manifiesta
manifiesta
diabetes manifiesta
diabetes manifiesta
diabetesdiabetes
manifiestadiabetes manifiesta
manifiesta
diabetes manifiesta

6
diabetes manifiesta
diabetes manifiesta

diabetes
diabetes manifiesta
manifiesta
diabetes manifiesta
diabetes manifiesta
diabetes manifiesta
diabetes manifiesta control
2

diabetes manifiesta control


diabetes
diabetes manifiesta
manifiesta control
control
diabetes
diabetes manifiesta
diabetes manifiesta manifiesta control
control
control
control
control
control
control
control
control
control
control
control
diabetesdiabetes manifiesta
manifiesta
diabetes manifiesta control
diabetes manifiesta
controlcontrol
control
control
control
control
control
control
control
control
control
control
control
control
control
control
control
control
control
control
control
diabetes
diabetes diabetesdiabetes
manifiesta
manifiesta
diabetes control
quimica
manifiesta
diabetes control
manifiesta control
control
control
control
quimica
control
control
control
diabetes control
control
control
control
control
quimica
control
control
diabetesdiabetes
diabetes manifiesta
manifiesta control
control
LD2
0

manifiesta diabetes
diabetes control
quimica control
control
control
control
quimica
diabetes manifiesta
diabetes manifiesta
diabetes
diabetesquimica
diabetes control
quimica
control
quimica
control
control
control
diabetes
diabetes diabetes
manifiesta
diabetes
manifiesta control
quimica
quimicacontrol
diabetes diabetes
manifiesta
diabetes manifiesta diabetes
diabetes quimica
diabetes
quimica quimica
quimica
diabetes
diabetes
diabetes
diabetesquimica
diabetes quimica
quimica
quimica
quimica
diabetes manifiesta
diabetes
diabetes control
control
quimica
quimica
diabetes
diabetes
diabetes quimica
quimica
quimica
diabetes diabetes quimica
manifiesta
diabetes quimica
diabetes diabetes
diabetes
diabetes manifiesta
manifiesta
quimicaquimica
2

diabetes quimica control


diabetes quimica
diabetesquimica
diabetes quimica
diabetes quimica
diabetes
diabetes quimica
quimica
diabetes quimica
4

6 4 2 0 2 4

PDF Rcode

5.8. Algunos ejemplos

Nota de R 50 (notaR142) En la seccion 12.2 tenemos una descripcion de los


mismos. Realizamos un analisis discriminante en donde a partir de las caracters-
ticas morfologicas pretendemos saber si es una abeja reina o bien es una obrera.

> library(MASS)
> x = read.table(file = "../data/wasp.dat", header = T)
> attach(x)

Aplicamos un analisis discriminante lineal y mostramos los histogramas de la


variable discriminante canonica.

> z = lda(caste ~ TL + WL + HH + HW + TH + TW + G1L + G2Wa, prior = c(1,


+ 1)/2)
> plot(z)

19
0.4
0.2
0.0

4 2 0 2 4

group Q
0.4
0.2
0.0

4 2 0 2 4

group W

Los histogramas muestran que los valores de la variable discriminante son cla-
ramente distintos en cada grupo.
La tabla de clasificacion es la siguiente.

> z = lda(caste ~ TL + WL + HH + HW + TH + TW + G1L + G2Wa, prior = c(1,


+ 1)/2, CV = TRUE)
> table(caste, z$class)

caste Q W
Q 49 1
W 1 49

Mostrando que los resultados de la clasificacion son realmente buenos.


PDF Rcode

Nota de R 51 (notaR144) En la seccion 12.3 tenemos la descripcion de los da-


tos. Basicamente tenemos personas enfermas de cancer y no enfermos y preten-
demos clasificar en estos dos posibles grupos. Pretendemos clasificar a la paciente
como enferma o no de cancer utilizando el resto de las variables.

> library(faraway)
> library(MASS)
> attach(wbca)

Realizamos para ello un analisis discriminante lineal y, como tenemos solamente


dos grupos, mostramos los histogramas de la variable discriminante canonica en cada
uno de los grupos.

> wbca.lda = lda(Class ~ Adhes + BNucl + Chrom + Epith + Mitos +


+ NNucl + Thick + UShap + USize, CV = T)
> table(Class, wbca.lda$class)

20
Class 0 1
0 219 19
1 7 436

Tenemos una muestra bastante grande. Elegimos una muestra de entrenamiento


para estimar las probabilidades a posteriori. Para ellos elegimos al azar 400 mujeres
de la muestra inicial. Mostramos la tabla de clasificacion.

> train = sample(1:nrow(wbca), 400)


> wbca.lda0 = lda(Class ~ Adhes + BNucl + Chrom + Epith + Mitos +
+ NNucl + Thick + UShap + USize, subset = train, CV = T)
> table(wbca.lda0$class[train], Class[train])

0 1
0 34 45
1 67 94

PDF Rcode

NA

21
22
Captulo 6

Componentes principales

Cuando tomamos medidas sobre personas, objetos, empresas, unidades experi-


mentales de un modo generico, se tiende a recoger el maximo de variables posible.
En consecuencia tenemos dimensiones del vector de caractersticas X grandes.
Una opcion consiste en sustituir la observacion original, de dimension d, por k
combinaciones lineales de las mismas. Obviamente pretendemos que k sea mucho
menor que d. El objetivo es elegir k de modo que expresen una proporcion razo-
nable de la dispersion o variacion total cuantificada como la traza de la matriz de
covarianza muestral, tr(S),
Sea X un vector aleatorio de dimension d con vector de medias y matriz
de covarianzas . Sea T = (t1 , t2 , . . . , td ) (los ti indican la i-esima columna de la
matriz) la matriz ortogonal tal que

T T = = diag(1 , . . . , d ), (6.1)

donde 1 2 . . . d 0 son los valores propios de la matriz . Sea

Y = T (X ). (6.2)

Si denotamos la j-esima componente de Y como Yj entonces Yj = tj (X ) con


j = 1, . . . , d. A la variable
p Yj la llamamos la j-esima componente principal de
Y . La variable Zj = j Yj es la j-esima componente principal estandarizada
de Y .
Estas componentes tienen algunas propiedades de gran interes.
Notemos que el vector tj tiene longitud unitaria y, por lo tanto, Yj no es mas
que la proyeccion ortogonal de X en la direccion tj .

Proposicion 1 1. Las variables Yj son incorreladas y var(Yj ) = j .


2. Las variables Zj son incorreladas y con varianza unitaria.

Demostracion.
En cuanto al apartado primero tenemos que

var(Y ) = var(T (X ) = T var(Y )T = T T = .

El segundo apartado es directo a partir del primero.

Se verifica el siguiente resultado.


Teorema 2 Las componentes principales Yj = tj (X ) con j = 1, . . . , d tienen
las siguientes propiedades:

1
1. Para cualquier vector a1 de longitud unitaria, var(a1 X) alcanza su valor ma-
ximo 1 cuando a1 = t1 .

2. Para cualquier vector aj de longitud unitaria tal que aj ti = 0 para i =


1, . . . , j 1, se tiene que var(aj X toma su valor maximo j cuando aj = tj .
Pd Pd
3. j=1 var(Yj ) = j=1 var(Xj ) = traza().

La version muestral de las componentes principales la obtenemos sustituyendo en


lo anterior y por X y respectivamente. Es importante considerar el estimador
de que estamos utilizando (o bien el estimador insesgado donde dividimos por
n 1 o bien el estimador en donde dividimos por n).
Si denotamos por 1 . . . d los valores propios ordenados de y la matriz
T = (t1 , . . . , td ) es la matriz tal que cada columna es el correspondiente vector propio
entonces tenemos las componentes principales muestrales dadas por yj = T (xi x).
La nueva matriz de datos viene dada por

Y = (y1 , . . . , yn ) = T (x1 x, . . . , xn x) (6.3)

Finalmente, si las variables vienen dadas en unidades muy distintas puede ser
conveniente sustituir la matriz de covarianzas (poblacional o muestral) por la co-
rrespondiente matriz de correlaciones. De hecho, una de los inconvenientes de las
componentes principales como un modo de reducir la dimension de los datos es preci-
samente que obtenemos resultados distintos si utilizamos las componentes principa-
les obtenidas a partir de la matriz de covarianzas o bien las componentes principales
obtenidas a partir de la matriz de correlaciones.
A partir de las d variables originales podemos obtener hasta d componentes prin-
cipales. Sin embargo, hemos dicho que pretendemos reducir la dimension del vector
de datos. La pregunta a responder es: con cuantas componentes nos quedamos?
Supongamos que estamos trabajando Pd con la matrizPd de covarianzas
Pd. Hemos
de recordar que var(yj ) = j y que j=1 var(xj ) = j=1 var(yj ) = j=1 j . En
consecuencia se suelen considerar los siguientes cocientes
Pk
j=1 j
Pd , con k = 1, . . . , d,
j=1 j

de modo que, cuando para un cierto valor de k, estamos proximos a la unidad nos
quedamos con ese valor de k. En la version muestral trabajaremos o bien con los
valores propios de la matriz de covarianzas muestral o la matriz de correlaciones
muestrales.

Nota de R 52 (notaR143) Veamos graficamente el significado de las componen-


tes principales si suponemos que tenemos dos variables. Generamos (con [? ]) una
muestra de tamano 100 con una distribucion normal bivariante. Para conseguir que
la matriz de covarianzas sea definida positiva lo que hacemos es considerar la tras-
puesta de la matriz por la propia matriz, A A, siendo A una matriz dada. Generamos
(con el paquete mvtnorm [? ]) y representamos los datos.

> library(mvtnorm)
> sigma0 = matrix(c(1, 6, 6, 16), ncol = 2, byrow = T)
> sigma0 = crossprod(t(sigma0), sigma0)
> x = rmvnorm(n = 100, mean = c(1, 1), sigma = sigma0)
> plot(x)

2
40
20
x[,2]

0
20
40

15 10 5 0 5 10

x[,1]

Ya tenemos los datos generados y podemos calcular las componentes principales.

> x.pc = princomp(x)

Los vectores ortonormales tj son los siguientes

> x.pc$loadings

Loadings:
Comp.1 Comp.2
[1,] 0.318 -0.948
[2,] 0.948 0.318

Comp.1 Comp.2
SS loadings 1.0 1.0
Proportion Var 0.5 0.5
Cumulative Var 0.5 1.0

Representamos las rectas con estos vectores directores.

> plot(x)
> abline(h = 0)
> abline(v = 0)
> abline(a = 0, b = x.pc$loadings[2, 1]/x.pc$loadings[1, 1], lty = 2)

3
40
20
x[,2]

0
20
40

15 10 5 0 5 10

x[,1]

Y ahora un resumen de las varianzas explicadas por cada una de las componen-
tes.

> summary(x.pc)

Importance of components:
Comp.1 Comp.2
Standard deviation 17.9629826 1.183590181
Proportion of Variance 0.9956772 0.004322792
Cumulative Proportion 0.9956772 1.000000000

Es claro que con nos quedaramos con una sola componente. La segunda proporciona
informacion redundante.
PDF Rcode

Nota de R 53 (notaR301) Vamos a realizar unas componentes principales a par-


tir de las cuatro variables de los datos iris.
En principio utilizamos la matriz de covarianzas muestral. Notemos que la fun-
cion princomp utiliza la matriz dividida por el tamano muestral menos uno (n 1).
Empezamos leyendo los datos y seleccionando las columnas adecuadas.

> library(MASS)
> data(iris)
> ir = iris[, 1:4]
> ir.species = c(rep("s", 50), rep("c", 50), rep("v", 50))

Aplicamos unas componentes principales utilizando en lugar de los datos origi-


nales su logaritmo. Notemos que indicamos explcitamente que se utiliza la matriz
de covarianzas y no la de correlaciones. Es la opcion por defecto.

> ir.pca = princomp(log(ir), cor = F)

4
En el siguiente resumen tenemos las desviaciones estandar, las proporciones
de varianza explicada por cada componente y la proporcion acumulada de estas
proporciones.

> summary(ir.pca)

Importance of components:
Comp.1 Comp.2 Comp.3 Comp.4
Standard deviation 1.1427311 0.13789069 0.13480585 0.053629741
Proportion of Variance 0.9702335 0.01412726 0.01350223 0.002136976
Cumulative Proportion 0.9702335 0.98436079 0.99786302 1.000000000

Podemos obtener un diagrama de barras con las varianzas de cada componente


utilizando la funcion plot.

> plot(ir.pca)

ir.pca
1.2
1.0
0.8
Variances

0.6
0.4
0.2
0.0

Comp.1 Comp.2 Comp.3 Comp.4

La base ortonormal con la transformacion la obtenemos con loadings(ir.pca)


Las componentes principales las obtenemos con la funcion predict. Vemos las
componentes de las seis primeras observaciones.

> ir.pc = predict(ir.pca)


> ir.pc[1:6, ]

Comp.1 Comp.2 Comp.3 Comp.4


[1,] -1.6736850 0.02055683 0.06042345 0.015217731
[2,] -1.6688436 -0.06797029 -0.06921821 0.041588345
[3,] -1.7142099 0.02006252 -0.07515646 0.002209602
[4,] -1.6422467 -0.09648282 -0.04725452 -0.046865053
[5,] -1.6773055 0.03675822 0.07085250 -0.013090995
[6,] -0.9833353 0.25757951 0.06701669 -0.002697639

5
Podemos representar las dos primeras componentes principales.

> eqscplot(ir.pc[, 1:2], type = "n", xlab = "Primera componente principal",


+ ylab = "Segunda componente principal")
> text(ir.pc[, 1:2], ir.species)
1.5
1.0
Segunda componente principal

0.5

ss s
ss ss ssss s
s s s cc c v vvvvvvvvv
ss ss c ccc cc
ssssssss cccccc cvvvvvvvvvvvvv
0.0

s
sssss cc c cccccccccccccccvvc vvvvvvvvvv
ccc cc vv v v
s ss ss cccc v
ss
0.5
1.0
1.5

2.0 1.5 1.0 0.5 0.0 0.5 1.0

Primera componente principal

Repetimos el analisis anterior utilizando en lugar de la matriz de covarianzas,


la matriz de correlaciones.

> ir.pca = princomp(log(ir), cor = T)


> summary(ir.pca)

Importance of components:
Comp.1 Comp.2 Comp.3 Comp.4
Standard deviation 1.7124583 0.9523797 0.36470294 0.1656840
Proportion of Variance 0.7331284 0.2267568 0.03325206 0.0068628
Cumulative Proportion 0.7331284 0.9598851 0.99313720 1.0000000

> ir.pc = predict(ir.pca)


> eqscplot(ir.pc[, 1:2], type = "n", xlab = "Primera componente principal",
+ ylab = "Segunda componente principal")
> text(ir.pc[, 1:2], ir.species)

6
c
3

s
c
c
2

c c v
Segunda componente principal

vcc c
c
c
s cc v
s s cc cc
1

s c cv
s s ss ss cc vv v
sss s s cc v cv
ccc cc vv
s cc c cc vc vv v
ss
ss c ccvvc vc
0

ss s s vc v
s
ss
s s
s ss s s
s c c vcv vvv v v v
s c cc vc v v v
s c c vv vv
s sss s v
1

vvc vv v
s ss
s
s
s v
2

s
vv

3 2 1 0 1 2

Primera componente principal

PDF Rcode

7
8
Captulo 7

Analisis de datos categoricos

Este tema esta dedicado al tratamiento de datos categoricos. La referencia biblio-


grafica basica que vamos a seguir es [? ]. Asociado a este texto Laura A. Thomson
ha escrito un manual que reproduce el texto de Agresti con R. Es de un enorme
valor. Se puede conseguir en
Splusdiscrete2

7.1. Variables respuesta categoricas


Una variable categorica tiene una escala de medida que consiste en una serie de
categoras. La variable respuesta o dependiente es categorica mientras que las
variables explicativas, predictoras o independientes pueden ser de cualquier
tipo. Las variables categoricas tienen dos tipos de escalas: nominal y ordinal.
Las distribuciones de probabilidad basicas para el estudio de datos categoricos
son la distribucion binomial, la distribucion multinomial y la distribucion de Poisson.
Aunque ya hemos visto algo de estas distribuciones en el tema 1 es conveniente
ampliar algo lo que vimos all.
Recordemos que una variable aleatoria tiene una distribucion Bernoulli, Y
Bi(1, ), si
P (Y = 1) = , P (Y = 0) = 1 .
Si Y1 , . . . , Yn son
P variables Bernoulli independientes e identicamente distribuidas
entonces Y = ni=1 Yi Bi(n, ). La funcion de probabilidad de la suma es
 
n y
P (Y = y) = (1 )ny ,
y
y decimos que la variable Y tiene una distribucion binomial.
En cuanto a los momentos de estas variables tenemos que E(Yi ) = mientras
que var(Yi ) = (1 ) de donde E(Y ) = n, y var(Y ) = n(1 ).
Si en lugar de dos resultados en cada prueba suponemos que tenemos c resultados
posibles con c > 2 y denotamos por para la prueba i como yij = 1 si la prueba i
tiene el resultado en la categora j y cero en otro caso entonces el resultado de la
i-esima prueba la podemos expresar como yi = (yi1 , . . . , yic ) y el numero de pruebas
que han dado el resultado j viene dada por
Xn
nj = yij
i=1

donde j = 1, . . . , c. El vector aleatorio (n1 , . . . , nc ) se dice que tiene una distribucion


multinomial y lo denotamos como
(n1 , . . . , nc ) M ultinomial(n; 1, . . . , c ).

1
Su funcion de probabilidad conjunta viene dada por
n!
p(n1 , . . . , nc ) = n1 . . . cnc .
n 1 ! . . . nc ! 1
Finalmente la distribucion de Poisson o distribucion de los sucesos raros se de-
nota por Y P o(), y tiene por funcion de probabilidad

e y
p(y) = con y = 0, 1, . . .
y!
Es bien conocido que su media y varianza son iguales a : EY = var(Y ) = .

Nota de R 54 (notaR501) En R se trabaja con las distribuciones de probabili-


dad mediante grupos de cuatro funciones. Por ejemplo, supongamos que estamos
trabajando con la binomial. Entonces la funcion de probabilidad es dbinom, la fun-
cion de distribucion es pbinom, la inversa de la funcion de distribucion que nos
da los percentiles es qbinom y, finalmente, podemos generar datos con distribucion
binomial mediante la funcion rbinom. Consideramos una binomial con 10 pruebas
y una probabilidad de exito en cada prueba de 0,23. Su funcion de probabilidad la
obtendramos la podemos obtener con

> dbinom(0:10, size = 10, prob = 0.23)

[1] 7.326680e-02 2.188489e-01 2.941670e-01 2.343149e-01 1.224828e-01


[6] 4.390291e-02 1.092821e-02 1.865298e-03 2.089376e-04 1.386888e-05
[11] 4.142651e-07

su funcion de distribucion con

> pbinom(0:10, size = 10, prob = 0.23)

[1] 0.0732668 0.2921157 0.5862827 0.8205976 0.9430804 0.9869833 0.9979115


[8] 0.9997768 0.9999857 0.9999996 1.0000000

La inversa de la funcion de distribucion, es decir, los percentiles se obtienen con

> qbinom(0.3, size = 10, prob = 0.23)

[1] 2

Y finalmente podemos generar valores con distribucion binomial del siguiente


modo.

> rbinom(100, size = 10, prob = 0.23)

[1] 2 1 2 3 3 3 0 1 3 3 1 5 3 1 1 4 2 2 2 3 4 4 2 1 4 1 1 0 1 2 0 2 0 0 2 2 2
[38] 2 4 3 2 3 1 5 0 2 3 3 2 1 1 1 0 2 3 2 1 2 3 0 2 3 3 1 2 1 3 4 3 3 3 2 4 2
[75] 2 3 0 3 2 2 1 3 1 2 2 0 0 4 2 2 3 2 2 6 3 0 0 4 3 2

Analogamente procedemos con la distribucion multinomial.

> dmultinom(c(3, 7, 2), prob = c(0.1, 0.2, 0.8))

[1] 2.067297e-05

> dmultinom(c(1, 2, 8), prob = c(0.1, 0.2, 0.8))

[1] 0.1164302

2
> rmultinom(10, size = 12, prob = c(0.1, 0.2, 0.8))

[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 0 3 0 0 1 2 0 1 1 3
[2,] 3 3 0 1 3 3 1 2 4 3
[3,] 9 6 12 11 8 7 11 9 7 6

Y finalmente para una distribucion de Poisson.

> dpois(0:30, lambda = 12)

[1] 6.144212e-06 7.373055e-05 4.423833e-04 1.769533e-03 5.308599e-03


[6] 1.274064e-02 2.548128e-02 4.368219e-02 6.552328e-02 8.736438e-02
[11] 1.048373e-01 1.143679e-01 1.143679e-01 1.055704e-01 9.048890e-02
[16] 7.239112e-02 5.429334e-02 3.832471e-02 2.554981e-02 1.613672e-02
[21] 9.682032e-03 5.532590e-03 3.017776e-03 1.574492e-03 7.872460e-04
[26] 3.778781e-04 1.744053e-04 7.751345e-05 3.322005e-05 1.374623e-05
[31] 5.498491e-06

> ppois(10:20, lambda = 12)

[1] 0.3472294 0.4615973 0.5759652 0.6815356 0.7720245 0.8444157 0.8987090


[8] 0.9370337 0.9625835 0.9787202 0.9884023

> qpois(seq(0.1, 0.9, 0.1), lambda = 12)

[1] 8 9 10 11 12 13 14 15 17

> rpois(50, lambda = 12)

[1] 11 16 15 13 12 10 12 14 12 7 14 9 7 12 10 12 9 15 13 10 8 11 12 10 8
[26] 14 8 12 15 15 10 15 12 17 13 14 11 11 7 12 14 9 15 16 12 6 14 7 10 12

PDF Rcode

En lo que sigue el siguiente resultado es muy importante.

Teorema 3 Si Y1 , . . . , Yc son variables Poisson independientes con medias 1 , . . . c


entonces
c
X n!
P (Y1 = n1 . . . , Yn = yn | Yi = b) = n1 . . . cnc
i=1
n 1 ! . . . nc ! 1

con
i
i = Pc .
i=1 j

En otras palabras, la distribucion conjunta de variables independientes y con dis-


tribucion Poisson condicionada a la suma total es una multinomial.

7.2. Inferencia con la distribucion binomial


En esta seccion nos ocupamos del estudio de la distribucion binomial, su vero-
similitud y los contrastes basicos relacionados con ella. Denotamos la probabilidad
de exito por . Si consideramos una prueba Bernoulli entonces la funcion de proba-
bilidad es
f (y|) = y (1 )1y

3
donde y = 0, 1. Para n pruebas Bernoulli tendremos como funcion de verosimilitud
n
Y Pn Pn
L(; y) = yi (1 )1yi = i=1 yi
(1 )n i=1 yi

i=1

donde y = (y1 , . . . , yn ). La logverosimilitud es


X
n   n
X 
l(; y) = yi log + n yi log(1 ).
i=1 i=1

Estas funciones son nuestro instrumento basico para el analisis estadstico de este
tipo de datos.

7.2.1. Contraste de hipotesis simples


Tenemos una moneda (un euro para mas detalles) y pretendemos valorar si es
una moneda correcta. En otras palabras, si las probabilidades de obtener cara o
cruz cuando lancemos la moneda son las mismas e igual a 1/2. Interpretando exito
como cara lo que nos planteamos es un contraste simple sobre la probabilidad de
exito. En concreto un contraste donde la hipotesis nula es que dicha probabilidad
vale 1/2 frente a una alternativa de que sea distinta.
Formulandolo de un modo mas generico tenemos el siguiente contraste:

H0 : = 0
H1 : 6 = 0 .

Las opciones para constrastar son (como siempre) los test de Wald, el test score y
el test del cociente de verosimilitudes.
El estadstico de Wald viene dado por

0 0
zW = =p ,
SE (1 )/n

mientras que el estadstico score es

0
zS = p .
0 (1 0 )/n

Es preferible el estadstico score pues su distribucion se aproxima mas a la normal.


El tercero de la terna, el test del cociente de verosimilitudes, adopta la siguiente
expresion
 
y ny
2(L0 L1 ) = 2 y log + (n y) log .
n0 n n0
Bajo H0 , el numero esperado de exitos y fracasos son n0 y n(1 0 ) respectiva-
mente. Esto es lo que esperamos pero lo que realmente observamos son y exitos y
n y fracasos. Por ello, la expresion anterior puede expresarse de un modo resumido
como
X Observado
2 Observado log .
Esperado
donde la suma se hace sobre las dos categoras que tenemos, exitos y fracasos. La
distribucion asintotica bajo la hipotesis nula de este estadistico o distribucion nula,
es una ji-cuadrado con un grado de libertad, 2 (1).

4
7.2.2. Intervalo de confianza
Una vez hemos visto como son los contrastes para la hipotesis simple pode-
mos construir el intervalo de confianza correspondiente como aquellos valores del
parametro para los cuales no rechazamos la correspondiente hipotesis nula simple.
Facilmente tenemos que el intervalo de confianza basado en el test de Wald sera:

{0 : |zW | < z/2 },

o lo que es lo mismo, r
(1 )
z/2 .
n
Este intervalo de confianza no es muy exacto cuando n es pequeno sobre todo para
valores de proximos a 0 o a 1.
Si utilizamos el test score entonces los extremos los obtenemos resolviendo las
ecuaciones
0
p = z/2 .
0 (1 0 )/n
La expresion final es bastante compleja pues tenemos una funcion cuadratica en 0 .
Este intervalo de confianza es mas exacto que el intervalo de Wald. El intervalo de
confianza del cociente de verosimilitudes sera

{0 : 2(L0 L1 ) 21 ()}

Podemos construir un intervalo de confianza exacto. En este caso el nivel de


confianza (o probabilidad de confianza) es mayor o igual al establecido pero no
tenemos asegurada la igualdad.

Nota de R 55 (notaR502) Consideramos los datos scoremaster ??.


Nos fijamos en la variable sexo. Es una variable dicotomica. Tenemos una mues-
tra de personas que son intervenidas sin ingreso hospitalaria y nos planteamos es-
timar la fraccion de mujeres (o de hombres equivalentemente). Entendemos como
exito (codificado con 1) ser mujer (no se admiten bromas sobre el tema). Empezamos
con el intervalo de confianza de Wald.
Los conteos de hombres y mujeres son

> table(sexo)

sexo
0 1
329 590

El conteo de mujeres y el total de casos lo podemos obtener como

> tsexo = table(sexo)


> tsexo[2]

1
590

> sum(tsexo)

[1] 919

y finalmente el intervalo de confianza de Wald vendra dado por

> library(Hmisc, T)

5
> binconf(x = tsexo[2], n = sum(tsexo), method = "asymptotic")

PointEst Lower Upper


0.6420022 0.6110067 0.6729977

El intervalo score para el parametro de una binomial lo vamos a obtener mediante


dos opciones distintas. La primera opcion sera

> res = prop.test(x = tsexo[2], n = sum(tsexo), conf.level = 0.95,


+ correct = F)
> res$conf.int

[1] 0.6104745 0.6723477


attr(,"conf.level")
[1] 0.95

mientras que la segunda opcion sera

> library(Hmisc, T)

> binconf(x = tsexo[2], n = sum(tsexo), alpha = 0.05, method = "wilson")

PointEst Lower Upper


0.6420022 0.6104745 0.6723477

El test exacto lo podemos obtener con

> res = binom.test(x = tsexo[2], n = sum(tsexo))


> res$conf.int

[1] 0.6100464 0.6730444


attr(,"conf.level")
[1] 0.95

PDF Rcode

7.3. Inferencia para la multinomial


En una distribucion multinomial los parametros a estimar son las probabilidades
de cada una de las categoras, (1 , . . . , c ). Sin embargo, hemos de tener en cuenta
P
que c = 1 c1i=1 i por lo que realmente tenemos c 1 parametros a estimar.
Notemos que la verosimilitud es proporcional a
c
Y X
n
j j donde j 0, j = 1.
j=1 j

Facilmente se comprueba que los estimadores maximo verosmiles vienen dados por
nj
j = ,
n
esto es, son las correspondientes frecuencias observadas de cada una de las catego-
ras. No poda (ni deba) ser de otra manera.

6
7.3.1. Contraste de una multinomial dada
Nos planteamos el contraste de hipotesis simple en donde especificamos una
probabilidad dada para cada categora. De un modo mas formal tenemos
H0 : j = j0 con j = 1, . . . , c
H1 : No H0 .
El primer test a considerar (uno de los procedimientos estadsticos mas antiguos
en uso) es el que se conoce como el test ji-cuadrado de Pearson. La idea es simple.
Bajo la hipotesis nula, bajo H0 , esperamos observar de la categora j, j = nj
casos. Es decir, la frecuencia esperada nula es j . Pero observamos nj , frecuencia
observada. Pearson propuso comparar ambas frecuencias, observadas y esperadas,
mediante el siguiente estadstico
X (nj j )2 X (nj nj0 )2
X2 = = .
j
j j
nj0

Bajo la hipotesis nula H0 y para grandes muestras o distribucion nula asintotica el


estadstico tiene una distribucion ji-cuadrado con c 1 grados de libertad
X 2 2c1 .
Dados unos datos y un valor observado del estadstico, X02 , el p-valor vendra dado
por
p = P (X 2 X02 ).
El cociente de verosimilitudes es
Q n
j j0j
= Q nj
,
j (nj /n)

de modo que X nj
G2 = 2 log = 2 nj log .
j
nj0

Con el LRT, rechazamos H0 cuando G toma valores grandes. G2 es conocido co-


2

mo el estadstico ji-cuadrado del cociente de verosimilitudes. Su distribucion nula


asintotica sera un ji-cuadrado con c 1 grados de libertad ya que la dimension del
espacio parametrico es c 1, es decir,
G2 2c1 .
Nota de R 56 (notaR503) Todo el mundo utilizada estos datos para ilustrar es-
te test. Pues vamos a usarlos tambien nosotros. Son unos datos de Mendel. Es un
experimento realizado por Mendel. Cruzamos guisantes amarillos con guisantes ver-
des. El caracter dominante es amarillo. De acuerdo con la teora de la herencia de
Mendel 3/4 de los guisantes que obtenemos por cruce deberan de ser amarillos y
el cuarto restante debera de ser verde. Se realizaron n = 8023 cruces de los cuales
n1 = 6022 son amarillos y n2 = 2001 son verdes.
Empezamos con el test ji-cuadrado de Pearson.
> library(stats)
> chisq.test(x = c(6022, 2001), p = c(0.75, 0.25))
Chi-squared test for given probabilities

data: c(6022, 2001)


X-squared = 0.015, df = 1, p-value = 0.9025

7
Y tambien consideramos el test del cociente de verosimilitudes

> observadas = c(6022, 2001)


> esperadas = 8023 * c(0.75, 0.25)
> 1 - pchisq(2 * sum(observadas * log(observadas/esperadas)), df = 1)

[1] 0.9025024

Hay que reconocer que le fue muy (demasiado) bien la experimentacion a Mendel.
PDF Rcode

7.4. Tablas de contingencia


Vamos a estudiar la relacion entre distintas variables categoricas. Sin duda, lo
mas interesante a nivel aplicado. En esta seccion nos ocuparemos del caso con dos
variables categoricas.

7.4.1. Tablas de contingencia: distribucion conjunta, distri-


bucion condicionada e independencia
Sean X e Y dos variables categoricas con I y J categoras. Un sujeto puede
venir clasificado en una de I J categoras. Dada una muestra podemos construir
la tabla donde cada fila corresponde a una categora de la variable X mientras que
cada columna corresponde a una categora de la variable Y . En la celda o casilla
correspondiente a la fila i y la columna j tendremos el conteo de casos que en la
muestra verificando que X = i e Y = j, esto es, recogemos el conteo conjunto de las
dos variables. Una tabla como la indicada recibe el nombre de tabla de contingencia
o tabla de clasificacion cruzada.
Recordemos algunos conceptos basicos sobre la distribucion conjunta de dos
variables aleatorias discretas. Lo necesitamos para entender el uso que pretendemos
dar a una herramienta puramente descriptiva como es la tabla de contingencia.
Dadas las variables X and Y su distribucion conjunta viene dada por

ij = P (X = i, Y = j),

con i = 1, . . . , I y j = 1, . . . , J. Las distribuciones marginales son


J
X J
X
i+ = P (X = i) = P (X = i, Y = j) = ij
j=1 j=1

I
X I
X
+j = P (Y = j) = P (X = i, Y = j) = ij
i=1 i=1

El tercer concepto probabilstico basico en lo que sigue es el de distribucion


condicionada o condicional. Habitualmente una variable, por ejemplo Y , es una
variable respuesta y la otra, X es explicativa o predictora. En esta situacion no tiene
sentido hablar de distribucion conjunta y s de distribucion condicionada de Y a X
que denotaremos
ij
P (Y = j|X = i) = j|i = .
i+
Las variables X and Y se dicen independientes si

ij = i+ +j .

8
Cuadro 7.1: Tablade conteos cruzando el estado del paciente y el resultado del test.

Test positivo Test negativo Total


Enfermo n11 n11 n1+
No enfermo n21 n22 n2+
Total n+1 n+2 n

Cuadro 7.2: Tabla de proporciones sobre el total cruzando el estado del paciente y
el resultado del test.
ij Test positivo Test negativo Total
Enfermo n11 /n n11 /n n1+ /n
No enfermo n21 /n n22 /n n2+ /n
Total n+1 /n n+2 /n 1

En particular, si las variables son independientes entonces la distribucion condicio-


nada es igual a la distribucion marginal, es decir,

j|i = +j con j = 1, . . . , J.

La definicion usual de variables aleatorios discretas independientes es que la


funcion de probabilidad conjunta es el producto de marginales. Sin embargo, esta
definicion equivale con la que dice que son independientes si la condicionada de una
a otra es igual a la correspondiente marginal. Cuando es mas natural una interpre-
tacion o la otra? Si las variables X e Y que estamos estudiando las consideramos
como variables respuesta entonces parece natural utilizar la primera definicion y
hablar de independencia. Sin embargo, si Y es considerada respuesta mientras que
X es predictiva entonces hablamos de homogeneidad de las distintas distribuciones
condicionadas de Y a los valores posibles de la variable X.

Ejemplo 8 Un ejemplo clasico de tabla de contingencia aparece cuando estamos


considerando si un test es capaz de detectar una enfermedad. Entonces la tabla de
contingencia sera la que aparece en la tabla 7.3.
Si nos planteamos modificar la tabla basica de los conteos anterior en una tabla
que estime la la distribucion conjunta de las variables X and Y entonces dividi-
mos cada conteo de cada celda por el total de individuos consideramos en la tabla.
Tendramos la siguiente tabla modificada.
Si dividimos los conteos por los totales de columna tenemos la distribucion con-
dicionada de X a Y .
En Medicina hay dos conceptos basicos que se conocen como sensibilidad y
especificidad. Son unas cantidades que se calculan a partir de las tablas anteriores.
La sensibilidad es la proporcion de enfermos correctamente diagnosticados o,
de un modo mas preciso,

1|1 = P (Y = 1|X = 1).

Cuadro 7.3: Tabla de proporciones sobre el total cruzando el estado del paciente y
el resultado del test.
j|i Test positivo Test negativo Total
Enfermo n11 /n1+ n11 /n1+ 1
No enfermo n21 /n2+ n22 /n2+ 1

9
La especificidad es la proporcion de sanos correctamente diagnosticados o

2|2 = P (Y = 2|X = 2).

Nota de R 57 (notaR540) Utilizamos los datos scoremaster.


Vamos a cruzar la intensidad de la intervencion (una medida de lo cruenta que
es la intervencion y que se conoce a priori) con el estado general del enfermo en la
primera llamada que recibe. Empezamos construyendo la tabla de contingencia.

> tt0 = table(intensidad, eg1)


> tt0

eg1
intensidad 0 1 2
1 5 97 66
2 6 242 178
3 7 206 115

Tambien es natural cruzar por ejemplo la intensidad con el resto de variables de


la primera llamada. Por ejemplo, con el nivel de dolor.

> table(intensidad, d1)

d1
intensidad 0 1 2
1 3 62 103
2 6 139 281
3 9 159 160

Recuperemos el primer cruce y veamos como estimar la distribucion conjunta en


donde cada conteo lo dividimos por el total de la tabla.

> prop.table(tt0)

eg1
intensidad 0 1 2
1 0.005422993 0.105206074 0.071583514
2 0.006507592 0.262472885 0.193058568
3 0.007592191 0.223427332 0.124728850

En este caso, la variable intensidad es previa y parece mas natural considerar la


distribucion de la variable que aparece en la columna condicionada a la variable que
aparece en la fila.

> prop.table(tt0, 1)

eg1
intensidad 0 1 2
1 0.02976190 0.57738095 0.39285714
2 0.01408451 0.56807512 0.41784038
3 0.02134146 0.62804878 0.35060976

PDF Rcode

10
Cuadro 7.4:
Enfermedad venerea No enfermedad
Con preservativo
Sin preservativo

7.4.2. Tipo de muestreo


En cualquier tipo de tratamiento (y de interpretacion del mismo) es basico plan-
tearse como se ha obtenido la muestra. Un mismo resultado tiene interpretaciones
diversas. Los tipos de muestreo mas habituales con los que nos vamos a encontrar
se pueden clasificar en los siguientos tipos.
Muestreo de Poisson Los conteos Yij de la tabla suponemos que son variables
Poisson independientes con medias ij .
Muestreo multinomial En este caso fijamos el numero total de elementos que
tenemos en la tabla, n, pero no los totales de fila y columna.
Muestreo multinomial independiente Ahora fijamos los totales de fila consi-
derando Y como variable respuesta y X como explicativa. Al fijar el total de
fila lo que tenemos es una muestra de una multinomial donde las distintas ca-
tegoras se corresponden con las distintas columnas. Ademas las muestras para
distintas filas de la tabla se supone que se han obtenido independientemente.
Como es logico dependiendo del tipo de muestreo tenemos una verosimilitud distin-
ta.
Si el muestreo es de Poisson entonces la verosimilitud es
n
YY ijij
eij ,
i j
nij !

mientras que para un muestreo multinomial la verosimilitud es


n! YY n
Q Q ijij .
i j nij ! i j

Finalmente si cada fila es una muestra de una multinomial independiente, esto es,
tenemos un muestreo multinomial independiente y su verosimilitud viene dada por
Y ni+ ! Y n
Q j|iij .
i
n
j ij ! j

Cuando nos encontramos en una u otra situacion? Vamos a plantearnos lo


que sera una tabla de contingencia antes de tener datos y, por lo tanto, sin poder
construirla. Supongamos que pretendemos estudiar la relacion entre contraer en-
fermedades venereas o no y utilizar el preservativo en las relaciones sexuales. Para
cada persona se le pregunta se usa el preservativo en sus relaciones y si ha contra-
ido alguna enfermedad venerea en el ultimo ano. No tenemos datos y por lo tanto
empezamos con una tabla vaca.
Nuestro estudio que dara lugar a los conteos que rellenaran las celdas podemos
plantearlo de distintas formas. Si no fijamos el total de la tabla y nos limitamos
a muestrear en el colectivo entonces tenemos conteos de Poisson. Si se toma una
muestra de 300 personas en los ultimos tres meses en un instituto de secundaria en-
tonces tenemos un muestreo multinomial. Finalmente podemos tomar una muestra
de 150 personas que han contrado una enfermedad venerea y otra de 150 que no la
han contrado y luego observar sus habitos de uso del preservativo.

11
Cuadro 7.5:
1 2
1 1|1 2|1
2 1|2 2|2

Cuadro 7.6:

Exito Fracaso
Grupo 1 1|1 2|1
Grupo 2 1|2 2|2

7.4.3. Comparacion de dos proporciones


Muchos estudios se disenan para comparar grupos basandonos en una respuesta
binaria, Y . En este caso la interpretacion que tiene sentido es pensar en la distribu-
cion condicionada de Y a la variable X (filas). O viceversa. Con dos grupos tenemos
una tabla de contingencia 2 2 como la que sigue.

1|i = i
2|i = 1 1|i = 1 i

Queremos comparar 1 con 2 . Como comparamos? Podemos estudiar la dife-


rencia de las proporciones
1 2 ,
o el riesgo relativo,
1
,
2
o bien el cociente de odds (odds ratio)
1 /(1 1 )
= .
2 /(1 2 )

7.4.4. Odds y odds ratio


Si es la probabilidad de exito entonces los odds se definen como

= .
1
Equivalentemente

= .
+1

Cuadro 7.7:

Exito Fracaso
Grupo 1 1 1 1
Grupo 2 2 1 2

12
En una tabla 2 2 tenemos los odds en la fila i
i
i = .
1 i
El cociente de los odds de las dos filas sera el odds ratio.
1 /(1 1 )
= .
2 /(1 2 )

Se tiene facilmente que


11 22
= .
12 21
Por ello tambien se le llama el cociente de los productos cruzados.
El odds ratio tiene las siguientes propiedades fundamentales.

1. Puede ser cualquier valor positivo.

2. = 1 significa que no hay asociacion entre X e Y .

3. Valores de alejados de 1 indican una asociacion mayor.

4. Se suele trabajar con log pues entonces el valor que tenemos es simetrico
respecto a cero.

5. El odds ratio no cambia cuando intercambiamos filas y columnas.

Nota de R 58 (notaR504) Los datos se refieren al efecto de la aspirina en la


prevencion del infarto.

> x = c(104, 189)


> n = c(11037, 11034)
> prop.test(x, n)

2-sample test for equality of proportions with continuity correction

data: x out of n
X-squared = 24.4291, df = 1, p-value = 7.71e-07
alternative hypothesis: two.sided
95 percent confidence interval:
-0.010814914 -0.004597134
sample estimates:
prop 1 prop 2
0.00942285 0.01712887

> asp.ataque = prop.test(x, n)


> attributes(asp.ataque)

names
[1] "statistic" "parameter" "p.value" "estimate" "null.value"
[6] "conf.int" "alternative" "method" "data.name"

class
[1] "htest"

> prop.test(x, n)$p.value

[1] 7.709708e-07

13
> asp.ataque$p.value

[1] 7.709708e-07

> prop.test(x, n, alt = "less")

2-sample test for equality of proportions with continuity correction

data: x out of n
X-squared = 24.4291, df = 1, p-value = 3.855e-07
alternative hypothesis: less
95 percent confidence interval:
-1.000000000 -0.005082393
sample estimates:
prop 1 prop 2
0.00942285 0.01712887

> asp.ataque$estimate

prop 1 prop 2
0.00942285 0.01712887

Veamos cual es la diferencia de proporciones,

> asp.ataque$estimate[2] - asp.ataque$estimate[1]

prop 2
0.007706024

el riesgo relativo,
asp.ataqueestimate[2]/asp.ataqueestimate[1]
y el odds ratio
x[2]*(n[1]-x[1])/(x[1]*(n[2]-x[2]))
PDF Rcode

7.5. Asociacion parcial en tablas 22 estratificadas


Cuando estudiamos el efecto de X sobre Y debemos de controlar las covariables
que pueden influir en la relacion. Lo mejor es mantener las covariables relevan-
tes constantes. Un efecto de X sobre Y puede representar un efecto de la (o las)
covariables sobre las variables X e Y . Esto no es facil en estudios observacionales.
Se condena a muerte mas a los blancos que a los negros en Estados Unidos. En
el pas de la igualdad se discrimina a los blancos. Consideramos como covariable la
raza de la vctima. En el pas de la igualdad se condena mas a los negros.
Por que? La explicacion tiene que venir de la asociacion existente entre la raza
de la vctima y las variables que cruzamos marginalmente. Hay una gran asociacion
entre raza de vctima y raza del acusado (odds ratio de 87).
Los blancos tienden a matar mas a blancos. Si matas a un blanco tienes una
mayor probabilidad de que te condenen. Esto es un ejemplo de la paradoja de
Simpson (1951).

Nota de R 59 (notaR507) Esta nota es una ilustracion de la paradoja de Sim-


pson donde las asociaciones parciales pueden no coincidir con la asociacion global.
Cargamos el paquete vcd [? ]

> library(vcd)

14
Cuadro 7.8: Procesamientos por asesinatos multiple sen Florida entre 1976 y 1987

Pena de muerte
Vctima Acusado Si No % S

Blanco Blanco 53 414 11,3


Negro 11 37 22,9
Negro Blanco 0 16 0,0
Negro 4 139 2,8

Total Blanco 53 430 11,0


Negro 15 176 7,9

Cuadro 7.9: Procesamientos por asesinatos multiple sen Florida entre 1976 y 1987

Vctima vs acusado Vctima vs veredicto


Blanco Negro Si No
Blanco 467 48 Blanco 64 451
Negro 16 143 Negro 4 155

Construmos la tabla con los conteos.

> raza.victima = c("blanco", "negro")


> raza.agresor = raza.victima
> pena.muerte = c("si", "no")
> etiquetasdatos = list(agresor = raza.agresor, muerte = pena.muerte,
+ victima = raza.victima)
> datos.florida = expand.grid(agresor = raza.agresor, muerte = pena.muerte,
+ victima = raza.victima)
> conteos = c(53, 11, 414, 37, 0, 4, 16, 139)
> datos.florida = cbind(datos.florida, count = conteos)
> xtabs(conteos ~ agresor + muerte + victima, data = datos.florida)

, , victima = blanco

muerte
agresor si no
blanco 53 414
negro 11 37

, , victima = negro

muerte
agresor si no
blanco 0 16
negro 4 139

Veamos graficamente los datos.

> temp = xtabs(conteos ~ agresor + muerte + victima, data = datos.florida)


> plot(temp)

15
temp

blanco negro
blanco negro blanco negro
si
muerte

no

agresor

Aqu tenemos los logaritmos de los odds ratio y los test de si podemos conside-
rarlos nulos.

> summary(oddsratio(temp))

Log Odds Ratio Std. Error z value Pr(>|z|)


blanco -0.84255 0.36705 -2.2955 0.01085 *
negro -0.06252 1.51327 -0.0413 0.48352
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Y los intervalos de confianza correspondientes.

> confint(oddsratio(temp))

lwr upr
blanco -1.561961 -0.1231423
negro -3.028482 2.9034412

PDF Rcode

7.6. Inferencia en tablas de contingencia


7.6.1. Intervalos de confianza para parametros de asociacion
Intervalo para los odds ratio
El estimador del odds ratio es
n11 n22
= .
n12 n21

16
El estimador puede ser 0, infinito o no estar definido () dependiendo de los conteos.
Por ello no existe ni la media ni la varianza de ni de log . Una posibilidad es
trabajar con
(n11 + 0,5)(n22 + 0,5)
=
(n12 + 0,5)(n21 + 0,5)
y con log .
Un estimacion del error estandar de es
 1/2
1 1 1 1
(log ) = + + + .
n11 n12 n21 n22

El intervalo de confianza de Wald sera:

log z/2 (log ).

Tomando las exponenciales en los extremos tenemos el correspondiente intervalo


para log .
El test es algo conservador (la probabilidad de cubrimiento es algo mayor que el
nivel nominal).
Estudio sueco sobre el uso de la aspirina y el infarto de miocardio.

Infarto de miocardio
Si No Total
Placebo 28 656 684
Aspirina 18 658 656

Intervalo de confianza para la diferencia de proporciones


Suponemos que tenemos muestras de binomiales independientes. En el grupo i
tenemos Yi Bi(ni , i ). El estimador de la i-esima proporcion es

i = Yi /ni

, de modo que la diferencia entre las proporciones estimadas verifica

E(1 2 ) = 1 2

y el error estandar es
 1/2
1 (1 1 ) 2 (1 2 )
(1 2 ) = + .
n1 n2

Estimamos sustituyendo i por i .


El intervalo de confianza de Wald sera:

1 2 z/2 (1 2 ).

Usualmente la probabilidad de cubrimiento es menor que el coeficiente de confianza


nominal. Especialmente para valores de 1 y 2 proximos a 0 o 1.

Intervalo de confianza para el riesgo relativo


El riesgo relativo muestral viene dado por
1
r=
2

17
Hay una convergencia a la normalidad mas rapida trabajando en la escala logart-
mica. El error estandar asintotico de log r es
 1/2
1 1 1 2
(log r) = +
n1 1 n2 2
Es algo conservador (probabilidad de cubrimiento mayor que el nivel de confianza
nominal). El intervalo de confianza de Wald para log 1 /2 es

log r z/2

7.6.2. Contraste de independencia en tablas de doble entrada


Nos planteamos el contraste de:
H0 : ij = i+ +j i, j
H0 : ij 6= i+ +j para algun i, j

Los tests que vamos a considerar se pueden aplicar tanto para muestreo multino-
mial (con I J categoras) como para muestreo multinomial independiente (para
las distintas filas). En el primer caso contrastamos independencia y en el segundo
homogeneidad.
El primer test que vamos a considerar es el test ji-cuadrado. Es el test clasico
propuesto por K. Pearson. Bajo H0 ,
Enij = ij = ni+ +j .

razonablemente buena si las frecuencias esperadas son mayores que 1 y la mayor


parte son mayores que 5. Si nos los podemos usar hay que utilizar metodos para
muestras pequenas.

7.7. Mas alla del test ji-cuadrado


7.7.1. Residuos
Vamos a comparar las frecuencias observadas con las esperadas. Notemos que,
para muestreo de Poisson,

(nij ij ) = ij .

La desviacion estandar de nij ij es menor que ij pero todava proporcional a
este valor. Definimos el residuo de Pearson como
nij ij
eij = p .
ij

En particular tenemos que el estadstico X 2 de Pearson es igual a la suma de


los cuadrados de los residuos de Pearson.
XX
X2 = e2ij .
i j

Comparar estos residuos con los percentiles normales da una vision conservadora.
Se definen los residuos de Pearson estandarizados como
nij ij
 1/2
ij (1 i+ )(1 +j )

18
que s tienen una distribucion normal estandar.
Podemos comparar los residuos de Pearson estandarizados con los percentiles de
la normal.
Valores superiores (en modulo) a 2 o 3 indican falta de ajuste.

7.8. Test de independencia con muestras pequenas


7.8.1. Test exacto de Fisher para tablas 2 2
Todos los procedimientos vistos hasta ahora se basan en distribuciones asinto-
ticas. Si tenemos muestras grandes no hay problemas. Y con muestras pequenas?
Rezar es una buena opcion. Siempre lo es. La otra es un test exacto.
Consideramos una tabla 2 2. La hipotesis nula es de independencia. Condi-
cionamos a los totales marginales de fila y columna. Solamente nos queda libre un
conteo (por ejemplo, n11 ) y
n1+
 n2+ 
t n+1 t
p(t) = P (n11 = t) = n

n+1

donde los valores posibles son

m n11 m+

con m = max{0, n1+ + n+1 n} y m+ = mn{n1+ , n+1 }.


Queremos contrastar independencia. En tablas 2 2 lo podemos formular como

H0 : = 1

frente a (alternativa unilateral)


H1 : > 1
Para el test anterior, si t0 es el valor observado de n11 , entonces el p-valor sera

P (n11 t0 )

Prediccion primer servicio


Primer servicio Leche Te Total
Ejemplo 9 El ejemplo del te Leche 3 1 4
Te 1 3 4
Total 4 4

Sera mas extrema la tabla con n11 = 4. El p-valor sera

P (n11 = 3) + P (n11 = 4) = 0,243

Estamos ordenando las tablas de acuerdo con n11 . Podramos ordenarlas segun
el odds ratio o la diferencia de las proporciones y obtenemos el mismo test. Esto no
sera cierto para test bilateral.

7.9. Test exacto de Fisher y alternativa bilateral


La definicion de p-valor depende de como ordenamos las tablas. Lo que suele ir
programado en software es (si p(t) = P (n11 = t))

p = P (p(n11 ) p(t0 ))

19
Sumamos la probabilidad de todas aquellas tablas que son tan probables o menos
que la tabla observada.
Otra opcion es
 
p = P |n11 E(n11 )| |t0 E(n11 )|

teniendo en cuenta que para la hipergeometrica

E(n11 ) = n1+ n+1 /n

Este procedimiento equivale con

p = P (X 2 X02 )

siendo X02 el valor observado de X 2 .

20
Captulo 8

Modelos lineales
generalizados

En este tema se habla de modelos lineales generalizados. Constituyen, y de ah su


nombre, una extension de los modelos lineales. A diferencia de los modelos lineales
en donde nos basamos en la distribucion normal, aqu se utilizan otros modelos para
la variable respuesta. Tambien la relacion que liga la media de la variable respuesta
con las variables predictoras no se supone lineal sino que se utiliza una funcion link
para relacionar dicha media con una combinacion lineal de las variables predictoras.
Sin duda alguna, la referencia fundamental es el texto de Agreste ([? ]). Asociado a
este texto tenemos un texto de Laura Thomson [? ] en donde se reproducen todos
los analisis de datos del texto de Agresti con R. Hay una version mas reducida de
[? ] que es la referencia [? ].

8.1. Componentes de un modelo lineal generaliza-


do
Los modelos lineales generalizados (GLM) extiende los modelos de regresion
ordinaria en dos puntos: (i) consideran que la respuesta no tiene necesariamente
una distribucion normal y (ii) utiliza funciones que modelizan la media.
En su definicion intervienen tres componentes:

Componente aleatoria Identifica la variable respuesta Y y su distribucion de


probabilidad.

Componente sistematica Especifica las variables explicativas (independientes,


predictoras) utilizadas en la funcion predictora lineal.

Funcion link Especifica la funcion de EY que la expresa como una combinacion


lineal de las variables predictoras.

La componente aleatoria de un GLM consiste de una variable aleatoria Y con


observaciones independientes (y1 , . . . , yN ). Suponemos la distribucion de Y en la
familia exponencial natural, donde la forma de la densidad viene dada por

f (yi ; i ) = a(i )b(yi ) exp{yi Q(i )}. (8.1)

En esta familia de distribuciones de probabilidad se incluyen la Poisson y la bino-


mial. Notemos que i vara para los distintos i dependiendo de los valores de las
variables predictoras. Q() recibe el nombre de parametro natural.

1
La componente sistematica de un GLM es el vector (1 , . . . , N ) donde
X
i = j xij , con i = 1, . . . , N, (8.2)
j

donde xij esP el valor del j-esimo predictor en el i-esimo individuo. La combina-
cion lineal j j xij es el predictor lineal. Notemos que, como es habitual, se suele
considerar que uno de los predictores xij vale uno para todos los i de modo que
consideramos el termino independiente (que denotaremos a menudo por ).
La tercera componente es la funcion link g. Mediante esta funcion relacionamos
las componentes aleatoria y sistematica. Sea i = E(Yi ) con i = 1, . . . , N . Vamos a
suponer que
i = g(i ) (8.3)
donde la funcion link g la suponemos monotona y diferenciable. En consecuencia
tenemos X
g(i ) = j xij , con i = 1, . . . , N. (8.4)
j

ElPmodelo lineal es un modelo lineal generalizado ya que Yi N (i , 2 ) donde


i = j j xij . En consecuencia el parametro natural es la media y la funcion link es
la identidad. De hecho, los modelos lineales generalizados surgen como una extension
natural cuando la variable respuesta no necesariamente ha de ser continua. En un
modelo lineal la relacion que liga a los predictores con la media de la variable es
directa: la media es funcion lineal de los predictores. Sin embargo, una modelizacion
tan simple como esta no es asumible cuando la respuesta es una variable binomial o
Poisson, o multinomial. Sin embargo, se observo que muchos de los metodos que se
utilizaban para estudiar el modelo lineal eran aplicables para este tipo de modelos
que proporciono un marco comun a procedimientos que ya se estaban usando en
Estadsticas previamente.

8.1.1. Modelos logit binomiales para datos binarios


Tenemos respuesta binaria (exito como 1 y fracaso como 0), esto es, Y
Bin(1, ). Notemos que

f (y | ) = y (1 )1y =
 
y
(1 )[/(1 )] = (1 ) exp y log (8.5)
1

por lo que pertenece a la familia exponencial natural con

= , (8.6)
a() = 1 , (8.7)
b(y) = 1, (8.8)

Q() = log . (8.9)
1

Vemos que el parametro natural log 1 es el logit de . Es pues el link canonico.
Los GLM que utilizan un link logit reciben el nombre de modelos logit.

8.1.2. Modelo loglineal de Poisson para conteos


La variable respuesta son conteos. La distribucion mas simple para este tipo de
datos es la distribucion de Poisson. Sea Y el conteo aleatorio y = EY . La funcion

2
de probabilidad de la distribucion de Poisson la podemos expresar como
 
e y 1
f (y | ) = = exp() exp(y log ), con y = 0, 1, . . . (8.10)
y! y!
Esta familia de distribuciones pertenece a la familia exponencial natural con
= , (8.11)
a() = exp(), (8.12)
1
b(y) = (8.13)
y!
Q() = log . (8.14)
El parametro natural es log y en consecuencia la funcion link canonica es el loga-
ritmo. El modelo que utiliza este link es
X
log = j xij , con i = 1, . . . , N. (8.15)
j

Este modelo recibe el nombre de modelo loglineal de Poisson.

8.1.3. Desviacion
Sean y = (y1 , . . . , yN ) los valores observados y L(; y) la verosimilitud expresada
en terminos del vector de medias = (1 , . . . , N ). Sea L(; y) el maximo de la log-
verosimilitud como funcion de . Si no nos restringimos a un modelo determinado
entonces
L(; y) = L(y; y). (8.16)
En este modelo perfecto se tiene un parametro distinto por observacion. Este modelo
lo llamamos modelo saturado. Este modelo no tiene ninguna utilidad pues no supone
ninguna reduccion de los datos, ningun tipo de modelizacion con lo que esto supone
de simplificacion. Sin embargo, es un modelo base con el que compararse.
Definimos la desviacion como
 
2 L(; y) L(y; y) . (8.17)

La desviacion es el test del cociente de verosimilitudes donde la hipotesis nula es


el modelo que estamos considerando frente a la alternativa mas general que supone
la negacion de este modelo.
La distribucion asintotica de la desviacion es una 2 (N p) donde N es el
numero de observaciones (igual al numero de parametros en el modelo saturado) y
p el numero de parametros del modelo asumido en la hipotesis nula.

8.2. GLM para datos binarios


La variable respuesta Y se supone binaria. Sea x el vector de predictores.
Y Bi(1, (x)),
con
P (Y = 1) = (x), P (Y = 0) = 1 (x).
Ademas:
EY = P (Y = 1) = (x).
y
var(Y ) = (x)(1 (x)).

3
Cuadro 8.1: Relacion entre el ronquido (filas) y la enfermedad cardIaca (columnas)

Si No
Nunca 24 1355
Ocasionalmente 35 603
Casi cada noche 21 192
Cada noche 30 224

8.2.1. Funcion link identidad

(x) = + x,
si consideramos un solo predictor. El problema que se nos plantea es que no tenemos
asegurada que dicha probabilidad este entre cero y uno. Obviamente, es el cambio
en la probabilidad por un cambio unitario de x.
Notemos que Y depende de x a traves de (x) . La varianza de la varianza tiende
a cero cuando (x) se aproxima bien a cero bien a uno.

8.2.2. Ejemplo: Ronquido y enfermedad cardAaca


Construimos el banco de datos.
# Datos de tabla 4.2, pagina 121

n<-c(1379, 638, 213, 254) snoring<-rep(c(0,2,4,5),n)


y<-rep(rep(c(1,0),4),c(24,1355,35,603,21,192,30,224))

8.3. GLM para conteos


La variable respuesta Y son datos de conteo. Se asume que sigue una distribucion
de Poisson. Denotamos = EY =.
Un modelo loglineal con una sola variable predictora serIa
log = + x,
o de otro modo  x
= exp( + x) = e e .

que en palabras significa que un incremento unitario de la variable x supone que la


media de Y , , corresponde a la asociada a x multiplicada por e .

8.3.1. Apareamiento de cangrejos herradura


Es un estudio de apareamiento de cangrejos herradura. Cada hembra tiene un
macho residiendo en su nido. En el estudio se trata de investigar que otros factores
influyen en que la hembra tenga otros machos, llamados satelites, residiendo en el
entorno. Como variables explicativas tenemos el color de la hembra (C), estado de
la columna (S), anchura del caparazon (W), peso (Wt) y como variable respuesta
tenemos el numero de satelites (Sa). De momento vamos a usar una sola variable
predictora, la anchura del caparazon W.
Leemos los datos.

4
##tabla 4.3 table.4.3 <-
read.table('../data/crab.txt',col.names=c("C","S","W","Sa","Wt"))
##Pasamos los pesos a kilogramos table.4.3[,5] <- table.4.3[,5]/1000

En la siguiente figura representamos el numero de satetites frente a la anchura


del caparazon.

# Figura 4.3 plot.table.4.3<-aggregate(rep(1,nrow(table.4.3)),


list(Sa=table.4.3$Sa,
W=table.4.3$W), sum)
plot.table.4.3$Sa<-as.numeric(as.vector(plot.table.4.3$Sa))
plot.table.4.3$W<-as.numeric(as.vector(plot.table.4.3$W))
plot(y=plot.table.4.3$Sa,x=plot.table.4.3$W,xlab="Width (cm)",
ylab="Number of Satellites", bty="L", axes=F, type="n") axis(2,
at=1:15) axis(1)
text(y=plot.table.4.3$Sa,x=plot.table.4.3$W,labels=plot.table.4.3$x)

Realmente no es facil observar ningun patron de comportamiento. Agrupamos


las hembras de grupos dependiendo de la anchura. En concreto las categorIas consi-
deradas seran 0, 23,2], (23,2, 24,2], (24,2, 25,2], (25,2, 26,2], (26,2, 27,2], (27,2, 28,2],
(28,2, 29,2], (29,2, Inf ]. Representamos, en abscisas, la anchura media en cada grupo
y, en ordenadas, el numero medio de satelites.

# figure 4.4 table.4.3$W.fac<-cut(table.4.3$W, breaks=c(0,seq(23.25,


29.25),Inf)) plot.y<-aggregate(table.4.3$Sa,
by=list(W=table.4.3$W.fac), mean)$x plot.x<-aggregate(table.4.3$W,
by=list(W=table.4.3$W.fac), mean)$x plot(x=plot.x, y=plot.y,
ylab="Number of Satellites", xlab="Width (cm)",
bty="L",axes=F, type="p", pch=16)
axis(2, at=0:5) axis(1, at=seq(20,34,2))

Vamos a realizar una regresion de Poisson donde utilizados el logaritmo como


funcion link.

log.fit<-glm(Sa~W, family=poisson(link=log),data=table.4.3)
summary(log.fit)

summary(log.fit)

Call: glm(formula = Sa ~ W, family = poisson(link = log), data =


table.4.3)

Deviance Residuals:
Min 1Q Median 3Q Max
-2.8526 -1.9884 -0.4933 1.0970 4.9221

Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -3.30476 0.54224 -6.095 1.10e-09 *** W 0.16405
0.01997 8.216 < 2e-16 ***

(Dispersion parameter for poisson family taken to be 1)

Null deviance: 632.79 on 172 degrees of freedom

5
Residual deviance: 567.88 on 171 degrees of freedom AIC: 927.18

Number of Fisher Scoring iterations: 6

Aparecen los estimadores de los coeficientes, sus errores estandar aproximados,


la desviacion residual y un resumen de los residuos de la desviacion.
La desviacion nula es la desviacion cuando suponemos en el modelo solamente
el termino constante. En este caso asumiendo que el coeficiente de W es nulo. La
diferencia entre las desviaciones considerando solamente la constante o el modelo
que incluye a la variable predictora W puede obtenerse del siguiente modo:
log.fit$null.deviance-log.fit$deviance
Y el resultado es
1] 64.91309
Este es el valor del estadIstico correspondiente al test del cociente de verosimilitu-
des. Tiene, en este caso, una distribucion aproximada ji-cuadrado con un grado de
libertad. El p-valor vendrIa dado por
> 1-pchisq(64.91309,df=1)
[1] 7.771561e-16
que como vemos es claramente significativo. Se rechaza la hipotesis nula de que el
coeficiente de W es nulo. En la salida que proporciona la funcion summary aparece
un z value que vale 6,095 con un p-valor asociado de 1,10e 09. Esto corresponde
con el test de Wald. El test del cociente de verosimilitudes suele ser mas fiable.
La funcion summary nos devuelve un objeto que tiene mucha mas informacion.
Con la funcion attributes podemos verlo.
attributes(summary(log.fit))
Cuya salida es
$names
[1] "call" "terms" "family" "deviance"
[5] "aic" "contrasts" "df.residual" "null.deviance"
[9] "df.null" "iter" "deviance.resid" "coefficients"
[13] "aliased" "dispersion" "df" "cov.unscaled" [17]
"cov.scaled"

$class [1] "summary.glm"


Por ejemplo podemos obtener los coeficientes como
summary(log.fit)$coefficients
que nos devuelve
Estimate Std. Error z value Pr(>|z|)
(Intercept) -3.3047572 0.54224155 -6.094622 1.096964e-09 W 0.1640451
0.01996535 8.216491 2.095450e-16
Es decir, el modelo ajustado es

log = 3,305 + 0,164x

Podemos utilizar tambien el ajuste original y ver la informacion que contiene el


objeto que contiene el ajuste.

6
attributes(log.fit)
Que nos devuelve
$names
[1] "coefficients" "residuals" "fitted.values"
[4] "effects" "R" "rank"
[7] "qr" "family" "linear.predictors"
[10] "deviance" "aic" "null.deviance" [13]
"iter" "weights" "prior.weights" [16]
"df.residual" "df.null" "y" [19] "converged"
"boundary" "model" [22] "call" "formula"
"terms" [25] "data" "offset" "control" [28]
"method" "contrasts" "xlevels"

$class [1] "glm" "lm"


Por ejemplo, los valores ajustados para la respuesta, es decir, los valores medios
estimados se pueden obtener como
log.fit$fitted.values
o bien como
fitted(log.fit)
De un modo similar podemos obtener los residuos o los coeficientes utilizando las
funciones resid y coef.
Podemos tambien predecir la respuesta con la funcion predict del siguiente
modo.
predict.glm(log.fit, type="response", newdata=data.frame(W=26.3))
Estamos haciendo la prediccion de la media del conteo para un valor de W de 26,3.
Vamos a ajustar ahora un modelo de Poisson utilizando como funcion link la
identidad.

id.fit<-glm(Sa~W, family=poisson(link=identity),data=table.4.3,
start=coef(log.fit))
summary(id.fit)

que nos produce lo siguiente

Call: glm(formula = Sa ~ W, family = poisson(link = identity), data


= table.4.3,
start = coef(log.fit))

Deviance Residuals:
Min 1Q Median 3Q Max
-2.9113 -1.9598 -0.5405 1.0406 4.7988

Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -11.52547 0.67767 -17.01 <2e-16 *** W 0.54925
0.02968 18.50 <2e-16 ***

7
(Dispersion parameter for poisson family taken to be 1)

Null deviance: 632.79 on 172 degrees of freedom


Residual deviance: 557.71 on 171 degrees of freedom AIC: 917

Number of Fisher Scoring iterations: 22

Ahora el modelo ajustado es

= 11,41 + 0,55x

Vemos pues ahora que la anchura del caparazon tiene un efecto aditivo en lugar de
ser multiplicativo. Vamos a comparar los dos modelos que se han ajustado.

plot(x=plot.x, y=plot.y, ylab=expression(paste("Mean number of


satellites,",
{mu})), xlab="Width (cm)",bty="L",axes=F, type="p", pch=16)
axis(2, at=0:5) axis(1, at=seq(20,34,2)) ind<-order(table.4.3$W)
lines(x=table.4.3$W[ind],y=log.fit$fitted.values[ind])
lines(x=table.4.3$W[ind],y=id.fit$fitted.values[ind])
arrows(x0=23.5,y0=2.9,x1=23.5,y1=predict(log.fit,newdata=data.frame(W=23.5),
type="response"),length=.2)
text(x=23.5,y=3,"Log Link")
arrows(x0=29.75,y0=3.1,x1=29.75,y1=predict(id.fit,newdata=data.frame(W=29.75),
type="response"),length=.2)
text(x=29.75,y=2.9,"Identity Link")

8.4. Respuesta ordinal: modelos logit acumulados


Vamos a suponer que la variable respuesta Y es ordinal y toma valores 1, . . . , J.
Las variables independientes o predictoras seran x = (x1 , . . . , xd ). Pretendemos
modelizar la distribucion de la variable Y condicionada a los valores de x. Hemos
de tener en cuenta que por ser ordinal la variable respuesta tiene sentido (y es la
opcion mas simple) modelizar directamente la funcion de distribucion condicionada
dada por P (Y j|x), es decir, la probabilidad de que la variable sea igual o menor
que cada posible valor j condicionada a los valores de x. Si denotamos j (x) como la
probabilidad de que Y tome el valor j para un x dado, es decir, j (x) = P (Y = j|x)
P P
entonces P (Y j|x) = ji=1 P (Y = i|x) = ji=1 i (x).
Hay distintos modelos propuestos para este tipo de datos [? ], captulo 7. El
mas extendido se basa en dar un modelo para el logit de la funcion de distribucion
condicionada de Y que recibe el nombre de logit acumulado que vendra dado por
Pj
P (Y j|x) i (x)
logit(P (Y j|x)) = log = log PJ i=1 . (8.18)
P (Y > j|x) i=j+1 i (x)

El modelo de odds proporcionales es el siguiente


d
X
logit(P (Y j|x)) = j + i xi , j = 1, . . . , J 1 (8.19)
i=1

Es importante darse cuenta de que cada variable independiente tiene un solo coe-
ficiente asociado y que no depende del valor j. La dependencia de j aparece en las
intersecciones j .

8
Teniendo en cuenta que si j < j entonces logit(P (Y j|x)) logit(P (Y

j |x)) se ha de verificar que j j . En definitiva los distintos j han de crecer
con j.
Notemos tambien que si consideramos dos vectores de variables independientes
x1 = (x11 , . . . , x1d ) y x2 = (x21 , . . . , x2d ) entonces

d
X
logit(P (Y j|x1 )) logit(P (Y j|x2 )) = j + i (x1i xi2 ), (8.20)
i=1

pero

P (Y j|x1 )/P (Y > j|x1 )


logit(P (Y j|x1 )) logit(P (Y j|x2 )) = log . (8.21)
P (Y j|x2 )/P (Y > j|x2 )

En definitiva estamos afirmando que


d
P (Y j|x1 )/P (Y > j|x1 ) X
log = i (x1i x2i ). (8.22)
P (Y j|x2 )/P (Y > j|x2 ) i=1

Al cociente que aparece en el lado izquierdo de la ecuacion anterior recibe el nombre


de cociente de odds acumulado. Los odds de un respuesta menor o igual a j para
x = x1 es
X d 
exp i (x1i xi2 )
i=1

veces los odds para x = x2 . Ademas vemos que esta constante de proporcionalidad
no depende del valor de j. Por ello al modelo que estamos asumiendo se le suele
llamar el modelo de odds proporcionales ([? ]).
Intentemos expresar el significado de la ecuacion 8.22 de un modo simple. Su-
pongamos que los vectores x1 y x2 son iguales salvo en la componente i-esima. En
definitiva, ambos individuos coinciden salvo en dicha componente y supongamos,
ademas, que difieren en una unidad ambos vectores para la i-esima componente.
Tenemos, bajo estas hipotesis, la siguiente ecuacion:
d
P (Y j|x1 )/P (Y > j|x1 ) X
= i (x1i x2i ) = ei (x1i x2i ) = ei . (8.23)
P (Y j|x2 )/P (Y > j|x2 ) i=1

Mantenidas todas las demas variables constantes tenemos que el cambio de los odds
de la funcion de distribucion de la variable Y condicionada a x1 y a x2 se modifica
de un modo constante e igual a ei .
La funcion de verosimilitud de estos modelos viene dada por la siguiente ecua-
cion. Notemos que para el individuo i tenemos asociado el vector (yi1 , . . . , yiJ )
donde yij sera uno si el individuo esta en la categora j, es decir, si la variable Y
toma el valor j.

n Y
Y J n Y
Y J
yij
j (xi ) = (P (Y j|xi ) P (Y j 1|xi ))yij =
i=1 j=1 i=1 j=1

Yn Y J  Pd Pd y
exp(j + i=1 i (x1i xi2 )) exp(j1 + i=1 i (x1i xi2 )) ij
P P
i=1 j=1 1 + j + di=1 i (x1i xi2 ) 1 + j1 + di=1 i (x1i xi2 )
(8.24)

9
8.5. Sobre la interpretacion de los coeficientes
De alguna manera la variable ordinal Y que analizamos puede considerarse co-
mo la version discreta de una variable continua en la que discretizamos su ran-
go. Denotamos esa variable por Y y suponemos que tiene funcion de distribu-
cion G(y ) donde los valores y varan alrededor de la media que depen-
Pd
de de x a traves de (x) = i=1 i (x1i xi2 ). Tomemos los puntos de corte
= 0 < 1 < . . . < J = + de modo que

Y = j si j1 < Y j .

En definitiva estamos asumiendo que cuando la variable continua Y esta entre los
valores j1 y j entonces la variable Y vale j. Tendremos que
d
X
P (Y j|x) = P (Y j |x) = G(j i xi ),
i=1

o que
d
X
G1 (P (Y j|x)) = j i xi .
i=1
Pd
Si por ejemplo suponemos que Y = i=1 i xi + donde tiene una distribucion
1
logstica entonces G sera la funcion link logstica y tendramos el modelo de odds
proporcionales. Notemos que con esta formulacion los mismos parametros ocurren
independientemente de los puntos de corte j que utilicemos. En definitiva que los
parametros que cuantifican el efecto de las variables no dependen de la eleccion que
hacemos de las categoras de la variable a explicar Y . Esto nos permite comparar
los estimadores cuando se utilizan distintas escalas de respuesta.
Si es positivo entonces cuando la variable asociada x crece entonces el logit
acumulado decrece y tambien lo hace las probabilidades acumuladas. Tenemos que
los valores pequenos de Y tienen menos probabilidad. La variable Y tiende a tomar
valores mayores cuando x crece.

8.6. Verosimilitud de un modelo lineal generaliza-


do
Tenemos el vector Y = (Y1 , . . . , Yn ) que suponemos que son observaciones in-
dependientes. La densidad de Yi se supone que es de la forma:
 
yi i b(i )
f (yi | i , ) = exp + c(yi , ) (8.25)
a()

Esta familia de densidades recibe el nombre de familia de dispersion exponencial.


El parametro recibe el nombre de parametro de dispersion. El parametro i es el
parametro natural.
Notemos que cuando es conocido la familia de dispersion exponencial se reduce
a la familia exponencial natural cuya expresion generica viene dada por

f (yi | i ) = a(i )b(yi ) exp(yi Q(i )) (8.26)

10
Captulo 9

Miscelanea

9.1. Dibujo de la media-diferencia de Tukey o di-


bujo de Bland-Altman
Supongamos que tenemos pares de medidas de una misma cantidad y pretende-
mos ver el grado de coincidencia de las mismas. Es de suponer que dos procedimien-
tos que coincidan tendran un coeficiente de correlacion alto. Sin embargo, este valor
viene condicionado por la variabilidad de las medidas. El dibujo media-diferencia
de Tukey o dibujo de Bland-Altman es una representacion grafica que sirve para
valorar el grado de coincidencia de los pares de medidas. Supongamos que tene-
mos los pares (xi , yi ) con i = 1, . . . , n entonces consideramos los puntos que tienen
coordenadas  
xi + yi
, (xi yi ) .
2
Si denotamos por di = xi yi entonces podemos completar la representacion grafica
anadiendo dos lneas horizontales correspondientes con los lmites del intervalo de
confianza para la diferencia media entre los dos procedimientos esto es las lneas
tendran como ordenadas d tn1,1 2 Sn donde S es la desviacion estandar de las
diferencias di y tn1,1 2 es el percentil 1 2 de una t de Student con n 1 grados
de libertad.
El trabajo completo (con correcciones respecto de la publicacion original) es
Bland-Altman y corresponde con la referencia [? ].
El codigo para implementar este procedimiento grafico se puede encontrar en
esta pagina o bien en la siguiente nota.

11
12
Captulo 10

De como usar R en un
tiempo razonable (no facil,
no)

En este captulo se incluyen algunos consejos practicos para trabajar con R. Las
posibilidades son enormes. Sin embargo, de tantas que tiene lo mas probable es que el
usuario ocasional no llegue a conocer ninguna de ellas. Antes lo habra abandonado.
Y con razon. Si llevas anos utilizandolo con unas pocas lneas de codigo haces lo
que con programas basados en menu te cuesta horas (y cuando lo vuelves a repetir
te vuelve a costar horas porque tu aprendizaje no te ahorra tiempo futuro lo que
en R no as). Pero lo de anos usando algo es una utopa que solo se pueden permitir
unos cuantos profesores universitarios sin nada mejor que hacer y muchos horas que
llenar de su importante tiempo.
Cuando usamos un programa informatico hay dos problemas fundamentales que,
dependiendo de la persona, uno puede ser mucho mayor que el otro. Un problema
es el manejo del dichoso programa. Como se ha disenado el interfaz? Donde han
puesto tal o cual opcion de la tecnica? En fin, no vale la pena seguir. Se asume
que un buen menu es la clave de un buen programa (sobre todo, para un usuario
inexperto). En definitiva, se trata de eliminar cualquier tipo de aprendizaje (inicial
o posterior) para que sea de uso inmediato. Algunas personas (entre las que me
encuentro) piensan que eso no esta tan claro. Se acaba pagando el pato. Lo que
no pierdes (no me atreve a hablar de ganar) al principio lo pierdes mas tarde.
Programas como R basados en el uso de un lenguaje sencillo permiten un aprendizaje
rapido y profundo. Aprendes Estadstica al mismo tiempo que aprendes a manejar
el programa. Y, desde un punto de vista docente, es una razon importante para
utilizarlo.
En este captulo he ido incluyendo distintas cuestiones basicas para el uso del
programa. Desde el como conseguirlo o instalarlo hasta como trabajar con el. Mucho
de lo que sigue se basa en mi propia experiencia. De hecho, muchos estudiantes a
los que sugieres formas de trabajo, utilizan otros trucos que les resultan mas utiles.
Mi edad (y cerrazon mental) me impiden cada vez mas adaptarme a nuevas ideas.
Es importante darse cuenta de que es un programa abierto y que, facilmente, lo
puedes integrar con otras herramientas informaticas. La idea es: elige el editor que
quieras. Genera las figuras en formatos distintos y utiliza el procesador de textos
que se quiera. En fin, de esto vamos a tratar.

13
10.1. Instalacion y como trabajar con R
La direccion basica es http://cran.r-project.org. All se tienen tanto las
fuentes como versiones compiladas para Windows, Mac y Linux.

10.1.1. R y Windows
Los puntos a seguir para una instalacion son los siguientes:

1. a) Traer la distribucion base de cran.


b) El programa se instala simplemente ejecutandolo.
c) Una vez instalado en el menu principal teneis una herramienta que per-
mite seleccionar el espejo desde traer los paquetes adicionales comoda-
mente.

2. Una vez instalado el programa la opcion mas comoda es utilizar el programa


Tinn-R. Vamos escribiendo el codigo en su editor y tiene muchas herramientas
para interactuar con R. Es, sin duda, la mejor opcion para Windows.

3. Una segunda opcion es utilizar RWinEdt. Para poder usarlo hay que tener
instalado Winedt. Es un programa shareware muy util para escribir en LATEX.
Una vez instalado WinEdt cargamos el paquete RWinEdt [? ].

10.1.2. R y Linux
Es mi opcion personal de trabajo. La recomiendo definitivamente. Por Linux y
porque el trabajo con R es muy comodo. 1

Instalacion 1. Para Linux hay distintas versiones compiladas que puedes encon-
trar en cran.
2. No es complicado compilar R a partir de las fuentes. Hay que tener la
precaucion de tener gfortran.
3. Cuando instalamos R en Linux hemos de instalar previamente la librera
BLAS.

Edicion con Emacs y ESS En Linux sin duda la mejor opcion de trabajo
es utilizar Emacs con el paquete Emacs Speaks Statistics (ESS) 2 .
Como trabajamos con Emacs y ESS?
1. Abrimos el fichero R con emacs.
2. Abrimos una nueva ventana (mejor separada) con C x 5 2.
3. En la nueva ventana marcamos el icono de R.
4. Utilizamos la ventana donde esta el codigo para editar y podemos
usar los distintos controles que nos da el menu ESS de emacs pode-
mos trabajar muy comodamente.
1 Imagino a un usuario de Windows tpico sonreir ante la afirmacion anterior. Me alegro de que

pueda sonreir despues de los lloros continuos usando esa cosa llamada Windows (que no sistema
operativo).
2 La mejor opcion es acudir a la pagina de los paquetes binarios y buscar en la distribucion

correspondiente donde teneis el paquete

14
10.2. Como fijar el directorio de trabajo?
Empezamos una sesion de R y todo nuestro trabajo (datos, codigo R) lo tenemos
en un directorio. Hemos de tener un acceso comodo a estos ficheros. Como hacerlo?
En Linux no hay problema. Simplemente con la consola nos vamos al directorio
correspondiente y ejecutamos R. Automaticamente hemos fijado el directorio de
trabajo como aquel en que iniciamos el programa.
En Windows lo recomendable es utilizar el menu y cambiar el directorio al de
trabajo. Yo recomiendo una vez hecho esto ejecutar:
getwd()
Nos devuelve todo el camino hasta dicho directorio. Lo que nos devuelve esta funcion
(por ejemplo C: Mis documentos ad prog) lo ponemos entre comillas dobles y
ejecutamos

setwd("C:\ Mis documentos\ ad\ prog")


De este modo hemos fijado el directorio de trabajo.

10.3. Etiquetas de valor y de variable


Para denotar una variable utilizamos siempre una expresion breve y simple. Sin
embargo, es conveniente que la variable tenga una etiqueta explicativa del significado
de la variable. Dicha etiqueta ha de ser clara y no muy larga.

10.3.1. Como etiquetar una variable?


Supongamos que la variable a etiquetar es x en el data frame datos. Usamos la
librera [? ].

library(Hmisc}
label(datos$x) = "Ejemplo de etiqueta"

10.4. Elaboracion de un informe a partir del codi-


go R
Una vez hemos analizado un banco de datos hemos de elaborar un informe.
Normalmente nos va a llevar mas tiempo esta segunda parte que la primera.

10.4.1. Sweave
Es conveniente consultar esta pagina. Un documento de gran utilidad donde ver
la utilizacion de Sweave es este tutorial.

10.5. R y Octave/Matlab
Es frecuente que un usuario de Octave/Matlab utilice R. En este enlace y en este
teneis tablas de equivalencia entre los comandos en ambos programas.

15
16
Captulo 11

Matrices

En este apendice incluimos los resultados basicos de matrices que necesitamos.


Puntos a incluir:

1. Matriz semidefinida positiva y definida positiva.

2. Valor y vector propio.

3. Inversa de una matriz.

4.

Una matriz diagonal con valores 1 , . . . , d en la diagonal principal la denotare-


mos diag(1 , . . . , d ).

11.1. Determinante de una matriz


11.2. Determinante
Si A es una matriz cuadrada entonces definimos su determinante como
X
|A| = (1)| | a1 (1) . . . a1 (p) (11.1)

donde el sumatorio se toma sobre todas las posibles permutaciones de (1, 2, . . . , p)


y | | es igual a +1 o 1 dependiendo de si se puede expresar como el producto
de un numero par o impar de transposiciones.

11.3. Valores y vectores propios


Supongamos A una matriz cuadrada d d y consideremos

q() = |A I|. (11.2)

La funcion q() es un polinomio de orden p. Las races de este polinomio reciben


el nombre de valores propios de la matriz A. No tienen porque numeros reales.
Pueden repetirse los valores de de modo que tengamos races multiples.
Supongamos para i = 1, . . . , p que |A i I| = 0. En consecuencia la matriz
A i I es singular y tenemos un vector no nulo x tal que

Ax = i x. (11.3)

17
Si un vector x verifica la ecuacion 11.3 decimos que es un vector propio de la
matriz A asociado al valor propio i . Si el valor propio es complejo tambien puede
tener componentes complejas el vector propio. Un vector propio x con todas las
componentes reales diremos que esta estandarizado si tiene modulo unitario x x = 1.
Teniendo en cuenta que el coeficiente que acompana a p en el polinomio q() es
(1)p entonces podemos expresar q() en funcion de sus races del siguiente modo
p
Y
q() = (i ). (11.4)
i=1

En particular tenemos
p
Y
q(0) = i . (11.5)
i=1

Si consideremos en las ecuaciones 11.2 y 11.4 el coeficiente que acompana a tene-


mos X X
ai i = trA = i , (11.6)
y tenemos que la traza de la matriz A coincide con la suma de los valores propios.

Teorema 4 Todos los valores propios de una matriz simetrica A(d d) son reales.

Teorema 5 (Teorema de la descomposicion espectral o teorema de descomposicion de Jordan)


Cualquier matriz simetrica A(d d) se puede expresar como
X
A = =
i (i) (i) , (11.7)

donde es una matriz diagonal de valores propios y es una matriz ortogonal


cuyas columnas son los vectores propios estandarizados.

18
Captulo 12

Datos

En este captulo damos una breve explicacion de los datos que utilizamos en el
texto. Si los datos han sido obtenidos de algun paquete de R lo mejor es consultar
la ayuda del paquete correspondiente.

12.1. scoremaster
Los datos scoremaster son unos datos relativos a ciruga mayor ambulatoria en
el hospital Dr. Peset de Valencia. Han sido proporcionados por el Dr. Juan Vinoles
[? ].
Este fichero fue creado con la funcion save de R y se tiene que leer (como parece
esperable) con la funcion load de R. El fichero contiene datos relativos a una serie de
intervenciones quirurgicas realizadas con ciruga sin ingreso. En estas intervenciones
el enfermo acude al centro hospitalario por la manana y se va el mismo da de la
intervencion (si no hay complicaciones obviamente). Las variables del banco de datos
son las siguientes:

score Una puntuacion del estado general del enfermo en la primera llamada.

eg1 Estado general en primera llamada: Excelente, euforico, sueno normal (2); buen
estado pero algo preocupado, ha dormido poco (1); regular, ansiedad mode-
rada, algo mareado, ha dormido mal o nada (0).

d1 Nivel de dolor en primera llamada: Ausencia (2); dolor leve (1); dolor importante
pero soportable (0).

t1 Tolerancia en primera llamada: completa (2); a lquidos (1); nauseas y vomitos


o incumple dieta (0).

s1 Sangrado en primera llamada: Ausencia (2); normal tipo menstruacion, bigotera,


etc (1); dudoso, para observacion (0).

especialidad Es la especialidad a la que corresponde la intervencion.

intensidad Es una variable ordinal que cuantifica la intensidad (de menos a mas)
de la intervencion realizada.

tipoanes Tipo de anestesia.

asa Clasificacion ASA.

sexo Sexo de la persona.

19
T.TOTALP Tiempo total postquirurgico.
T.QUIRUR Tiempo total quirurgico.
edad Edad del paciente.
Las variables score2, eg2, d2, t2, s2 son las mismas variables (con las mismas cate-
goras) observadas en la segunda llamada. De un modo similar tenemos las variables
para la tercera, cuarta y quinta llamadas.

12.2. Avispa
Los datos avispa tienen la siguiente descripcion obtenida de la pagina web indi-
cada. Scientists studying social insects such as wasps and ants have noted that queen
and worker castes can have very different sizes and shapes. For some species, the
queens are simply larger, suggesting that they continue to grow with the same basic
plan as workers. They are just fed for longer. Jeanne, Graf and Yandell (1995)
examined a wasp species which does not follow this pattern. They measured 13 res-
ponses on 50 workers and 50 queens. The measurements were coded based on body
part head (H), thorax (T), wing (W) or gonadium (G) and kind of measure-
ment width (W), height (H) and length (L). The gonadium (also known as gastral
tergite) has two length and three width measurements.

12.3. Datos wbca


El banco de datos wbca contiene informacion sobre un estudio de cancer de mama
en el estado norteamericano de Wisconsin. La variable Class indica si la mujer tiene
cancer de mama o no (valores 1 y 0 respectivamente). El resto son variables que
describen el estado de la paciente.

20

S-ar putea să vă placă și