You are on page 1of 155

Analisis de datos con R

para Ingeniera Informatica

Guillermo Ayala Gallego1

30 de mayo de 2008

1
Departamento de Estadstica e Investigacion Operativa. Universidad de Valencia. Gui-
llermo.Ayala@uv.es http://www.uv.es/ ayala
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 . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3. Vectores aleatorios . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.4. Distribucion normal multivariante . . . . . . . . . . . . . . . . . . . 6

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 co-
varianzas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
2.4. Estimador maximo verosmil . . . . . . . . . . . . . . . . . . . . . . 12
2.5. Contraste de hipotesis . . . . . . . . . . . . . . . . . . . . . . . . . . 13
2.5.1. Test del cociente de verosimilitudes . . . . . . . . . . . . . . 14
2.5.2. Test de Wald . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
2.5.3. Intervalos de confianza . . . . . . . . . . . . . . . . . . . . . 15

3. Analisis de datos categoricos 1


3.1. Variables respuesta categoricas . . . . . . . . . . . . . . . . . . . . . 1
3.2. Inferencia con la distribucion binomial . . . . . . . . . . . . . . . . . 4
3.2.1. Contraste de hipotesis simples . . . . . . . . . . . . . . . . . 4
3.2.2. Intervalo de confianza . . . . . . . . . . . . . . . . . . . . . . 5
3.3. Inferencia para la multinomial . . . . . . . . . . . . . . . . . . . . . . 7
3.3.1. Contraste de una multinomial dada . . . . . . . . . . . . . . 7
3.4. Tablas de contingencia . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.4.1. Tablas de contingencia: distribucion conjunta, distribucion
condicionada e independencia . . . . . . . . . . . . . . . . . . 8
3.4.2. Tipo de muestreo . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.4.3. Comparacion de dos proporciones . . . . . . . . . . . . . . . 12
3.4.4. Odds y odds ratio . . . . . . . . . . . . . . . . . . . . . . . . 13
3.5. Asociacion parcial en tablas 2 2 estratificadas . . . . . . . . . . . . 15
3.6. Inferencia en tablas de contingencia . . . . . . . . . . . . . . . . . . 17
3.6.1. Intervalos de confianza para parametros de asociacion . . . . 17
3.6.2. Contraste de independencia en tablas de doble entrada . . . . 18
3.7. Mas alla del test ji-cuadrado . . . . . . . . . . . . . . . . . . . . . . . 18
3.7.1. Residuos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.8. Test de independencia con muestras pequenas . . . . . . . . . . . . . 19
3.8.1. Test exacto de Fisher para tablas 2 2 . . . . . . . . . . . . 19
3.9. Test exacto de Fisher y alternativa bilateral . . . . . . . . . . . . . . 20

3
4. Regresion 1
4.1. Regresion lineal simple . . . . . . . . . . . . . . . . . . . . . . . . . . 2
4.2. Regresion lineal multiple . . . . . . . . . . . . . . . . . . . . . . . . . 5
4.3. Estimacion de . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
4.4. Algunos casos particulares . . . . . . . . . . . . . . . . . . . . . . . . 9
4.5. Verosimilitud . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
4.6. Distribucion muestral de . . . . . . . . . . . . . . . . . . . . . . . 10
4.7. Bondad de ajuste . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4.8. Valoracion de las hipotesis del modelo . . . . . . . . . . . . . . . . . 13
4.9. Inferencia sobre el modelo . . . . . . . . . . . . . . . . . . . . . . . . 26
4.10. Seleccion de variables . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.10.1. Procedimientos que comparan modelos . . . . . . . . . . . . . 30
4.10.2. Procedimientos basados en criterios . . . . . . . . . . . . . . 31
4.11. Algunos ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

5. Analisis cluster 1
5.1. Disimilaridades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
5.2. Cluster jerarquico . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
5.3. Metodos de particionamiento . . . . . . . . . . . . . . . . . . . . . . 8
5.3.1. Metodo de las k-medias . . . . . . . . . . . . . . . . . . . . . 9
5.3.2. Particionamiento alrededor de los mediodes . . . . . . . . . . 9
5.4. Silueta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
5.5. Algunos ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

6. Analisis discriminante o de como clasificar con muestra de entre-


namiento 1
6.1. Un problema de probabilidad sencillo . . . . . . . . . . . . . . . . . 4
6.2. Dos poblaciones normales . . . . . . . . . . . . . . . . . . . . . . . . 5
6.3. Dos normales multivariantes . . . . . . . . . . . . . . . . . . . . . . 5
6.4. Dos poblaciones normales multivariantes con parametros desconoci-
dos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
6.5. Analisis discriminante con mas de dos poblaciones normales . . . . 11
6.6. Valoracion del procedimiento de clasificacion . . . . . . . . . . . . . 14
6.7. Variables discriminantes canonicas o discriminantes lineales . . . . . 17
6.8. Algunos ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

7. Modelos lineales generalizados 1


7.1. Componentes de un modelo lineal generalizado . . . . . . . . . . . . 1
7.1.1. Modelos logit binomiales para datos binarios . . . . . . . . . 2
7.1.2. Modelo loglineal de Poisson para conteos . . . . . . . . . . . 2
7.1.3. Desviacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
7.2. GLM para datos binarios . . . . . . . . . . . . . . . . . . . . . . . . 3
7.2.1. Funcion link identidad . . . . . . . . . . . . . . . . . . . . . 4
7.2.2. Ejemplo: Ronquido y enfermedad cardAaca . . . . . . . . . . 4
7.3. GLM para conteos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4
7.3.1. Apareamiento de cangrejos herradura . . . . . . . . . . . . . 4
7.4. Respuesta ordinal: modelos logit acumulados . . . . . . . . . . . . . 8
7.5. Sobre la interpretacion de los coeficientes . . . . . . . . . . . . . . 10
7.6. Verosimilitud de un modelo lineal generalizado . . . . . . . . . . . . 10

8. Componentes principales 1

4
9. De como usar R en un tiempo razonable (no facil, no) 9
9.1. Instalacion y como trabajar con R . . . . . . . . . . . . . . . . . . . 9
9.1.1. R y Windows . . . . . . . . . . . . . . . . . . . . . . . . . . 10
9.1.2. R y Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
9.2. Como fijar el directorio de trabajo? . . . . . . . . . . . . . . . . . . 10
9.3. Etiquetas de valor y de variable . . . . . . . . . . . . . . . . . . . . . 11
9.3.1. Como etiquetar una variable? . . . . . . . . . . . . . . . . . 11
9.4. Elaboracion de un informe a partir del codigo R . . . . . . . . . . . 11
9.4.1. Sweave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
9.5. R y Octave/Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11

10.Datos 13
10.1. scoremaster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13

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

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 [14]. 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 [4].
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 [14] 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 8. 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 6. 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 5. Finalmente en los temas ??, 7 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 ([11]) 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 5.

8
en Linux la opcion mas comoda es utilizar emacs con el paquete ESS. Se pueden
encontrar detalles adicionales cran.r-project.org.

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 [13].

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.
El primer ejemplo que nos viene a la cabeza es el lanzamiento de una moneda.
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.

1
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.1)
axb

para cualesquiera valores reales a b.


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

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.3)
xB

y para variables continuas


Z
P (X B) = f (x)dx. (1.4)
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).

2
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.

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.5)
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.6)
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

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
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.7)

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.8)
y
cov(Y ) = cov(AX) = Acov(X)A . (1.9)

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.10)
(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.11)

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 ).

6
Teorema 1 Supongamos Y Nd (, ) y sea
 (1)   (1)   
Y 11 12
Y = , = , = ,
Y (2) (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 1 (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)

7
Como generamos 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,] 3.4575701 0.8308993 2.4733453 1.9360517 2.6605387
[2,] 1.9275254 0.8371593 1.3174912 1.4243853 0.9689455
[3,] 2.3652157 -1.0234748 2.0113015 1.9121250 2.5427971
[4,] 2.1928519 2.1395744 2.3842476 2.1126599 1.7625943
[5,] 2.9372695 2.0654236 2.9437489 2.6477114 1.9236600
[6,] 1.6134986 1.2146367 0.8529311 0.5597075 1.0364263
[7,] 0.7812223 0.5817880 0.6076207 0.5463480 0.6898311
[8,] 1.5843938 1.5510367 1.9970804 1.4463732 2.4430085
[9,] 0.6605728 -0.6086172 0.4355153 0.6543631 0.7137439
[10,] 3.1727634 2.9578943 3.0416038 2.5259566 2.2397013

Una version extendida de la nota se puede ver en


http: // www. uv. es/ ayala/ DOCENCIA/ ad/ PDF/ notaR106. pdf y el codigo utili-
zado aparece en
http: // www. uv. es/ ayala/ DOCENCIA/ ad/ codigoR/ notaR106R. R

NA

8
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 [14] sera bueno consultar [16] 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 2 (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.
Una version extendida de la nota se puede ver en
http: // www. uv. es/ ayala/ DOCENCIA/ ad/ PDF/ notaR150. pdf y el codigo utili-
zado aparece en
http: // www. uv. es/ ayala/ DOCENCIA/ ad/ Rcode/ notaR150_ wc. R

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
1 X
S2 = (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.

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
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

11
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 Sjj Skk
i=1 ij j i=1 ik k

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

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 2
n
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

12
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 2
=E 2 + 2
= . (2.18)
p p (1 p) 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

13
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)

2.5.1. Test del cociente de verosimilitudes


El cociente de verosimilitudes para contrastar estas hipotesis se define como

max0 L()
= (2.22)
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.23)
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.24)
6 0 .
H1 : = (2.25)

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


el estadstico
0
z= (2.26)
SE()
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.24. La version multivariante del estadstico dado en 2.26 viene dada
por
W = ( 0 ) [cov()]1 ( 0 ), (2.27)

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 .

14
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.28)
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.29)
S/ n

La ecuacion anterior la podemos reescribir como


S S
P (Xn tn1,1/2 Xn + tn1,1/2 ) = 1 . (2.30)
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.
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.31)

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.32)
SE()

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

15
16
Captulo 3

Analisis de datos categoricos

Este tema esta dedicado al tratamiento de datos categoricos. La referencia biblio-


grafica basica que vamos a seguir es [1]. Asociado a este texto Laura A. Thomson
ha escrito un manual que reproduce el numerotexto de Agresti con R. Es de un
enorme valor. Se puede conseguir en
https://home.comcast.net/~lthompson221/Splusdiscrete2.pdf.

3.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.
Recordemos que una variable aleatoria tiene una distribucion Bernoulli, Y
Bi(1, ), si
P (Y = 1) = , P (Y = 0) = 1 .
Si Y1 , . . . , Yn son variables Bernoulli independientes e identicamente distribuidas
entonces
Xn
Y = Yi Bi(n, ).
i=1

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

1
i-esima prueba la podemos expresar como yi = (yi1 , . . . , yic ) y el numero de pruebas
que han dado el resultado j viene dada por
n
X
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 ).

Su funcion de probabilidad conjunta viene dada por


n!
p(n1 , . . . , nc ) = n1 . . . cnc .
n1 ! . . . 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 3 (notaR501) 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 bi-
nomial 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.

2
> rbinom(100, size = 10, prob = 0.23)

[1] 1 2 2 2 2 1 1 4 5 2 3 1 5 0 0 3 2 1 4 1 2 0 2 2 3 4 1 4 0 4 5 3 3 3 2 0 3
[38] 0 2 4 3 4 1 4 2 0 4 5 4 2 5 4 1 4 2 1 4 4 3 3 4 4 2 0 2 3 3 1 3 6 2 1 3 3
[75] 1 1 4 2 1 2 3 2 1 3 1 4 3 5 3 4 2 1 2 3 4 1 4 0 2 3

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

> rmultinom(10, size = 12, prob = c(0.1, 0.2, 0.8))

[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 0 2 2 1 0 0 1 1 3 0
[2,] 0 1 1 1 2 3 6 1 1 2
[3,] 12 9 9 10 10 9 5 10 8 10

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] 12 15 15 9 15 13 12 10 9 21 13 10 18 7 18 11 13 19 7 11 10 12 21 8 12
[26] 7 18 16 15 12 8 10 13 11 14 16 11 7 14 14 13 14 13 10 17 17 14 11 4 12

Una version extendida de la nota se puede ver en


http: // www. uv. es/ ayala/ DOCENCIA/ ad/ PDF/ notaR501. pdf y el codigo utili-
zado aparece en
http: // www. uv. es/ ayala/ DOCENCIA/ ad/ Rcode/ notaR501_ wc. R

En lo que sigue el siguiente resultado es muy importante.

3
Teorema 2 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
n1 ! . . . 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.

3.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
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.

3.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

4
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).

3.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 4 (notaR502) Consideramos los datos scoremaster 10.1.


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)

5
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)

> 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

Una version extendida de la nota se puede ver en


http: // www. uv. es/ ayala/ DOCENCIA/ ad/ PDF/ notaR502. pdf y el codigo utili-
zado aparece en
http: // www. uv. es/ ayala/ DOCENCIA/ ad/ Rcode/ notaR502_ wc. R

6
3.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.

3.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 .

7
Nota de R 5 (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. Son consistentes los datos con
la teora?
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

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.
Una version extendida de la nota se puede ver en
http: // www. uv. es/ ayala/ DOCENCIA/ ad/ PDF/ notaR503. pdf y el codigo utili-
zado aparece en
http: // www. uv. es/ ayala/ DOCENCIA/ ad/ Rcode/ notaR503_ wc. R

3.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 de la situacion en
que tenemos dos variables categoricas.

3.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),

8
Cuadro 3.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

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 .

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 3.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.

9
Cuadro 3.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

Cuadro 3.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

La sensibilidad es la proporcion de enfermos correctamente diagnosticados o,


de un modo mas preciso,

1|1 = P (Y = 1|X = 1).

La especificidad es la proporcion de sanos correctamente diagnosticados o

2|2 = P (Y = 2|X = 2).

Nota de R 6 (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)

10
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
Una version extendida de la nota se puede ver en
http: // www. uv. es/ ayala/ DOCENCIA/ ad/ PDF/ notaR540. pdf y el codigo utili-
zado aparece en
http: // www. uv. es/ ayala/ DOCENCIA/ ad/ Rcode/ notaR540_ wc. R

3.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 n ij ! 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

11
Cuadro 3.4:
Enfermedad venerea No enfermedad
Con preservativo
Sin preservativo

Cuadro 3.5:
1 2
1 1|1 2|1
2 1|2 2|2

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.

3.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 ,

Cuadro 3.6:

Exito Fracaso
Grupo 1 1|1 2|1
Grupo 2 1|2 2|2

12
Cuadro 3.7:

Exito Fracaso
Grupo 1 1 1 1
Grupo 2 2 1 2

o el riesgo relativo,
1
,
2
o bien el cociente de odds (odds ratio)

1 /(1 1 )
= .
2 /(1 2 )

3.4.4. Odds y odds ratio


Si es la probabilidad de exito entonces los odds se definen como

= .
1
Equivalentemente

= .
+1
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 7 (notaR504) Los datos se refieren al efecto de la aspirina en la pre-


vencion del infarto.

> x = c(104, 189)


> n = c(11037, 11034)
> prop.test(x, n)

13
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

> 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

14
Cuadro 3.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 3.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

x[2]*(n[1]-x[1])/(x[1]*(n[2]-x[2]))
Una version extendida de la nota se puede ver en
http: // www. uv. es/ ayala/ DOCENCIA/ ad/ PDF/ notaR504. pdf y el codigo utili-
zado aparece en
http: // www. uv. es/ ayala/ DOCENCIA/ ad/ Rcode/ notaR504_ wc. R

3.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 8 (notaR507) Esta nota es una ilustracion de la paradoja de Simpson


donde las asociaciones parciales pueden no coincidir con la asociacion global.
Cargamos el paquete vcd [? ]

> library(vcd)

Construmos la tabla con los conteos.

15
> 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)

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

Una version extendida de la nota se puede ver en


http: // www. uv. es/ ayala/ DOCENCIA/ ad/ PDF/ notaR507. pdf y el codigo utili-
zado aparece en
http: // www. uv. es/ ayala/ DOCENCIA/ ad/ Rcode/ notaR507_ wc. R

16
3.6. Inferencia en tablas de contingencia
3.6.1. Intervalos de confianza para parametros de asociacion
Intervalo para los odds ratio
El estimador del odds ratio es
n11 n22
= .
n12 n21
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.

17
Intervalo de confianza para el riesgo relativo
El riesgo relativo muestral viene dado por
1
r=
2
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

3.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.

3.7. Mas alla del test ji-cuadrado


3.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

18
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 )

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.

3.8. Test de independencia con muestras pequenas


3.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.

19
3.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 ))

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 4

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 9 (notaR100) El primer conjunto de datos fueron publicados por Fisher[6].


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"])

Repetimos el dibujo para los machos.

> plot(Bwt[Sex == "M"], Hwt[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
y hembras.
Una version extendida de la nota se puede ver en
http: // www. uv. es/ ayala/ DOCENCIA/ ad/ PDF/ notaR100. pdf y el codigo utili-
zado aparece en
http: // www. uv. es/ ayala/ DOCENCIA/ ad/ Rcode/ notaR100_ wc. R

Nota de R 10 (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.

1
> plot(cars, xlab = "Speed (mph)", ylab = "Stopping distance (ft)",
+ las = 1)
Podemos predecir de algun modo el tiempo de parada a partir de la velocidad
del vehculo?
Una version extendida de la nota se puede ver en
http: // www. uv. es/ ayala/ DOCENCIA/ ad/ PDF/ notaR101. pdf y el codigo utili-
zado aparece en
http: // www. uv. es/ ayala/ DOCENCIA/ ad/ Rcode/ notaR101_ wc. R
En este tema utilizamos de un modo importante el paquete faraway [5].

4.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
(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 ). (4.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. (4.2)
Las hipotesis asumidas en 4.1 y 4.2, podemos expresarlas conjuntamente diciendo
que la variable respuesta Y se puede expresar como
Y = 0 + 1 x + , (4.3)

2
donde
N (0, 2 ). (4.4)
En la formulacion de 4.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 ), (4.5)
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 4.5
lo podemos reescribir como
Y = X + , (4.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.

Nota de R 11 (Fichero 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. En figura 4.1 tenemos los datos con los que trabajamos.
Obtenemos como el ajuste de regresion lineal simple con la funcion lm. La salida
basica que produce nos muestra los estimadores mnimo cuadraticos de los coeficien-
tes . En la figura 4.2 aparece la recta mnimo cuadratica superpuesta a los datos
originales utilizando la funcion abline. Vemos tambien como obtener las predicciones
y los residuos observados. Finalmente mostramos los residuos frente a las predic-
ciones 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.

3
data(Orange)
attach(Orange)
plot(age,circumference) #fig118a.ps

lm(circumference ~ age,data=Orange)

> lm(circumference ~ age,data=Orange)

Call:
lm(formula = circumference ~ age, data = Orange)

Coefficients:
(Intercept) age
17.3997 0.1068

abline(lm(circumference ~ age,data=Orange)) #fig118b

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

#Veamos que podemos obtener


attributes(orange.lm)

> attributes(orange.lm)
$names
[1] "coefficients" "residuals" "effects" "rank"
[5] "fitted.values" "assign" "qr" "df.residual"
[9] "xlevels" "call" "terms" "model"

$class
[1] "lm"

#Valores ajustados
orange.lm$fitted.values

> 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

#Residuos observados
orange.lm$residuals

> orange.lm$residuals

4
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

#Residuos frente a predicciones

plot(orange.lm$fitted.values, orange.lm$residuals)
200
150
circumference

100
50

500 1000 1500

age

Figura 4.1:

4.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 ) + , (4.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

5
200
150
circumference

100
50

500 1000 1500

age

Figura 4.2:
40
20
orange.lm$residuals

0
20
40

50 100 150

orange.lm$fitted.values

Figura 4.3:

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.

6
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 + . (4.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.
y
Residuo

Espacio
engendrado
por X

Valor ajustado

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

4.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). (4.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. (4.10)

Si asumimos que la matriz X X es una matriz no singular entonces tendremos que

= (X X)1 X y, (4.11)

7
y en consecuencia se sigue que

X = X(X X)1 X y = Hy. (4.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 . (4.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. (4.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 , (4.15)
i=1

y sera, como funcion de la matriz H,

= y (I H)(I H)y = y (I H)y. (4.16)

Veamos una interpretacion geometrica que nos ayude a entender que son los
estimadores mnimo cuadraticos que utilizamos. Estamos minimizando (yX) (y
X). Si vemos la figura 4.4 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 ). (4.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 . (4.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 . (4.19)
i=1

Suma de cuadrados del error


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

Suma de cuadrados de la regresion


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

8
4.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
con
 
n 0
X X = Pn 2
0 i=1 i x)
(x

Finalmente se comprueba sin dificultad que


Pn
(xi x)yi
= Pi=1n 2
(4.22)
i=1 (xi x)

4.5. Verosimilitud
Dados los datos (xi , yi ) con i = 1, . . . , n la verosimilitud de y = (y1 , . . . , yn )
vendra dada por
1 1
L(, ) = n
n
exp{ 2 (y X) (y X)} (4.23)
(2) 2 2

y la logverosimilitud sera
n 1
l(, ) = log(2) n log 2 (y X) (y X). (4.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.
Veamos un primer analisis de regresion utilizando la funcion base lm.

Nota de R 12 (Fichero notaR119) Vamos a trabajar con un banco de datos re-


lativos a precios de la vivienda. Es un fichero que viene con el paquete SPSS. Te-
nemos las siguientes variables:
VALTERR Valor de tasacion del terreno.
VALMEJOR Valor de tasacion de las mejoras.

9
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.

library(foreign)
x = read.spss(file='../data/venta_casas.sav',to.data.frame=T)
attach(x)
casas.lm = lm(PRECIO ~ VALTERR + VALMEJOR)

casas.lm

> casas.lm

Call:
lm(formula = PRECIO ~ VALTERR + VALMEJOR)

Coefficients:
(Intercept) VALTERR VALMEJOR
767.4080 3.1916 0.4779

4.6. 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 ) = , (4.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.
Veamos la expresion de la matriz de varianzas.

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


Como vemos la matriz de covarianzas depende de la varianza desconocida del error
2 . Si estimamos esta varianza podremos tener un estimador de dicha matriz de
covarianzas. Se puede probar que

E[SS(Error)] = (n p) 2 (4.27)
de donde, un estimador insesgado para la varianza 2 viene dado por

2 = . (4.28)
np

Ya podemos estimar var(). Este estimador sera

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

10
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

SE(i ) = aii . (4.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 ). (4.31)
Nota de R 13 (Fichero notaR121) Utilizamos los datos de 12. Una vez reali-
zado el ajuste con la funcion summary podemos observar los valores estimados de
(etiquetado como Residual standard error y los errores estandar de i .

summary(casas.lm)

> 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|)
(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

4.7. 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
2 (yi yi )2 SS(Error)
R = 1 Pni=1 2
= 1 . (4.32)
(y
i=1 i y i ) SS(T otal)

11
Pn
Es habitual denominar a Pi=1 (yi yi )2 , suma de cuadrados del error mientras
que a SS(Regresion) = ni=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
= . (4.33)
(y
i=1 i y i ) 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
, (4.34)
i=1 (yi y) /(n 1)

donde suponemos que tenemos p 1 variables predictoras.

Nota de R 14 (Fichero notaR120) Continuamos con los datos de la nota 12.


Vemos los coeficientes estimados y los valores de R2 y R2 -ajustado.

summary(casas.lm)

> 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|)
(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

12
4.8. 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:
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 , (4.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 .
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 (Fichero notaR122) Los datos que vamos a utilizar para valorar
las hipotesis del modelo son los datos savings contenido en la librera faraway ([?
]). En la figura 4.5 tenemos un diagrama de puntos donde en abscisas tenemos las
predicciones y en ordenadas tenemos los residuos. No parece en principio que no
podamos asumir una varianza constante. Observemos la figura 4.5 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)

13
Residuals vs Fitted

10
Zambia

5 Philippines
Residuals

0
5

Chile
10

6 8 10 12 14 16

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

Figura 4.5:

#Notemos que elegimos el primer dibujo


plot(savings.lm,which=1) #fig122a

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 (Fichero notaR123) Ilustramos como observaramos residuos cu-


ya varianza es constante. En la figura 4.6 tenemos 50 posibles residuos en donde la
varianza es constante. En la figura 4.7 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 porel que
multipli-

camos. En la figura 4.8 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.
Finalmente en la figura 4.9 mostramos un ejemplo de un residuo no lineal. Es un
caso en que no podemos suponer la media funcion lineal de los predictores.

## Evaluacion de los residuos con datos generados

14
par(mfrow=c(3,3))

##Varianza constante
for(i in 1:9)
plot(1:50,rnorm(50)) #fig123a

##Varianza no constante
for(i in 1:9)
plot(1:50,(1:50)*rnorm(50)) #fig123b

##Varianza ligeramente no constante


for(i in 1:9)
plot(1:50,sqrt((1:50))*rnorm(50)) #fig123c

##No linealidad
for(i in 1:9)
plot(1:50,cos((1:50)*pi/25)+rnorm(50)) #fig123d

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 (Fichero notaR124) Para los datos savings representamos un di-


bujo q-q. En la figura 4.10 mostramos como hacerlo despues de ajustar el modelo
y utilizando la funcion plot (realmente estamos utilizando plot.lm). En la figura
4.11 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.

#Dibujo q-q para los datos savings


plot(savings.lm,which=2) #fig124a

#Otra forma de hacerlo sin utilizar el plot.lm


qqnorm(residuals(savings.lm),ylab="Residuos")
qqline(residuals(savings.lm)) #A~nade una lnea que une primer y tercer
#cuartil
#fig124b

Veamos como se modifica la forma del dibujo q-q con otras distribuciones que
no son normales. Es decir, vamos a valorar la forma de esta representacion grafica
cambiando el modelo.

Nota de R 18 (Fichero notaR125) En esta nota consideramos cuatro distribu-


ciones de probabilidad. En la figura 4.12 aparecen las densidades de los modelos
considerados. La primera es la correspondiente a la distribucion normal. Luego te-
nemos la lognormal, la densidad de una Cauchy y la densidad uniforme. La lognor-
mal se toma como ejemplo de distribucion asimetrica, la Cauchy como ejemplo de

15
0.0 1.0 2.0

2
1.0
rnorm(50)

rnorm(50)

rnorm(50)

1
0.0

0
1
1.5

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

1:50 1:50 1:50

1.0
2
rnorm(50)

rnorm(50)

rnorm(50)
1
1

0.0
0
0
1

1.0
2

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

1:50 1:50 1:50

2
2

3
2

1
1
rnorm(50)

rnorm(50)

rnorm(50)
1
0

0
1 0
2 1

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

1:50 1:50 1:50

Figura 4.6:

una distribucion con las colas mas largas que la normal y finalmente la uniforme
como ejemplo de distribucion con las colas mas cortas.
En la figura 4.13 tenemos nueve dibujos q-q realizados con datos simulados con
una distribucion normal. Las figuras 4.14, 4.15 y 4.16 tambien dibujos q-q con datos
simulados correspondientes a la distribucion lognormal (figura 4.14), distribucion de
Cauchy (figura 4.15) y uniforme (figura 4.16).

##Veamos como se modifican los dibujos q-q con otras distribuciones


##Primero vemos las densidades de probabilidad

par(mfrow=c(2,2)) #fig125a
##Con una normal
curve(dnorm)
##Con una lognormal como ejemplo de distribucion asimetrica
curve(dlnorm)

16
40
(1:50) * rnorm(50)

(1:50) * rnorm(50)

(1:50) * rnorm(50)
50

50
0

0
80 40

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

1:50 1:50 1:50

100

50
(1:50) * rnorm(50)

(1:50) * rnorm(50)

(1:50) * rnorm(50)
50

0
50

0
50 0

100
50

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

1:50 1:50 1:50

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

(1:50) * rnorm(50)

(1:50) * rnorm(50)
50

40
0

0
0
100

50
40

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

1:50 1:50 1:50

Figura 4.7:

##Con una Cauchy como ejemplo de distribucion con colas mas largas
curve(dcauchy)
##con una uniforme como ejemplo de distribucion con colas mas cortas
curve(dunif)

##Generamos datos y vemos los dibujos correspondientes


par(mfrow=c(3,3))
for(i in 1:9) qqnorm(rnorm(50)) #fig125b

for(i in 1:9) qqnorm(exp(rnorm(50))) #fig125c


for(i in 1:9) qqnorm(rcauchy(50)) #fig125d
for(i in 1:9) qqnorm(runif(50)) #fig125e

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

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

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

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

15
5

5
0

5
15 5
10
10

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

1:50 1:50 1:50


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

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

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

10
5
5

0
5
5

10
15

15

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

1:50 1:50 1:50


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

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

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

5 10
5 10
0

0
0
10

10

10

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

1:50 1:50 1:50

Figura 4.8:

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 (Fichero notaR126) Aplicamos un test de Shapiro-Wilk a los re-


siduos 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)

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

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

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


1 2 3
0 1 2 3

1 2
1
1
2

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

1:50 1:50 1:50


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

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

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

1 2 3
2
1 2

1
0
1

1
2
3

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

1:50 1:50 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

2
1

1
0

0
0
2

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

1:50 1:50 1:50

Figura 4.9:

shapiro.test(residuals(savings.lm))

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

Shapiro-Wilk normality test

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

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 , (4.36)
i=1 i

19
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)

Figura 4.10:

Normal QQ Plot
10
5
Residuos

0
5

2 1 0 1 2

Theoretical Quantiles

Figura 4.11:

bajo la hipotesis nula de incorrelacion la distribucion es una combinacion lineal de


distintas distribuciones 2 .

Nota de R 20 (Fichero notaR127)


library(lmtest)

#Aplicamos el test de Durbin-Watson


dwtest(savings.lm)

> dwtest(savings.lm)

Durbin-Watson test

20
0.4

0.6
0.3

dlnorm (x)
dnorm (x)

0.4
0.2

0.2
0.1

0.0
2 1 0 1 2 2 1 0 1 2

x x

0.0 0.2 0.4 0.6 0.8 1.0


0.25
dcauchy (x)

dunif (x)
0.15
0.05

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

x x

Figura 4.12:

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

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.
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
P residuo baja. Forzamos al
ajuste a que este proximo a yi . Se tiene que pi=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 (Fichero notaR128) Calculamos las influencias para los datos


savings. En figura 4.17 aparece una representacion de las influencias respecto de los
residuos estandarizados.

21
Normal QQ Plot Normal QQ Plot Normal QQ Plot

2
Sample Quantiles

Sample Quantiles

Sample Quantiles
2

1
1

0
0
0

2 1
2
2

2 1 0 1 2 2 1 0 1 2 2 1 0 1 2

Theoretical Quantiles Theoretical Quantiles Theoretical Quantiles

Normal QQ Plot Normal QQ Plot Normal QQ Plot

2
2
Sample Quantiles

Sample Quantiles

Sample Quantiles
2

1
1

0
0

0
1
2
2

2 1 0 1 2 2 1 0 1 2 2 1 0 1 2

Theoretical Quantiles Theoretical Quantiles Theoretical Quantiles

Normal QQ Plot Normal QQ Plot Normal QQ Plot

0.0 1.0 2.0


Sample Quantiles

Sample Quantiles

Sample Quantiles
2
2
1

0
0

1.5
2

2 1 0 1 2 2 1 0 1 2 2 1 0 1 2

Theoretical Quantiles Theoretical Quantiles Theoretical Quantiles

Figura 4.13:

library(faraway)
data(savings)
savings.lm = lm(sr ~ pop15 + pop75 + dpi + ddpi, savings)
#Calculamos las influencias
savings.inf = influence(savings.lm)
savings.inf$hat

#Veamos la representacion grafica

plot(savings.lm,which=5) #fig128a

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 = (4.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

22
Normal QQ Plot Normal QQ Plot Normal QQ Plot

8 10
12
Sample Quantiles

Sample Quantiles

Sample Quantiles

6
8

4
4
4

2
2

0
0
0

2 1 0 1 2 2 1 0 1 2 2 1 0 1 2

Theoretical Quantiles Theoretical Quantiles Theoretical Quantiles

Normal QQ Plot Normal QQ Plot Normal QQ Plot

8
Sample Quantiles

Sample Quantiles

Sample Quantiles
6

6
6
4

4
4
2

2
2
0
0

0
2 1 0 1 2 2 1 0 1 2 2 1 0 1 2

Theoretical Quantiles Theoretical Quantiles Theoretical Quantiles

Normal QQ Plot Normal QQ Plot Normal QQ Plot

5
6
Sample Quantiles

Sample Quantiles

Sample Quantiles
6

4
4

3
4

2
2
2

1
0

0
0

2 1 0 1 2 2 1 0 1 2 2 1 0 1 2

Theoretical Quantiles Theoretical Quantiles Theoretical Quantiles

Figura 4.14:

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) . (4.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 )

23
Normal QQ Plot Normal QQ Plot Normal QQ Plot

40

80
Sample Quantiles

Sample Quantiles

Sample Quantiles
10
20

40
10
0

0
30
20

40
2 1 0 1 2 2 1 0 1 2 2 1 0 1 2

Theoretical Quantiles Theoretical Quantiles Theoretical Quantiles

Normal QQ Plot Normal QQ Plot Normal QQ Plot

50
Sample Quantiles

Sample Quantiles

Sample Quantiles
20 0

30
0 10

10
60

20

10
2 1 0 1 2 2 1 0 1 2 2 1 0 1 2

Theoretical Quantiles Theoretical Quantiles Theoretical Quantiles

Normal QQ Plot Normal QQ Plot Normal QQ Plot


100
Sample Quantiles

Sample Quantiles

Sample Quantiles
5

100
50
0
10 5

300
50

2 1 0 1 2 2 1 0 1 2 2 1 0 1 2

Theoretical Quantiles Theoretical Quantiles Theoretical Quantiles

Figura 4.15:

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
,t
que esten fuera del intervalo [tnp1,1 2n ].
np1,1 2n

24
Normal QQ Plot Normal QQ Plot Normal QQ Plot

1.0

1.0
Sample Quantiles

Sample Quantiles

Sample Quantiles

0.8
0.6

0.6

0.4
0.2

0.2

0.0
2 1 0 1 2 2 1 0 1 2 2 1 0 1 2

Theoretical Quantiles Theoretical Quantiles Theoretical Quantiles

Normal QQ Plot Normal QQ Plot Normal QQ Plot


Sample Quantiles

Sample Quantiles

Sample Quantiles
0.8
0.8

0.8
0.4

0.4

0.4
0.0

0.0

0.0
2 1 0 1 2 2 1 0 1 2 2 1 0 1 2

Theoretical Quantiles Theoretical Quantiles Theoretical Quantiles

Normal QQ Plot Normal QQ Plot Normal QQ Plot


Sample Quantiles

Sample Quantiles

Sample Quantiles

0.8
0.8
0.8

0.4

0.4
0.4

0.0
0.0

0.0

2 1 0 1 2 2 1 0 1 2 2 1 0 1 2

Theoretical Quantiles Theoretical Quantiles Theoretical Quantiles

Figura 4.16:

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)

Figura 4.17:

25
Nota de R 22 (Fichero notaR130) Calculamos para los datos savings los resi-
duos estudentizados 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
.

#Residuos estudentizados
savings.rs = rstudent(savings.lm)

#Comparamos los residuos el percentil correspondiente

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

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
(y y(i) ) (y y(i) ) 1 hi
Di = 2
= ri2 . (4.39)
p p 1 hi
Nota de R 23 (Fichero notaR129) Con los datos savings representamos las dis-
tancias de Cook (figura 4.18) 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.

#Distancia de Cook
plot(savings.lm,which=4) #fig129a

#Tambien podemos ver los valores de la


# distancia de Cook
cooks.distance(savings.lm)

4.9. 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(, )
= (4.40)
max(,) L(, )

26
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)

Figura 4.18:

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

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)

27
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 4.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 (Fichero 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 rechaza-
mos la hipotesis 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.

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

#Hacemos el ajuste lineal


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

summary(savings.lm)

> 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

28
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

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 (Fichero notaR132) Calculamos los intervalos de confianza para


los coeficientes de savings con la funcion confint.

confint(savings.lm)

> 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

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

29
pero hay que considerar la varianza anadida por el error de modo que la varianza
al predecir Y dado x0 sera
var(x0 ) + 2
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 (Fichero notaR133) Con los datos savings consideramos como


obtener las predicciones, intervalos de confianza para las medias y para las predic-
ciones. Utilizamos los propios datos que se han utilizado para ajustar el modelo. Con
la funcion predict obtenemos las predicciones as como los intervalos de confian-
za para las medias de las predicciones (predict con la opcion interval=confidence)
y los intervalos de confianza para las observaciones (predict con la opcion inter-
val=prediction).

#Predicciones para los propios datos


predict(savings.lm)

#Intervalos de confianza para la prediccion de la media


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

#Intervalos de confianza para la prediccion de la observacion


predict(savings.lm,interval="prediction")

4.10. 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
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.

4.10.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

30
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 (Fichero notaR146) Utilizamos los datos state y aplicamos un
procedimiento 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)

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

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

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

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

4.10.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 (Fichero notaR147) Vamos a aplicar una seleccion de variables
utilizando la optimizacion (minimizacion del AIC) con los datos state.
Notemos que con en la funcion step podemos indicar con el argumento direction
si queremos both (stepwise), o bien backward o bien forward.

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

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

> 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
<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

32
- 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 librer~


Aa 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)

#Se obtiene el mismo resultado.

4.11. Algunos ejemplos


Terminamos el tema con algunos ejemplos.

Nota de R 29 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.

#Regresion multiple

x= read.table(file="../data/abalone.dat",sep=",")
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)

plot(y.fit)

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

33
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)

plot(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)

plot(y.fit)

Nota de R 30 (Fichero notaR140) Se trata de unos datos utilizados para re-


ducir 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 la pagina
http://www.statsci.org/data/general/water.html.

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

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


summary(a.lm)

#Introducimos un termino cuadratico y otro cubico en la produccion.


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

#Diagnostico del modelo


plot(a.lm)

#Intervalo de confianza para observaciones


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

#Intervalo de confianza para la media


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

34
Nota de R 31 (Fichero notaR141) Las variables son las siguientes:
Variable Description
M percentage of males aged 14-24
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 14-24
U2 unemployment rate of urban males 35-39
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)

crime.lm2 <- lm(Crime~M+Ed+Po1+U2+Ineq+Prob)

summary(crime.lm2)

plot(crime.lm2)

#Hay diferencias significativas entre los modelos?


anova(crime.lm,crime.lm2)

35
36
Captulo 5

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 5.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 [10]
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 5.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 5.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 5.3.
Empezamos viendo un conjunto de datos que nos sugieran el problema y como
tratarlo.

Nota de R 32 (Fichero notaR109) Generamos dos tres muestras correspondien-


tes a distribuciones 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 la librera [? ] para simular las distintas normales
bivariantes. Como podemos ver en la figura 5.1. Se ve que hay tres grupos pero estos
no estan muy claramente delimitados. Nosotros no disponemos de esta informacion.
Conocemos los valores que componenten los vectores de datos pero no conocemos a
que grupo podra pertenecer una observacion de las consideradas. Tampoco tenemos
porque tener prefijado el numero de cluster. Los datos son artificiales pero ilustra
perfectamente el tipo de datos y lo que pretendemos hacer con ellos.

library(mvtnorm)

limite.x = c(-1,8)
limite.y = limite.x
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))

if(dib) postscript(file="fig109a.ps",horizontal=F)
plot(x1,xlim=limite.x,ylim=limite.y)
points(x2,pch=2)
points(x3,pch=3)
if(dib) dev.off()

Una referencia muy adecuada que se puede consultar es el texto de [10]. Cualquier
texto de reconocimiento de patrones es adecuado.
En lo que sigue vamos a basarnos fundamentalmente en la librera cluster [12].

5.1. Disimilaridades
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).

2
8
6
4
x1[,2]

2
0

0 2 4 6 8

x1[,1]

Figura 5.1:

Desigualdad triangular d(x, z) d(x, y) + d(y, z), para todo x, y, z Rd .


Las distancias mas habitualmente utilizadas en analisis cluster son la distancia
eucldea y la distancia de Manhattan. Si tenemos dos vectores u e v entonces la
distancia eucldea se define como
v
u d
uX
d(u, v) = t (uk vk )2 , (5.1)
k=1

con u, v Rd . La distancia de Manhattan viene dada por


d
X
d(u, v) = |uk vk |. (5.2)
k=1

Las distancias eucldea y de Manhattan son adecuadas cuando trabajamos con


variables continuas y que ademas esten en una misma escala. 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.

Nota de R 33 (Fichero notaR110) En este ejemplo generamos datos 100 datos


con cada una de tres distribuciones normales. La matriz de covarianzas es la misma
y cambiamos el vector de medias. Se utiliza la funcion dist que permite utilizar
mas distancias. En particular, utilizamos la distancia eucldea y la distancia de
Manhattan. Repetimos el calculo utilizando la funcion daisy de la librera cluster.
Tambien calculamos las matrices de distancias para las datos agriculture y pluton.

3
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))
x = rbind(x1,x2,x3)

#Distancia eucldea
dist(x,method = "euclidean")
#Distancia de Manhattan
dist(x,method = "manhattan")

#Con la funcion daisy de cluster


library(cluster)
daisy(x, metric = "euclidean", stand = FALSE)
daisy(x, metric = "manhattan", stand = FALSE)

data(agriculture)
daisy(agriculture, metric = "euclidean", stand = FALSE)

data(pluton)
daisy(pluton, metric = "euclidean", stand = FALSE)

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,
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, cuali-
tativas, 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.
Vamos a ir viendo como se plantea el problema cuando solo tenemos un tipo de
variable no cuantitativa y finalmente veremos como combinarlo todo en una sola
medida de disimilaridad.
Supongamos descrita al individuo o caso mediante d variables binarias. Es na-
tural construir la tabla de contingencia 2 2 que aparece en la tabla 5.1
donde las filas corresponden con el individuo i y las columnas con el individuo j.

Estamos denotando por A el numero de variables en que coinciden los dos indivi-
duos con un valor uno de la variable correspondiente, con B lo mismo pero valiendo

4
Cuadro 5.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

cero la correspondiente variable. El total de variables es d = A + B + C + D.


Basandonos en esta tabla se pueden definir distintas medidas de disimilaridad.
Vamos a considerar una para el caso de variables binarias simetricas y otra para
variables 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 binarias 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
Vemos que simplemente nos olvidamos de los acoplamientosnegativos.
Para variables categoricas donde hay mas de dos categoras (color de pelo, es-
tado civil, tipo de alimentacion, etc). En este caso, la medida de disimilaridad mas
utilizada es el numero de variables en las que no coinciden los dos individuos, es
decir,
du
d(i, j) = ,
d
donde d es el numero de variables y u es el numero de variables en las que coinciden
los dos individuos.
Finalmente veamos como tratar las variables ordinales. Lo que haremos para
variables 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.

5
Hemos visto como tratar cada tipo de variable aisladamente. El problema es
combinar todas ellas en una sola medida de disimilaridad. La funcion daisy de
cluster utiliza la siguiente medida.
Pd (k) (k)
k=1 ij dij
d(i, j) = Pd (k)
, (5.3)
k=1 ij

(k)
donde ij vale uno cuando las medidas xik y xjk no son valores faltantes y cero
(k)
en otro caso. ij vale 0 cuando la variable k es binaria asimetrica y tenemos entre
(k)
los individuos i y j un acoplamiento 0-0. El valor dij es lo que contribuye a la
disimilaridad entre i y j la variable f . Si la variable k es binaria o categorica entonces
(k)
dij es definida como

(k)
dij = 1 si xik 6= xjk y 0 en otro caso.

Si todas las variables son categoricas entonces 5.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. Si una variable es numerica entonces

(k) |xik xjk |


dij =
Rk

siendo Rk el rango de la variable f dado por

Rk = max xhk mn xhk


h h

donde h vara entre todos los individuos con valor no faltante de la variable k.
Cuando todas las variables con las que trabajamos son numericas la medida de
disimilaridad es la distancia de Manhattan.

Nota de R 34 (Fichero notaR111) Un ejemplo de calculo de la medida de di-


similaridad propuesta en 5.3 con la funcon daisy para los datos flower. En estos
datos tenemos todos los tipos de variables posibles.

library(cluster)
help(flower)
daisy(flower, type = list(asymm = 3))

Tenemos una matriz de dimension n n siendo n el numero de datos que recoge


las disimilaridades entre los distintos individuos de la muestra. A partir de esa
matriz vamos a trabajar en los procedimientos jerarquicos.
Con esta matriz podemos medir la disimilaridad que hay entre los elementos
originales de la muestra. Vamos a necesitar en lo que sigue poder medir distancias
entre distintos conjuntos disjuntos de individuos. Sean A y B dos subconjuntos
disjuntos del conjunto de ndices de la muestra {1, . . . , n}. Como podemos definir
disimilaridades partiendo de las disimilaridades entre datos individuales d(i, j)? 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:

6
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.

5.2. Cluster jerarquico


La idea de estos procedimientos es construir una jerarqua de particiones del
conjunto de ndices.
Sea {1, . . . , n} el conjunto de ndices que indican a las distintas observaciones o
individuos de nuestro banco de datos. Supongamos que {C1 , . . . , Cr } es una parti-
cion de este conjunto de ndices, es decir: 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 parti-
cion 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 = {i} con i = 1, . . . , k.
Paso 3 Si tenemos un solo conjunto en la particion paramos el procedimiento.

7
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 35 (Fichero notaR113) Aplicamos un procedimiento de particiona-
miento de las k-medias con el algoritmo de Hartigan-Wong [8]. Vemos que como
resultado tenemos la clasificacion final de cada individuo en un grupo, el vector de
medias de cada grupo que son los centros de los grupos. Como medida de lo compac-
tos que son los grupos encontrados tenemos tambien la suma de cuadrados de cada
grupos. Notemos que la suma de todos estos cuadrados es la que hemos minimizado
imponiendo simplemente el numero total de grupos.

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

#Aplicamos k-medias con algoritmo de Hartigan-Wong


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

#Clasificacion de los primeros datos


y.km$cluster[1:10]

#Centros de los clusters encontrados


y.km$cluster[1:10]

#Sumas de cuadrados dentro de cada grupo


y.km$withinss

#Tama~
no de los clusters
y.km$size

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.

5.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.

8
5.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
d(xj , xCi )2 , (5.4)
i=1 jCi

donde d() denota aqu la distancia eucldea y

1 X
xCi = xj , (5.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 5.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
5.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.
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. Es un procedimiento que funciona muy bien con grandes volumenes
de datos.

5.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 (que Dios nos perdone!).
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 ). (5.6)
i=1 jCi

9
En el metodo de particionamiento alrededor de los mediodes nos planteamos en-
contrar las observaciones m1 , . . . , mk que minimizan el valor dado en la ecuacion
5.6.

Nota de R 36 (Fichero notaR114) Aplicamos a los datos descriptores (descrip-


tores de una base de datos de imagenes digitales) un procedimiento de k-mediodes
con el mismo numero de grupos que utilizamos en 35.

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

y.med = pam(y,5)

y.med$medoids

5.4. Silueta
Veamos como se construye la silueta. Para cada objeto i, sea A el cluster al cual
lo ha asignado el procedimiento cluster que empleamos y calculamos a(i) la disimi-
laridad media de i con todos los demas individuos del grupo A. Obviamente estamos
asumiendo que A contiene al menos otro objeto. Consideremos ahora un cluster C
diferente de A y definamos d(i, C) como la disimilaridad media de i con los objetos
de C. Despues de calcular d(i, C) para todos los clusters C 6= A, seleccionamos el
que tiene el mnimo valor:
b(i) = mn d(i, C).
C6=A

El cluster B donde se alcanza este mnimo, es decir, d(i, B) = b(i) se le llama vecino
del objeto i. Definimos s(i) como

a(i)
s(i) = 1 si a(i) < b(i), (5.7)
b(i)
= 0 si a(i) = b(i), (5.8)
b(i)
= 1 si a(i) > b(i). (5.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 cluster 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.

10
Cuadro 5.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

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 el maximo dado por

SC = max s(k). (5.10)


k

Cuando podemos decir que hay estructura de grupos en los datos que estamos
analizando? Experiencias con datos sugieren la tabla 5.2.

Nota de R 37 (Fichero notaR115) Utilizamos los datos descriptores. Hemos


aplicado una particionamiento alrededor de los mediodes con cinco grupos. Hace-
mos una descriptiva de la silueta obtenida en la clasificacion utilizando la funcion
summary. Vemos que los resultados son realmente malos. No hay estructura cluster
de ningun tipo. Tambien podemos utilizar la representacion grafica de la silueta que
aparece en la figura 5.2. Nuevamente se aprecia que no es adecuado el analisis que
hemos realizado.

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

y.med = pam(y,5)

#Hacemos la silueta
y.si = silhouette(y.med)

summary(y.si)

> 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

11
#y la representamos graficamente
plot(y.si) #fig115a

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


n = 5773 5 clusters Cj
2127
1150
225
5499
2401
4638
1473
4083
3735
4128
4945
5105
3233
2101
5701
3346
5233
772
1508
2234
4880
1533
5423
213
2657
4176
5217
3227
2327
1197
3688
751
3053
662
2350
2515
2416
4012
1276
5757
3449
2092 j : nj | aveiCj si
321
450
1869
2185
2468
3883
1900
1847
4174
2969
4002
796
2317
2710
3633
5401
3798
2093
2600
1165
723
1967
2137
821
134
568
1352
1433
2615
3276
3719
4589
5309
3545
5325
2505
5684
5640
3022
3357
3452
431
2404
2867
4385
5047
2368
2916
5585
683
4220
995
4692
803
1834
4488
5712
1985
4347
97
897
1234
3451
5255
355
2888
5747
2794
1408
4657
4773
3379
4819
2290
99
965
1601
5744
2652
2096
5210
2492
1377
510
1182
2715
4452
5216
4995
740
2800
1690
3064
2531
3426
5404
1863
3538
360
340
620
766
5398
2444
4323
3662
3004
5145
2542
5380
4835
2043
2821
153
1760
2658
3607
4743
1668
2334
4672
2686
1777
3266
1192
3831
3857
4615
4725
254
3270
234
1041
3361
4086
5514
1783
785
2961
4465
551
4189
27
585
4777
5465
4838
277
781
1174
36
3120
1296
5434
1075
4613
973
1013
3666
4908
148
5206
1693
721
3505
39
1323
2563
1516
518
4684
4445
2650
777
720
1930
2064
2276
2195
11
571
3658
1398
929
3291
92
5402
5246
3651
5248
466
365
5601
276
4671
196
1009
1695
2133
2209
4077
4690
5579
543
1644
1939
2895
2534
3744
2841
1151
2640
1556
428
956
1048
1739
4231
4814
2737
5339
3294
4625
1058
1807
2227
4212
4645
2324
5753
1958
2859
2795
1306
293
1340
4751
143
2436
1753
3332
3143
2144
550
2860
634
3184
3237
462
4853
4904
4553
875
1221
1914
5018
5643
3694
451
2521
4118
4155
4384
5321
694
5682
2823
446
4664
1275
5203
5734
4935
3320
883
3490
4101
1791
120
4547
2166
5010
3685
3241
2601
5227
5260
5172
4776
2421
1879
887
4868
5005
5496
4031
1816
2406
4983
1904
3318
1602
4539
1733
3368
4313
4496
5662
2063
1113
4239
2753
715
2811
96
640
467
1061
2748
869
3624
3153
483
845
2377
2420
2497
3029
3946
5197
1183
5687
5577
650
5721
4933
459
1899
1933
1970
3473
3680
4161
4603
3292
1417
1844
1898
2892
3205
5113
4604
1228
5642
3092
460
1520
813
3186
599
1833
874
5028
2066
4652
2861
3265
118
1056
4492
4094
4951
4543
2696
3115
3596
5739
2310
925
588
697
3864
104
3366
1281
3598
5503
4632
217
2230
81
5539
2055
1983
4767
2832
4060
1818
410
5726
731
3983
923
1087
4708
4132
4829
565
1562
3377
2644
655
53
657
4972
1274
3517
957
1976
5360
1092
4262
1655
2637
2656
422
470
1766
2330
2684
1249
2671
3210
3341
2782
5128
1383
1804
4681
130
312
486
945
3386
5480
2068
3295
3838
5241
3038
1106
1924
665
4453
3897
1811
3456
4716
1070
5304
3827
3168
4315
4282
5474
1096
3709
4366
5488
5022
488
3716
4025
4182
5479
107
1920
2512
262
3066
3850
4222
5476
600
1447
5281
1123
3043
2272
541
2966
1366
3576
3242
2088
1030
969
180
3937
2002
2004
4205
5633
3478
3333
247
5159
5498
3262
3609
598
4643
5287
2571
3917
4233
2415
2827
435
1442
779
787
2950
4053
475
3518
4943
403
4588
4032
1618
2391
1410
3727
4821
4505
2475
3692
3628
5745
2764
4051
2761
3493
1462 1 : 1130 | 0.30
4642
5742
1120
2260
5351
1685
2441
2397
1305
154
3940
2252
454
4466
5313
3577
3419
1122
5600
2267
5161
1749
1235
5715
2312
1727
2357
280
2721
3981
5298
2793
4376
1999
3998
2115
2472
3892
3290
5475
4285
4614
4917
5544
3830
4433
5280
5505
3873
5723
4644
2666
4961
2226
4792
870
4074
2280
4906
5124
1926
5444
328
5099
5415
4363
440
1842
2858
5006
4992
5335
2611
4238
401
5083
175
361
1164
4427
383
94
981
3324
4253
2952
1376
2932
3536
5015
3163
5681
1085
4180
3235
3819
3824
5624
1231
2075
4191
2315
176
350
437
1099
5177
4202
3700
4744
5548
4255
2584
135
303
797
4236
1716
3677
5387
5200
2467
830
841
1583
2676
3188
4619
1321
211
2911
1982
2087
2558
2865
3083
5155
2098
3678
4194
2091
1579
3051
2900
2337
3555
1893
2331
3804
3475
108
1522
345
1282
1901
3084
35
2877
3400
1738
4544
4197
1955
255
1890
613
1531
928
1189
4710
3302
2810
268
3077
4676
2338
3715
2817
499
5235
4622
162
3259
2365
1636
614
1126
4844
2323
2962
3526
1315
2390
1020
4583
4196
1493
2017
2626
3219
1913
2871
1097
3995
5615
1654
1643
2112
3854
5566
4256
1719
2738
4745
5271
5129
1256
1724
1855
1880
2038
2198
5279
2287
5278
4517
1057
5348
4862
5728
4981
1295
3726
290
951
1138
4112
3169
4102
3160
1308
4497
3686
744
1354
5316
4827
3777
322
5024
4190
4227
4610
988
1049
2487
1786
2052
3766
5533
1241
5153
4068
4166
392
2182
2585
347
3603
3221
2933
5573
2915
1273
4939
4811
1972
2506
4221
5582
3634
1605
2427
5528
4500
2213
2030
2509
4910
2037
2703
954
4926
1912
2842
2015
1905
4924
4698
1675
2653
299
63
2375
3258
2957
2084
3360
427
3918
275
515
1373
1720
60
1
3314
1304
5020
3450
5329
2476
3615
4800
617
5526
2273
3537
3713
5111
1965
2478
3427
884
4869
4902
2135
3220
4923
2104
4415
3954
4484
2980
962
747
2270
1032
341
3093
5752
171
4753
4425
603
2884
5720
1391
1246
3175
5108
3742
4748
4063
528
3962
886
513
2837
5683
448
1486
2386
2999
1711
5122
105
5066
601
2354
3445
5225
1019
2894
3354
1021
1194
2352
2917
3858
3049
4009
4755
3752
3884
4024
572
4822
649
3839
1171
4984
2245
2051
1527
2541
3351
664
5109
4932
1497
1212
5049
3759
215
3156
2025
2269
3782
4599
580
5437
5056
2089
4294
1746
3121
2231
873
3635
1938
3119
916
4273
4985
4969
4786
5750
5372
898
3745
7
1389
48
3412
879
5513
1663
2744
3888
3891
5512
5679
1645
842
967
2543
3164
3991
863
2328
1470
2372
573
480
5422
2100
493
2083
2024
3540
3157
3
2443
3086
5722
5472
2798
734
1484
2023
5644
5045
329
4756
4789
2249
892
5268
1337
3279
2707
786
3648
4
4076
199
201
2221
1795
3335
20
5150
4787
377
3429
3762
1436
827
1839
1565
2457
3711
2128
1776
2108
1344
2173
3371
3963
4137
4228
1425
2608
204
819
1168
2926
912
346
4147
4381
5050
4382
1550
4563
4471
2042
4297
4403
4955
1866
4680
3618
586
677
921
2589
2695
3226
4357
5599
3118
3879
4473
4278
1135
1498
4317
4461
2706
2829
4788
5751
3919
281
3198
5716
537
2622
3355
3823
379
3298
3942
1581
4796
59
157
1177
1479
2187
3369
1642
2532
2152
260
3528
5661
558
88
4412
1328
4579
2426
5598
5310
2607
1996
1003
3783
172
5762
1729
5048
1547
2387
899
330
616
1832
4700
4719
3943
1455
2590
4694
1140
5336
2839
1125
2080
288
417
1541
1610
2680
3617
5447
5586
3378
3519
4324
1619
2304
3513
2776
3468
338
3903
2107
1641
4000
2787
5040
1624
4387
156
2729
3610
2593
5043
1268
4457
4269
2370
2665
1059
3541
1867
4380
4712
311
569
648
4266
5491
5576
2149
591
2429
3389
4450
258
5652
5019
1224
133
3548
5452
5267
497
232
65
2
1639
936
5118
5082
5714
5413
1004
654
1237
3965
2340
5002
776
4833
5525
742
3820
5670
294
2139
1449
2309
4591
5073
815
82
3223
596
1614
5664
3334
3535
5527
4601
8
283
2314
1468
3337
1166
824
4912
5550
926
4242
2852
2123
4048
4229
771
1186
4314
1734
1060
139
4683
2006
2145
1077
5426
3672
85
405
976
4893
2597
5732
5198
3484
2146
3912
4393
1590
2891
1667
2078
2604
1218 2 : 385 | 0.37
2215
3936
4607
2417
5738
3863
4531
2678
2618
1848
2645
4301
5168
4533
3842
880
1014
4216
1458
5346
5429
3482
5264
4978
3496
1584
2689
327
239
5079
334
1884
2673
458
2109
632
3502
3081
3137
4525
5425
3405
1621
3005
165
4153
881
5510
4831
3079
666
983
663
5039
3474
5657
4730
4075
4072
5580
2711
4623
1995
2934
5636
669
4842
2086
5477
1789
1503
4379
3664
4783
5293
5331
3171
3916
4260
127
729
5237
309
2777
5562
2346
2802
1894
2274
1022
2991
2526
4558
1981
1439
4934
1881
4170
3818
3281
3889
712
4816
246
1731
1973
4813
4341
836
1773
862
1806
474
711
5074
287
3902
4963
5261
3078
229
2224
5204
1055
4070
152
1665
575
3665
100
110
3428
2904
4351
3099
2202
4434
2364
2896
3208
3085
387
4863
1984
5297
5531
4707
70
5158
1891
933
4417
1029
4234
595
4090
4480
3756
333
5417
416
3213
5228
1765
2712
4577
433
23
2067
2205
641
3959
2766
142
2027
1219
3861
3252
1925
4279
5445
3572
2955
1051
1993
2011
5400
4232
3336
4336
4832
1367
4431
5169
5192
3920
2677
1513
4595
5635
4241
1961
3556
888
4654
5406
775
3407
2440
2792
5403
4959
3865
3676
4319
4659
4646
4527
3895
2446
3089
4550
2419
1759
4971
2570
4245
1443
2948
5077
1279
1240
2203
2158
3530
4172
146
1265
1318
2546
190
1998
3264
1656
3825
2872
576
5215
2218
4420
2853
556
2504
3811
1137
5438
2124
1012
5616
4905
5666
3993
5727
2990
317
4277
2759
4709
2184
4237
1817
3550
2778
621
93
52
653
3675
3098
1380
5394
1385
5014
408
4348
1580
4230
3172
2830
4442
2036
3613
4502
3470
124
1364
5175
2633
1283
2059
3476
3404
352
5478
5420
4798
74
3110
1712
5655
1575
914
1542
4795
2125
5133
5262
221
351
4114
5034
151
5725
3606
4121
1293
4594
5087
1613
5649
3328
4244
2995
3650
4287
2029
5340
557
4079
2569
1044
1065
864
3979
5396
725
4631
5567
1514
4405
4554
989
1960
1496
5672
2682
4116
4808
949
3978
2480
3460
769
3041
5182
4209
1989
1223
2402
5116
2856
3087
4087
996
4763
5171
998
3140
5538
1856
1713
538
2849
2683
4878
1500
5370
2369
2199
5698
3707
4110
1728
861
4165
5594
2649
319
1664
3652
2157
4154
4887
259
1017
1158
1994
2986
3329
4139
5173
1127
5564
4703
1779
3007
5731
4949
4361
2772
1069
5156
2662
4131
3527
1570
5223
773
4455
539
3432
2455
3195
2651
4215
3554
449
4965
4820
4248
3254
1721
461
5098
876
3418
4895
4704
5574
2743
4424
3297
2210
102
4658
3701
4362
1094
1368
1678
3562
3797
348
5211
2010
790
503
1530
3433
2874
798
5138
5620
5608
1124
3904
2940
2639
5162
4438
3947
84
2244
1287
5354
2977
220
2654
3589
15
4096
4286
3605
5584
4980
3243
5767
4181
1395
326
3515
235
5134
609
79
3578
2824
2366
4306
2498
1357
5626
5012
1686
2845
986
4894
1846
170
3967
5107
1674
1757
5207
150
1612
1861
5250
2341
4872
2394
1413
188
1175
5597
5381
5769
4611
5001
158
4689
4506
4462
4529
3096
3868
1490
3174
2412
2061
2050
1857
3161
4345
265
1606
2972
5448
1949
1705
582
67
4874
882
521
68
4299
3183
1853
2550
1400
4432
2937
5030
4775
3466
5362
2306
5549
4325
160
3533
4536
2713
2922
5665
3498
5430
1761
975
429
3108
1800
54
3206
4311
1756
3803
1482
2628
4691
181
261
555
1564
3812
3822
5591
5333
5383
966
306
4936
192
1510
1688
5596
4581
4697
5166
2507
5677
5157
197
536
924
4849
4250
5561
3789
808
816
3239
1220
3741
4095
336
2283
4629
1345
1708
3869
2362
3516
1507
5768
2586
4741
1722
2371
4441
406
526
889
1888
4396
5604
590
2079
4028
4803
5703
2482
397
2804
746
2277
3348
1929
4801
187
164
811
2919
2261
3646
1948
4856
5064
3422
3500
2572
2747
5455
5060
1222
1450
1501
980
4884
4556
4634
5249
3563
240
3571
2551
3059
1477
1431
4108
2595
5031
1788
4371
307
5188
2638
2489
639
3816
1671
4195
5518
4343
1028
4124
5495
5543
5764
5205
1830
839
2481
2883
3326
5754
1768
2090
2577
3034
4855
5276
2520
4592
2016
4901
2564
73
5622
1945
4941
250
858
2854
3908
553
3194
2614
1886
2732
3800
4586
5288
2956
2003
3813
1461
5658
2140
4185
131
4183
1320
2021
4903
2870
3147
3523
2461
735
2275
1053
1607
3280
5678
1262
2887
5450
643
3423
5029
978
4493
5282
3240
2619
4333
5000
2675
5222
1657
4206
3673
2869
1466
4585
3809
4014
2838
4331
4802
5675
1647
2028
3313
5208
4791
479
618
1226
4749
5017
2537
5184
1710
3319
1747
4997
3385
3338
1215
2967
3806
2996
2974
1361
198
285
3928
724
1411
2548
3068
4168
5414
2525
559
166
3732
1309
2005
3304
4304
4790
3681
5418
4512
3765
2496
529
5766
2316
5651
1420
5519
3860
3668
5560
628
1079
50
831
4449
5218
3574
163
4179
4152
3581
216
4041
676
3141
3620
3913
5456
2395
5305
1236
3106
2731
4062
1559
2606
1363
1149
4160
703
3724
177
1298
1809
2554
1145
1555
5611
3309
3595
4365
1966
3637
1700
2539
64
3192
2201
2428
4193
4909
3124
1205
226
3485
4036
5628
1453
3971
4459
1616
4778
3215
695
1199
4054
5730
1718
1557
3781
2669
4537
272
2936
4706
768
4479
4111
1943
4444
1781
2681
1025
1195
2180
1339
3170
5535
2921
3725
3112
1247
4938
3414
693
3080
2746
3980
5461
3179
2174
1184
3173
4167
3012
476
5072
206
1608
2294
1748
2175
5428
2250
4065
4410
203
4004
233
391
4481
5181
3076
2581
4794
248
3165
5523
5357
3107
2047
1511
2786
3435
2408
3395
1877
522
149
3667
4991
4889
210
4907
5540
3030
5588
963
1937
812
5471
4864
1603
2790
1485
4119
919
4633
4332
182
4837
1548
3504
3271
3638
4576
1230
3542
1100
1896
2345
2470
4207
269
1397
5502
1754
2105
5368
3364
1682
2716
1653
2545
5770
2373
3964
5605
4298
5674
2065
1350
689
4008
3814
2685
5115
4571
2605
940
2975
5302
3911
5032
5656
3738
651
508
3669
4188
4618
1034
5295
5763
2132
382
4421
1572
4397
4630
2164
1301
169
2178
3189
1684
1089
2833
3531
5484 3 : 1694 | 0.14
3788
1917
4578
719
3267
1211
1414
3376
492
291
2750
2616
3345
193
3751
658
3612
4947
4034
1706
2335
395
3026
1416
5054
3656
4069
2111
1758
407
316
3008
2033
5692
5565
3546
5
1278
1248
5352
1036
1987
2828
2988
5119
278
2807
4662
5152
5164
185
3073
3071
2679
1694
2410
3582
1529
4198
5700
5468
1539
748
3278
561
4560
2755
3097
520
2281
1073
2053
3953
5578
4559
2071
3197
3046
3795
4039
4738
4548
4925
5645
4374
4456
4138
3367
4757
4175
4200
5096
3671
767
4596
5327
907
679
2102
563
147
4335
2116
2447
4661
1207
2238
2634
2150
5146
4309
2389
3769
2254
2044
5408
1897
2508
4049
3283
3793
3391
4109
4750
794
2973
3851
3977
5459
2905
3191
3394
1341
3050
546
1803
2594
4388
4608
1133
3495
4020
5706
570
3591
4126
4274
1822
5076
1139
4411
2805
1463
4532
4628
2189
3090
1836
2022
2188
4913
1180
1277
2567
356
5756
5482
754
4873
1050
1819
1670
4246
3915
1441
4475
2929
799
5773
1632
3411
2674
2799
106
818
1307
4346
809
1935
4866
5277
5163
1979
4950
3401
4728
3074
2170
4164
4637
3970
224
491
1269
2851
4383
1551
5090
3408
1594
2959
5407
4606
4852
2733
5224
4841
1845
4029
5178
2266
4877
469
3144
953
3463
4718
2902
4312
3344
2376
2843
4378
4171
4052
1495
3992
5639
1787
2329
1370
652
5142
2423
2736
5312
363
2960
3714
1217
3255
2803
4446
1627
911
14
578
4398
3749
4764
2110
872
78
123
2728
424
5038
4337
2727
612
3055
399
2903
4448
2978
5274
245
4148
577
627
1730
2348
3486
4177
5033
5314
4440
2951
4334
3300
984
4099
5291
3653
2740
4150
3082
3330
3881
452
2035
792
2773
5070
3025
2775
4729
4881
3331
3111
1502
5571
535
4156
270
4486
2503
3200
3722
681
3999
3129
4758
16
2901
4005
4106
5690
3927
5695
3190
2528
4057
3202
1597
1623
1744
1535
1068
1378
2318
2074
939
29
5044
671
789
1170
1284
2530
3261
1267
3218
514
4307
47
1118
2473
3036
1101
2785
583
4669
2197
1343
2749
4989
5114
5356
3930
4113
1736
3682
1906
4921
4805
5347
5319
802
1460
1480
562
4105
5065
1169
1144
3277
1883
917
1035
2897
2177
837
5412
3580
4426
1504
3960
1435
13
1524
2313
1326
5350
5375
2771
3521
266
2694
5522
587
3885
2591
3627
4300
5481
1950
3268
5619
2709
2997
4061
1110
3880
1412
332
2448
4178
4575
1843
3856
4826
685
380
32
2663
173
4982
3211
961
1147
4284
4355
5688
678
2664
1672
4999
3600
1941
1696
5149
38
1525
354
3631
3514
1971
893
2848
1161
1242
2484
3944
3000
668
5416
909
1399
2582
4211
3568
5094
2878
3553
5120
2359
972
2434
3048
783
5300
1146
4356
5392
848
1132
4839
4888
2797
622
3805
868
4258
670
1042
4636
4491
2466
86
4104
2379
5176
4267
5508
4514
4726
4107
4321
5003
4886
4271
699
2453
3303
4723
822
3203
2500
5627
3826
3296
230
4973
3552
12
4781
5069
1599
5330
2211
1095
1554
4975
1752
5485
2449
2660
2890
3492
3185
2113
37
4736
2592
3065
46
2265
3287
1289
4507
4208
4340
4033
4402
4476
1142
3534
1709
2976
2248
481
4084
1253
4570
1566
5084
4085
4666
370
4489
4952
5230
5219
5201
2240
2308
5103
4846
5760
5729
4957
5371
109
389
814
3246
2013
5583
501
3929
5504
817
25
2239
2631
3961
251
3573
2697
1681
990
1849
1388
810
3033
1723
2490
3212
1374
2690
3721
5238
4990
2767
1769
2722
4435
1860
4564
2971
1649
1214
3644
5490
2643
2968
4929
947
705
5592
4851
5369
2899
3899
5390
18
394
3632
4372
2171
2765
1456
4066
425
5421
71
5126
373
3773
4418
1648
2557
1571
602
3148
1574
527
1519
3697
5212
1489
1292
4900
2566
4173
1472
1585
4948
57
2219
3067
1015
4352
505
3898
3359
2770
2610
4650
3905
525
2931
3829
5337
1390
3840
1102
2129
3489
1793
1088
5266
1026
2339
3894
2046
5061
959
419
3951
5075
741
5251
5062
1074
3057
5136
5296
3387
5563
5180
2889
5377
4649
3002
202
971
4754
1854
3061
4942
5693
1578
3069
835
4804
2332
1772
5612
189
3232
4557
2302
44
1835
1988
2780
5289
2924
910
2517
2559
2220
3767
3491
69
3723
3996
3483
4549
5063
4252
3322
624
41
1523
5343
4339
871
91
2483
2630
1875
2702
4240
1549
637
659
856
3424
2236
1394
375
3796
5165
5602
3750
2486
1698
2303
1245
1252
859
4850
516
832
3586
4573
1662
3365
2524
5458
4834
906
3987
1660
2168
3116
4184
242
564
3180
4127
1054
3593
2462
237
722
2935
4882
4865
1676
1907
985
3771
145
3509
3109
4685
5384
948
5433
4226
3844
828
4308
4464
5389
2789
4962
2392
323
313
3774
1300
1666
5194
4768
1134
5009
4218
4472
5265
3834
3846
2439
3006
2788
3420
4302
5410
2552
1047
3032
3520
4142
3010
1978
5557
4392
1198
4665
770
3641
900
43
2963
4159
1160
3019
1303
1796
2208
1968
5500
3150
1936
2136
2970
2941
5395
2263
2381
3835
4574
1270
2768
3866
3187
5234
1109
2511
1934
5334
2190
851
1043
3231
3138
1444
413
2655
434
1335
4567
3045
2535
5634
5187
1622
3706
2635
3446
5127
547
1104
801
3139
384
2311
2367
5646
3976
5686
1258
2844
4867
80
673
1573
1577
2183
1103
3907
2469
3403
34
478
1351
2984
4268
3155
3849
3660
2169
3299
4249
1637
3837
4125
3250
2735
494
1928
253
3704
1403
308
1129
3100
3487
4566
5080
5275
5285
894
58
2034
3372
4330
5541
295
2438
3178
3285
4370
4419
4483
5167
1626
2981
5170
5660
3182
4210
2241
2522
72
579
1342
3763
5345
2906
1492
2217
4584
4731
2587
1078
3817
3882
4513
2212
4503
1329
4169
3760
4918
4046
1887
4375
1018
4247
4058
1560
2167
4354
103
727
1704
1506
5190
3443
4295
5186
1805
1923
5569
3263
749
2076
1902
1191
2620
144
315
1404
2873
3547
3674
1604
2471
1362
4970
1005
3862
5244
2363
1432
2360
2752
5125
5290
2741
5236
3621
549
4771
3011
4389
296
1159
2284
4651
5140
2923
5095
2148
5486
757
1474
1679
2259
3507
5659
3833
1505
3590
3877
3867
453
2781
325
5506
3015
1153
4254
3293
2097
5558
1259
5654
2801
3923
5625
3284
1780
4499
4511
4451
2726
2494
372
605
834
2835
3886
4627
3023
5685
2479
1814
2288
3434
2413
931
4055
2414
2908
3350
5489
3878
542
2751
3876
5008
2576
866
31
1238
1311
1257
5454
3251
5272
2540
2942
4422
1285
1266
1515
1027
3968
443
1401
2192
2425
3442
3619
877
1225
2019
2708
4001
3047
5689
1426
2456
3037
3114
5131
5189
3001
778
4235
1487
2757
4742
2384
2058
3013
4540
2946
3480
4469
5037
5308
3616
3343
3353
3247
2388
1181
3693
3214
4896
5311
5487
9
2442
2322
4774
2200
1820
2560
500
793
1148
1595
2578
687
3356
3893
934
5630
3564
447
5555
997
1082
2131
2255
2305
3014
3311
3828
4898
5653
207
1243
1691
2862
4360
4018
1007
623
2246
4727
675
3508
2151
1471
4986
3275
2452
4555
2668
5529
122
2295
2418
5603
5647
2008
2012
4490
2993
3872
3166
5610
3158
4602
5104
238
121
5179
2095
1384
3717
4458
223
638
759
2347
3217
3308
5332
5366
5516
3986
1745
3441
4130
1428
5294
1491
402
3494
4353
3410
3479
647
200
3629
3955
3511
300
688
3455
4144
1430
3352
1840
1785
1204
3103
2450
33
3501
3430
3575
1735
4030
3347
5378
28
1299
4261
4655
5623
3438
843
4474
1825
2670
718
184
4612
970
2820
4530
3592
5520
5141
212
1208
5021
4003
1392
1658
5112
75
5719
690
3626
1954
1483
3052
274
2774
5365
3042
298
4516
3060
1239
1598
2342
1418
707
3712
2223
5707
3381
1910
3734
5501
1767
2282
1740
1922
4377
4964
2499
1876
2646
4958
4423
3932
1116
1540
686
3122
4737
2704
3746
2575
2020
2454
1707
5617
2834
2866
4217
2147
442
2307
5151
5515
915
1823
2120
3317
3900
5100
5409
430
4406
5451
5229
117
423
1386
2947
455
4857
2603
5470
2153
5614
3611
860
126
5743
5759
2251
1750
381
3339
6
415
1615
5326
385
2553
4163
4699
4797
5016
4219
83
4679
4824
5259
753
532
3663
5055
1980
1434
5117
3091
3469
4968
5139
1892
125
5026
4766
3565
2886
3020
4830
1108
728
4635
999
1152
1946
2018
2501
3710
3383
5254
2818
418
2627
3544
2262
1002
3117
548
2647
3399
3488
3914
1683
994
3440
256
3413
5593
3532
3847
1635
4437
3415
1200
2846
4922
2758
1271
3670
2380
506
1661
1011
3382
1889
366
4204
1576
3557
5256
4045
2403
1882
61
840
2117
2609
2769
2985
3622
304
4097
4960
1962
473
708
1359
4760
5463
3325
2032 4 : 1444 | 0.29
1429
3315
604
1837
3810
1908
3196
1596
195
5324
2621
3649
3647
2925
1952
4322
264
89
2361
2739
1419
5546
2760
4283
2176
5231
1680
1911
3836
1213
3966
3852
1870
2351
2693
55
5051
4408
1105
2396
1272
1628
3465
76
191
1250
3731
3730
1312
1743
5755
5344
3070
3657
2458
1864
1117
4040
2672
3871
2724
1821
3113
4845
244
1677
3467
1409
3561
5671
3994
709
1784
3127
1405
3808
5052
4656
545
1957
3349
4861
2580
132
3229
4840
3439
5699
2060
1083
3543
1188
1646
2719
849
5089
530
4443
4292
3397
3845
2451
941
589
4149
4551
1407
646
1063
3201
3841
4647
4667
1244
1778
1294
1115
1545
3409
4135
4747
5214
5367
4495
2382
2796
531
371
730
1878
2344
3645
4937
2920
5667
5551
3982
1045
138
2850
964
5258
4915
4688
1659
2320
114
4288
3245
1561
5046
289
5361
3274
98
942
1406
3569
755
1726
3209
1755
5431
2353
2989
4091
4739
2987
4477
540
2949
737
115
1725
2868
1874
2720
4129
2958
3282
2808
4521
1196
368
3661
1975
567
3870
2001
5183
1512
1445
3286
438
3199
5595
3228
4998
509
2943
5320
3416
5273
825
2814
901
388
1826
2343
2278
3132
3131
3933
1107
3739
726
1469
3802
1454
2257
3794
4639
5590
5771
3630
3273
4358
400
1838
1865
2913
3133
4940
5618
305
1553
1611
1916
2819
4593
412
5432
3362
3464
4734
5449
3757
1179
2544
4291
4677
2271
4582
1112
3062
3477
1173
2041
4717
1953
3272
4930
1008
5154
3855
3683
490
1813
3063
4120
908
2927
3125
4722
2791
358
3748
3072
3363
2523
3177
2562
937
700
2930
952
1233
5355
2809
5467
2214
4854
682
3696
3094
5243
1372
1260
241
4400
4044
1336
1640
4122
3238
2734
2242
301
344
2699
4847
1475
1023
1956
3567
5144
4695
4026
1859
4733
1528
2300
574
855
1742
337
1997
2160
2430
3301
4350
5637
4460
1942
626
3875
302
1567
3753
1774
661
2816
3791
533
5473
1203
2299
5023
1631
1537
4977
1141
2422
432
1801
3974
5025
5257
5199
249
1457
5318
5710
625
930
1828
128
5547
5606
5709
3406
4394
3145
378
1031
2292
2881
4870
2069
847
2864
2122
2162
3988
5097
209
1261
3506
1333
795
680
3162
4275
3945
1190
426
5748
3708
4752
4414
3058
904
1006
3691
982
362
5718
1062
5440
4214
4303
205
932
4368
1990
4668
2014
386
3821
2279
2692
902
2106
4809
1969
5363
5283
292
2049
672
838
3253
2374
2285
3602
5284
1421
4682
1119
4338
1915
231
5123
2400
991
5059
5613
3956
4390
2954
3027
2286
4146
3421
644
5717
2031
523
2579
3075
4133
5648
597
2756
4552
895
179
5101
3950
3601
512
5638
5137
2437
3142
4509
159
3021
1895
3853
5517
3358
369
468
2161
4858
4879
4885
2826
1465
45
3643
5534
5209
710
396
4541
1185
3684
2432
610
1871
2623
4386
3764
2298
1558
608
4359
820
2433
3958
4944
1476
4035
560
1143
2477
1931
3316
2527
2119
2636
4542
3815
1918
1330
5439
5307
3248
4296
2355
4367
5011
2085
5572
1314
2568
2196
3503
1591
1770
5443
4073
5226
2602
1464
90
42
4015
2204
1903
2156
5464
3458
3123
1600
2485
1831
2998
5650
3305
2547
4605
4897
1167
3135
3639
77
1365
4316
2383
5511
4785
3054
5085
87
2510
2445
4430
581
5711
3306
2561
141
1850
3024
3204
5405
364
3105
310
5607
297
2336
263
2599
760
5424
4310
1371
1130
3584
4641
22
1652
1702
4259
2393
1714
2688
167
24
2518
1114
3327
484
186
3926
806
1592
4391
1909
4818
3256
791
3402
3167
4701
607
2349
935
5057
3689
2099
698
645
642
1255
1964
3146
1154
2333
3525
2247
4762
3307
1422
4157
3551
1080
4784
1451
1081
829
5746
4006
4765
2465
1921
5680
5232
2045
5007
2723
3457
4976
1178
1232
1423
2965
286
2691
26
656
2763
1251
3969
3939
1438
404
273
1543
3244
1187
1263
1799
1885
1717
4098
4780
1775
168
2356
3016
5399
5239
1467
2705
136
2495
846
1375
4572
2297
913
3088
5110
4011
2103
4439
3436
3130
630
4660
1552
2319
4115
21
2642
4201
4670
1797
4705
2039
95
5621
593
974
3396
2358
4956
4621
3761
4524
1202
968
4693
2293
4447
2928
2155
4071
3874
5427
1851
3585
335
5524
2596
4080
5193
1121
4966
5374
3801
4078
5737
1629
4487
2945
1518
716
4740
2714
2229
1927
324
955
5575
3380
4364
5328
4326
1538
5147
4686
3524
4640
3375
4320
1521
3312
3695
1393
4409
1991
318
5702
636
5587
1066
1084
5303
4280
1841
606
339
5641
2460
511
2855
2225
3102
1324
4920
3597
2513
4373
3454
2840
3134
1815
544
5609
3792
398
4463
489
4318
5570
174
3234
1229
2181
1415
1176
1387
4416
5315
2779
1347
4265
3906
702
1155
745
2207
4501
5317
4994
1812
5631
3636
5419
2730
2424
5469
2742
4890
5220
5349
3901
1033
3784
3461
3718
1193
4626
2641
5174
4089
3807
421
2233
3754
390
504
4482
5106
183
611
2617
1072
1076
5724
534
2624
4369
2784
1382
5536
5568
5509
2142
66
5093
896
5765
4546
1264
5027
4974
2598
761
227
236
2121
4225
4022
2134
5545
2519
3453
2378
2216
1625
4520
5013
5088
920
5130
4996
1071
5068
5435
5036
2398
3559
2857
3009
1638
4467
4056
2073
1827
2118
1302
979
736
2700
5581
5673
1459
2289
4663
5292
3659
3425
1346
5185
17
1040
4293
4875
5286
219
1478
1669
5092
4993
5086
1701
5386
1651
3373
3151
850
3729
4545
1286
5191
2114
5385
844
2138
5442
4088
2588
519
409
5341
762
1771
155
922
4508
5507
40
4151
5376
4257
2992
5338
807
1128
2130
5041
5589
566
3558
5393
420
5358
1327
5532
944
5668
800
1532
5705
4047
4678
441
3614
4494
4535
2979
4538
464
116
3655
2502
3699
5306
3832
502
5704
4224
524
1316
691
2385
3859
5058
2474
5053
2885
5240
4759
4436
1862
2296
472
1633
4590
5494
3843
4510
2982
5736
4779
2268
4713
3654
1381
2235
3740
5436
5245
1317
4344
2514
5202
1620
2893
4199
1868
5382
4519
3720
2258
1751
1446
5263
2538
1201
2488
3393
1569
194
3039
2082
4928
1534
3181
3340
1790
414
3539
3459
1526
271
1206
1593
4103
4186
5221
3743
805
3417
5373
2179
4192
2879
1568
960
3257
3583
4470
756
218
4518
2898
5160
1379
1587
4082
1609
2918
4953
905
1947
1732
5462
3779
633
890
140
1064
4609
2463
19
1172
3289
763
3990
4770
2882
3640
1254
4568
765
701
457
5530
463
2040
2054
1039
5078
2533
1762
5483
1588
3374
3149
4732
4828
5353
1802
2565
943
3018
891
1424
3679
1319
5521
3472
2876
4565
2847
4429
1687
3310
1355
1452
3462
5735
1873
2549
1349
4016
3224
5379
704
950
411
3787
4714
4806
1959
1481
4916
4019
1617
3566
2813
243
713
4624
5457
439
4911
1163
4100
853
1093
5460
4891
1291
2301
3321
1440
3909
2659
758
5299
4836
2243
4145
3957
1986
498
1046
692
3949
3207
4919
4485
1517
4027
4580
552
1763
2836
2701
3159
5148
267
1325
1650
4673
3154
5446
5411
780
833
4059
5067
4270
5213
4534
1798
4213
2070
4327
357
4914
2783
1310
1016
343
222
1332
2629
2612
3390
2464
5554
584
738
885
1689
2186
3848
10
615
3236
3790
3028
1037
3437
5196
3104
2938
2907
4859
456
4017
903
3216
788
857
2944
2325
5542
1737
4812
918
208
4021
3587
3044
2661
1582
1499
804
2717
5253
3702
4687
1764
854
1699
5091
4674 5 : 1120 | 0.09
252
3778
4143
2831
5493
2154
2291
5713
3222
3984
2912
56
4272
3594
2914
1098
2536
1052
3642
4064
2825
5559
1356
4042
1589
331
3447
3471
2909
2159
4081
1001
4954
5102
5071
1396
4825
782
3770
5004
2875
3126
5359
5663
3249
3056
5497
2399
4263
4598
1136
750
3152
4946
4223
3997
4290
3775
2431
1741
3623
3934
5252
4395
49
3948
4587
1227
3698
2529
2762
3136
4123
1810
3935
5492
2625
1209
1216
4413
4328
4007
1977
2632
2094
1091
161
4927
4243
5397
2574
1427
349
4093
214
2459
436
2072
1808
1090
4010
2405
3910
1358
1488
5342
257
485
1563
496
5042
4761
4162
3288
282
1703
5552
3780
2754
4600
5537
1331
4769
629
4289
1494
111
137
4871
2193
3497
2493
4807
2143
1369
5143
743
2983
2994
4428
4843
3890
852
4526
993
3384
3608
4988
3522
5242
3128
2556
1313
1437
1829
2007
2081
3925
4203
4848
4023
4305
5388
2583
4158
5195
4724
635
3799
826
3499
5691
1630
5132
3972
1673
3952
3758
3599
3737
2163
2141
2745
3031
1010
4136
1697
3510
353
4620
3887
4523
1932
1858
3101
3768
2648
594
4702
4746
3625
1024
4721
1634
3035
3924
3230
1288
3975
1353
2435
5081
2698
3604
314
3896
3922
3736
752
2409
2822
5669
5556
3579
4617
1157
2407
2026
1448
1872
3921
3687
1000
1951
3017
592
2009
660
2256
2964
878
1334
2491
4043
4092
3095
1297
4342
696
5323
1338
2411
1544
5270
5772
3260
619
5364
4675
101
5322
2573
2000
4860
5247
3481
5135
1360
958
2718
4141
4504
3728
1692
4810
320
51
3388
3176
2194
3549
2516
3690
1940
471
129
2232
5553
3985
4562
3588
2880
774
3431
4782
3989
4597
4931
4967
4264
4899
2326
4696
1586
4720
495
3392
5694
4772
3703
4468
4478
714
4616
3398
2321
3225
2056
1131
732
3560
3776
4276
5758
5761
2806
823
4648
5441
5741
3040
2264
3512
5749
1792
1794
5629
4401
2667
5466
482
2555
2725
367
784
554
4454
2815
4407
1546
359
178
444
30
1852
284
4892
992
1782
2222
977
3269
1210
517
4883
3755
393
4653
4281
4715
2048
3938
2613
1290
3448
3973
4404
376
5676
5733
5696
764
3733
4561
3785
4117
3444
4349
1402
4134
3529
631
279
2953
1156
2687
1509
3370
3931
2863
4067
3786
1919
927
946
4050
2165
1944
4187
374
4329
2206
5035
1111
4823
667
465
1162
5708
4013
2910
342
4528
2057
113
4037
3003
4399
5740
739
3570
3772
4735
2172
2237
5632
4815
938
4498
717
4569
4711
4515
2077
867
2062
1715
1824
4876
3323
1280
5391
1086
4251
2126
3747
445
487
2228
865
3193
4038
3342
5697
3941
2939
4522
1067
2812
4793
4987
477
1974
1992
3705
5453
684
2253
674
987
62
733
1963
706
5269
5121
119
1322
4140
4817
5301
1038
507
4799
2191
112
1536
4979
1348
228

0.2 0.0 0.2 0.4 0.6 0.8 1.0


Silhouette width si
Average silhouette width : 0.21

Figura 5.2:

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 5.3 muestra los resultados.
Despues hacemos un analisis jerarquico aglomerativo y observamos la silueta con
cinco y con dos grupos. Ver figuras 5.4 and 5.5 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))

12
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 5.3:

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 5.4:

5.5. Algunos ejemplos


Para acabar el tema inclumos algunos ejemplos de analisis cluster.

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


datos proceden de la siguiente pagina web: http://www.uni-koeln.de/themen/Statistik/data/cluster/.

13
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 5.5:

Tenemos cuatro variables que nos dan las puntuaciones obtenidas en 25 escuelas
de New Haven en aritmetica y lectura al principio del cuarto curso y al principio
del sexto curso.
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)

x= read.table('../data/achieve.txt')
names(x) = c("centro","lec4","aritme4","lec6","aritme6")
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.

14
#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,3)
y.km = kmeans(y,3)
table(y.pam$cluster,y.km$cluster)

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
[2].
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")

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

y.ag = agnes(y)

plot(y.ag)

15
#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)

16
Captulo 6

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 (Fichero 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 (con-
duc), 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 vecto-
res de caractersticas asociados. En una observacion futura tendremos el vector de
caractersticas pero no conoceremos la clasificacion.

library(foreign)

#Leemos los datos de un fichero SPSS


x = read.spss(file='../data/cristal.sav',to.data.frame=T)
#No estaba bien definido el dato faltante
x[x==-1] = NA
cc = complete.cases(x)
x = x[cc,]
attach(x)

> x
IND GRUPO GRAV PH OSMO CONDUC UREA CALCIO
2 2 ausencia de cristales 1.017 5.74 577 20.0 296 4.49
3 3 ausencia de cristales 1.008 7.20 321 14.9 101 2.36
4 4 ausencia de cristales 1.011 5.51 408 12.6 224 2.15
5 5 ausencia de cristales 1.005 6.52 187 7.5 91 1.16
6 6 ausencia de cristales 1.020 5.27 668 25.3 252 3.34
7 7 ausencia de cristales 1.012 5.62 461 17.4 195 1.40

#Un resumen de cada variable


summary(x)

> 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

2
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

Nota de R 42 (Fichero notaR103) Los datos corresponden a una serie de per-


sonas de las cuales conocemos informacion que previsiblemente nos permitira 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 indicados. El resto de variables nos des-
criben 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.

library(foreign)
x= read.spss(file='../data/diabetes.sav',to.data.frame=T)

> x
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

104 104 1.10 75 455 392 242 diabetes quimica 5.971262


105 105 0.94 92 442 109 157 diabetes quimica 4.691348

136 136 1.01 120 636 314 220 diabetes manifiesta 5.749393
137 137 1.19 138 741 219 209 diabetes manifiesta 5.389072

summary(x)

> 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

El tema utiliza la librera MASS [15].


El tema esta organizado del siguiente modo. Empezamos (seccion 6.1) recordan-
do el teorema de Bayes con un ejemplo muy simple de urnas (no funerarias). De

3
este modo vemos la idea basica del metodo de clasificacion basado en probabilida-
des a posteriori. Consideramos en la seccion 6.2 la situacion con dos poblaciones
normales univariantes con la misma varianza y con los parametros conocidos. En
la seccion 6.3 abordamos la situacion con dos poblaciones normales multivariantes.
All consideramos tanto el caso en que las matrices de covarianzas son la misma
como cuando son distintas. En la seccion 6.4 nos planteamos la estimacion de los
vectores de medias y las matrices de covarianzas y vemos la implementacion prac-
tica del metodo. El problema de la reduccion de la dimension dentro del problema
de la clasificacion es considerado en la seccion 6.7

6.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
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. 1
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
1 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
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.

6.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 6.1 aparece la situacion con la que nos encontramos. Supongamos conocidos
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)

6.3. Dos normales multivariantes


En la seccion 6.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
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 , )

5
0.4
0.3
0.2
0.1
0.0

0 2 4 6

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

pero,

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

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


si  
1 (2)
D(x) = x (1 + 2 ) > log . (6.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 ) . (6.3)
2 |1 | 2

6
Como en el caso anterior asignamos la observacion x a la primera poblacion si

(2)
Q(x) > log .
(1)
(2)
Notemos que ahora Q(x) = log (1) no es un hiperplano sino que tenemos una
superficie no plana.

6.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.
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 = (6.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 = . (6.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 , (6.6)
(1)

donde
1
Ds (x) = (x (x1 + x2 ) (6.7)
2
y
= S1
p (x1 x2 ). (6.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.

7
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) = . (6.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.

Nota de R 43 (Fichero notaR104) Es un ejemplo de analisis discriminante li-


neal con dos grupos. Los datos aparecen descritos en la nota 41. Consideramos dos
situaciones. En la primera las probabilidades a priori de cada grupo se asumen igua-
les entre s y, por lo tanto, iguales a 0,5. En el segundo caso, las probabilidades 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)
x[x==-1] = NA ##No estaba definido el -1 como datos faltante
##en el fichero original
cc = complete.cases(x) ## Vemos los casos en que no hay dato
## faltante
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)

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

Prior probabilities of groups:


ausencia de cristales presencia de cristales
0.5 0.5

Group 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

Coefficients of linear discriminants:


LD1
CALCIO 0.301091251

8
CONDUC -0.117156709
GRAV 140.610784925
OSMO 0.003408930
PH -0.125723350
UREA -0.008383726

##Veamos como recuperar los distintos elementos del analisis


attributes(z)

> attributes(z)
$names
[1] "prior" "counts" "means" "scaling" "lev" "svd" "N"
[8] "call" "terms" "xlevels"

$class
[1] "lda"

##Probabilidades a priori

z$prior

> z$prior
ausencia de cristales presencia de cristales
0.5 0.5

##El numero de datos por grupo


z$counts

> z$counts
ausencia de cristales presencia de cristales
44 33

##El vector de medias estimado en cada grupo

z$means

> 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

## 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)

> attributes(z)
$names
[1] "class" "posterior" "terms" "call" "xlevels"

##Probabilidades a posteriori

9
z$posterior

##No muestro toda la salida


> z$posterior
ausencia de cristales presencia de cristales
1 0.6410723439 0.35892766
2 0.8700259575 0.12997404
3 0.8483785261 0.15162147
4 0.9053400470 0.09465995
5 0.5761860564 0.42381394
6 0.8967915333 0.10320847
7 0.2665532816 0.73344672

##Clasificaciones para cada los distintos casos


z$class

> z$class
[1] ausencia de cristales ausencia de cristales ausencia de cristales
[4] ausencia de cristales ausencia de cristales ausencia de cristales

#Las probabilidades a priori corresponden con proporciones observadas


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

##Probabilidades a posteriori (no es toda la salida)

z1$posterior

> z1$posterior
ausencia de cristales presencia de cristales
1 0.7042676259 0.29573237
2 0.8992456041 0.10075440
3 0.8818036171 0.11819638
4 0.9272842171 0.07271578
5 0.6444698875 0.35553011
6 0.9205435042 0.07945650
7 0.3264031028 0.67359690

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 6.5. Las probabilidades a posteriori las estimamos como
(i)f (x|xi , Si )
(i|x) = . (6.10)
(1)f (x|x1 , S1 ) + (2)f (x|x2 , S2 )

Nota de R 44 (Fichero notaR105) Con los datos de la nota 41 realizamos un


analisis discriminante cuadratico en donde no asumimos una matriz de covarianzas
comun.

#Leemos los datos


library(foreign)

10
x = read.spss(file='../data/cristal.sav',to.data.frame=T)
x[x==-1] = NA
cc = complete.cases(x)
attach(x[cc,])

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


prior = c(1,1)/2,CV=TRUE)

z$posterior

> z$posterior
ausencia de cristales presencia de cristales
1 7.658585e-01 0.234141505
2 9.465173e-01 0.053482670
3 9.718836e-01 0.028116449
4 9.811643e-01 0.018835694
5 5.413410e-01 0.458659042
6 9.434295e-01 0.056570538
7 2.934976e-01 0.706502353

z1 <- qda( GRUPO ~ CALCIO + CONDUC + GRAV + OSMO + PH + UREA,CV=TRUE)

z1$posterior

> z1$posterior
ausencia de cristales presencia de cristales
1 8.134756e-01 0.186524405
2 9.593444e-01 0.040655595
3 9.787634e-01 0.021236612
4 9.858064e-01 0.014193607
5 6.114531e-01 0.388546921
6 9.569634e-01 0.043036553
7 3.564571e-01 0.643542909

6.5. Analisis discriminante con mas de dos pobla-


ciones normales
Supongamos que tenemos unas probabilidades Pna 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 )}. (6.11)
2
Utilizando el teorema de Bayes tenemos que las probabilidades a posteriori vienen
dadas por
(i)f (x | i , i )
(i | x) = Pk . (6.12)
j=1 (j)f (x | j , j )

11
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 = (6.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 = . (6.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
(ni 1)Si
Sp = i=1 .
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 6.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 21 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.

Nota de R 45 Consideremos los datos iris tratados originalmente por Fisher. Ve-
mos como se utiliza una muestra para estimar las matrices de covarianzas 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


data(iris3)
Iris <- data.frame(rbind(iris3[,,1], iris3[,,2], iris3[,,3]),

12
Sp = rep(c("s","c","v"), rep(50,3)))

#Tomamos una muestra de entrenamiento


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

#Se clasifica a los individuos


predict(z, Iris[-train,])$class
(z1 <- update(z,. ~ . - Petal.W.))

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 ). (6.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.

Nota de R 46 (Fichero notaR107) Vamos a analizar el banco de datos de la


diabetes. En este caso pretendemos clasificar entre tres grupos: no diabeticos, diabe-
tes clnica y diabetes manifiesta. Realizamos un analisis discriminante lineal (asu-
miendo matriz de varianzas comun) y un analisis discriminante cuadratico.

library(foreign)
x= read.spss(file='../data/diabetes.sav',to.data.frame=T)
attach(x)

summary(x)

library(MASS)

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

z$class

z$posterior

table(TIPO,z$class)

> table(TIPO,z$class)

TIPO diabetes manifiesta diabetes quimica control


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

#Discriminante cuadratico

13
z = qda(TIPO ~ PESO + GPB + GAREA + IAREA + SSPG, CV=TRUE)

z$class

z$posterior

table(TIPO,z$class)

> table(TIPO,z$class)

TIPO diabetes manifiesta diabetes quimica control


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

6.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= , (6.16)
i=1
n

donde y,y = 1 si y = y y cero en otro caso. La cantidad definida en 6.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

14
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 47 (Fichero notaR149) Seguimos analizando los datos de la orina


(ver nota 41. Notemos que consideramos probabilidades a priori correspondientes a
las proporciones en la muestra. Nos limitamos a construir la tabla de clasificacion.

##Leemos los datos


library(foreign)
x = read.spss(file='../data/cristal.sav',to.data.frame=T)
x[x==-1] = NA ##No estaba definido el -1 como dato faltante
##en el fichero original
cc = complete.cases(x) ## Vemos los casos en que no hay datos
## faltante
attach(x[cc,])

## Suponemos matrices de covarianzas iguales y probabilidades a priori


## dadas por las proporciones de cada clase en la muestra

library(MASS)

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

#Tabla de clasificaciones correctas

table(GRUPO,z1$class)

> table(GRUPO,z1$class)

GRUPO ausencia de cristales presencia de cristales


ausencia de cristales 42 2
presencia de cristales 14 19

Nota de R 48 (Fichero notaR139) Consideramos unos datos de correo electro-


nico. 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 [3].
Realizamos un analisis discriminante linear y un analisis cuadratico. Vemos que
el lineal nos proporciona mejores resultados.

15
#Analisis discriminante
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]

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

table(V58,z$class)

> table(V58,z$class)

V58 0 1
0 2622 166
1 263 1550

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


table(V58,z$class)

> table(V58,z$class)

V58 0 1
0 2086 695
1 86 1723

##Recuperamos el analisis discriminante lineal

entrenamiento = sample(nrow(x),2000) #Elegimos la muestra de entrenamiento


#aleatoriamente
table(y[entrenamiento]) #Vemos la distribucion del correo
#en la muestra de entrenamiento

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])

#Vemos la tabla de clasificacion sobre el resto de los datos


table(predict(z, x[-entrenamiento,])$class,y[-entrenamiento])

##Repetimos en muestras con reemplazamiento

entrenamiento = sample(nrow(x),2000,replace=T) #Elegimos la muestra de entrenamiento


##con reemplazamiento
#aleatoriamente
table(y[entrenamiento]) #Vemos la distribucion del correo
#en la muestra de entrenamiento

16
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])

#Vemos la tabla de clasificacion sobre el resto de los datos


table(predict(z, x[-entrenamiento,])$class,y[-entrenamiento])

6.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 , (6.17)
i=1 j=1 i=1

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

Notemos que
W
Sp = (6.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, (6.20)
c Wc bb bb
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

17
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 ,
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 (6.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 , (6.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 (Fichero notaR108) Repetimos el analisis discriminante tanto


para los datos de cristales en la orina como para los datos de la diabetes. En la
figura 6.2 vemos un histograma de la primera variable discriminante canonica en el
primer y segundo grupo.
En la figura 6.3 tenemos una representacion conjunta de las dos variables dis-
criminantes canonicas.

library(foreign)

#Leemos los datos de un fichero SPSS


x = read.spss(file='../data/cristal.sav',to.data.frame=T)
#No estaba bien definido el dato faltante
x[x==-1] = NA
cc = complete.cases(x)
x = x[cc,]
attach(x)

18
z <- lda( GRUPO ~ CALCIO + CONDUC + GRAV + OSMO + PH + UREA,
prior = c(1,1)/2)

if(dib) postscript(file='fig108a.ps',horizontal=F)
plot(z) #Figura a
if(dib) dev.off()

library(foreign)
x= read.spss(file='../data/diabetes.sav',to.data.frame=T)
attach(x)

z = lda(TIPO ~ PESO + GPB + GAREA + IAREA + SSPG)

if(dib) postscript(file='fig108b.ps',horizontal=F)
plot(z) #Figura b
if(dib) dev.off()

if(dib) postscript(file='fig108c.ps',horizontal=F)
pairs(z) #Figura c
if(dib) dev.off()
1.0
0.8
0.6
0.4
0.2
0.0

2 1 0 1 2 3 4

group ausencia de cristales


1.0
0.8
0.6
0.4
0.2
0.0

2 1 0 1 2 3 4

group presencia de cristales

Figura 6.2:

19
6
4
diabetes manifiesta
diabetes manifiesta
diabetes manifiesta
diabetes manifiesta

diabetes manifiesta
diabetes manifiesta
control

2
control
diabetes manifiesta
diabetes
diabetes manifiesta
manifiesta control
control
control
diabetes
diabetesmanifiesta
manifiesta control control
control
control
diabetes manifiesta control
control
control
controlcontrol
control
control control
diabetes manifiesta diabetesdiabetes
manifiesta diabetes manifiestacontrol control control
control
manifiesta control control
control
control
control
controlcontrol
control
control
control control
control
control
control
control
control control
control
control
control
diabetes manifiesta
diabetesdiabetes diabetes
manifiesta quimica control
control control
control
control
diabetes manifiesta diabetes
manifiesta quimica control
control
control control
diabetes control
control
control control
quimica
diabetes manifiesta
diabetes manifiesta control
control
control control
0

diabetes manifiesta
LD2

quimicaquimica control
diabetesdiabetes control
controlcontrol
diabetes manifiesta
diabetes manifiesta control
controlcontrol
diabetes quimica
diabetes quimica
diabetes quimica
control control
controlcontrol
control
diabetes manifiesta
diabetes manifiesta diabetes
diabetes quimica
quimica
diabetes control
quimicaquimica
diabetes manifiestadiabetes quimica diabetes
diabetes manifiesta diabetes quimica
diabetes quimica
diabetes
diabetes quimica
quimica
diabetes manifiesta diabetes quimica
diabetes quimica
control
control
diabetes quimica
diabetes quimica
diabetes quimica
diabetes quimicadiabetes
diabetesquimica
quimica
diabetes manifiesta
diabetes quimica
diabetes manifiesta diabetes
diabetes manifiesta
quimica
diabetes quimica
2

diabetes quimica control


diabetes quimica
diabetes quimica
diabetes quimica
diabetes quimica

diabetes quimica
diabetes quimica

diabetes quimica
4
6

6 4 2 0 2

LD1

Figura 6.3:

6.8. Algunos ejemplos


Finalizamos el tema con algunos ejemplos de analisis discriminante.

Nota de R 50 (Fichero notaR142) Los datos se pueden encontrar en http://www.stat.wisc.edu/ yand


El siguiente texto esta tomado de dicha pagina y describen las variables.

The measurements were coded based on body part -- head


(H), thorax (T), wing (W) or gonadium (G) -- and kind of measurement
-- width (W), height (H) and length (L). The gonadium (also known as
gastral tergite) has two length and three width measurements.

Realizamos un analisis discriminante en donde a partir de las caractersticas


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)

z = lda(caste ~TL+WL+HH+HW+TH+TW+G1L+G2Wa,prior=c(1,1)/2)
plot(z)

z = lda(caste ~TL+WL+HH+HW+TH+TW+G1L+G2Wa,prior=c(1,1)/2,CV=TRUE)

20
4 2 0 2

4
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
control
control
control
control
control control
control
control
control control
control control
control
control
control

2
control
control
controlcontrol
control
control control
control
diabetes
control quimica
control
control
diabetes
controlquimica
control diabetes
diabetes quimica quimica
diabetes
quimica
diabetes quimica
control
diabetes
diabetes
control quimica
quimica
diabetes manifiesta
diabetes quimica
diabetes
diabetes quimica
quimica
diabetes diabetes
quimica
diabetes
diabetesdiabetesquimica
quimica quimica
diabetes
quimica quimica
diabetes quimica
diabetes quimicadiabetes
diabetes diabetes quimica
quimica
quimica
diabetes
diabetes quimica
diabetes quimica
diabetes
manifiesta quimica
diabetes
diabetes quimica
quimica diabetes manifiesta

0
diabetes quimica
diabetes diabetes
quimica quimica
diabetes quimica
diabetes quimica
diabetes quimicamanifiesta
diabetes
diabetes
diabetes quimica
manifiesta
diabetes quimica
diabetes quimica
LD1 diabetes diabetes
manifiestamanifiesta
diabetes manifiesta

2
diabetes manifiesta
diabetes manifiesta
diabetes manifiesta
diabetes manifiestadiabetes manifiesta
diabetes manifiesta
diabetesmanifiesta
diabetes manifiesta
diabetes manifiesta
diabetes manifiesta
diabetes manifiesta
diabetes manifiesta
diabetes manifiesta
diabetes manifiesta

4
diabetes manifiesta diabetes manifiesta
diabetes manifiesta

diabetes manifiestadiabetes manifiesta


diabetes manifiesta
diabetes manifiesta diabetes manifiesta

diabetes manifiesta

6
diabetes manifiesta
diabetes manifiesta

diabetes manifiesta
diabetes manifiesta
diabetes manifiesta
diabetes manifiesta

diabetes manifiesta
diabetes manifiesta
control
2

control
diabetes manifiesta
diabetes manifiesta control
diabetes manifiesta
control
diabetes control
control
diabetesmanifiesta
diabetes manifiesta manifiesta control
control
control
control
control
control control
control
control
control
control
diabetes manifiesta control
control
diabetes
diabetes manifiesta manifiesta
diabetes manifiesta control control
control
control
control
control
controlcontrol
control
control
control
control
control
control
control
control
control
control
control
control
control
control
control
diabetes diabetes
manifiesta diabetes
manifiesta control
quimica
control control
control
control
diabetes manifiestadiabetes diabetes
manifiestaquimica control
control
control
control
control
control
control
diabetes control
quimica
control
control
diabetes
diabetesmanifiesta
manifiesta control
control
0

diabetes manifiesta control


control
diabetes
diabetes
manifiesta
diabetes
diabetes quimica
diabetes
manifiestadiabetes
diabetes
diabetesquimica
control
quimica
diabetes
control
control
control
quimica
quimica
quimica
control
control
quimica control
control
control
control
control LD2
diabetesmanifiesta
diabetes
manifiesta diabetes quimica
diabetes quimica
diabetesdiabetes manifiesta
manifiestadiabetesdiabetes
quimica quimica
diabetes quimica
diabetes
diabetes quimica
quimica
diabetes manifiesta diabetes
diabetesquimica
quimica
control
control
diabetes quimica
diabetes quimica
diabetes quimica
diabetes diabetes
quimica
diabetes quimica
quimica
diabetesdiabetes
manifiesta
quimica
diabetes
diabetesmanifiesta
diabetes manifiesta quimica
diabetes quimica
2

diabetes quimica control

diabetes
diabetesquimica
quimica
diabetes quimica
diabetes quimica

diabetes quimica
diabetes quimica

diabetes quimica
4

6 4 2 0 2 4

Figura 6.4:

table(caste,z$class)

cbind(caste,z$posterior)

z.q = qda(caste ~TL+WL+HH+HW+TH+TW+G1L+G2Wa,prior=c(1,1)/2,CV=TRUE)

table(z$class,z.q$class)

Nota de R 51 (Fichero notaR144) El banco de datos wbca contiene informa-


cion sobre un estudio de cancer de mama en el estado norteamericano de Wiscon-
sin. 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. Pre-
tendemos clasificar a la paciente como enferma o no de cancer utilizando el resto
de las variables. Realizamos para ello un analisis discriminante lineal. 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.

library(faraway)
library(MASS)

attach(wbca)

21
names(wbca)

wbca.lda = lda(Class ~ Adhes+BNucl+Chrom+Epith+Mitos+NNucl+Thick+UShap+USize,CV=T)

plot(wbca.lda) #fig144a

wbca.lda = lda(Class ~ Adhes+BNucl+Chrom+Epith+Mitos+NNucl+Thick+UShap+USize,CV=T)

table(Class,wbca.lda$class)

train <- sample(1:nrow(wbca), 400)


wbca.lda0 = lda(Class ~ Adhes+BNucl+Chrom+Epith+Mitos+NNucl+Thick+UShap+USize,subset=trai

wbca.lda0$class[train]
table(wbca.lda0$class[train],Class[train])

table(wbca.lda$class,Class)
0.8
0.6
0.4
0.2
0.0

6 4 2 0 2

group 0
0.8
0.6
0.4
0.2
0.0

6 4 2 0 2

group 1

Figura 6.5:

22
Captulo 7

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 ([1]). 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
[1] que es la referencia [? ].

7.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 )}. (7.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, (7.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 ) (7.3)
donde la funcion link g la suponemos monotona y diferenciable. En consecuencia
tenemos X
g(i ) = j xij , con i = 1, . . . , N. (7.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.

7.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 =
 

(1 )[/(1 )]y = (1 ) exp y log (7.5)
1

por lo que pertenece a la familia exponencial natural con

= , (7.6)
a() = 1 , (7.7)
b(y) = 1, (7.8)

Q() = log . (7.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.

7.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, . . . (7.10)
y! y!
Esta familia de distribuciones pertenece a la familia exponencial natural con
= , (7.11)
a() = exp(), (7.12)
1
b(y) = (7.13)
y!
Q() = log . (7.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. (7.15)
j

Este modelo recibe el nombre de modelo loglineal de Poisson.

7.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). (7.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) . (7.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.

7.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 7.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

7.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.

7.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))

7.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 .

7.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")

7.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 [1], 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 . (7.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 (7.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 ), (7.20)
i=1

pero

P (Y j|x1 )/P (Y > j|x1 )


logit(P (Y j|x1 )) logit(P (Y j|x2 )) = log . (7.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 ). (7.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 7.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 . (7.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
j (xi )yij = (P (Y j|xi ) P (Y j 1|xi ))yij =
i=1 j=1 i=1 j=1
n Y
Y J  Pd Pd yij
exp(j + i=1 i (x1i xi2 )) exp(j1 + i=1 i (x1i xi2 ))
Pd Pd
i=1 j=1 1 + j + i=1 i (x1i xi2 ) 1 + j1 + i=1 i (x1i xi2 )
(7.24)

9
7.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
1
G (P (Y j|x)) = j i xi .
i=1
Pd
Si por ejemplo suponemos que Y = i=1 i xi + donde tiene una distribucion
logstica entonces G1 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.

7.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 , ) (7.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 )) (7.26)

10
Captulo 8

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),

Nota de R 52 (Fichero notaR143) Veamos graficamente el significado de las


componentes principales si suponemos que tenemos dos variables. Generamos (con
[7]) una muestra de tamano 100 con una distribucion normal bivariante con vector
de medias = (2, 2) y matriz de covarianzas
 
1 6
=
6 16

En la figura ?? podemos ver los datos generados.

library(mvtnorm)

sigma0= matrix(c(1,6,6,16),ncol=2, byrow=T)

x = rmvnorm(n=100, mean=c(1,1),sigma=sigma0)

plot(x)

x.pc = princomp(x)

x.pc$loadings

x.pc$loadings[,1]

plot(x)
abline(h=0)
abline(v=0)
abline(a=0,b=x.pc$loadings[2,1]/x.pc$loadings[1,1],lty=2) #fig143a

1
summary(x.pc)

10
5
x[,2]

0
5

4 2 0 2 4

x[,1]

Figura 8.1:

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 ), (8.1)

donde 1 2 . . . d 0 son los valores propios de la matriz . Sea

Y = T (X ). (8.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.

2
Se verifica el siguiente resultado.

Teorema 3 Las componentes principales Yj = tj (X ) con j = 1, . . . , d tienen


las siguientes propiedades:

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) (8.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 53 Vamos a realizar unas componentes principales a partir de las cua-


tro variables de los datos iris.
En principio realizamos utilizamos la matriz de covarianzas muestral. Notemos
que la funcion princomp utiliza la matriz dividida por el tamano muestral menos
uno (n 1). En figura 8.2 aparecen los cocientes entre la suma de los valores propios
y la suma de todos ellos. En la figura 8.3 tenemos las dos primeras componentes
sobre todos los datos indicando la especie a la que pertenece el individuo.
Las figuras 8.4 y 8.5 son las analogas a las figuras 8.2 y 8.3 considerando la
matriz de correlaciones muestral.

3
library(MASS)
data(iris)
iris
ir = iris[,1:4]
ir.species = c(rep("s",50),rep("c",50),rep("v",50))
ir.pca = princomp(log(ir),cor=F)
ir.pca

> ir.pca
Call:
princomp(x = log(ir), cor = F)

Standard deviations:
Comp.1 Comp.2 Comp.3 Comp.4
1.14273113 0.13789069 0.13480585 0.05362974

4 variables and 150 observations.

summary(ir.pca)

> 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

if(dib) postscript(file='fig301a.ps',horizontal=F)
plot(ir.pca) #Figura a
if(dib) dev.off()

loadings(ir.pca)

ir.pc = predict(ir.pca)
ir.pc[1:6,]

> 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

if(dib) postscript(file='fig301b.ps',horizontal=F) #Figura b


eqscplot(ir.pc[,1:2],type="n",xlab="Primera componente principal",
ylab="Segunda componente principal")
text(ir.pc[,1:2],ir.species)
if(dib) dev.off()

#Con la matriz de correlaciones muestral

4
ir.pca = princomp(log(ir),cor=T)
summary(ir.pca)
if(dib) postscript(file='fig301c.ps',horizontal=F)
plot(ir.pca) #Figura c
if(dib) dev.off()
ir.pc = predict(ir.pca)
if(dib) postscript(file='fig301d.ps',horizontal=F)
eqscplot(ir.pc[,1:2],type="n",xlab="Primera componente principal",
ylab="Segunda componente principal")
text(ir.pc[,1:2],ir.species)
if(dib) dev.off()

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

Figura 8.2:

Nota de R 54 (Fichero notaR143) Veamos graficamente el significado de las


componentes principales si suponemos que tenemos dos variables. Generamos (con
[7]) una muestra de tamano 100 con una distribucion normal bivariante con vector
de medias = (2, 2) y matriz de covarianzas
 
1 6
=
6 16

En la figura ?? podemos ver los datos generados.

5
2
1
Segunda componente principal

ss s
s ss
s ss s
s ss s
s c vvv v vv
sss s s
c c
cc cc ccc c cvv vvv vvvvvvvvvvv
sssss s c vv v
cccccccccccccccccv cv vvvv vv v
0

sss ccc
ssss c c v
ss cccc cccc ccv v vvv v v
s cc v
ss
ss
1
2

2.0 1.5 1.0 0.5 0.0 0.5 1.0

Primera componente principal

Figura 8.3:

library(mvtnorm)

sigma0= matrix(c(1,6,6,16),ncol=2, byrow=T)

x = rmvnorm(n=100, mean=c(1,1),sigma=sigma0)

plot(x)

x.pc = princomp(x)

x.pc$loadings

x.pc$loadings[,1]

plot(x)
abline(h=0)
abline(v=0)
abline(a=0,b=x.pc$loadings[2,1]/x.pc$loadings[1,1],lty=2) #fig143a

summary(x.pc)

6
ir.pca
2.5
2.0
Variances

1.5
1.0
0.5
0.0

Comp.1 Comp.2 Comp.3 Comp.4

Figura 8.4:

7
4
c

c
c
2 c c v
v c
c cc
c
cc
Segunda componente principal

s v
s
s cc c
c c v
s c
s s s ss cc v v v
ss s cc v c
s s s c c cc v v v
s c vv
ss cc c cc c vv
c c vvc
0

s s s v v
s ss s c vc c
s
s s s s s ss c c v v v
s s v c vv v v
s c c cvvc vv v v
s
s sss s c c v v vv
v vc v v v
v
s ss
s
s
s
v
2

s
vv
4

3 2 1 0 1 2

Primera componente principal

Figura 8.5:
10
5
x[,2]

0
5

4 2 0 2 4

x[,1]

Figura 8.6:

8
Captulo 9

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. 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 interface? 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 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 su mayor interes para ser utilizado.
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. Lo
procuro pero . . . 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.

9.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.

9
9.1.1. R y Windows
Los puntos a seguir para una instalacion son los siguientes:

1. Traer la distribucion base de http://cran.r-project.org/bin/windows/


base/.

2. El programa se instala simplemente ejecutandolo.

3. Una vez instalado en el menu principal teneis una herramienta que permite
seleccionar el espejo desde traer los paquetes adicionales comodamente.

Una vez instalado el programa la opcion mas comoda es utilizar el programa el


programa Tinn-R que se puede conseguir en
https://sourceforge.net/projects/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.
Una segunda opcion es utilizar RWinEdt. Para poder usarlo hay que tener ins-
talado el programa Winedt (http://www.winedt.com). Es un programa shareware
muy util para escribir en LATEX. Hay que tener instalado WinEdt y cargar el paquete
RWinEdt del siguiente modo

> library(RWinEdt)

9.1.2. R y Linux
Instalacion 1. Para Linux hay distintas versiones compiladas. En http://cran.
r-project.org/bin/linux/ se encuentran estas distribuciones.
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. La podeis encontrar para openSUSE 10.3 en
http://download.opensuse.org/distribution/10.3/repo/oss/suse/
i586/blas-3.1.1-29.i586.rpm.

Edicion con Emacs y ESS En Linux sin duda la mejor opcion de trabajo es uti-
lizar Emacs http://www.gnu.org/software/emacs/ con el paquete Emacs
Speaks Statistics (ESS) 1 . http://ess.r-project.org/ Como trabaja-
mos 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 podemos trabajar
muy comodamente.

9.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?
1 La mejor opcion es acudir a la pagina de los paquetes binarios y buscar en la distribucion

correspondiente donde teneis el paquete

10
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.

9.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.

9.3.1. Como etiquetar una variable?


Supongamos que la variable a etiquetar es x en el data frame datos. Usamos la
librera [9].

library(Hmisc}
label(datos$x) = "Ejemplo de etiqueta"

9.4. Elaboracion de un informe a partir del codigo


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.

9.4.1. Sweave
Un documento de gran utilidad donde ver la utilizacion de Sweave es http:
//cran.r-project.org/doc/contrib/Rivera-Tutorial_Sweave.pdf.

9.5. R y Octave/Matlab
Es frecuente que un usuario de Octave/Matlab utilice R. En http://cran.
r-project.org/doc/contrib/R-and-octave.txt y http://mathesaurus.sourceforge.
net/octave-r.html teneis tablas de equivalencia entre los comandos en ambos pro-
gramas.

11
12
Captulo 10

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. Aqu nos centramos en los datos propios.

10.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.

13
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.

14
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)

15
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.

16
Bibliografa

[1] A. Agresti. Cualitative Data Analysis. Wiley, 2nd edition edition, 2002.
[2] R core members, Saikat DebRoy, Roger Bivand, and others: see COPYRIGHTS
file in the sources. foreign: Read Data Stored by Minitab, S, SAS, SPSS, Stata,
Systat, dBase, ..., 2006. R package version 0.8-18.
[3] C.L. Blake D.J.Newman, S. Hettich and C.J. Merz. UCI repository of machine
learning databases, 1998.
[4] E.R. Dougherty. Probability and Statistics for the Engineering, Computing and
Physical Sciences. Prentice Hall International Editions, 1990.
[5] Julian Faraway. faraway: Functions and datasets for books by Julian Faraway.,
2006. R package version 1.0.0.
[6] R.A. Fisher. The analysis of covariance method for the relation between a part
and the whole. Biometrics, 3:6568, 1947.
[7] Alan Genz, Frank Bretz, and R port by Torsten Hothorn. mvtnorm: Multiva-
riate Normal and T Distribution, 2006. R package version 0.7-5.
[8] J.A. Hartigan and M.A. Wong. A k-means clustering algorithm. Applied Sta-
tistics, 28:100108, 1979.
[9] Frank E Harrell Jr and with contributions from many other users. Hmisc:
Harrell Miscellaneous, 2007. R package version 3.3-2.
[10] L. Kaufman and P.J. Rousseeuw. Finding Groups in Data. An Introduction to
Cluster Analysis. Wiley, 1990.
[11] Uwe Ligges. R-winedt. In Kurt Hornik, editor, Proceedings of the 3rd Interna-
tional Workshop on Distributed Statistical Computing (DSC 2003), TU Wien,
Vienna, Austria, 2003. ISSN 1609-395X.
[12] Martin Maechler, Peter Rousseeuw, Anja Struyf, and Mia Hubert. Cluster
analysis basics and extensions. Rousseeuw et al provided the S original which
has been ported to R by Kurt Hornik and has since been enhanced by Martin
Maechler: speed improvements, silhouette() functionality, bug fixes, etc. See
the Changelog file (in the package source), 2005.
[13] J. Pitman. Probability. Springer-Verlag, 1999.
[14] R Development Core Team. R: A Language and Environment for Statistical
Computing. R Foundation for Statistical Computing, Vienna, Austria, 2006.
ISBN 3-900051-07-0.
[15] W.N. Venables and B. D. Ripley. Modern Applied Statistics with S. Springer,
New York, fourth edition, 2002. ISBN 0-387-95457-0.
[16] J. Verzani. Using R for Introductory Statistics. Chapman & Hall / CRC, 2005.

17

You might also like