Sei sulla pagina 1di 163

Analisis de datos con R

Guillermo Ayala Gallego


26 de marzo de 2014

1
2

Uno m
as.
.

Indice general
1. Probabilidad: lo bueno si . . .
1.1. Experimento y probabilidad . . . .
1.2. Variable aleatoria . . . . . . . . . .
1.2.1. Funci
on de distribucion . .
1.2.2. Media y varianza . . . . . .
1.2.3. Teorema de Bayes . . . . .
1.3. Vectores aleatorios . . . . . . . . .
1.4. Distribuci
on normal multivariante

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

2. Un
2.1.
2.2.
2.3.

muy breve repaso a la Estadstica


Algo de Estadstica Descriptiva, poco . . . . . .
Verosimilitud . . . . . . . . . . . . . . . . . . . .
Estimaci
on . . . . . . . . . . . . . . . . . . . . .
2.3.1. Estimaci
on insesgada de media y varianza
2.3.2. Estimaci
on insesgada del vector de medias
varianzas . . . . . . . . . . . . . . . . . .
2.4. Estimador m
aximo verosmil . . . . . . . . . . .
2.5. Contraste de hip
otesis . . . . . . . . . . . . . . .
2.5.1. Test del cociente de verosimilitudes . . .
2.5.2. Test de Wald . . . . . . . . . . . . . . . .
2.5.3. Intervalos de confianza . . . . . . . . . .

3. Componentes principales
3.1. Introducci
on . . . . . . .
3.2. Componentes principales
3.3. Componentes principales
3.4. Un poco de teora . .

. . . . . . . . . . .
. . . . . . . . . . .
de los datos golub
. . . . . . . . . . .

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

.
.
.
.
.
.
.

. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
y la matriz de co. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .
. . . . . . . . . . .

.
.
.
.

.
.
.
.

4. An
alisis cluster
4.1. Algunos ejemplos . . . . . . . . . . . . . . . . . . . .
4.2. Disimilaridades . . . . . . . . . . . . . . . . . . . . .
4.2.1. Disimilaridades entre observaciones . . . . .
4.2.2. Disimilaridades entre grupos de observaciones
4.3. Cluster jer
arquico . . . . . . . . . . . . . . . . . . .
4.4. Metodos de particionamiento . . . . . . . . . . . . .
4.4.1. Metodo de las k-medias . . . . . . . . . . . .
4.4.2. Particionamiento alrededor de los mediodes .
4.5. Silueta . . . . . . . . . . . . . . . . . . . . . . . . .
4.6. Un ejemplo completo . . . . . . . . . . . . . . . . . .
3

.
.
.
.
.
.
.

9
9
10
11
11
19
19
20
25
25
27
29
29
30
32
34
35
35
35

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

.
.
.
.

37
37
37
45
48

. . . .
. . . .
. . . .
. . .
. . . .
. . . .
. . . .
. . . .
. . . .
. . . .

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

51
52
55
55
58
59
65
65
70
74
77

.
.
.
.

.
.
.
.

.
.
.
.

5. An
alisis discriminante o de c
omo clasificar con muestra de entrenamiento
83
5.1. Un problema de probabilidad sencillo . . . . . . . . . . . . . . . . . 86
5.2. Dos poblaciones normales . . . . . . . . . . . . . . . . . . . . . . . . 87
5.3. Dos normales multivariantes . . . . . . . . . . . . . . . . . . . . . . 87
5.4. Dos poblaciones normales multivariantes con parametros desconocidos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
5.5. An
alisis discriminante con mas de dos poblaciones normales . . . . 91
5.6. Valoraci
on del procedimiento de clasificacion . . . . . . . . . . . . . 92
5.7. Variables discriminantes canonicas o discriminantes lineales . . . . . 96
5.8. Algunos ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
6. Regresi
on
6.1. Regresi
on lineal simple . . . . . . . . . . . . .
6.2. Regresi
on lineal m
ultiple . . . . . . . . . . . .
6.3. Estimaci
on de . . . . . . . . . . . . . . . .
6.4. Algunos casos particulares . . . . . . . . . . .
6.5. Verosimilitud . . . . . . . . . . . . . . . . . .
6.6. Algunos ejemplos . . . . . . . . . . . . . . . .
6.7. Distribuci
on muestral de . . . . . . . . . .
6.8. Bondad de ajuste . . . . . . . . . . . . . . .
6.9. Valoraci
on de las hip
otesis del modelo . . . .
6.10. Inferencia sobre el modelo . . . . . . . . . . .
6.11. Selecci
on de variables . . . . . . . . . . . . .
6.11.1. Procedimientos que comparan modelos
6.11.2. Procedimientos basados en criterios .
6.12. Algunos ejemplos . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

103
106
108
108
110
111
111
114
115
116
134
140
140
143
146

7. De c
omo usar R en un tiempo razonable (no f
acil, no)
7.1. Instalaci
on y c
omo trabajar con R . . . . . . . . . . . . .
7.1.1. R y Windows . . . . . . . . . . . . . . . . . . . .
7.1.2. R y Linux . . . . . . . . . . . . . . . . . . . . . .
7.2. C
omo instalar un paquete? . . . . . . . . . . . . . . . . .
7.3. C
omo fijar el directorio de trabajo? . . . . . . . . . . . .
7.4. Etiquetas de valor y de variable . . . . . . . . . . . . . . .
7.4.1. C
omo etiquetar una variable? . . . . . . . . . . .
7.5. Elaboraci
on de un informe a partir del codigo R . . . . .
7.5.1. Sweave . . . . . . . . . . . . . . . . . . . . . . . .
7.6. R y Octave/Matlab . . . . . . . . . . . . . . . . . . . . . .

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.

159
160
160
160
160
161
161
161
161
161
161

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

.
.
.
.
.
.
.
.
.
.
.
.
.
.

Pr
ologo
Cada vez hay m
as 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 m
as enfermeros) con datos. Todo el mundo tiene datos. A los
que tienen cari
no. Que creen que tienen mucho valor. Pero que no saben que hacer
con ellos. En el mejor de los casos alg
un 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 (s
olo se pretende) partiendo de unos conocimientos
inform
aticos que no sean b
asicos y de unos conocimientos probabilsticos y estadsticos m
as bien b
asicos, llegar a poder hacer algo decente con un banco de datos.
La parte de an
alisis descriptivo de datos se obvia. Simplemente a lo largo del
curso se va utilizando y recordando. Ya esta bien de perder el tiempo explicando
c
omo 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 in
util. Pero s tost
on. Hay que asumirlo desde un principio. Esto no es
Sexo en Nueva York.1 Son unas notas de Estadstica con R ?. 2
Este documento contiene unas notas de clase para la asignatura de An
alisis de
Datos de Ingeniera Inform
atica de la Universidad de Valencia. Pretende en cada
tema empezar desde un nivel b
asico 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 alg
un tipo de analisis
m
as 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 r
apido de los conceptos basicos de la Probabilidad en el tema
1 Sin duda, la mejor serie de televisi
on de la historia. Hay que verla. Las pelculas de despu
es
no. En cualquier caso ahora es m
as recomendable Girls.
2 Un anuncio de la radio (Cadena Ser para m
as se
nas) hablaba de una persona que no entenda
porqu
e su profesor de Estadstica lo haba suspendido. Es de suponer que la persona que escribi
o el
anuncio estudiara Periodismo. All hay una asignatura de Estadstica. Claramente le ha servido.
Ha hecho un anuncio y le habr
an pagado por ello.

1. Las ideas b
asicas de la Estadstica que utilizamos en el resto del curso aparecen
en el tema 2. Ambos captulos con meros res
umenes que no sustituyen el repaso
de muchos de los conceptos en algunos de los textos que se citan en los captulos
correspondientes.
Estas notas est
an 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
Dougherty [1990].
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 a
nadida. Sin embargo, tiene la compensaci
on de ver c
omo 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. Quiz
as para que uno mismo lo aprenda y para no olvidarlo despues. En el
fondo, todos vamos aprendiendo seg
un lo explicamos y lo escuchamos.
Sin duda, unas notas como las que siguen solo se pueden hacer utilizando LATEX
para escribir y el programa R ? 3 para realizar el analisis de los datos. Son dos
herramientas imprescindibles que se complementan perfectamente. Un tratamiento
estadstico no acaba con un codigo o con unos dibujos aislados. Acaba con un
informe. Con frecuencia, se dedica mas tiempo a explicar lo que se ha hecho, a
escribir el informe, que a la preparacion y tratamiento de los datos, al analisis de
los datos. En este sentido, creo que una herramienta como LATEX es fundamental
utilizada con R. En este texto hablamos de analisis de datos. No de LATEX. Sin
embargo, uno aprende a veces cosas importantes mientras estudia otras que cree
que lo son m
as. 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
peque
no 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 u
nicos temas de
car
acter b
asico. Los dem
as van al grano. En particular si te interesa como reducir
la dimensi
on del banco de datos lee el tema 3. Si el problema que te quita el sue
no
es c
omo dadas unas variables sobre un individuo clasificarlo en uno de g posibles
grupos conocidos a priori y de los cuales tienes ejemplos entonces no lo dudes y
lee el tema 5. Si tienes datos y no saben si se disponen formando grupos y ni tan
siquiera del n
umero de grupos que tienes entonces has de acudir sin remision al
tema 4. Finalmente en los temas 6, ?? y ?? viene la artillera pesada. Como todos
sabemos los modelos lineales son el corazon de la Estadstica, sin ellos, otras tecnicas
de an
alisis de datos se la hubieran ventilado. Los modelos lineales es un esfuerzo
colectivo que ha construido una teora redonda, u
til, facil de aprender y aplicar.
Parece que casi todo est
a 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.
3 La primera lecci
on sobre R es c
omo citar el programa. En la lnea de comandos escribimos
citation y nos devuelve la referencia bibliogr
afica. Del mismo modo lo podemos hacer si utilizamos
otro paquete. Por ejemplo tecleando citation(cluster) nos indica c
omo citar el paquete cluster
que utilizamos en el tema 4.

Un detalle pr
actico de enorme interes. Para programar con R en el sistema operativa Windows lo m
as c
omodo es utilizar RWinEdt (?) mientras que si trabajamos
en Linux la opci
on m
as c
omoda es utilizar emacs con el paquete ESS. Se pueden
encontrar detalles adicionales R.
R es libre. Esto significa que es malo? Tiene pocas funciones? Lo que tiene
no es de fiar? Hay una idea muy extendida de que el precio de las cosas esta ntimamente relacionado con la calidad. No se si en general es cierto. En el caso de R
no lo es. Algunos artculos de prensa que apoyan el comentario son NYT.06.01.09,
NYT.07.01.09, The New York Times, 16 de febrero de 2009.
Tambien podeis encontrar algunas empresas que, basandose en R, desarrollan
productos comerciales como Revolution Computing.
Finalmente algunas direcciones de interes sobre R son las siguientes: http://www.rbloggers.com/.

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, u
til, de una utilidad
extra
na. Da verg
uenza 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, distribuci
on conjunta y marginal, . . .) hay que leer alg
un texto. Uno muy
bueno, pero no f
acil de encontrar, es ?.

1.1.

Experimento y probabilidad

Dadas un conjunto de condiciones, un experimento, no siempre podemos predecir


exactamente lo que va a ocurrir. La Probabilidad es la disciplina matematica que
estudia estos experimentos.
En primer lugar determinamos el conjunto de posibles resultados que se puede
producir en la experiencia, es el espacio muestral, . Los posibles subconjuntos
de A son los sucesos aleatorios y la probabilidad no nos dice si cada suceso
si va a producir o no sino que se limita a cuantificar para cada experimento la
mayor o menor certidumbre que tenemos en la ocurrencia de A antes de realizar la
experiencia. P (A) es como se suele denotar habitualmente la probabilidad del suceso
A. Obviamente cada suceso tiene asignada una probabilidad. Han de darse unas
condiciones de consistencia mnimas que han de verificar las distintas probabilidades
de los sucesos aleatorios. Son las siguientes
Definici
on 1 (Medida de probabilidad) P funci
on 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 sucesi
on 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 ning
un
conocimiento de Probabilidad. Esta creencia se considera un nuevo tipo de enfermedad mental. Si
bien en una versi
on leve de dicha enfermedad.

Ejemplo 1 Si el espacio muestral es finito y consideramos que todos los elementos


que lo componen son equiprobables entonces la probabilidad de un suceso A vendra
dada como
#(A)
P (A) =
(1.1)
#()
siendo # el cardinal del conjunto. Se comprueba con facilidad que es una medida
de probabilidad que verifica la axiom
atica previa. Es el modelo que corresponde al
concepto intuitivo de resultados equiprobables. Pr
acticamente todos los juegos de
azar siguen un modelo como este donde varan los resultados posibles.
Nota de R 1 (Muestreo con y sin reemplazamiento) Consideramos un conjunto finito y numeramos sus elementos de 1 a n. Nuestro espacio muestral es
{1, . . . , n}. Veamos c
omo extraer k elementos (con k n) sin reemplazamiento
de este conjunto. La funci
on sample es la funci
on b
asica. En el siguiente c
odigo
tenemos k = 6.
n <- 30
omega <- 1:n
sample(omega, size = 6, replace = FALSE)
## [1]

4 14

9 25 15

Ahora lo repetimos con reemplazamiento.


sample(omega, size = 6, replace = TRUE)
## [1] 28

1.2.

6 26

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 distintos individuos. Si los numeramos tendramos = {i }N
umero
i=i donde N es el n
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 . Obviamente 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 n
umeros
reales entonces cualquier afirmacion de interes sobre la variable aleatoria X suele
poderse expresar como P ({ : X() B}). Por ejemplo, si nos interesa la proporci
on de personas que tienen 37 o mas a
nos 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 funci
on de probabilidad
de X como P (X = x). En estas variables se tiene que
X
P (a X b) =
P (X = x),
(1.2)
axb

para cualesquiera valores reales a b.


10

Una variable aleatoria se dice continua cuando


Z b
P (a X b) =
f (x)dx,

(1.3)

para cualesquiera valores reales a b. La funcion f recibe el nombre de funci


on
de densidad (de probabilidad) de la variable X.
De un modo generico cuando se habla de la distribucion de una variable aleatoria
X hablamos de las probabilidades P (X B) para cualquier subconjunto B de R.
Obviamente, para variables discretas,
X
P (X B) =
P (X = x)
(1.4)
xB

y para variables continuas


Z
P (X B) =

f (x)dx.

(1.5)

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


la distribuci
on de la variable.

1.2.1.

Funci
on de distribuci
on

Se define la funci
on de distribucion de una variable aleatoria X como la funcion
real de variable real dada por
F (x) = P (X x) con x R.

1.2.2.

(1.6)

Media y varianza

Una variable suele describirse de un modo simple mediante su media y su varianza. La media nos da una idea de alrededor de que valor se producen los valores aleatorios de la variable mientras que la varianza cuantifica la dispersion
de estos valores alrededor de laPmedia. Se definen para variables discretas como: 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 lap
varianza se suele utilizar para medir variabilidad la desviaci
on tpica dada por
= var(X).
En variables continuas las definiciones de media y varianza son las analogas sustituyendo
sumatorios por integrales, de modo que la media se define
==
R +
R + como EX
2
2
xf
(x)dx
mientras
que
la
varianza
ser
a
var(X)
=

=
(x

)
f
(x)dx.

En tablas 1.1 y 1.2 presentamos un breve resumen de las distribuciones que


vamos a utilizar en este curso.
Nota de R 2 (Manejo de la distribuci
on binomial) En R se trabaja con las
distribuciones de probabilidad mediante grupos de cuatro funciones. Por ejemplo,
supongamos que estamos trabajando con la binomial. Entonces la funci
on de probabilidad es dbinom, la funci
on de distribuci
on es pbinom, la inversa de la funci
on
de distribuci
on que nos da los percentiles es qbinom y, finalmente, podemos generar datos con distribuci
on binomial mediante la funci
on rbinom. Consideramos una
binomial con 10 pruebas y una probabilidad de exito en cada prueba de 0.23.
dbinom(0:10, size = 10, prob = 0.23)
##
##

[1] 7.327e-02 2.188e-01 2.942e-01 2.343e-01 1.225e-01 4.390e-02 1.093e-02 1.865e-03


[9] 2.089e-04 1.387e-05 4.143e-07
11

Distribuci
on
Bernoulli
Binomial

Hipergeometrica
Geometrica
Binomial Negativa
Poisson

Cuadro 1.1: Distribuciones discretas

e x
x!

Funcion de probabilidad
1x
f (x|p) = px (1
si x = 0, 1
 p)

n
f (x|n, p) =
px (1 p)nx si x = 0, 1, . . . , n
x

A B

x
nx

si x = 0, . . . , n.
f (x|A, B, n) =
A+B

n
f (x|p) = p(1 p)x si x = 0, 1, 2, . . .


r+x1
f (x|r, p) =
pr (1 p)x si x = 0, 1, 2, . . .
x
si x = 0, 1, . . .
f (x|) =

r(1p)
p

1p
p

nA
A+B

np

Media
p

r(1p)
p2

1p
p2

nAB(A+Bn)
(A+B)2 (A+B1)

np(1 p)

Varianza
p(1 p)

12

13

a La

funci
on gamma se define como () =

Weibull(, )
Lognormal

F-Snedecor F (m, n)

t-Student t()

R +

LN (, )

x1 exp{x}dx, que existe y es finita > 0

X N (, ) e

n
(n2) si

1
( )

n>2

2n2 (m+n2)
m(n2)2 (n4) si n > 4
2
2
1 2 1
(2( ) ( ))

si > 2

0 si > 1

(+)2 (++1)

2
2

Gamma Ga(, )
Exponencial Expo()
Ji-Cuadrado 2 ()
Beta Be(, )

()2
12
2

+
2

Normal, N (, 2 )

Varianza

Media

1
si < x <
1 x 2
f (x|, 2 ) = 12 e 2 ( ) x R

f (x|, ) = ()
x1 ex si x > 0 a
1
f (x | ) = exp x si x 0
X 2 () si X Ga( 2 , 12 )
(+) 1
f (x|, ) = ()()
x
(1 x)1 si 0 < x < 1


+1
2
( +1
x2
2 )
f (x) = (
1
+
x R

2)
m/21
( m+n
)
x
m/2 n/2
2
f (x) = ( m )(
n (mx+n)
n m
(m+n)/2 si x > 0
2
2)
x
1
f (x | , ) = x
exp ( ) si x > 0
2
X
2

Uniforme

f (x|, ) =

Funci
on de densidad

Distribuci
on

Cuadro 1.2: Distribuciones continuas

De hecho podemos ver la forma que tiene esta funci


on de probabilidad para todos
los valores posibles.

0.30

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

0.25

0.20
0.15
0.10

0.05

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

0.00

10

Es interesante ver c
omo se modifica la forma de la funci
on de probabilidad cuando modificamos la probabilidad de exito manteniendo constante el n
umero de pruebas
que realizamos. Indicamos con 1 y 2 la primera y segunda funciones de probabilidad.

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


points(dbinom(0:10, size = 10, prob = 0.77), xlab = "", pch = "2")
14

0.30

2
2

0.15

0.20

0.10

0.00

0.05

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

0.25

1
2

2
2

10

La funci
on de distribuci
on la podemos conseguir con pbinom.

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


## [1] 0.07327 0.29212 0.58628 0.82060 0.94308 0.98698 0.99791 0.99978 0.99999 1.00000
## [11] 1.00000

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


15

1.0

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

0.6

0.8

0.4

f(x)

0.2

10

La inversa de la funci
on de distribuci
on, esto es, los cuantiles nos la dara
qbinom.
qbinom(0.3, size = 10, prob = 0.23)
## [1] 2
Podemos simular valores de la distribuci
on binomial con rbinom.
rbinom(5, size = 10, prob = 0.23)
## [1] 5 1 1 2 3

Nota de R 3 (Manejo de la distribuci


on Poisson) La funci
on de densidad y
de distribuci
on las obtenemos con dpois y ppois.
dpois(0:60, lambda = 12)
## [1] 6.144e-06 7.373e-05
## [9] 6.552e-02 8.736e-02
## [17] 5.429e-02 3.832e-02
## [25] 7.872e-04 3.779e-04
## [33] 7.982e-07 2.902e-07

4.424e-04
1.048e-01
2.555e-02
1.744e-04
1.024e-07
16

1.770e-03
1.144e-01
1.614e-02
7.751e-05
3.512e-08

5.309e-03
1.144e-01
9.682e-03
3.322e-05
1.171e-08

1.274e-02
1.056e-01
5.533e-03
1.375e-05
3.797e-09

2.548e-02
9.049e-02
3.018e-03
5.498e-06
1.199e-09

4.368e-02
7.239e-02
1.574e-03
2.128e-06
3.689e-10

## [41] 1.107e-10 3.239e-11 9.256e-12 2.583e-12 7.044e-13 1.878e-13 4.900e-14 1.251e-14


## [49] 3.128e-15 7.660e-16 1.838e-16 4.326e-17 9.983e-18 2.260e-18 5.023e-19 1.096e-19
## [57] 2.348e-20 4.944e-21 1.023e-21 2.080e-22 4.161e-23
Representamos las funciones de probabilidad de dos distribuciones Poisson modificando el valor de que es su media y varianza de modo que un valor de mayor
se traduce en una densidad que toma valores mayores y m
as dispersa.
plot(0:60, dpois(0:60, lambda = 12), xlab = "", pch = "1")
points(0:60, dpois(0:60, lambda = 24), xlab = "", pch = "2")

11
0.10

0.08

1
22
2 2
2
2

1
0.06

0.04

2
1

2
1
2
1
2

2
2
1
2
1
222
111
222222222

2
2
2
1
2
1
22
11
22222222222222222222222
1111111111111111111111111111111111111

20

0.00

2
1

0.02

dpois(0:60, lambda = 12)

10

30

40

50

60

Los cuantiles obtenidos como inversa de la funci


on de distribuci
on se obtienen
qpois.
qpois(seq(0.1, 0.9, 0.1), lambda = 12)
## [1]

9 10 11 12 13 14 15 17

Y finalmente podemos generar valores con esta distribuci


on con rpois.
rpois(50, lambda = 12)
## [1] 10
## [29] 13

8 16 9 12 13 11 12
7 20 10 8 11 14 16

9 11 9 17 17 6 12 12 12 14 15 14 18 10 15 12 20
6 10 15 14 11 14 10 10 7 10 11 13 9 16

17

9 13

Nota de R 4 La funci
on de densidad y de distribuci
on las obtenemos con dpois y
ppois.
dpois(0:60, lambda = 12)
##
##
##
##
##
##
##
##

[1]
[9]
[17]
[25]
[33]
[41]
[49]
[57]

6.144e-06
6.552e-02
5.429e-02
7.872e-04
7.982e-07
1.107e-10
3.128e-15
2.348e-20

7.373e-05
8.736e-02
3.832e-02
3.779e-04
2.902e-07
3.239e-11
7.660e-16
4.944e-21

4.424e-04
1.048e-01
2.555e-02
1.744e-04
1.024e-07
9.256e-12
1.838e-16
1.023e-21

1.770e-03
1.144e-01
1.614e-02
7.751e-05
3.512e-08
2.583e-12
4.326e-17
2.080e-22

5.309e-03
1.144e-01
9.682e-03
3.322e-05
1.171e-08
7.044e-13
9.983e-18
4.161e-23

1.274e-02
1.056e-01
5.533e-03
1.375e-05
3.797e-09
1.878e-13
2.260e-18

2.548e-02
9.049e-02
3.018e-03
5.498e-06
1.199e-09
4.900e-14
5.023e-19

Representamos las funciones de probabilidad de dos distribuciones Poisson modificando el valor de que es su media y varianza de modo que un valor de mayor
se traduce en una densidad que toma valores mayores y m
as dispersa.
plot(0:60, dpois(0:60, lambda = 12), xlab = "", pch = "1")
points(0:60, dpois(0:60, lambda = 24), xlab = "", pch = "2")

11
0.10

0.08

1
22
2 2
2
2

1
0.06

2
1

0.04

2
1

2
1
2
1
2

2
2
1
2
222
1111
222222222

2
2
2
1
2
1
22
11
22222222222222222222222
1111111111111111111111111111111111111

20

0.00

0.02

dpois(0:60, lambda = 12)

10

30

40

50

60

Los cuantiles obtenidos como inversa de la funci


on de distribuci
on se obtienen
con qpois.
18

4.368e-02
7.239e-02
1.574e-03
2.128e-06
3.689e-10
1.251e-14
1.096e-19

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


## [1]

9 10 11 12 13 14 15 17

Y finalmente podemos generar valores con esta distribuci


on con rpois.
rpois(50, lambda = 12)
## [1] 10 16 11 13 8 13 14 12 13
## [29] 11 15 14 6 13 13 13 10 14

1.2.3.

6 7 12 10 14 13 15 12 17 10 10 12 7 10 16 16
8 13 12 7 11 17 14 18 18 11 14 14 20

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
j=1 P (A | Bj )P (Bj )

1.3.

(1.7)

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

P (a1 X1 b1 , . . . , ad X1 bd ) =

bd

...
a1

f (x1 , . . . , xd )dx1 . . . dxn , (1.8)


ad

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


En particular la distribuci
on 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

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

6 11

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

En general si consideramos dos vectores aleatorios X = (X1 , . . . , Xd )0 e Y =


(Y1 , . . . , Yp ) denotaremos

cov(X1 , Y1 ) . . . cov(X1 , Yp )

..
..
..
cov(X, Y ) =

.
.
.
cov(Xd , Y1 ) . . . cov(Xd , Yp )
y ser
a 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 )0 podemos considerar la matriz de correlaciones que en la posici
on (j, k) tiene el coeficiente de correlacion entre las variables
jk
Xi y Xj , jk = jjkk
, es decir,

1
..
P = .
d1

12
..
.

...
..
.

d2

...

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

P = D 2 D 2 .

(1.9)

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 transformaci
on lineal del vector X asociada a la matriz A. Entonces
se tiene que
Y = E[Y ] = AE[X] = AX .
(1.10)
y
cov(Y ) = cov(AX) = Acov(X)A0 .

1.4.

(1.11)

Distribuci
on normal multivariante

Veamos dos definiciones equivalentes.


Definici
on 2 Sea Y = (Y1 , . . . , Yd )0 un vector aleatorio d-dimensional. Se dice que
el vector Y tiene una distribuci
on normal multivariante si tiene por funci
on de
densidad conjunta


1
1
0 1
(y ) (y ) ,
(1.12)
f (y|, ) =
d
1 exp
2
(2) 2 || 2
donde < yj < +, j = 1, . . . , d y = [jk ] es una matriz definida positiva
( > 0).
20

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


Y Nd (, ).

(1.13)

Se tiene que si Y1 , . . . , Yd son variables aleatorias con distribucion normal independientes con medias nulas y varianza com
un 2 entonces se tiene que Y Nd (0, 2 Id ).
Teorema 1 Supongamos Y Nd (, ) y sea
 (1) 
Y
Y =
,
Y (2)

 (1) 

= (2) ,


11
=
21


12
,
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 0 ).
2. Cualquier subvector de Y tiene una distribuci
on 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 )0 1 (Y ) 2d .
(1)
6. La distribuci
on condicionada de Y (2) , dado Y (1) = y (1) es Nd2 ((2) +21 1

11 [y
(1)
], 22,1 ) donde 22,1 = 22 21 1

.
11 12

Una segunda manera en que podemos definir la distribucion normal multivariante es del siguiente modo.
Pd
Definici
on 3 Y tiene una distribuci
on normal multivariante si a0 Y = i=1 ai Yi
tiene una distribuci
on normal univariante para cualquier vector a = (a1 , . . . , ad )0 .
Si EY = and cov(Y ) = > 0 entonces Y Nd (, ).
Nota de R 5 El paquete [?] nos permite trabajar con la normal multivariante.
library(mvtnorm)
En concreto, veamos un ejemplo de la normal bivariante con vector de medias y
matriz de covarianzas dada por
mu <- c(4.5, 7.3)
Sigma <- matrix(c(7.097258, 3.885963, 3.885963, 3.371314), 2, 2)
Elegimos los puntos donde vamos a calcular la densidad bivariante
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 calculamos los valores.

21

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

Vamos a representarlos.

persp(z)
contour(z)

22

1.0

10

12

12

10

10

12

10

10

12

0.0

12

10

10

10

10 8

10

10

10

12

12

8
6

6 8

8
6

6
6

10

10

10

10

10

10
4
4

2
4

2
4

2
4

2
4

10

12

8
4

6 8

8
4

12

10

10

0.4

10

10

6
8

0.2

10

2
2
2

0.8
0.6

10

10

10

10

0.0

0.2

0.4

0.6

0.8

1.0

C
omo generar valores normales multivariantes? Consideramos el vector de medias y la matriz de covarianzas siguiente.

mu <- c(4.5, 7.3, 6.2, 8.4, 7.3)


Sigma <- matrix(c(7.097258, 3.885963, 2.658114, 4.036412, 2.698515, 3.885963, 3.371314, 2.275973
3.713151, 1.601078, 2.658114, 2.275973, 5.996727, 7.333165, 5.564751, 4.036412, 3.713151,
7.333165, 10.970678, 7.80342, 2.698515, 1.601078, 5.564751, 7.80342, 6.742381), 5, 5)
Y generamos los datos.
x <- rmvnorm(10, mean = mu, sigma = Sigma)

23

24

Captulo 2

Un muy breve repaso a la


Estadstica
S
olo pretendemos fijar notaci
on y recordar algunos de los conceptos basicos. Es
m
as que recomendable consultar alg
un 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 ser
a bueno. Teniendo en cuenta que este texto esta muy orientado
al uso de la Estadstica con R ? sera bueno consultar Verzani [2005] en donde se
presenta la estadstica b
asica 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 res
umenes numericos o bien mediante unos res
umenes gr
aficos. Esto es lo que se conoce como Estadstica descriptiva.
Veamos alg
un ejemplo para recordar estos conceptos.
Nota de R 6 (An
alisis descriptivo de unos datos de hospitalizaci
on ambulatoria)
Vamos a realizar un an
alisis descriptivo de unos datos relativos a hospitalizaci
on
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 cu
ales son las variables que lo componen.
names(scoremaster)
## [1] "score"
## [6] "score2"
## [11] "score3"
## [16] "score4"
## [21] "asa"

"eg1"
"eg2"
"eg3"
"score5"
"sexo"

"d1"
"d2"
"d3"
"especialidad"
"T.TOTALP"

"t1"
"t2"
"t3"
"intensidad"
"T.QUIRUR"

"s1"
"s2"
"s3"
"tipoanes"
"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.
25

score[1:10]
## [1] 6 4 5 6 7 6 7 8 6 5
## Levels: 3 < 4 < 5 < 6 < 7 < 8
De las variables consideradas algunas son categ
oricas como puede ser la especialidad 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 funci
on extractora summary sobre un data frame.
summary(scoremaster)
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##

score
3: 13
4: 89
5:199
6:276
7:219
8:126

eg1
0: 18
1:545
2:359

d1
0: 18
1:360
2:544

t1
0: 50
1:359
2:513

s1
0: 17
1:307
2:598

score2
eg2
d2
t2
3
: 7
0
: 27
0
: 36
0
: 11
4
: 33
1
:377
1
:359
1
: 59
5
:133
2
:359
2
:366
2
:691
6
:234
NA's:159
NA's:161
NA's:161
7
:192
8
:162
NA's:161
s2
score3
eg3
d3
t3
s3
score4
0
: 3
3
: 2
0
: 9
0
: 10
0
: 0
0
: 0
Min.
:5.0
1
:237
4
: 3
1
: 78
1
: 76
1
: 9
1
: 45
1st Qu.:6.0
2
:522
5
: 34
2
: 51
2
: 51
2
:127
2
: 92
Median :6.5
NA's:160
6
: 45
NA's:784
NA's:785
NA's:786
NA's:785
Mean
:6.4
7
: 34
3rd Qu.:7.0
8
: 20
Max.
:8.0
NA's:784
NA's
:902
score5
especialidad intensidad
tipoanes
asa
sexo
T.TOTALP
Min.
:4.0
1
:325
1:168
General:746
1:555
0
:329
Min.
: 900
1st Qu.:5.5
2
:163
2:426
Plexo :108
2:332
1
:590
1st Qu.: 6060
Median :6.5
4
:136
3:328
CAM
: 65
3: 35
NA's: 3
Median : 8790
Mean
:6.0
5
: 55
NA's
: 3
Mean
: 9881
3rd Qu.:7.0
7
:157
3rd Qu.:12420
Max.
:7.0
8
: 74
Max.
:35160
NA's
:918
NA's: 12
T.QUIRUR
edad
Min.
: 600
Min.
: 4.0
1st Qu.: 2640
1st Qu.:31.0
Median : 3600
Median :43.0
Mean
: 3903
Mean
:43.5
3rd Qu.: 4860
3rd Qu.:56.0
Max.
:16200
Max.
:84.0
NA's
:194

En el resumen anterior vemos que cuando se trata de una variable categ


orica
nos muestra los conteos asociados a cada uno de los valores posibles (si hay muchas
categoras solo pone algunas y las dem
as las agrupa en una u
ltima categora). En
las variables numericas saca unas descriptivas numericas. Observemos la descriptiva
numerica de T.TOTALP.
summary(T.TOTALP)
##
##

Min. 1st Qu.


900
6060

Median
8790

Mean 3rd Qu.


9880
12400
26

Max.
35200

Nos aparece el mnimo, el primer cuartil (o percentil 0,25), la mediana, la media,


el tercer cuartil (o percentil 0,75) y el m
aximo de las observaciones.
Para una variable categ
orica podemos pedirle una tabla de frecuencias.
table(tipoanes)
## tipoanes
## General
##
746

Plexo
108

CAM
65

La tabla anterior es algo parca en su presentaci


on. Si queremos un diagrama de
barras (que es lo mismo pero en dibujo) lo podemos conseguir haciendo

100

200

300

400

500

600

700

barplot(table(tipoanes))

General

2.2.

Plexo

CAM

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 funci
on 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
27

viendo c
omo 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 anterior y hablaremos de la log-verosimilitud.
l[f ; y] = log f (y).

(2.2)

Una simplificaci
on adicional (que es habitual en las aplicaciones) supone que la
funci
on de densidad f pertenece a una familia parametrica F, esto es, cada elemento
de la familia es conocido completamente salvo un n
umero finito de parametros
= (1 , . . . , p ) de modo que denotaremos f (y; ) o fY (y; ). Al conjunto de valores
posibles de se le llama espacio param
etrico 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)

Supongamos una transformacion 1-1 de Y a Z, Z = g(Y ). Las densidades de


ambos vectores se relacionan seg
un la siguiente relacion

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



on de z a y. Se tiene la siguiente relacion
donde y
z es el jacobiano de la transformaci
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 par
ametros 1 y 2 en lugar de los valores aislados.
Si asumimos que los distintos Y1 , . . . , Yn son independientes entonces
LY (; y) = fY (y) =

n
Y

fYi (yi ),

i=1

y
ly (; y) =

n
X

log fYi (yi ) =

i=1

n
X

LYi (; yi ).

i=1

Veamos algunos ejemplos de verosimilitud.


Ejemplo 2 (Pruebas Bernoulli) Y1 , . . . , Yn son independientes y con la misma
distribuci
on (i.i.d.) P (Yi = yi ) = yi (1 )1yi y
L(; y) =

Pn

i=1

yi

(1 )n

Pn

i=1

yi

Ejemplo 3 (N
umero de
exitos en n pruebas Bernoulli) Nuestros datos son
ahora el n
umero total de exitos en un n
umero dado de pruebas de Bernoulli, r. Entonces la variable correspondiente R tiene una distribuci
on binomial con n pruebas
y una probabilidad de exito . La verosimilitud viene dada por
 
n r
L(; r) =
(1 )nr
r
28

Ejemplo 4 (Muestreo Bernoulli inverso) Nuestros datos son ahora el n


umero
total de pruebas necesarias para alcanzar un n
umero previamente especificado de
exitos. La variable aleatoria correspondiente N tendr
a una distribuci
on binomial
negativa con r exitos y una probabilidad de exito . La funci
on de verosimilitud
correspondiente viene dada por


n1 r
L(; n) =
(1 )nr
r1
Consideremos los tres ejemplos anteriores 2, 3 y 4. Si consideramos dos valores del
par
ametro 1 y 2 entonces el cociente de las verosimilitudes calculados en ambos
valores tiene el mismo valor en los tres ejemplos.

2.3.

Estimaci
on

Denotamos por el espacio formado por los valores que puede tomar o espacio
parametrico. Un estimador del parametros o vector parametrico es cualquier
funci
on de la muestra X1 , . . . , Xn que toma valores en el espacio parametrico.
Si (X1 , . . . , Xn ) es un estimador del parametro entonces se define el error
cuadr
atico 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 cuadr
atico 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 , m
as el sesgo al cuadrado, [ ]2 .
A la raz cuadrada de la varianza de un estimador, es decir, a su desviacion
tpica o est
andar se le llama error est
andar. 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.

Estimaci
on insesgada de media y varianza

Dada una muestra Y1 , . . . , Yn de una variable. Un estimador habitualmente utilizado para estimar = EYi es la media muestral dada por
n

1X
Yi .
Y =
n i=1

(2.6)

Notemos que
1
E Y = E[
n

n
X

1X
1X
Yi ] =
EYi =
= .
n i=1
n i=1
i=1

En definitiva, la media muestral es un estimador que no tiene ning


un sesgo cuando
estima la media de Yi (la media poblacional) o, lo que es lo mismo, es un estimador
insesgado.
29

Para estimar de un modo insesgado la varianza 2 a partir de una muestra


Y1 , . . . , Yn se utiliza la varianza muestral dada por
n

S2 =

1 X
(Yi Y )2 .
n 1 i=1

(2.7)

La raz
on de la divisi
on por n 1 en lugar de dividir por n viene de las siguientes
igualdades.
n
X
E
(Yi Y )2 =
i=1

n
n
X
X
[(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,


E

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

de donde,
n

ES 2 = E

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

es decir, S 2 estima la varianza 2 sin sesgo.


Nota de R 7 (Estimaci
on insesgada de media y varianza) Vamos a estimar
la media y la varianza de un modo insesgado. Empezamos leyendo los datos scoremaster.
load("../data/scoremaster")
attach(scoremaster)
La media muestral del tiempo total quir
urgico (en segundos) lo obtenemos con
mean(T.QUIRUR)
## [1] 3903
Mientras que la varianza y desviaci
on tpica muestral vienen dadas por
var(T.QUIRUR)
## [1] 3107898
sd(T.QUIRUR)
## [1] 1763

2.3.2.

Estimaci
on 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 estimadores insesgados de y son las versiones multivariantes de la media y varianza
30

muestrales. Si

Yi1

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

0
Y11 . . . Y1d
Y1

..
..
Y = ... = ...
.
.
Yn0

Yn1

...

Ynd

mientras que los datos observados, la matriz de datos, vendra dada por
0

y11 . . . y1d
y1

..
..
y = ... = ...
.
.
yn0
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 0 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 covarianzas muestral que tiene en la posicion (j, k) la covarianza muestral entre las
componentes j y k,
n

Sjk

1 X
(Yij Yj )(Yik Yk ),
=
n 1 i=1

de modo que

S11
..
S= .

...
..
.

S1d
.. =
.

Sd1

...

Sdd

1
1 X
(Yi Y )(Yi Y )0 =
Q.
n 1 i=1
n1

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
=X
. Se sigue que
que se verifica X
n
X

(Yi Y )(Yi Y )0 =

i=1

n
X

0
(Xi X)(X
i X) =

i=1

n
X

X
0.
Xi Xi0 nX

i=1

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


X
0 = y
misma que los Yi . En consecuencia, E X
EQ =

n
X

cov(Yi ) n cov(Y ) = n n cov(Y ) = n n

i=1

31

= (n 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
=p
(2.10)
rjk = qP i=1
P
n
Sjj Skk
j )2 n (Yik Yk )2
(Y

Y
ij
i=1
i=1
Denotaremos por R la matriz de correlaciones muestrales R = [rjk ].
Nota de R 8 (Matrices de covarianza y correlaci
on muestrales) Vamos a estimar la media y la varianza de un modo insesgado. Empezamos leyendo los datos
scoremaster.
load("../data/scoremaster")
attach(scoremaster)
La covarianza y la correlaci
on muestrales entre el timepo total quir
urgico y el
tiempo total postquir
urgico los obtenemos con
cov(T.QUIRUR, T.TOTALP)
## [1] 2308272
cor(T.QUIRUR, T.TOTALP)
## [1] 0.2365
La matriz de covarianzas muestral vendra dada por
cov(cbind(T.QUIRUR, T.TOTALP))
##
T.QUIRUR T.TOTALP
## T.QUIRUR 3107898 2308272
## T.TOTALP 2308272 30659874
y la de correlaciones sera
cor(cbind(T.QUIRUR, T.TOTALP))
##
T.QUIRUR T.TOTALP
## T.QUIRUR
1.0000
0.2365
## T.TOTALP
0.2365
1.0000

2.4.

Estimador m
aximo verosmil

El metodo de estimaci
on que vamos a utilizar en este curso el m
etodo de
m
axima verosimilitud. El estimador maximo verosmil de , que denotaremos
se obtienen m
por ,
aximizando la funcion de verosimilitud o, equivalentemente,
la transformaci
on mon
otona de dicha funcion que es la funcion de logverosimilitud.
Utilizaremos para denotar el estimador maximo verosmil la notacion inglesa MLE.
= max L(),
L()

(2.11)

= argmax L(),

(2.12)

o tambien

32

Ejemplo 5 (Bernoulli) Se puede comprobar sin dificultad que p =

Pn

i=1

xi

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)
c2 = n1 S 2 =
n y que
Ejemplo
6 (Normal) En este caso se comprueba que
=X
n
Pn
1
2

) . Teniendo en que cuenta la propiedad enunciada en 2.13 teni=1 (Xi Xnq


n
2
dremos que
= n1
n S .
En muchas situaciones la funcion L() es concava y el estimador maximo ve
rosmil es la soluci
on de las ecuaciones de verosimilitud L(
= 0. Si cov()

denota la matriz de covarianzas de entonces, para un tama


no muestral grande y
bajo ciertas condiciones de regularidad (ver Rao [1967], pagina 364), se verifica que
es la inversa de la matriz de informaci
cov()
on cuyo elemento (j, k) viene dado
por
 2

l()
E
(2.14)
j k
Notemos que el error est
andar 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 ser
an los errores estandar. La racionalidad que hay detras
de esto es que si la curvatura es mayor entonces la logverosimilitud cae rapidamente
En resumen, es de esperar que este mas proximo
cuando el vector se aleja de .

a .
Ejemplo 7 (Binomial) Supongamos que una muestra en una poblaci
on finita y
consideremos como valor observado el n
umero 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),
y

(2.16)

La ecuaci
on de verosimilitud sera
y ny
y np
l(p)
=
=
.
p
p
1p
p(1 p)

(2.17)

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



y
ny
n
2 l(p)
E
=E 2 +
=
.
2
2
p
p
(1 p)
p(1 p)


(2.18)

En consecuencia asint
oticamente p tiene varianza p(1p)
lo cual era de prever pues
n
si consideramos la variable Y que nos da el n
umero de exitos entonces sabemos que
EY = np y que var(Y ) = np(1 p).
33

2.5.

Contraste de hip
otesis

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
hip
otesis siguiente.
H0 : 0

(2.19)

H1 : 1

(2.20)

Bas
andonos 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 hip
otesis nula. Notemos que, una vez hemos tomado una
decisi
on, 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.

Rechazamos H0
No rechazamos H0

H0
Error tipo I

H1
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
funci
on de la muestra que denotamos (X1 , . . . , Xn ) de modo que si (X1 , . . . , Xn )
C entonces rechazamos la hip
otesis nula mientras que si (X1 , . . . , Xn )
/ C entonces
no rechazamos la hip
otesis nula. Notemos que simplemente estamos particionando
el espacio muestral (que suponemos) Rn en dos partes, C y C c , de modo que tomamos una decisi
on bas
andonos en si el estadstico esta en C o bien esta en el
complementario de C. Al conjunto C se le suele llamar la regi
on crtica. La funcion
potencia se define como
() = P ( C|).
(2.21)
Contraste de la media en la poblaciones normales
Si tenemos una muestra X1 , . . . , Xn de una poblacion normal con media y
varianza 2 donde ambos par
ametros se asumen desconocidos un test habitualmente
considerado es si la media toma un valor dado. El test formalmente planteado sera:

Siendo S 2 =

2
i=1 (Xi X)

Pn

n1

H0 : = 0 ,

(2.22)

H1 : 6= 0 .

(2.23)

, el estadstico habitualmente utilizado es el siguiente


T =

0
X
.
S/ n

Bajo la hip
otesis nula este estadstico sigue una distribucion t de Student con n 1
grados de libertad,
T t(n 1).
Si suponemos que trabajamos con un nivel de significacion la region crtica en la
cual rechazamos la hip
otesis nula sera
|T | > tn1,1 2 .
34

2.5.1.

Test del cociente de verosimilitudes

El cociente de verosimilitudes para contrastar estas hipotesis se define como


=

max0 L()
max L()

(2.24)

Es razonable pensar que en la medida en que tome valores menores entonces


la hip
otesis alternativa sea m
as plausible que la hipotesis nula y por lo tanto rechacemos la hip
otesis nula. Realmente se suele trabajar con 2 log pues bajo
la hip
otesis nula tiene una distribucion asintotica ji-cuadrado donde el n
umero de
grados de libertad es la diferencia de las dimensiones de los espacios parametricos
= 0 1 y 0 . Si denotamos L0 = max0 L() y L1 = max L() entonces
0
= L
L1 y
L0
2 log = 2 log
= 2(l0 l1 )
(2.25)
L1
siendo l0 y l1 los logaritmos de L0 y L1 respectivamente que tambien corresponden
con los m
aximos de la logverosimilitud sobre 0 y sobre .

2.5.2.

Test de Wald

Supongamos que el es un parametro y denota su estimador maximo verosmil.


Supongamos que queremos contrastar las siguientes hipotesis:
H0 : = 0 ,

(2.26)

H1 : 6= 0 .

(2.27)

el error estandar bajo la hipotesis alternativa de .


Entonces
Denotamos por SE()
el estadstico
0
z=
(2.28)

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

2.5.3.

Intervalos de confianza

Empezamos recordando el concepto de intervalo de confianza con un ejemplo


muy conocido como es la estimacion de la media en poblaciones normales.
Ejemplo 8 (Intervalo de confianza para la media de una normal) Ve
amoslo con un ejemplo y luego planteamos la situaci
on m
as general. Tenemos una muestra aleatoria X1 , . . . , Xn i.i.d. tales que Xi N (, 2). Entonces es conocido que
n
X
tn1 .
S/ n
35

(2.30)

n
depende tanto de la muestra que conocemos como de un par
ameVemos c
omo X
S/ n
tro (la media ) que desconocemos. Fijamos un valor de (habitualmente tomaremos = 0,05) y elegimos un valor tn1,1/2 tal que

P (tn1,1/2

n
X
tn1,1/2 ) = 1 .
S/ n

(2.31)

La ecuaci
on anterior la podemos reescribir como
n tn1,1/2 S X
n + tn1,1/2 S ) = 1 .
P (X
n
n

(2.32)

Tenemos una muestra aleatoria X1 , . . . , Xn y por lo tanto tenemos un intervalo alea n + tn1,1/2 S ]. Este intervalo tiene una
n tn1,1/2 S , X
torio dado por [X
n
n
probabilidad de 1 de contener a la verdadera media. Tomemos ahora la muestra
n y de S 2 sino los valores observados
y consideremos no los valores aleatorios de X
x
n y s. Tenemos ahora un intervalo [
xn tn1,1/2 sn , x
n + 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 , x
n + 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 significaci
on para contrastar las hip
otesis anteriores y consideramos el siguiente conjunto
formado por todos los 0 tales que no rechazamos la hipotesis nula al nivel . Este 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
< 2 (1 )}
{0 : 2[l(0 ) l()]
k

(2.33)

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


Wald vendra dado por el siguiente conjunto:
{0 :

| 0 |
< Z1/2 }

SE()

(2.34)

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

36

Captulo 3

Componentes principales
3.1.

Introducci
on

En este tema nos ocupamos de problemas de reduccion de dimension. Que significa reducir la dimensi
on? Responder a esta pregunta es obvio si nos fijamos en los
datos que tenemos. Trabajando con expresion de genes tenemos tantas filas como
genes y tantas columnas como muestras. En resumen miles de filas y decenas o centenares de columnas. En temas anteriores hemos visto como seleccionar filas, esto
es, seleccionar genes es una tarea incluso previa. Hemos de quedarnos con genes que
tengan una expresi
on diferencial si consideramos alguna caracterstica fenotpica
o bien con genes que tengan una expresion mnima o bien con genes que tengan
un cierto nivel de variaci
on. Que hacemos con las columnas? O de otro modo:
que hacemos con las muestras? Quizas la respuesta natural sera: si tenemos miles
de filas, por que preocuparse de unas decenas de filas? No es una buena respuesta.
Realmente tener 50 o 100 columnas son muchas a la hora de visualizar resultados o
bien de aplicar tratamientos estadsticos. En este tema tratamos el tema de como
reducir el n
umero de columnas.

3.2.

Componentes principales

Para ilustrar los conceptos vamos a considerar unos datos sencillos. Tomamos
los datos golub y nos fijamos en los genes que tienen que ver con Cyclin (tienen
esta palabra en su nombre). Vamos a considerar las dos primeras muestras, esto es,
las dos primeras columnas.
library(multtest)
data(golub)
sel <- grep("Cyclin", golub.gnames[, 2])
golub.red <- golub[sel, 1:2]

Los datos aparecen en el siguiente dibujo. Cada punto corresponde con uno de
los genes seleccionados.
plot(golub.red)
37

1.5

0.5

0.0

golub.red[,2]

1.0

0.5

1.5

1.0

1.5

1.0

0.5

0.0

0.5

1.0

1.5

2.0

golub.red[,1]

Para la fila i (para el gen i) denotamos las expresiones observadas en las dos
muestras como xi = (xi1 , xi1 ). Tenemos n filas y por lo tanto nuestros datos son xi
con i = 1, . . . , n.

Vamos a repetir el dibujo anterior mostrando el nombre del gen.

38

1.5

CCND2 Cyclin D2

0.5

Cyclinselective ubiquitin carrier protein mRNA


CDK6 Cyclindependent kinase 6

0.0

CDK2 Cyclindependent kinase 2


Cyclin G2 mRNA
Cyclindependentkinase
kinaseinhibitor
4 (CDK4)
CDKN1A Cyclindependent
1Agene
(p21, Cip1)
Cyclin G1 mRNA

0.5

Segunda muestra

1.0

CCND3 Cyclin D3

1.5

1.0

CCNH Cyclin H

Cyclin
CCNFA1
Cyclin
mRNA
F

1.5

1.0

0.5

0.0

0.5

1.0

1.5

2.0

Primera muestra

Centramos los datos. Esto es, le restamos a cada columna la media de la columna.
Para ello, primero calculamos las medias. El vector de medias lo vamos a denotar
por x
= (
x1 , x
2 ) donde
n
X
xij
x
j =
n
i=1
es decir, cada componente es la media de las componentes. En resumen el primer
valor es la expresi
on media en la primera muestra para todos los genes. Podemos
calcular f
acilmente el vector de medias. Una funcion especfica es la siguiente.
medias <- colMeans(golub.red)
Tambien podemos usar la funcion generica apply que nos hace lo mismo.
medias <- apply(golub.red, 2, mean)
Le restamos a cada columna su media.
golub.red <- sweep(golub.red, 2, medias)
En la siguiente figura reproducimos los datos centrados. Mostramos los ejes de
coordenadas en rojo.

39

plot(golub.red)
abline(v = mean(golub.red[, 1]), col = "red")
abline(h = mean(golub.red[, 2]), col = "red")

1.5

0.5

0.0

golub.red[,2]

1.0

0.5

1.0

1.5

1.0

0.5

0.0

0.5

1.0

1.5

golub.red[,1]

Hemos trasladado los datos de modo que las medias de cada variable valen cero
ahora. Esto es lo que se conoce como centrar los datos. Hemos centrado los datos.
Podemos comprobar que los nuevos datos tienen una media nula.
colMeans(golub.red)
## [1] -3.007e-17

1.070e-17

Nuestros datos (filas) corresponden a las expresiones correspondientes a los genes. Los datos originales tienen dimension 2 (dos variables correspondientes a las
dos muestras) y supongamos que pretendemos reducir la dimension a solo una, esto
es, representar cada gen mediante un u
nico n
umero. La idea de las componentes
principales es considerar una combinacion lineal de los valores originales. Es decir,
se pretende elegir un vector (de dimension dos) a1 = (a11 , a12 ) de modo que en
lugar de utilizar xi consideremos (el resumen) ui = a11 xi1 + a12 xi2 . Que a1 elegimos? La idea es lograr que los valores ui tengan la mayor variabilidad que se pueda
con objeto de no perder informacion. Mantener la variabilidad original indica que
mantenemos la informaci
on que los datos originales tienen. En concreto se elige a1
40

de modo que maximizamos


n

1X
(ui u
)2 .
n i=1
El vector a1 nos indica la direcci
on sobre la cual proyectamos los datos originales.
Las proyecciones sobre a1 , los valores ui son la mejor descripcion univariante de los
datos.
La segunda mejor descripci
on que sea ortogonal a la anterior seran las proyecciones sobre la lnea ortogonal a la primera que pasa por el origen de coordenadas.
Obtengamos las componentes principales.
a.pca <- prcomp(golub.red)
Vamos a representar los vectores directores de las lneas sobre las que proyectamos.

1.5

0.5

0.0

golub.red[,2]

1.0

0.5

1.0

1.5

1.0

0.5

0.0

0.5

1.0

1.5

golub.red[,1]

Estos vectores los podemos ver con


a.pca$rotation
##
PC1
PC2
## [1,] -0.7620 0.6476
## [2,] -0.6476 -0.7620
Y las lneas sobre las que proyectamos aparecen en el siguiente dibujo en azul.
41

1.5

0.5

0.0

golub.red[,2]

1.0

0.5

1.0

1.5

1.0

0.5

0.0

0.5

1.0

1.5

golub.red[,1]

Y finalmente podemos ver las proyecciones. En verde mostramos las proyecciones


sobre la primera componente.

42

1.5

0.5

0.0

0.5

1.0

golub.red[,2]

1.0

1.5

1.0

0.5

0.0

0.5

1.0

1.5

golub.red[,1]

Y ahora consideremos la proyeccion sobre la segunda componente.

43

1.5

0.5

0.0

golub.red[,2]

1.0

0.5

1.0

1.5

1.0

0.5

0.0

0.5

1.0

1.5

golub.red[,1]

Los valores de estas proyecciones los obtenemos con


predict(a.pca)
##
## [1,]
## [2,]
## [3,]
## [4,]
## [5,]
## [6,]
## [7,]
## [8,]
## [9,]
## [10,]
## [11,]
## [12,]

PC1
-2.50309
0.01369
-2.38702
0.33490
0.76608
0.27145
0.31170
2.22052
-0.93221
-0.39946
0.08294
2.22052

PC2
-1.542e-01
-2.024e-01
3.714e-03
-6.847e-05
2.806e-01
2.900e-02
-2.876e-01
-8.232e-02
1.837e-01
-7.240e-03
3.192e-01
-8.232e-02

Las desviaciones est


andar de la primera y segunda componente principal son las
siguientes

44

## [1] 1.469 0.185


Y las varianzas son los cuadrados de las desviaciones estandar.
a.pca$sdev^2
## [1] 2.15730 0.03421
C
omo de variables son nuestros datos? Podemos cuantificar el total de la variaci
on de los datos sumando las varianzas de cada una de las dos coordenadas

var(golub.red[, 1])
## [1] 1.267
var(golub.red[, 2])
## [1] 0.9246
cuya suma es
var(golub.red[, 1]) + var(golub.red[, 2])
## [1] 2.192
Las nuevas coordenadas tienen la misma varianza total.
sum(a.pca$sdev^2)
## [1] 2.192
Y que proporci
on de la varianza es atribuible a la primera componente? Y a
la segunda? Podemos dividir la varianza de cada componente por la suma total.
variacion.total <- sum(a.pca$sdev^2)
a.pca$sdev^2/variacion.total
## [1] 0.98439 0.01561
La primera componente explica un 98.44 % de la variacion total. Para que necesitamos utilizar dos n
umeros por gen si con uno tenemos esencialmente la misma
informaci
on.

3.3.

Componentes principales de los datos golub

Hemos visto las componentes principales con dos variables (en nuestro caso
dos muestras) con efecto de poder ver el significado geometrico de las componentes
principales. Vamos a trabajar con el banco de datos completo: todos los datos golub
que tienen 38 muestras (27 de un tipo de leucemia y 11 de otro tipo).
Obtengamos las componentes principales.
golub.pca <- prcomp(golub, scale = TRUE, center = TRUE)
45

El argumento center=TRUE centra los datos restando la media de la columna de


modo que las variables tengan medias nulas. El argumento scale=TRUE hace que
las variables originales sean divididas por su desviacion estandar de modo que la
varianza (y la desviaci
on est
andar) de las nuevas variables sea la unidad.
Diferentes criterios podemos aplicar a la hora de decidir con cuantas componentes nos quedamos.
1. Uno puede ser la proporcion total explicada. Fijar un nivel mnimo y quedarnos con el n
umero de componentes necesario para superar este valor mnimo.
2. El segundo puede ser que una componente no puede tener una desviacion
est
andar menor que una de las variables originales. Si hemos escalado cada
variable original dividiendo por su desviacion estandar entonces la desviacion
est
andar de cada componente ha de ser mayor que uno.
3. Otro criterio puede ser ver en que momento se produce un descenso de la
desviaci
on est
andar muy notable. Quedarnos con las componentes previas.
Un resumen de las componentes nos puede indicar con cuantas nos quedamos.
summary(golub.pca)
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##

Importance of components:
PC1
PC2
PC3
PC4
PC5
PC6
PC7
PC8
PC9
Standard deviation
5.044 1.4407 1.1173 1.0351 0.8582 0.7440 0.7210 0.6923 0.6382
Proportion of Variance 0.669 0.0546 0.0328 0.0282 0.0194 0.0146 0.0137 0.0126 0.0107
Cumulative Proportion 0.669 0.7240 0.7569 0.7851 0.8045 0.8190 0.8327 0.8453 0.8561
PC10
PC11
PC12
PC13
PC14
PC15
PC16
PC17
Standard deviation
0.6363 0.56700 0.55263 0.53868 0.52011 0.49568 0.48402 0.47719
Proportion of Variance 0.0106 0.00846 0.00804 0.00764 0.00712 0.00647 0.00617 0.00599
Cumulative Proportion 0.8667 0.87518 0.88321 0.89085 0.89797 0.90443 0.91060 0.91659
PC18
PC19
PC20
PC21
PC22
PC23
PC24
PC25
Standard deviation
0.47068 0.45421 0.43795 0.43410 0.42475 0.41582 0.40718 0.40066
Proportion of Variance 0.00583 0.00543 0.00505 0.00496 0.00475 0.00455 0.00436 0.00422
Cumulative Proportion 0.92242 0.92785 0.93290 0.93786 0.94260 0.94715 0.95152 0.95574
PC26
PC27
PC28
PC29
PC30
PC31
PC32
PC33
Standard deviation
0.3948 0.38731 0.38417 0.37882 0.37124 0.36957 0.3596 0.3593
Proportion of Variance 0.0041 0.00395 0.00388 0.00378 0.00363 0.00359 0.0034 0.0034
Cumulative Proportion 0.9598 0.96379 0.96767 0.97145 0.97508 0.97867 0.9821 0.9855
PC34
PC35
PC36
PC37
PC38
Standard deviation
0.35276 0.34218 0.33228 0.32572 0.30667
Proportion of Variance 0.00327 0.00308 0.00291 0.00279 0.00247
Cumulative Proportion 0.98875 0.99183 0.99473 0.99753 1.00000

Atendiendo al segundo criterio nos quedaramos con las cuatro primeras componentes. La quinta tiene una desviacion inferior a uno. Atendiendo al tercer criterio
vemos que a partir de la quinta es muy estable la desviacion estandar. Si nos quedamos con las cinco primeras componentes estamos explicando un 80.44 % de la
variaci
on total. Puede ser una buena eleccion y una solucion intermedia. Los nuevos
datos los obtenemos con la funcion predict.
a <- predict(golub.pca)
Podemos ver todas las componentes para el primer gen (primera fila).

46

a[1, ]
##
PC1
PC2
PC3
## -7.037558 -1.611153 -0.580508
##
PC10
PC11
PC12
## 0.863368 -0.199101 -0.661874
##
PC19
PC20
PC21
## 0.484427 -0.413978 0.861061
##
PC28
PC29
PC30
## -0.022861 -0.267373 0.223251
##
PC37
PC38
## 0.451057 0.873975

PC4
PC5
PC6
0.008742 0.538498 0.217864
PC13
PC14
PC15
0.098494 1.167026 -0.080884
PC22
PC23
PC24
0.412109 -0.169220 -0.042500
PC31
PC32
PC33
0.004499 -0.066890 -0.420015

PC7
PC8
PC9
0.095230 -0.918847 0.512902
PC16
PC17
PC18
0.019310 0.311826 -0.734193
PC25
PC26
PC27
0.392160 -0.810611 -0.724087
PC34
PC35
PC36
0.043023 0.325942 -0.095873

Y ahora nos quedamos con las primeras cinco columnas correspondientes con las
cinco primeras componentes principales como hemos decidido previamente.
a <- a[, 1:5]
Podemos representar, como es habitual, las dos primeras componentes.
plot(a[, 1], a[, 2], xlab = "Primera componente", ylab = "Segunda componente")

0
5

Segunda componente

10

15

20

Primera componente

Es interesante observar los valores del vector asociado a la primera componente.

47

golub.pca$rotation[, 1]
## [1] 0.1715 0.1691 0.1650 0.1727 0.1659 0.1669 0.1686 0.1602 0.1649 0.1688 0.1654 0.1694
## [13] 0.1629 0.1661 0.1648 0.1721 0.1559 0.1600 0.1677 0.1492 0.1273 0.1621 0.1644 0.1653
## [25] 0.1659 0.1690 0.1540 0.1689 0.1541 0.1517 0.1691 0.1682 0.1452 0.1675 0.1638 0.1509
## [37] 0.1476 0.1520
Podemos ver que son coeficientes muy parecidos, todos positivos. Basicamente
tenemos la media muestral de todos los niveles de expresion en las 38 muestras. La
primera componente es b
asicamente la media sobre las 38 muestras. Y la segunda
componente?
golub.pca$rotation[, 2]
## [1] 0.104190 -0.036887 0.069109 0.100701 0.170952 0.028349 0.032391 0.000506
## [9] 0.093594 0.023533 0.075376 -0.089381 0.233400 0.077939 0.237951 0.184072
## [17] 0.078197 0.041608 0.114629 0.247148 0.201580 -0.014148 0.037859 0.210586
## [25] -0.044465 0.122287 0.021439 -0.189279 -0.174593 -0.243776 -0.165316 -0.150156
## [33] -0.344035 -0.157688 -0.130649 -0.277921 -0.344829 -0.222766
Si observamos los coeficientes vemos que las primeros 27 valores son positivos y
los 11 u
ltimos son negativos. Ademas no hay una gran diferencia entre los 27 primeros y tampoco entre los 11 u
ltimos. Basicamente estamos comparando, para cada
gen, la media de los niveles de expresion sobre los datos ALL (leucemia linfoblastica
aguda) con la media sobre los datos AML (leucemia mieloide aguda).

3.4.

Un poco de teora

Cuando tomamos medidas sobre personas, objetos, empresas, unidades experimentales de un modo generico, se tiende a recoger el maximo de variables posible.
En consecuencia tenemos dimensiones del vector de caractersticas X grandes.
Una opci
on 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 razonable de la dispersi
on o variacion total cuantificada como la traza de la matriz de
covarianza muestral, tr(S),
Sea X un vector aleatorio de dimension d con vector de medias y matriz
de covarianzas . Sea T = (t1 , t2 , . . . , td ) (los ti indican la i-esima columna de la
matriz) la matriz ortogonal tal que
T 0 T = = diag(1 , . . . , d ),

(3.1)

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


Y = T 0 (X ).

(3.2)

Si denotamos la j-esima componente de Y como Yj entonces Yj = t0j (X ) con


j = 1, . . . , d. A la variable
Yj la llamamos la j-esima componente principal de
p
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 proyecci
on ortogonal de X en la direccion tj .
Proposici
on 1

1. Las variables Yj son incorreladas y var(Yj ) = j .


48

2. Las variables Zj son incorreladas y con varianza unitaria.


n.
Demostracio
En cuanto al apartado primero tenemos que
var(Y ) = var(T 0 (X ) = T 0 var(Y )T = T 0 T = .
El segundo apartado es directo a partir del primero.

Se verifica el siguiente resultado.
Teorema 2 Las componentes principales Yj = t0j (X ) con j = 1, . . . , d tienen
las siguientes propiedades:
1. Para cualquier vector a1 de longitud unitaria, var(a01 X) alcanza su valor m
aximo 1 cuando a1 = t1 .
2. Para cualquier vector aj de longitud unitaria tal que a0j ti = 0 para i =
1, . . . , j 1, se tiene que var(a0j X toma su valor m
aximo j cuando aj = tj .
Pd
Pd
3.
j=1 var(Yj ) =
j=1 var(Xj ) = traza().
La versi
on muestral de las componentes principales la obtenemos sustituyendo en
y
respectivamente. Es importante considerar el estimador
lo anterior y por X
de que estamos utilizando (o bien el estimador insesgado donde dividimos por
n 1 o bien el estimador en donde dividimos por n).
1 . . .
d los valores propios ordenados de
y la matriz
Si denotamos por

T = (t1 , . . . , td ) es la matriz tal que cada columna es el correspondiente vector propio


entonces tenemos las componentes principales muestrales dadas por yj = T0 (xi x
).
La nueva matriz de datos viene dada por
Y 0 = (y1 , . . . , yn ) = T0 (x1 x
, . . . , xn x
)

(3.3)

Finalmente, si las variables vienen dadas en unidades muy distintas puede ser
conveniente sustituir la matriz de covarianzas (poblacional o muestral) por la correspondiente matriz de correlaciones. De hecho, una de los inconvenientes de las
componentes principales como un modo de reducir la dimension de los datos es precisamente que obtenemos resultados distintos si utilizamos las componentes principales 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 principales. 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. Hemos
Pd con la matriz
Pd de covarianzas
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
, con k = 1, . . . , d,
Pd
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.
Una referencia muy interesante sobre componentes principales es Abdi and Williams [2010].
49

50

Captulo 4

An
alisis cluster
En este tema vamos a tratar lo que en la literatura estadstica recibe el nombre de
an
alisis cluster 1 o, en mejor castellano, an
alisis de conglomerados. En la literatura
de Inteligencia Artificial se utiliza la expresion clasificaci
on 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 ni
nos. Se agrupan los ni
nos formando grupos o
todos est
an 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? Cu
antos 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 n
umero de procedimientos
que se han propuesto en la literatura es muy grande. La mayor parte de ellos no tienen un modelo probabilstico debajo, no son procedimientos basados en modelo. Son
metodos que esencialmente utilizan el concepto de proximidad. Valoran de distintas
formas lo pr
oximos, 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 est
an los distintos puntos? En la seccion 4.2 nos ocupamos de
este punto. Tambien ser
a necesario, como veremos en el tema, valorar cuando dos
conjuntos de puntos son m
as o menos parecidos, proximos, similares. En la misma
secci
on 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 entrenamiento. C
omo valorarlo? Un concepto conocido por silueta y debido a Rousseeuw
[Kaufman and Rousseeuw, 1990] nos va a servir para ello. No es ni tan simple ni tan
satisfactorio como en an
alisis discriminante (como es de esperar si tenemos menos
informaci
on para trabajar). Lo estudiamos en la seccion 4.5.
Entre los muchos procedimientos de obtener los grupos a partir de los datos,
los m
as utilizados son dos tipos: procedimientos jerarquicos y metodos de particionamiento. De los jer
arquicos nos ocupamos en la seccion 4.3. 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

51

pues no existe la palabra) son metodos de particionamiento y los tratamos en la


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

4.1.

Algunos ejemplos

Empezamos viendo un conjunto de datos que nos sugieran el problema y como


tratarlo.

Nota de R 9 (Un ejemplo de datos a agrupar) Generamos tres muestras correspondientes 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 el paquete mvtnor ? para simular
las distintas normales bivariantes.

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

El siguiente dibujo muestra los datos generados.

limite.x <- c(-1, 8)


limite.y <- limite.x
plot(x1, xlim = limite.x, ylim = limite.y)
points(x2, pch = 2)
points(x3, pch = 3)
52

8
6
4
x1[,2]

x1[,1]

Se ve que hay tres grupos pero estos no estan muy claramente delimitados. Nosotros no disponemos de esta informaci
on. Conocemos los valores que componen los
vectores de datos pero no conocemos el grupo al que podra pertenecer cada uno de
ellos. Tampoco tenemos porque tener prefijado el n
umero de grupos. Los datos son
artificiales pero ilustran bien el problema.

Nota de R 10 (Un ejemplo artificial: los datos Ruspini) Son unos datos conocidos, los datos Ruspini. Est
an en el paquete cluster ?. Cargamos el paquete y los
datos.

library(cluster)
data(ruspini)

Representamos los puntos que pretendemos clasificar.

plot(ruspini)
53

150

100

50

20

40

60

80

100

120

Son datos bivariantes. Visualmente vemos c


omo se agrupan los puntos. Parece
claro que podemos distinguir cuatro grupos.
Nota de R 11 (Un ejemplo con los datos golub) Empezamos cargando los datos.
library(multtest)
data(golub)
Previamente hemos visto que los valores de expresi
on de los genes CCND3
Cyclin D3 y Zyxin permiten diferenciar entre ALL y AML. Localicemos las expresiones correspondientes a estos genes.
grep("CCND3 Cyclin D3", golub.gnames[, 2])
## [1] 1042
grep("Zyxin", golub.gnames[, 2])
## [1] 2124
Los datos aparecen en estas filas. Por lo tanto podemos construir la matriz de
datos correspondiente.

54

cz.data <- data.frame(golub[1042, ], golub[2124, ])


colnames(cz.data) <- c("CCND3 Cyclin D3", "Zyxin")
Este ser
a un segundo ejemplo para analizar. Veamos los datos.
plot(cz.data)

Zyxin

0.5

0.0

0.5

1.0

1.5

2.0

2.5

CCND3 Cyclin D3

En este caso las observaciones corresponden a las muestras y las variables son
los niveles de expresi
on de dos genes. Hay grupos? Esto no son datos artificiales
como los de Ruspini y ya no es tan claro.

4.2.
4.2.1.

Disimilaridades
Disimilaridades entre observaciones

Empezamos tratando el problema de cuantificar el grado de proximidad, de


similaridad entre dos puntos en el espacio de dimension d. Tradicionalmente este
tema en Matem
aticas se ha formalizado a traves del concepto de distancia o metrica.
Una metrica es una funci
on 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 formalizaci
on matem
atica de un concepto intuitivo ha de ser prudente
y pedir que se verifiquen ciertos axiomas que resulten razonables y generalmente
55

admisibles. En concreto la funcion d definida en el espacio producto Rd Rd se dice


que es una metrica si verifica:
No negativa d(x, y) 0.
Un punto dista 0 de s mismo d(x, x) = 0.
Simetra d(x, y) = d(y, x).
Desigualdad triangular d(x, z) d(x, y) + d(y, z), para todo x, y, z Rd .
Las distancias m
as utilizadas en analisis cluster son la distancia eucldea y la distancia de Manhattan. Para dos vectores x e y (en Rd ) entonces la distancia eucldea
se define como
v
u d
uX
(4.1)
d(x, y) = t (xk yk )2 ,
k=1
d

con x, y R . La distancia de Manhattan viene dada por


d(x, y) =

d
X

|xk yk |.

(4.2)

k=1

Las distancias eucldea y de Manhattan son adecuadas cuando trabajamos con


variables continuas y que ademas esten en una misma escala. 2 Notemos que cada
una de las componentes del vector pesan igualmente. Si tenemos variables que no
est
an igualmente escaladas estas distancias pueden pesar mas unas variables que
otras no por lo diferentes que sean entre los individuos sino simplemente por su
escala.
Con mucha frecuencia nos encontramos trabajando con variables que a
un siendo
continuas est
an 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 simultaneamente 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 categ
orica 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 caractersticas 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 caractersticas que tienen una mayor diferencia. Se han propuesto distintas medidas de
disimilaridad entre variables cualitativas (binarias simetricas o asimetricas, cualitativas, ordinales) y cuantitativas. En lo que sigue comentamos con alg
un detalle
la que lleva la funci
on daisy de la librera cluster ?. Es una opcion muy generica y
razonable.
Consideramos el problema cuando solo tenemos un tipo de variable. Finalmente
combinaremos todo en una sola medida de disimilaridad.
Supongamos descrita al individuo o caso mediante d variables binarias. Es natural construir la tabla de contingencia 22 que aparece en la tabla 4.1 donde las filas
corresponden con el individuo i y las columnas con el individuo j. Seg
un la tabla
2 La funci
on dist de ? es una buena opci
on para el c
alculo de estas y otras distancias. Tambi
en
lo es la funci
on daisy del paquete cluster ?.

56

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

1
A
C
A+C

0
B
D
B+D

A+B
C+D
d=A+B+C+D

los individuos i y j coincidiran en la presencia de A atributos y en la no presencia


de D atributos. Tenemos B atributos en i que no estan en j y C atributos que no
est
an en i pero s que est
an en j.
El total de variables binarias es de d = A + B + C + D. Basandonos en esta tabla
se pueden definir distintas medidas de disimilaridad. Vamos a considerar dos situaciones distintas. En la primera trabajamos con variables binarias simetricas y otra
para variables binarias no simetricas. Una variable binaria es simetrica cuando las
dos categoras que indica son intercambiables, cuando no tenemos una preferencia
especial en que resultado lo codificamos como 1 y que resultado codificamos como
0. Un ejemplo frecuente es el sexo de la persona. Si las variables son todas binarias simetricas es natural utilizar como disimilaridad el coeficiente de acoplamiento
simple definido como
d(i, j) =

A+D
B+C
=1
.
A+B+C +D
A+B+C +D

La interpretaci
on de esta medida de disimilaridad es simple. Dos individuos son
tanto m
as disimilares cuantas m
as 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 asimetricas.
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
m
as es com
un, est
an m
as pr
oximas, que dos personas que no lo tienen. Supongamos
que codificamos el atributo menos frecuente como 1 y el mas frecuente como 0.
Est
a claro que un acoplamiento 1-1 o acoplamiento positivo es mas significativo que
un acoplamiento negativo o acoplamiento 0-0 por lo que A, n
umero de acoplamientos
positivos, ha de tener m
as peso que d o n
umero de acoplamientos negativos. El mas
conocido es el coeficiente de Jaccard que se define como
d(i, j) =

B+C
A
=1
A+B+C
A+B+C

en el que simplemente no consideramos los acoplamientos negativos.


Consideremos ahora el caso de variables categoricas con mas de dos categoras.
Si todas las variables son de este tipo y tenemos un total de d variables entonces
los individuos i y j son tanto m
as disimilares cuanto mas variables categoricas son
distintas. Si denotamos por u el n
umero de variables en las que coinciden los dos
individuos entonces la medida de disimilaridad sera
d(i, j) =

du
.
d

Finalmente veamos c
omo 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
yik =

xik 1
Mk 1
57

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 com
un. En la medida en que el n
umero de categoras sea mayor esta transformacion tendra mas sentido.
Hemos visto c
omo tratar cada tipo de variable aisladamente. El problema es
combinar todas ellas en una sola medida de disimilaridad. La funcion daisy del
paquete cluster ? utiliza la siguiente medida:
Pd
(k) (k)
k=1 ij dij
,
(4.3)
d(i, j) = Pd
(k)
k=1 ij
donde:
(k)

ij vale uno cuando las medidas xik y xjk no son valores faltantes y cero en
otro caso;
(k)

ij vale 0 cuando la variable k es binaria asimetrica y tenemos entre los


individuos i y j un acoplamiento 0-0;
(k)

el valor dij es lo que contribuye a la disimilaridad entre i y j la variable k.


(k)

Si la variable k es binaria o categorica entonces dij es definida como


(k)

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


Si la variable k es numerica entonces
(k)

dij =

|xik xjk |
Rk

siendo Rk el rango de la variable k definido como


Rk = max xhk mn xhk
h

donde h vara entre todos los individuos con valor no faltante de la variable k.
Si todas las variables son categoricas entonces 4.3 nos da el n
umero de acoplamientos
del total de pares disponibles, en definitiva, el coeficiente de acoplamiento simple. Si
todas son variables binarias simetricas entonces obtenemos otra vez el coeficiente de
acoplamiento simple. Si las variables son binarias asimetricas entonces obtenemos
el coeficiente de Jaccard. Cuando todas las variables con las que trabajamos son
numericas la medida de disimilaridad es la distancia de Manhattan donde cada
variable est
a normalizada.
Dado un conjunto de datos xi con i = 1, . . . , n tendremos, utilizando algunas
de las medidas de disimilaridades comentadas, una matriz de dimension n n que
tiene en la posici
on (i, j) la disimilaridad entre xi y xj , d(i, j): [d(i, j)]i,j=1,...,n .
Con esta matriz cuantificamos la disimilaridad que hay entre los elementos originales de la muestra. Algunos de los procedimientos de agrupamiento que vamos
a considerar en lo que sigue no necesitan conocer los datos originales. Pueden aplicarse con solo conocer esta matriz de disimilaridades. Otros no. Otros utilizan los
datos a lo largo de las distintas etapas de aplicacion del procedimiento.

4.2.2.

Disimilaridades entre grupos de observaciones

En algunos procedimientos de agrupamiento (en particular, los jerarquicos) vamos a necesitar calcular disimilaridades entre conjuntos disjuntos de las observaciones originales. Estas disimilaridades las podemos calcular a partir de las disimilaridades originales punto a punto que hemos comentado en la seccion 4.2.1.
58

Supongamos que tenemos un banco de datos con n individuos cuyos ndices son
{1, . . . , n}. Sean A y B dos subconjuntos disjuntos del conjunto de ndices de la
muestra {1, . . . , n}, esto es, dos subconjuntos de observaciones disjuntos. Como
podemos definir una disimilaridad entre A y B partiendo de las disimilaridades
entre los datos individuales? Se han propuesto muchos procedimientos. Si denotamos la disimilaridad entre A y B como d(A, B) entonces las disimilaridades mas
habitualmente utilizadas son las siguientes:
Enlace simple La disimilaridad entre los dos grupos es el mnimo de las disimilaridades entre las observaciones de uno y de otro. Tomamos la disimilaridad
de los objetos que m
as se parecen en uno y otro grupo.
d(A, B) =

mn

aA,bB

d(a, b)

Enlace completo Ahora tomamos como disimilaridad entre los grupos como el
m
aximo de las disimilaridades, en definitiva, la disimilaridad entre los objetos
m
as alejados o m
as distintos.
d(A, B) =

max d(a, b)

aA,bB

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


posibles pares.
X
1
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 secci
on nos vamos a ocupar de los metodos jerarquicos en los
cuales es fundamental el procedimiento que elijamos para calcular distintas entre
grupos.

4.3.

Cluster jer
arquico

La idea de estos procedimientos es construir una jerarqua de particiones del


conjunto de ndices.
Sea {1, . . . , n} el conjunto de ndices que indexan las distintas observaciones.
Supongamos que {C1 , . . . , Cr } es una particion de este conjunto de ndices:
Ci {1, . . . , n}; son disjuntos dos a dos, Ci Cj = si i 6= j con i, j = 1, . . . , n
y
ri= Ci = {1, . . . , n}.
Dada una partici
on del conjunto de ndices podemos calcular la matriz r r que
en la posici
on (i, j) tiene la disimilaridad entre el conjunto Ci y Cj , d(Ci , Cj ) seg
un
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 m
as
pr
oximos seg
un la disimilaridad entre grupos que estemos utilizando. El proceso
contin
ua hasta que tengamos un u
nico grupo.
Un esquema algortmico del procedimiento indicado puede ser el siguiente:
59

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
dem
as conjuntos igual. Tenemos ahora Ci con i = 1, . . . , k.
Paso 3 Si tenemos un solo conjunto en la particion paramos el procedimiento.
Paso 4 Volvemos al paso 1.
Hay una representaci
on grafica muy utilizada para describir los resultados de
un cluster jer
arquico aglomerativo como el que acabamos de describir. Esta representaci
on 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 simult
aneamente que grupos se estan uniendo para esa disimilaridad. Tambien nos
permite una valoraci
on r
apida de cuantos grupos puede haber en el banco de datos.
Simplemente trazando una linea horizontal a la altura en que tengamos el n
umero
de grupos que pensamos que puede haber.

Nota de R 12 Veamos un ejemplo de an


alisis cluster. Los datos han sido obtenidos de esta p
agina. 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. Empezamos cargando el paquete cluster ? y
leyendo los datos.
library(cluster)
x <- read.table("../data/achieve.txt")
names(x) <- c("centro", "lec4", "aritme4", "lec6", "aritme6")
attach(x)
Eliminamos la primera columna en que aparece el nombre de la escuela.
y <- x[, -1]
Hacemos un an
alisis cluster jer
arquico utilizando la funci
on agnes del paquete
cluster.
y.ag <- agnes(y)
Veamos el dendograma.
plot(y.ag, which = 2)
60

1.5

23
11
17

6
24

12
19
5
21

16

1
14
20
15
22
18

0.0

3
7

0.5

25
10
13

1.0

Height

2.0

2.5

3.0

Dendrogram of agnes(x = y)

y
Agglomerative Coefficient = 0.84

Observando el dendograma parece razonable considerar tres grupos.

Nota de R 13 (Un ejemplo con votos republicanos) Veamos un an


alisis cluster jer
arquico. Los datos son los porcentajes de votas que recibi
o el candidato republicano en las elecciones americanas entre los a
nos 1856 y1976. Cada observaci
on
corresponde a un estado y las variables corresponden con las distintas elecciones.

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

El dendograma sera el siguiente

plot(agn1, which = 2)
61

20

Alabama
Georgia
Arkansas
Louisiana
Mississippi
South Carolina
Alaska
Vermont
Arizona
Montana
Nevada
Colorado
Idaho
Wyoming
Utah
California
Oregon
Washington
Minnesota
Connecticut
New York
New Jersey
Illinois
Ohio
Indiana
Michigan
Pennsylvania
New Hampshire
Wisconsin
Delaware
Kentucky
Maryland
Missouri
New Mexico
West Virginia
Iowa
South Dakota
North Dakota
Kansas
Nebraska
Maine
Massachusetts
Rhode Island
Florida
North Carolina
Tennessee
Virginia
Oklahoma
Hawaii
Texas

40

Height
60

80

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

votes.repub
Agglomerative Coefficient = 0.8

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


alculo de las disimilaridades entre grupos.

agn2 <- agnes(daisy(votes.repub), diss = TRUE, method = "complete")


plot(agn2, which = 2)

62

Alabama
Georgia
Louisiana
Arkansas
Florida
Texas
Mississippi
South Carolina
Alaska
Michigan
Connecticut
New York
New Hampshire
Indiana
Ohio
Illinois
New Jersey
Pennsylvania
Minnesota
North Dakota
Wisconsin
Iowa
South Dakota
Kansas
Nebraska
Arizona
Nevada
Montana
Oklahoma
Colorado
Idaho
Wyoming
Utah
California
Oregon
Washington
Missouri
New Mexico
West Virginia
Delaware
Kentucky
Maryland
North Carolina
Tennessee
Virginia
Hawaii
Maine
Massachusetts
Rhode Island
Vermont

100
0

50

Height

150

200

250

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

daisy(votes.repub)
Agglomerative Coefficient = 0.88

Nota de R 14 Consideremos los datos ruspini. Apliquemos un cluster jer


arquico
aglomerativo utilizando como disimilaridad entre grupos el promedio de las disimilaridades y como medida de disimilaridad la distancia eucldea.

ruspini.ag <- agnes(ruspini, metric = "euclidean", method = "average")

Representamos el dendograma.

plot(ruspini.ag, which = 2)
63

40
1
2
3 5
4
6
8 7
9
10
14
15
17
16
18
1911
12
13 20
61
62
66 63
64
6865
67
69
70
71
72
75
73
74
21
22
23
24
27
28
29
30
25
26
32
3531
36
39
40
33
34
37
38
41
42
43
44
45
49
5153
50
54
52
55
5657
59
60 58
46
47
48

20

Height

60

80

100

Dendrogram of agnes(x = ruspini, metric = "euclidean", method = "average")

ruspini
Agglomerative Coefficient = 0.95

Supongamos que decidimos quedarnos con cuatro grupos. Las clasificaciones de


los datos son las siguientes.

cutree(ruspini.ag, 4)

## [1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2
## [44] 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4

Y ahora podemos representar los datos de modo que ponemos en un mismo color
los datos que hemos clasificado en un grupo.

plot(ruspini, col = cutree(ruspini.ag, 4))


64

150

100

50

20

40

60

80

100

120

Un procedimiento jer
arquico aglomerativo tiene interes cuando el banco de datos
no tiene muchos individuos. En otro caso es muy difcil de interpretar un dendograma o de seleccionar el n
umero de grupos que hay. En todo caso lo hemos de ver
como un an
alisis exploratorio para decidir el n
umero de grupos y posteriormente
utilizar alg
un metodo de particionamiento como los que vamos a ver.

4.4.

M
etodos de particionamiento

Suponemos ahora que tenemos una idea de cuantos grupos hay. Posiblemente
hemos realizado un an
alisis jer
arquico previo con todos los datos o, si eran muchos,
con una selecci
on aleatoria de los datos. Tenemos pues una idea de cuantos grupos
tendremos que considerar. Obviamente podemos luego evaluar los resultados modificando el n
umero de grupos. En principio, vamos a suponer que fijamos el n
umero
de grupos a considerar. Suponemos pues que sabemos el n
umero de grupos y lo
denotamos por k.

4.4.1.

M
etodo de las k-medias

El primer procedimiento que vamos a ver es el metodo de las k-medias (que por
alguna extra
na raz
on 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
65

modo bastante natural de valorar la calidad de del agrupamiento que la particion


nos indica sera simplemente considerar la siguiente funcion.
k X
X

dE (xj , x
Ci )2 ,

(4.4)

i=1 jCi

donde dE denota aqu la distancia eucldea y

x
Ci =

1 X
xj ,
|Ci |

(4.5)

jCi

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

Nota de R 15 Aplicamos el k-medias.


ruspini.km <- kmeans(ruspini, 4)

Las clasificaciones son


ruspini.km$cluster
## 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
## 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 3 3 3 3 3 3 3 3 3 3
## 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 58 59 60
## 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3 3
## 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75
## 2 2 2 1 2 2 1 1 1 1 1 1 1 1 1

Y representamos los resultados.

66

plot(ruspini, col = ruspini.km$cluster)

150

100

50

20

40

60

80

100

120

Como vemos buenos resultados. Con ruspini todo va bien.

Nota de R 16 (cz.data) Empezamos con el k-medias.


cz.km <- kmeans(cz.data, 2)

Las clasificaciones son


cz.km$cluster
##

[1] 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 2

Y representamos los resultados.


plot(cz.data, col = cz.km$cluster)
67

Zyxin

0.5

0.0

0.5

1.0

1.5

CCND3 Cyclin D3

Supongamos que probamos con tres grupos.

cz.km <- kmeans(cz.data, 3)


plot(cz.data, col = cz.km$cluster)
68

2.0

2.5

Zyxin

0.5

0.0

0.5

1.0

1.5

CCND3 Cyclin D3

Y finalmente con cuatro.

cz.km <- kmeans(cz.data, 4)


plot(cz.data, col = cz.km$cluster)
69

2.0

2.5

Zyxin

0.5

0.0

0.5

1.0

1.5

2.0

2.5

CCND3 Cyclin D3

4.4.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? C
omo 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 (perd
on por el neologismo) de k-mediodes.
La idea ahora es sustituir esos centros calculados como vectores de medias de
los individuos de un mismo grupo por individuos bien centrados, por individuos
tpicos, que sustituyan a las medias.
Supongamos que tomamos k individuos de la muestra que denotamos por mi
con i = 1, . . . , k. Particionamos la muestra en k grupos de modo que el grupo Ci
est
a formado por los individuos mas proximos a mi que a cualquier otro mj con
j 6= i,
Ci = {l : d(l, i) = mn d(l, j)}.
j6=i

Consideremos la siguiente cantidad:


k X
X

d(j, mi ).

(4.6)

i=1 jCi

En el metodo de particionamiento alrededor de los mediodes nos planteamos encontrar las observaciones m1 , . . . , mk que minimizan el valor dado en 4.6.
70

Nota de R 17 (ruspini) Aplicamos PAM.


ruspini.pam <- pam(ruspini, 4)

Y representamos los resultados.


plot(ruspini, col = ruspini.pam$cluster)

150

100

50

20

40

60

80

Lo dicho, con ruspini todo va bien.

Nota de R 18 (cz.data) Empezamos con el k-medias.


cz.pam <- pam(cz.data, 2)

Y representamos los resultados.


plot(cz.data, col = cz.pam$cluster)
71

100

120

Zyxin

0.5

0.0

0.5

1.0

1.5

CCND3 Cyclin D3

Supongamos que probamos con tres grupos.

cz.pam <- pam(cz.data, 3)


plot(cz.data, col = cz.pam$cluster)
72

2.0

2.5

Zyxin

0.5

0.0

0.5

1.0

1.5

CCND3 Cyclin D3

Y finalmente con cuatro.

cz.pam <- pam(cz.data, 4)


plot(cz.data, col = cz.pam$cluster)
73

2.0

2.5

Zyxin

0.5

0.0

0.5

1.0

1.5

2.0

2.5

CCND3 Cyclin D3

4.5.

Silueta

Veamos c
omo se construye la silueta. Para la observacion i y el grupo C consideramos
X
C) = 1
d(i,
d(i, j),
|C|
jC

la disimilaridad media i con los elementos del grupo C. Para cada observacion i,
sea A el cluster al cual lo ha asignado el procedimiento cluster que empleamos
y calculamos a(i) la disimilaridad media de i con todos los demas individuos del
A). Obviamente estamos asumiendo que A contiene al menos
grupo A, a(i) = d(i,
C) para todos los grupos C 6= A y seleccionemos el
otro objeto. Consideremos d(i,
que tiene el mnimo valor:
C).
b(i) = mn d(i,
C6=A

74

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


SC
0,71 1,00
0,51 0,70
0,26 0,50
0,25

Interpretacion
Fuerte estructura
Estructura razonable
Estructura debil. Probar otros metodos
No se encuentra estructura

B) = b(i) se le llama vecino


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

a(i)
si a(i) < b(i),
b(i)
= 0 si a(i) = b(i),
b(i)
=
1 si a(i) > b(i).
a(i)
=

(4.7)
(4.8)
(4.9)

Esto se puede expresar en una u


nica ecuacion como
s(i) =

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

En el caso en que el grupo A contenga un u


nico 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 pr
oximo a uno significa que a(i) es mucho menor que b(i) o lo que es lo mismo,
que el objeto i est
a 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 pr
oximo a cero significa que a(i) y b(i) son similares y no tenemos
muy claro si clasificarlo en A o en B. Finalmente un valor de s(i) proximo a 1
significa que a(i) es claramente mayor que b(i). Su disimilaridad media con B es
menor que la que tiene con A. Estara mejor clasificado en B que en A. No esta bien
clasificado.
Los valores de s(i) aparecer
an representados para cada cluster en orden decreciente. Para cada objeto se representa una barra horizontal con longitud proporcional 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 an
alisis 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
clasificaci
on ser
a tanto mejor cuanto mayor sean estos valores medios. De hecho, se
puede decidir el n
umero de grupos en funcion del valor medio de las silueta sobre
toda la muestra. Vamos probando distintos n
umeros de grupos y nos quedamos con
el n
umero que nos da la silueta media maxima.
Cu
ando podemos decir que hay estructura de grupos en los datos que estamos
analizando? Experiencias con datos sugieren la tabla 4.2.
Nota de R 19 (ruspini) Veamos el resumen de la silueta.

3 No

parece un nombre inadecuado.

75

ruspini.pam <- pam(ruspini, 4)


summary(silhouette(ruspini.pam))
## Silhouette of 75 units in 4 clusters from pam(x = ruspini, k = 4) :
## Cluster sizes and average silhouette widths:
##
20
23
17
15
## 0.7262 0.7548 0.6691 0.8042
## Individual silhouette widths:
##
Min. 1st Qu. Median
Mean 3rd Qu.
Max.
##
0.420
0.714
0.764
0.738
0.798
0.855
Tambien podemos representarla gr
aficamente.
plot(silhouette(ruspini.pam))

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


4 clusters Cj
j : nj | aveiCj si

n = 75

1 : 20 | 0.73

2 : 23 | 0.75

3 : 17 | 0.67

4 : 15 | 0.80

0.0

0.2

0.4

0.6

0.8

1.0

Silhouette width si
Average silhouette width : 0.74

Nota de R 20 (cz.data) Para estos datos vamos a evaluar el procedimiento kmedias.


cz.km <- kmeans(cz.data, 4)
summary(silhouette(cz.km$cluster, dist(cz.data)))

## Silhouette of 38 units in 4 clusters from silhouette.default(x = cz.km$cluster, dist = dis


## Cluster sizes and average silhouette widths:
76

##
11
12
11
4
## 0.5254 0.4158 0.3751 0.5815
## Individual silhouette widths:
##
Min. 1st Qu. Median
Mean 3rd Qu.
## 0.0113 0.3480 0.5220 0.4530 0.6000

Max.
0.6700

plot(silhouette(cz.km$cluster, dist(cz.data)))

Silhouette plot of (x = cz.km$cluster, dist = dist(cz.data))


4 clusters Cj
j : nj | aveiCj si

n = 38
32
36
30
37
34
33
28
31
29
35
38
7
9
23
27
8
22
11
24
1
3
21
6
18
17
25
10
20
14
5
19
12
2
16
13
15
4
26

1 : 11 | 0.53

2 : 12 | 0.42

3 : 11 | 0.38

4 : 4 | 0.58

0.0

0.2

0.4

0.6

0.8

1.0

Silhouette width si
Average silhouette width : 0.45

4.6.

Un ejemplo completo

Nota de R 21 (Un an
alisis completo de ALL) En esta secci
on vamos a ver
un an
alisis cluster completo.
Lo tomamos de https://wiki.cgb.indiana.edu/display/r/4.+Bioconductor+Clustering+and+Visualization+Script.
Como siempre empezamos cargando los datos.
library("ALL")
data("ALL")
Veamos los tipos de biologa molecular y las frecuencias de cada tipo.

77

table(ALL$mol.biol)
##
## ALL1/AF4
##
10

BCR/ABL E2A/PBX1
37
5

NEG
74

NUP-98
1

p15/p16
1

En concreto vamos a quedarnos con dos tipos.


selSamples <- is.element(ALL$mol.biol, c("ALL1/AF4", "E2A/PBX1"))
Nos quedamos con las muestras (columnas) que corresponden a esa biologa molecular.
ALLs <- ALL[, selSamples]
No vamos a trabajar con todos los genes. En lugar de ello vamos a filtrar atendiendo a criterios basados en sus niveles de expresi
on. Quiz
as podramos decir que
filtramos de acuerdo con criterios estadsticos. Obviamente otro filtraje de genes
podra basarse en criterios biol
ogicos atendiendo a alg
un conocimiento previo sobre
los mismos.
En concreto los criterios estadsticos ser
an que el nivel medio de expresi
on sea
mayor que un cierto valor mnimo tanto en un tipo de biologa molecular como en
el otro. Podemos utilizar la funci
on apply para calcular las medias. Notemos que
la matriz que usamos son las expresiones de ALLs exprs(ALLs) y consideramos
las columnas donde se verifica ALLs$mol.bio == "ALL1/AF4", es decir, donde la
biologa molecular es la primera de las consideradas.
m1 <- apply(exprs(ALLs)[, ALLs$mol.bio == "ALL1/AF4"], 1, mean)
Ahora podemos considerar que filas son tales que esta media (calculada para cada
gen) es mayor que el valor log2 (100).
s1 <- (m1 > log2(100))
Cu
antos genes verifican este criterio?
table(s1)
## s1
## FALSE
## 9186

TRUE
3439

Vemos que hay 3439.


Hacemos lo mismo con el segundo tipo de biologa molecular.
m2 <- apply(exprs(ALLs)[, ALLs$mol.bio == "E2A/PBX1"], 1, mean)
s2 <- (m2 > log2(100))
Podemos ver la tabla de los genes que verifican y no la condici
on.
table(s2)
## s2
## FALSE
## 9118

TRUE
3507
78

Podemos ver la tabla de contingencia en donde mostramos el n


umero de genes
que verifican las dos condiciones, solamente una o bien ninguna.
table(s1, s2)
##
s2
## s1
FALSE TRUE
##
FALSE 8863 323
##
TRUE
255 3184
A partir de ahora nos quedamos con los genes que verifican los dos criterios.
Notemos que s1 es TRUE cuando se verifica la primera condici
on y s2 es TRUE
cuando se verifica la segunda. Mediante el signo | indicamos la intersecci
on, esto
es, ha de darse la primera y la segunda.
ALLs <- ALLs[s1 | s2, ]
Podemos ver el n
umero de filas y columnas de ALLs para comprobar que vamos
bien.
dim(ALLs)
## Features
##
3762

Samples
15

Y vamos bien.
Vamos a considerar tambien que los niveles de expresi
on sean suficientemente
variables. En concreto la condici
on ser
a que la desviaci
on absoluta respecto de la
mediana (o simplemente mad) supere un cierto valor. Primero hemos de calcular la
desviaci
on absoluta respecto de la mediana de cada fila.
gen.mad <- apply(exprs(ALLs), 1, mad)
En concreto nos quedamos con los genes que tienen un valor de la desviaci
on
absoluta respecto de la mediana superior a 1.4.
ALLs <- ALLs[gen.mad > 1.4, ]
Otra vez, veamos que datos tenemos.
dim(ALLs)
## Features
##
58

Samples
15

Pocos. No tenemos muchos ahora. Mejor. Menos problemas para clasificar.


Vemos un cluster jer
arquico aglomerativo de los genes.
genes.ag <- agnes(exprs(ALLs))
plot(genes.ag, which = 2)
79

10

1065_at
34583_at
40468_at
32184_at
41401_at
38037_at
41779_at
1118_at
31472_s_at
35127_at
38413_at
33358_at
36873_at
37558_at
37283_at
931_at
37809_at
36575_at
547_s_at
37251_s_at
34721_at
41470_at
1150_at
41577_at
37701_at
33274_f_at
41827_f_at
39929_at
38194_s_at
40117_at
38514_at
39318_at
1675_at
32111_at
40615_at
33219_at
36511_at
35995_at
32035_at
35961_at
40936_at
38604_at
266_s_at
36941_at
37225_at
40726_at
37493_at
40088_at
38052_at
33412_at
40365_at
40396_at
39182_at
AFFXBioDn5_at
40951_at
38585_at
38355_at

Height

31525_s_at

15

Dendrogram of agnes(x = exprs(ALLs))

exprs(ALLs)
Agglomerative Coefficient = 0.75

O un an
alisis jer
arquico de las muestras. Observemos que aplicamos la funci
on
agnes a la matriz transpuesta de las expresiones t(exprs(ALLs)).

muestras.ag <- agnes(t(exprs(ALLs)))


plot(muestras.ag, which = 2)

80

t(exprs(ALLs))
Agglomerative Coefficient = 0.51

81
LAL5

28003

24019

36001

31007

16004

08018

24005

15004

26008

04006

19005

12

63001

28032

28028

10

Height
14

16

18

20

Dendrogram of agnes(x = t(exprs(ALLs)))

82

Captulo 5

An
alisis discriminante o de
c
omo clasificar con muestra
de entrenamiento
Discriminar es clasificar. Es una palabra mal vista. Cuando una persona le dice a
otra: Usted me discrimina est
a indicando algo negativo en la medida en que piensa
que lo est
a 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 dise
nar 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 clasificaci
on que pretende hacer bien y clasificar
a cada animal en su especie con un esfuerzo peque
no.
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 infect
o y le caus
o la enfermedad. A este individuo se le controla a lo
largo de los a
nos. 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 t
orax) 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
83

utilizado en el contexto de la Informatica de clasificaci


on supervisada.
Nota de R 22 (Cristales en la orina) Tenemos pacientes de los cuales se conocen algunas variables obtenidas de un an
alisis de orina. En concreto las variables
nos dan la gravidez especfica (grav), la osmolaridad (osmo), la conductibilidad (conduc), la concentraci
on de urea (urea) y la concentraci
on 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 dise
nar un procedimiento de clasificaci
on 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 dise
no del procedimiento pretendemos utilizar la informaci
on que ya tenemos,
esto es, conocemos para una serie de individuos si tiene o no cristales y los vectores
de caractersticas asociados. En una observaci
on futura tendremos el vector de caractersticas pero no conoceremos la clasificaci
on. Leemos los datos de un fichero de
SPSS utilizando el paquete foreign ? y mostramos las seis primeras observaciones.
library(foreign)
x <- read.spss(file = "../data/cristal.sav", to.data.frame = T)
x[x == -1] <- NA
cc <- complete.cases(x)
x <- x[cc, ]
Veamos algunos datos.
head(x)
##
##
##
##
##
##
##

IND
2
3
4
5
6
7

2
3
4
5
6
7

ausencia
ausencia
ausencia
ausencia
ausencia
ausencia

de
de
de
de
de
de

GRUPO
cristales
cristales
cristales
cristales
cristales
cristales

GRAV
1.017
1.008
1.011
1.005
1.020
1.012

PH OSMO CONDUC UREA CALCIO


5.74 577
20.0 296
4.49
7.20 321
14.9 101
2.36
5.51 408
12.6 224
2.15
6.52 187
7.5
91
1.16
5.27 668
25.3 252
3.34
5.62 461
17.4 195
1.40

Incluimos un an
alisis descriptivo de los datos.
summary(x)
##
##
##
##
##
##
##
##
##
##
##
##
##
##

IND
Min.
: 2.0
1st Qu.:21.0
Median :40.0
Mean
:40.3
3rd Qu.:60.0
Max.
:79.0
CONDUC
Min.
: 5.1
1st Qu.:14.3
Median :21.4
Mean
:20.9
3rd Qu.:27.0
Max.
:38.0

GRUPO
ausencia de cristales :44
presencia de cristales:33

UREA
Min.
: 10
1st Qu.:159
Median :255
Mean
:262
3rd Qu.:362
Max.
:620

CALCIO
Min.
: 0.17
1st Qu.: 1.45
Median : 3.16
Mean
: 4.16
3rd Qu.: 6.19
Max.
:14.34

84

GRAV
Min.
:1.00
1st Qu.:1.01
Median :1.02
Mean
:1.02
3rd Qu.:1.02
Max.
:1.04

PH
Min.
:4.76
1st Qu.:5.53
Median :5.94
Mean
:6.04
3rd Qu.:6.40
Max.
:7.94

OSMO
Min.
: 187
1st Qu.: 410
Median : 594
Mean
: 614
3rd Qu.: 803
Max.
:1236

Nota de R 23 (Diabetes) Los datos corresponden a una serie de personas de


las cuales conocemos informaci
on que previsiblemente nos permitir
a predecir si son
diabeticos o no. Incluso dentro de los diabeticos pretendemos discriminar (distinguir) entre diabetes clnica y diabetes manifiesta. La variable tipo nos indica en
que grupo est
a la persona observada de los tres grupos indicados. El resto de variables nos describen al paciente: peso es el peso relativo, gpb es la glucosa plasm
atica
en ayunas, garea el
area bajo la curva de la glucosa, iarea el
area bajo la curva de
insulina y sspg la glucosa plasm
atica 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)
head(x)
##
##
##
##
##
##
##

IND
1
2
3
4
5
6

1
2
3
4
5
6

PESO GPB GAREA IAREA SSPG


TIPO LIAREA
0.81 80
356
124
55 control 4.820
0.95 97
289
117
76 control 4.762
0.94 105
319
143 105 control 4.963
1.04 90
356
199 108 control 5.293
1.00 90
323
240 143 control 5.481
0.76 86
381
157 165 control 5.056

Veamos un breve an
alisis descriptivo de los datos.
summary(x)
##
##
##
##
##
##
##
##
##
##
##
##
##
##

IND
Min.
: 1
1st Qu.: 37
Median : 73
Mean
: 73
3rd Qu.:109
Max.
:145

PESO
GPB
Min.
:0.710
Min.
: 70
1st Qu.:0.880
1st Qu.: 90
Median :0.980
Median : 97
Mean
:0.977
Mean
:122
3rd Qu.:1.080
3rd Qu.:112
Max.
:1.200
Max.
:353
TIPO
LIAREA
diabetes manifiesta:33
Min.
:2.30
diabetes quimica
:36
1st Qu.:4.77
control
:76
Median :5.05
Mean
:5.02
3rd Qu.:5.40
Max.
:6.62

GAREA
Min.
: 269
1st Qu.: 352
Median : 413
Mean
: 544
3rd Qu.: 558
Max.
:1568

IAREA
Min.
: 10
1st Qu.:118
Median :156
Mean
:186
3rd Qu.:221
Max.
:748

El captulo est
a organizado del siguiente modo. Empezamos (seccion 5.1) recordando el teorema de Bayes con un ejemplo muy simple de urnas (no funerarias).
De este modo vemos la idea b
asica del metodo de clasificacion basado en probabilidades a posteriori. Consideramos, en la seccion 5.2, el caso (de interes puramente
academico) de dos poblaciones normales univariantes con la misma varianza y con
los par
ametros conocidos 1 . En la seccion 5.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 5.4 nos planteamos la estimaci
on de los vectores de medias y las matrices de covarianzas y
vemos la implementaci
on pr
actica del metodo. El problema de la reduccion de la
dimensi
on dentro del problema de la clasificacion es considerado en la seccion 5.7
1 En

datos reales los par


ametros no son conocidos.

85

SSPG
Min.
: 29
1st Qu.:100
Median :159
Mean
:184
3rd Qu.:257
Max.
:480

5.1.

Un problema de probabilidad sencillo

Veamos un problema de probabilidad basico que nos servira para introducir el


procedimiento de clasificaci
on que vamos a utilizar. No le falta ning
un 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
aplicaci
on del teorema de Bayes (ver 1.2.3). 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
i )P (Bi )
. Finalmente podemos comprobar que P (B1 | A) =
P (Bi | A) = PkP (A|B
P (A|B )P (B )
j=1

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 informaci
on 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
m
as generico del problema. Supongamos que describimos el color de la bola elegida
mediante una variable dicot
omica o binaria. Consideramos la variable aleatoria X
que vale uno si es blanca la bola y cero en otro caso. Es lo que se llama una
variable indicatriz pues nos indica si se ha producido el suceso que nos interesa. 2
El comportamiento aleatorio de X, su distribucion de probabilidad, depende que
estemos extrayendo una bola de la primera o de la segunda urna. En concreto en la
primera urna X sigue una distribucion Bernoulli con probabilidad de exito p1 = 1/3
mientras que en la segunda urna tenemos una Bernoulli con probabilidad de exito
p2 = 2/3. Cada urna es una poblacion distinta donde el comportamiento aleatorio
de la misma cantidad es distinto. X en la i-esima poblacion tiene una funcion de
probabilidad
fi (x) = pxi (1 pi )1x con x = 0, 1.
Tenamos unas probabilidades a priori de que X estuviera siendo observada en la
poblaci
on 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)
2 Si A es el suceso de inter
es entonces X() = 1 si A y cero en otro caso. A veces se denota
como X() = 1A ().

86

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

5.2.

Dos poblaciones normales

Supongamos ahora que tenemos que decidir entre dos poblaciones basandonos
en un valor aleatorio continuo con distribucion normal. En concreto supondremos
que en la primera poblaci
on X es normal con media 1 y varianza 2 . En la segunda
poblaci
on X tiene distribuci
on normal con media 2 y varianza 2 . Graficamente en
la figura ?? aparece la situaci
on con la que nos encontramos. Supongamos conocidos
los valores de las media y la varianza com
un. Observamos un valor de la variable X =
x: cu
al 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


1
1
exp 2 (x i )2 ,
fi (x) = f (x | i , 2 ) =
2
2
aunque fi (x) no es la probabilidad del valor x asumiendo que estamos en la poblaci
on i. No obstante, fi (x)dx s que tiene este sentido. Hablando en un sentido
amplio tenemos una interpretaci
on similar. La observacion x la clasificaramos en
la poblaci
on 1 si
(1)f (x | 1 , 2 )
> 1,
(2)f (x | 2 , 2 )
F
acilmente comprobamos que esto equivale con que


1
1
(2)
(

)
x

(
+

)
> log
.
1
2
1
2
2
2
(1)

5.3.

Dos normales multivariantes

En la secci
on 5.2 nos plante
abamos la situacion de dos normales univariantes. En
las aplicaciones es m
as habitual el caso en que trabajamos con varias caractersticas
simult
aneamente. 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 covarianzas . Dada una observaci
on multivariante x, la clasificaremos en la poblacion
1 si
(1)f (x | 1 , )
> 1,
(2)f (x | 2 , )
pero,
f (x | 1 , )
=
f (x | 2 , )


1
1
exp (x 1 )0 1 (x 1 ) + (x 2 )0 1 (x 2 ) =
2
2


1
exp (1 2 )0 1 x (1 2 )0 1 (1 + 2 ) . (5.1)
2
Sea = 1 (1 2 ), entonces la observacion es asignada a la primera poblacion
si


1
(2)
0
D(x) = x (1 + 2 ) > log
.
(5.2)
2
(1)
87

(2)
Notemos que la ecuaci
on D(x) = log (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 )
=
f (x | 2 , 2 )
1
|2 | 1
1
0 1
log
(x 1 )0 1
1 (x 1 ) + (x 2 ) 2 (x 2 ) =
2
|1 | 2
2


|2 | 1 0 1
1
1
1
0
log
x (1 1
)x

2x
(

)
1
2 . (5.3)
2
1
2
2
|1 | 2

Q(x) = log

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


Q(x) > log
Notemos que ahora Q(x) = log
superficie no plana.

5.4.

(2)
(1)

(2)
.
(1)

no es un hiperplano sino que tenemos una

Dos poblaciones normales multivariantes con


par
ametros desconocidos

Lo visto en las secciones anteriores tena como objeto mostrar de un modo


suave la transici
on desde el resultado probabilstico basico, el teorema de Bayes, y
su aplicaci
on 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 c
omo 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 caractersticas 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
x
i =
, x
=
(5.4)
ni
n
donde n = n1 + n2 . Sea Si la matriz de varianzas o de dispersion de la poblacion i,
es decir,
Pni
i )(xij x
i )0
j=1 (xij x
.
(5.5)
Si =
ni 1
El vector i es estimado mediante
i = x
i . La matriz i la estimamos mediante
Si . En el caso particular en que asumamos que = 1 = 2 entonces la matriz de
covarianzas com
un la estimamos con
P2
(ni 1)Si
Sp = i=1
.
n2
C
omo clasificamos? Las distribuciones teoricas que suponamos conocidas son
reemplazadas por las distribuciones normales con los parametros estimados.
88

Si asumimos una matriz de covarianza com


un a ambas poblaciones entonces
asignamos x a la primera poblacion si
Ds (x) > log
donde

(2)
,
(1)

(5.6)

0 (x 1 (
Ds (x) =
x1 + x
2 )
2

(5.7)

= S1 (

x1 x
2 ).
p

(5.8)

y
La funci
on Ds recibe el nombre de funci
on discriminante lineal. La razon es obvia:
clasificamos en uno o en otro grupo utilizando una funcion lineal de las distintas
variables.
En el caso particular en que (1) = (2), esto es, consideramos a priori igualmente probables ambos grupos entonces la regla de clasificacion propuesta sera:
clasificamos en la poblaci
on o clase 1 si,
0x
0x
0 x > 1 (
1 +
2 ).

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

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

(5.9)

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


en el grupo que tiene una mayor probabilidad a posteriori.
En la situaci
on m
as 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 ecuaci
on 5.5. Las probabilidades a posteriori las estimamos como

(i|x) =

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

(5.10)

Nota de R 24 Vamos a trabajar con los datos de cristales en la orina. Esta nota
es un ejemplo de an
alisis discriminante lineal con dos grupos. Consideramos dos
casos. En el primero las probabilidades a priori de cada grupo se asumen iguales
entre s y, por lo tanto, iguales a 0,5. En el segundo caso, las 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)
Definimos el valor -1 como dato faltante.
x[x == -1] <- NA
Eliminamos del estudio todos los casos en los que hay alg
un dato faltante.
cc <- complete.cases(x)
attach(x[cc, ])
Suponemos matrices de covarianzas iguales y probabilidades a priori iguales.

89

library(MASS)
z <- lda(GRUPO ~ CALCIO + CONDUC + GRAV + OSMO + PH + UREA, prior = c(1, 1)/2)
Veamos c
omo recuperar los distintos elementos del an
alisis.
attributes(z)
## $names
## [1] "prior"
## [9] "terms"
##
## $class
## [1] "lda"

"counts" "means"
"xlevels"

"scaling" "lev"

"svd"

"N"

"call"

Las probabilidades a priori vienen dadas por


z$prior
##
##

ausencia de cristales presencia de cristales


0.5
0.5
El n
umero de datos por grupo es

z$counts
##
##

ausencia de cristales presencia de cristales


44
33
El vector de medias estimado en cada grupo lo obtenemos con

z$means
##
CALCIO CONDUC GRAV OSMO
PH UREA
## ausencia de cristales
2.629 20.55 1.015 561.7 6.126 232.4
## presencia de cristales 6.202 21.38 1.022 682.9 5.927 302.4
Vamos a obtener las probabilidades a posteriori. Observar la opci
on CV=TRUE.

z <- lda(GRUPO ~ CALCIO + CONDUC + GRAV + OSMO + PH + UREA, prior = c(1, 1)/2, CV = TRUE)
attributes(z)
## $names
## [1] "class"

"posterior" "terms"

"call"

Obtengamos las probabilidades a posteriori.


head(z$posterior)
##
##
##
##
##
##
##

1
2
3
4
5
6

ausencia de cristales presencia de cristales


0.6411
0.35893
0.8700
0.12997
0.8484
0.15162
0.9053
0.09466
0.5762
0.42381
0.8968
0.10321
90

"xlevels"

y las clasificaciones para cada los distintos casos.


head(z$class)
## [1] ausencia de cristales ausencia de cristales ausencia de cristales
## [4] ausencia de cristales ausencia de cristales ausencia de cristales
## Levels: ausencia de cristales presencia de cristales
Las probabilidades a priori corresponden con proporciones observadas.
z1 <- lda(GRUPO ~ CALCIO + CONDUC + GRAV + OSMO + PH + UREA, CV = TRUE)
Las probabilidades a posteriori son ahora
head(z1$posterior)
##
##
##
##
##
##
##

1
2
3
4
5
6

5.5.

ausencia de cristales presencia de cristales


0.7043
0.29573
0.8992
0.10075
0.8818
0.11820
0.9273
0.07272
0.6445
0.35553
0.9205
0.07946

An
alisis discriminante con m
as de dos poblaciones normales

Supongamos que tenemos unas probabilidades


Pga priori (i) de que el caso pertenezca al grupo i con i = 1, . . . , g (obviamente i=1 (i) = 1). Si x son las caractersticas 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 )0 1
i (x i )}.
2

(5.11)

Utilizando el teorema de Bayes tenemos que las probabilidades a posteriori vienen


dadas por
(i)f (x | i , i )
(i | x) = Pg
.
(5.12)
j=1 (j)f (x | j , j )
Un metodo de clasificaci
on 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 caractersticas 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
x
i =
, x
=
(5.13)
ni
n
91

donde n =
decir,

Pg

i=1

ni . Sea Si la matriz de varianzas o de dispersion de la clase i, es


Pni
Si =

j=1 (xij

x
i )(xij x
i )0
ni 1

(5.14)

El vector i es estimado mediante


i = x
i . En cuanto a la estimacion de las matrices
i se utilizan dos estimadores. En el caso en que asumamos que todas son iguales
= Sp donde
entonces el estimador de = 1 = . . . = g es
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 5.5 no es aplicable pues
no conocemos los par
ametros. Veamos como queda el procedimiento en las dos
situaciones posibles: asumiendo igualdad de las matrices de covarianzas y asumiendo
que son distintas.
Bajo la hip
otesis de matriz de covarianza com
un tendremos que
1
i )0 S1
i ).
log[(i)f (x|
xi , Sp )] = log (i) + c (x x
p (x x
2
Le quitamos a log[(i)f (x|
xi , Sp )] la parte que no depende de i dada por c 21 x0 S1
p x
y obtenemos la funci
on
1
i ).
Li (x) = log (i) + x
0i S1
p (x x
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 an
alisis discriminante
lineal.
En el caso en que no se asume una matriz de varianzas com
un entonces
la regla de clasificaci
on consiste en clasificar donde es maxima la siguiente funcion
Qi (x) = 2 log (i) log |Si | (x x
i )0 Si1 (x x
i ).

(5.15)

Notemos que el u
ltimo termino no es mas que la distancia de Mahalanobis de x al
centro estimado de la clase, x
i . La diferencia entre las funciones Qi para dos clases
distintas es una funci
on cuadr
atica y por ello el metodo recibe el nombre de an
alisis
discriminante cuadr
atico.

5.6.

Valoraci
on del procedimiento de clasificaci
on

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 pr
actica 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
92

de clasificaci
on. 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 clasificaci
on la siguiente cantidad,
I=

n
X
yi ,y
i

i=1

(5.16)

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


uso habitual en la literatura de reconocimiento de patrones. Es, sin duda, un modo
razonable de valorar la calidad del procedimiento de clasificacion. Se queda pobre.
Al menos parece insuficiente. C
omo nos equivocamos cuando clasificamos? La siguiente opci
on habitual es utilizar la tabla de clasificaci
on en donde cruzamos los
valores (yi , yi ). En esta tabla tendremos en la fila (r, c) el n
umero de casos que originalmente son de la clase r y los hemos clasificado en el grupo c. Valorando la tabla
de clasificaci
on 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 clasificaci
on hemos de tener en cuenta sobre que casos estamos realizando esta
valoraci
on. Si un mismo caso lo utilizamos para construir el procedimiento de valoraci
on y lo volvemos a utilizar para clasificarlo estamos sesgando la valoracion del
procedimiento a favor del mismo. Un procedimiento de clasificacion siempre ira mejor con los casos que utilizamos para construirlo y peor sobre otros casos. Hemos
de intentar corregirlo.
Una primera idea es dejar uno fuera cada vez. Para cada j consideramos toda
la muestra menos xj . Utilizando el resto de la muestra estimamos los vectores de
medias y las matrices de covarianzas y, finalmente, las probabilidades a posteriori
del individuo j en cada clase. Lo clasificamos del modo habitual. Repetimos el
procedimiento para cada j y construimos la tabla correspondiente. En ingles es la
tecnica conocida como leaving one out. Realmente el metodo de clasificacion que
valoramos en cada ocasi
on no es exactamente el mismo pero no es muy diferente. En
cada ocasi
on 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 opci
on; mejor en su validez peor en sus necesidades. Si tenemos una
muestra de tama
no n elegimos una muestra sin reemplazamiento de tama
no 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 estimaci
on del error basada en un metodo de aleatorizaci
on. Si elegimos
las sucesivas muestras con reemplazamiento tendramos un metodo bootstrap.
Nota de R 25 (Los datos iris de Fisher) Consideremos los datos iris tratados
originalmente por Fisher. Vemos c
omo 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 estimaci
on de los par
ametros. Se utilizan los datos iris
de Fisher.
library(MASS)
data(iris3)
Iris <- data.frame(rbind(iris3[, , 1], iris3[, , 2], iris3[, , 3]), Sp = rep(c("s", "c", "v"),
rep(50, 3)))
Tomamos una muestra y con esta muestra estimamos los vectores de medias y
la matriz de covarianzas.

93

train <- sample(1:150, 75)


table(Iris$Sp[train])
z <- lda(Sp ~ ., Iris, prior = c(1, 1, 1)/3, subset = train)
Con los estimadores podemos ahora clasificar los dem
as datos de la muestra.
predict(z, Iris[-train, ])$class

## [1] s s s s s s s s s s s s s s s s s s s s s s s s s s c c c c c c c c c c c c c c c v c
## [44] c c c c c c v v v v v v v v v v v v v v v v v v c v v v v v v v
## Levels: c s v
Nota de R 26 Seguimos con los datos de la orina. Notemos que consideramos
probabilidades a priori correspondientes a las proporciones en la muestra. Nos limitamos a construir la tabla de clasificaci
on. Suponemos matrices de covarianzas
iguales y probabilidades a priori dadas por las proporciones de cada clase en la
muestra.
library(foreign)
x <- read.spss(file = "../data/cristal.sav", to.data.frame = T)
x[x == -1] <- NA
cc <- complete.cases(x)
x <- x[cc, ]
attach(x)
Realizamos un an
alisis discriminante lineal.
z1 <- lda(GRUPO ~ CALCIO + CONDUC + GRAV + OSMO + PH + UREA, CV = TRUE)
Construimos la tabla de clasificaciones.
table(GRUPO, z1$class)
##
## GRUPO
ausencia de cristales presencia de cristales
##
ausencia de cristales
42
2
##
presencia de cristales
14
19
Nota de R 27 (Correo basura) Consideramos unos datos de correo electr
onico. El objetivo del an
alisis es decidir si el correo es basura o no bas
andonos en
informaci
on de dicho correo. Estos datos se pueden encontrar en D.J. Newman and
Merz [1998]. Los datos los podemos encontrar en http: // mlearn. ics. uci. edu/
databases/ spambase/ y en particular la descripci
on de estos datos la tenemos en
http: // mlearn. ics. uci. edu/ databases/ spambase/ spambase. DOCUMENTATION .
Realizamos un an
alisis discriminante linear y un an
alisis cuadr
atico. Vemos que
el lineal nos proporciona mejores resultados.
library(MASS)
x <- read.table(file = "../data/spambase_data", sep = ",")
attach(x)
xnam <- paste("V", 1:57, sep = "")
(fmla <- as.formula(paste("y ~ ", paste(xnam, collapse = "+"))))
y <- x[, 58]
94

Realizamos el an
alisis discriminante lineal.
z <- lda(fmla, data = x, prior = c(1, 1)/2, CV = T)
La tabla de clasificaci
on es la siguiente.
table(V58, z$class)
##
## V58
0
1
##
0 2625 163
##
1 265 1548
Realizamos el an
alisis discriminante cuadr
atico y obtenemos la nueva tabla de
clasificaci
on.
z <- qda(fmla, data = x, prior = c(1, 1)/2, CV = T)
table(V58, z$class)
##
## V58
0
1
##
0 2086 695
##
1
86 1723
Vamos a realizar una valoraci
on de los resultados de clasificaci
on con el an
alisis
discriminante lineal utilizando remuestreo. Elegimos la muestra de entrenamiento
como una selecci
on aleatoria de los datos.
entrenamiento <- sample(nrow(x), 2000)
Vemos la distribuci
on del correo en la muestra de entrenamiento.
table(y[entrenamiento])
##
##
0
## 1207

1
793

Realizamos el an
alisis discriminante lineal.
z <- lda(fmla, data = x, prior = c(1, 1)/2, subset = entrenamiento)
Vemos la tabla de clasificaci
on sobre los datos de entrenamiento.
table(predict(z, x[entrenamiento, ])$class, y[entrenamiento])
##
##
##
##

0
0 1149
1
58

1
108
685

Vemos la tabla de clasificaci


on sobre el resto de los datos.

95

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


##
##
##
##

0
0 1486
1
95

1
162
858

Repetimos en muestras con reemplazamiento.


entrenamiento <- sample(nrow(x), 2000, replace = T)
table(y[entrenamiento])
##
##
0
## 1220

1
780

z <- lda(fmla, data = x, prior = c(1, 1)/2, subset = entrenamiento)


Vemos la tabla de clasificaci
on sobre los datos de entrenamiento.
table(predict(z, x[entrenamiento, ])$class, y[entrenamiento])
##
##
##
##

0
0 1155
1
65

1
112
668

Vemos la tabla de clasificaci


on sobre el resto de los datos.
table(predict(z, x[-entrenamiento, ])$class, y[-entrenamiento])
##
##
##
##

5.7.

0
0 1687
1 101

1
190
978

Variables discriminantes can


onicas o discriminantes lineales

Vamos a estudiar una tecnica de reduccion de la dimension relacionada con el


planteamiento que del an
alisis discriminante lineal hizo Fisher. Consideramos las
matrices W y B definidas como
g X
g
ni
X
X
0
W =
(xij xi )(xij x
i ) =
(ni 1)Si ,
i=1 j=1

(5.17)

i=1

y
B=

g X
g
ni
X
X
(
xi x
)(
xi x
)0 =
ni (
xi x
)(
xi x
)0
i=1 j=1

(5.18)

i=1

Notemos que
Sp =

W
ng

96

(5.19)

Estas matrices reciben el nombre de matrices intra grupos y entre grupos respectivamente. Son las versiones matriciales de las sumas de cuadrados intra y entre
grupos habituales en an
alisis de la varianza.
Es claro que cuando m
as 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 = c0 xij . Las sumas de cuadrados intra
y entre vendran dadas por c0 W c y c0 Bc. El cociente Fc = c0 Bc/c0 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 definida positiva y consideramos su descomposicion de Cholesky dada por W = T 0 T .
Tomamos b = T c. Se tiene
Fc =

b0 (T 0 )1 BT 1 b
b0 Ab
c0 Bc
=
= 0 = a0 Aa,
0
0
c Wc
bb
bb

(5.20)

donde a = b/ k b k, esto es, a tiene modulo unitario y A = (T 0 )1 BT 1 . Se nos


plantea el problema de maximizar a0 Aa con la restriccion de k a0 a k= 1. Por resultados est
andar del
algebra lineal se tiene que a1 es el vector propio de A con el
mayor propio 1 verificando que 1 = a01 Aai . Hemos encontrado una combinacion
lineal que, en el sentido que hemos indicado, es optima a la hora de separar los
grupos. Parece l
ogico buscar la siguiente combinacion lineal que verifique el mismo criterio de optimalidad pero que el vector correspondiente sea ortogonal al ya
calculado. Nos planteamos pues maximizar a0 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 segundo valor propio por orden de magnitud, 2 (Aa2 = 2 a2 por
lo que 2 = a02 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 n
umero de grupos menos uno, g 1 y el n
umero de datos
n, k = mn g 1, n. Notemos que los sucesivos ar constituyen una base ortonormal
tales que
(T 0 )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 resima 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
(5.21)
Pk
i=1 i
como funci
on de j y quedarse con las coordenadas discriminantes hasta un j proximo
a uno.
Es muy importante darse cuenta que las coordenadas discriminantes estan tipificadas y son independientes entre ellas. Recordemos que W = T 0 T y que la matriz
de covarianzas agrupada viene dada por Sp = W/(g 1). Por tanto tendremos que
c0r Sp cs = (n g)1 c0r T 0 T cs = a0r as = rs ,
97

(5.22)

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


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

Nota de R 28 (Variables discriminantes can


onicas) Repetimos el an
alisis discriminante tanto para los datos de cristales en la orina como para los datos de la
diabetes.
En la siguietne figura vemos un histograma de la primera variable discriminante
can
onica en el primer y segundo grupo.

0.0

0.4

0.8

plot(z)

0.0

0.4

0.8

group ausencia de cristales

group presencia de cristales

Para los datos de las diabetes podemos tendremos dos variables discriminantes
can
onicas. Mostramos dos posibles representaciones gr
aficas.

plot(z)
98

diabetes manifiesta
diabetes manifiesta
diabetes manifiesta
diabetes manifiesta

diabetes manifiesta
diabetes manifiesta

control
control

diabetes manifiesta

control
control
control
control
diabetes
control
control
control
diabetesmanifiesta
manifiesta
control
control
control
control
control
control
control
control
control
diabetes manifiesta
manifiesta
controlcontrol
diabetes manifiestadiabetes
control
control
control
diabetes
manifiesta
control
control
control
control
control
control
control
control
control
control
control
control
control
control
control
control
control
control
diabetes manifiesta
control
diabetes
quimica
control
control
control
control
diabetes
manifiesta
diabetes
quimica
diabetes manifiesta
control
diabetes
manifiesta
control
control
control
control
control
control
control
diabetes
quimica
control
control
diabetes
manifiesta
diabetes
manifiesta
control
control
diabetes manifiesta
control
control
diabetes
quimicaquimicacontrol
control
control
control
diabetes
diabetes
manifiesta
diabetes
manifiesta
control
diabetes
quimica
control
diabetes
quimica
diabetes
quimica
control
controlcontrol
control
diabetesquimica
quimica
diabetes
diabetes
control
diabetesmanifiesta
manifiesta
diabetes
quimica
diabetes
quimica
diabetes manifiesta
diabetes manifiesta
diabetes
quimica
diabetes
quimica
diabetes
quimica
diabetes
quimica
diabetes
quimica
diabetes
quimica
diabetes
quimica
diabetes manifiesta
control
control
diabetes
quimica
diabetes
quimica
diabetes
quimica
diabetes
quimica
diabetes
quimica
diabetes
quimica
diabetes
manifiesta
diabetes quimica
manifiesta
diabetes manifiesta diabetes
diabetes
quimica
diabetes quimica

LD2

diabetes
manifiesta
diabetes
manifiesta
diabetes manifiesta

diabetes quimica

control

diabetes
quimica
diabetes
quimica
diabetes
quimica
diabetes quimica
diabetes quimica
diabetes quimica

diabetes quimica

0
LD1

pairs(z)
99

2
4

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
control
control
control
control
control
control
control
control
diabetes
quimica
control
control
control
diabetes
quimica
control
diabetes
quimica
diabetes
quimica
control
diabetes
quimica
diabetes
quimica
control
diabetes
quimica
diabetes
quimica manifiesta
control
diabetes
diabetes
quimica
diabetes
quimica
diabetes
quimica
diabetes
quimica
diabetes
quimica
diabetes
quimica
diabetes
quimica
diabetes
quimica
diabetes
quimica
diabetes
quimica
diabetes
quimica
diabetes
quimica
diabetes
quimica
diabetes
quimica
diabetes
quimica
diabetes
quimica
diabetes
quimica
diabetes
manifiesta
diabetes
quimica
diabetes
manifiesta
diabetes
quimica
diabetes
quimica
diabetes
quimica
diabetes
quimica
diabetes
quimica
diabetes
quimica
diabetes
quimica
diabetes
manifiesta
diabetes
quimica
diabetes
manifiesta
diabetes
quimica
diabetes quimica
manifiesta
diabetesdiabetes
manifiesta
diabetes manifiesta
diabetes manifiesta
diabetes
manifiesta
diabetes
manifiesta
diabetes
manifiesta
diabetes
manifiesta
diabetes
manifiesta
diabetes
manifiesta
diabetes
manifiesta
diabetes
manifiesta
diabetes
manifiesta
manifiesta
diabetes diabetes
manifiesta
diabetes manifiesta
diabetes manifiesta
diabetes manifiesta
manifiesta
diabetesdiabetes
manifiesta
diabetes manifiesta
diabetes manifiesta
diabetes manifiesta
diabetes manifiesta
diabetes manifiesta
diabetes manifiesta
diabetes manifiesta
diabetes manifiesta

diabetes
manifiesta
diabetes
manifiesta
diabetes manifiesta
diabetes manifiesta
diabetes manifiesta
diabetes manifiesta
control
control
diabetes manifiesta
diabetes
manifiesta
control
diabetes manifiesta
control
control
control
control
diabetes
control
control
diabetesmanifiesta
manifiesta
control
diabetes manifiesta
control
control
control
control
control
control
control
diabetes manifiesta
diabetes
manifiesta
control
control
diabetes manifiesta
control
control
diabetes
manifiesta
control
control
control
control
control
control
control
control
control
control
control
control
control
control
control
control
control
control
diabetes
manifiesta
control
diabetes
quimica
control
control
control
control
diabetes
manifiesta
diabetes
quimica
diabetes
manifiesta
control
diabetes
manifiesta
control
control
control
control
control
control
control
diabetes
quimica
control
control
diabetes
diabetesmanifiesta
manifiesta
control
control
diabetes manifiesta
control
control
control
diabetes
quimica
control
control
diabetes
quimica
diabetes
manifiesta
diabetes
manifiesta
control
diabetes
quimica
diabetes
quimica
control
diabetes
quimica
control
control
control
control
diabetes
quimica
diabetes
manifiesta
diabetes
quimica
control
diabetes
manifiesta
diabetes
quimica
diabetes
quimica
diabetes
manifiesta
diabetes
manifiesta
diabetes
quimica
diabetes
quimica
diabetes
quimica
diabetes
quimica
quimica
diabetes
quimica
diabetes
quimica
diabetes manifiesta diabetes
control
control
diabetes
quimica
diabetes
quimica
diabetes
quimica
diabetes
quimica
diabetes
quimica
diabetes
quimica
diabetes
manifiesta
diabetes
quimica
diabetes
manifiesta
diabetes
manifiesta
diabetes
diabetes
quimica quimica

LD1

diabetes quimicacontrol
diabetes
quimica
diabetes
quimica
diabetes
quimica
diabetes quimica

diabetes
quimica
diabetes
quimica
diabetes quimica

5.8.

LD2

Algunos ejemplos

Nota de R 29 En la secci
on ?? tenemos una descripci
on de los mismos. Realizamos un an
alisis discriminante en donde a partir de las caractersticas morfol
ogicas
pretendemos saber si es una abeja reina o bien es una obrera.
library(MASS)
x <- read.table(file = "../data/wasp.dat", header = T)
attach(x)
Aplicamos un an
alisis discriminante lineal y mostramos los histogramas de la
variable discriminante can
onica.
z <- lda(caste ~ TL + WL + HH + HW + TH + TW + G1L + G2Wa, prior = c(1, 1)/2)

plot(z)
100

0.4
0.2
0.0

0.0

0.2

0.4

group Q

0
group W

Los histogramas muestran que los valores de la variable discriminante son claramente distintos en cada grupo. La tabla de clasificaci
on es la siguiente.
z <- lda(caste ~ TL + WL + HH + HW + TH + TW + G1L + G2Wa, prior = c(1, 1)/2, CV = TRUE)
table(caste, z$class)
##
## caste Q W
##
Q 49 1
##
W 1 49
Mostrando que los resultados de la clasificaci
on son realmente buenos.
Nota de R 30 (Datos wbca) En la secci
on ?? tenemos la descripci
on de los datos. B
asicamente tenemos personas enfermas de c
ancer y no enfermos y pretendemos clasificar en estos dos posibles grupos. Pretendemos clasificar a la paciente
como enferma o no de c
ancer utilizando el resto de las variables.
library(faraway)
library(MASS)
attach(wbca)
Realizamos para ello un an
alisis discriminante lineal y, como tenemos solamente
dos grupos, mostramos los histogramas de la variable discriminante can
onica en
cada uno de los grupos.
101

wbca.lda <- lda(Class ~ Adhes + BNucl + Chrom + Epith + Mitos + NNucl + Thick + UShap + USize
CV = T)
table(Class, wbca.lda$class)
##
## Class
0
1
##
0 219 19
##
1
7 436
Tenemos una muestra bastante grande. Elegimos una muestra de entrenamiento
para estimar las probabilidades a posteriori. Para ellos elegimos al azar 400 mujeres
de la muestra inicial. Mostramos la tabla de clasificaci
on.

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


wbca.lda0 <- lda(Class ~ Adhes + BNucl + Chrom + Epith + Mitos + NNucl + Thick + UShap + USiz
subset = train, CV = T)
table(wbca.lda0$class[train], Class[train])
##
##
##
##

0 1
0 36 53
1 65 91

102

Captulo 6

Regresi
on
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 llamaremos variables predictoras. Tambien se utilizan las denominaciones de variable
dependiente para la variable respuesta y variables independientes en lugar en predictoras.
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 31 (notaR100) El primer conjunto de datos fueron publicados por


Fisher[Fisher, 1947]. El fichero contiene tres variables correspondientes al peso del
coraz
on, 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 coraz


on frente al peso del cuerpo para las
hembras.

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


103

13
12

11

10

Hwt[Sex == "F"]

2.0

2.2

2.4

2.6

Bwt[Sex == "F"]

Repetimos el dibujo para los machos.

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


104

2.8

3.0

18

20

14

10

12

Hwt[Sex == "M"]

16

2.0

2.5

3.0

3.5

Bwt[Sex == "M"]

Nuestro problema es intentar predecir el peso del coraz


on a partir del peso del
cuerpo. Adem
as parece razonable plantearse si esta relaci
on es similar para machos
y hembras.

Nota de R 32 Tenemos velocidades y tiempos de parada de una serie de vehculos.

require(stats)

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

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


105

120

100

Stopping distance (ft)

80

60

40

20

10

15

20

25

Speed (mph)

La pregunta es si podemos predecir de alg


un modo el tiempo de parada a partir
de la velocidad del vehculo.
En este tema utilizamos de un modo importante el paquete faraway [?].

6.1.

Regresi
on lineal simple

En todos los ejemplos antes comentados el problema com


un es determinar el valor de Y a partir del valor de X. Obviamente la respuesta mas simple sera buscar
una funci
on que podemos denotar por f de modo que para un valor dado x simplemente calculamos y = f (x). Un poco de imaginacion y conocimiento de la posible
relaci
on entre x e y podran darnos una idea de que funcion f buscar. Este planteamiento es de base muy restrictivo. Por que? Pues en primer lugar porque estamos
asumiendo que, para un valor de x, existe un u
nico valor de y asociado. Y esto
nunca (o casi) es as. Un detalle, a veces X es una variable aleatoria que observamos simult
aneamente con Y , en otras ocasiones es un valor que nosotros prefijamos
(dosis de medicaci
on, tratamiento en un problema de dise
no de experimentos). Sin
embargo, desde el punto de vista de la regresion X siempre lo consideramos fijo y
estudiamos c
omo 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 estatura 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
106

los hijos de un mismo padre miden lo mismo. No tiene ning


un sentido asumir una
relaci
on 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 modeliza es la relaci
on 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 centmetros). Hemos de admitir que adem
as 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 distribuci
on 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 ).

(6.1)

En el modelo de regresi
on m
as 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.

(6.2)

Las hip
otesis asumidas en 6.1 y 6.2, podemos expresarlas conjuntamente diciendo
que la variable respuesta Y se puede expresar como
Y = 0 + 1 x + ,

(6.3)

 N (0, 2 ).

(6.4)

donde
En la formulaci
on de 6.3 expresamos el valor aleatorio de Y como suma de una
parte que sistem
aticamente 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 distribuci
on. 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 multivariante tenemos que estas hip
otesis las podemos expresar conjuntamente diciendo
que
Y Nn (X, 2 Inn ),
(6.5)
donde

Y1

Y = ...
Yn

1
..
X = .
1

x1
..
.
xn

Si consideramos que

1
..
=.
n
107

 

= 0
1

donde los i N (0, 2 ) e independientes entre si. Entonces el modelo dado en 6.5
lo podemos reescribir como
Y = X + ,
(6.6)
con  Nn (0, 2 Inn ).
Este modelo probabilstico es conocido como el modelo de regresi
on lineal
simple. No lo estudiaremos en mas detalle porque nos vamos a ocupar de la situaci
on m
as 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 regresi
on lineal m
ultiple.

6.2.

Regresi
on lineal m
ultiple

Pretendemos determinar la relacion que liga a una variable respuesta Y como


funci
on de p 1 variables predictoras, x1 , . . . , xp1 . Siguiendo el razonamiento anterior podemos plantearnos un modelo muy general como el que sigue.
Y = f (x1 , . . . , xn ) + ,

(6.7)

donde f es una funci


on desconocida y  es el termino del error. Vamos a asumir
una situaci
on m
as simple. En concreto que la funcion f es lineal de modo que la
relaci
on sera Y = 0 + 1 x1 + . . . + p1 xp1 . Realmente observamos n vectores
(yi , xi1 , . . . , xi,p1 ) en consecuencia nuestro modelo estocastico ha de considerar el
modelo para los n valores aleatorios Yi , donde cada Yi tiene asociado un vector xi .
Vamos a suponer que para una combinacion de valores (xi1 , . . . , xi,p1 ) vamos a
observar un valor aleatorio Yi con distribucion normal cuya media es 0 + 1 xi1 +
. . .+p1 xi,p1 y cuya varianza va a ser constante e igual a 2 . Ademas los distintos
Yi son independientes entre si.
Vamos a formular conjuntamente estas hipotesis. Denotaremos



0
1 x11 . . . x1,p1
1
Y1
1

..

..
.
.
.
..
..
Y = . X = .
= ..  = ..
.
1 xn1 . . . xn,p1
n
Yn
p1
El modelo estoc
astico b
asico es el que sigue
Y = X + .

(6.8)

En este modelo a X le llamaremos la parte sistematica mientras que  es la componente aleatoria del modelo. Estamos expresando los datos como la suma de una
parte sistem
atica m
as una parte aleatoria. La parte sistematica es la media del vector Y . Notemos que la dimension del espacio en que estamos trabajando es n, el
n
umero de observaciones. El vector de medias o parte sistematica del modelo tiene
dimensi
on p por lo que la parte no explicada, el residuo, tiene dimension n p.

6.3.

Estimaci
on de

C
omo 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 pr
oximo a y. En concreto vamos a minimizar
n
X

2i = 0  = (y X)0 (y X).

i=1

108

(6.9)

Residuo

Espacio
engendrado
por X
Valor ajustado
Figura 6.1: Expresamos la observacion y como suma ortogonal de una parte sistem
atica m
as un residuo.
Si desarrollamos la expresi
on anterior tendremos que
(y X)0 (y X) = y 0 y 2 0 X 0 y + + 0 X 0 X.
Diferenciando respecto de los distintos j e igualando a cero nos da el siguiente
sistema de ecuaciones normales:
X 0 X = X 0 y.

(6.10)

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


= (X 0 X)1 X 0 y,

(6.11)

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

(6.12)

y en consecuencia se sigue que

La matriz H = X(X 0 X)1 X 0 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 .

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

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

n
X
(yi yi )2 ,

(6.15)

i=1

y sera, como funci


on de la matriz H,
0  = y 0 (I H)(I H)y = y 0 (I H)y.
109

(6.16)

Veamos una interpretaci


on geometrica que nos ayude a entender que son los estimadores mnimo cuadr
aticos que utilizamos. Estamos minimizando (y X)0 (y X).
Si vemos la figura 6.1 el valor de que nos da el mnimo coincide con el punto que
nos da la proyecci
on ortogonal de y sobre el plano que viene engendrado por las
columnas de la matriz X. De este modo es claro que
0 (y X )
+ (
(y y1n )0 (y y1n ) = (y X )
y y1n )0 (
y y1n ).
(6.17)
o de otro modo la ecuaci
on anterior la podemos expresar como
n
X

(yi y)2 =

i=1

n
X

(yi yi )2 +

i=1

n
X

(yi y)2 .

(6.18)

i=1

Las sumas de cuadrados que acabamos de considerar reciben la siguiente denominaci


on:
Suma de cuadrados total
SS(T otal) = (y y1n )0 (y y1n ) =

n
X

(yi y)2 .

(6.19)

(yi yi )2 .

(6.20)

i=1

Suma de cuadrados del error


0 (y X )
=
SS(Error) = (y X )

n
X
i=1

Suma de cuadrados de la regresi


on
SS(Regresion) = (
y y1n )0 (
y y1n ) =

n
X

(yi y)2 .

(6.21)

i=1

6.4.

Algunos casos particulares

Supongamos en primer lugar la situacion en que no tenemos ning


un predictor.
Esto es, nuestro modelo es Y = + . En este caso se tiene que la matriz de dise
no
X = 1n = (1, . . . , 1)0 , X 0 X = n y, finalmente, = (X 0 X)1 X 0 y = n1 10n y = y.
El segundo ejemplo que podemos considerar sera con una sola variable predictora 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
dise
no sera

1
..
X = .
1

x1 x

..
.
xn x

con


n P
0
XX=
n
0
)2
i=1 (xi x
0

Finalmente se comprueba sin dificultad que


Pn
(xi x
)yi
= Pi=1
n
(x

x
)2
i=1 i
110

(6.22)

6.5.

Verosimilitud

Dados los datos (xi , yi ) con i = 1, . . . , n la verosimilitud de y = (y1 , . . . , yn )0


vendra dada por
1
1
exp{ 2 (y X)0 (y X)}
n
2
(2) 2 n

(6.23)

n
1
log(2) n log 2 (y X)0 (y X).
2
2

(6.24)

L(, ) =
y la logverosimilitud sera
l(, ) =

El estimador m
aximo 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)0 (y X), en definitiva, que los estimadores maximo
verosmiles no son m
as que los estimadores mnimo cuadraticos.

6.6.

Algunos ejemplos

Nota de R 33 (Un ejemplo de regresi


on lineal simple) En este banco de datos (Orange) tenemos la variable predictora que nos da la edad del
arbol y como
variable respuesta la circunferencia del
arbol.
Obtenemos el ajuste de regresi
on lineal simple con la funci
on lm. La salida b
asica
que produce nos muestra los estimadores mnimo cuadr
aticos de los coeficientes .
Vemos tambien c
omo obtener las predicciones y los residuos observados. Finalmente
mostramos los residuos frente a las predicciones de los valores. En principio, bajo
la hip
otesis de que el error tiene varianza constante no debieramos de observar
residuos mayores cuando las predicciones son mayores. En este caso parece que es
esto lo que observamos. Leemos los datos.
data(Orange)
attach(Orange)
Representamos en abscisas la edad y en ordenadas el n
umero de anillos. Ajustamos el modelo de regresi
on lineal simple y a
nadimos la recta de regresi
on a los
datos.
plot(age, circumference)
lm(circumference ~ age, data = Orange)
##
##
##
##
##
##
##

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

age
0.107

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


111

200

100

circumference

150

50

500

1000

1500

age

Vamos a explorar la informaci


on que podemos obtener del ajuste.
orange.lm <- lm(circumference ~ age, data = Orange)
attributes(orange.lm)
##
##
##
##
##
##
##

$names
[1] "coefficients"
[6] "assign"
[11] "terms"

"residuals"
"qr"
"model"

"effects"
"df.residual"

"rank"
"xlevels"

"fitted.values"
"call"

$class
[1] "lm"
Los valores ajustados o predicciones los obtenemos con

orange.lm$fitted.values
##
1
2
3
4
5
6
7
8
9
10
11
12
## 30.00 69.08 88.30 124.60 148.83 163.89 186.31 30.00 69.08 88.30 124.60 148.83
##
13
14
15
16
17
18
19
20
21
22
23
24
## 163.89 186.31 30.00 69.08 88.30 124.60 148.83 163.89 186.31 30.00 69.08 88.30
##
25
26
27
28
29
30
31
32
33
34
35
## 124.60 148.83 163.89 186.31 30.00 69.08 88.30 124.60 148.83 163.89 186.31
Y los residuos observados se obtiene con
112

orange.lm$residuals
##
1
2
3
4
5
6
7
8
##
0.001451 -11.076488 -1.295146 -9.597057 -28.833920 -21.888536 -41.310304
3.001451
##
9
10
11
12
13
14
15
16
## -0.076488 22.704854 31.402943 23.166080 39.111464 16.689696
0.001451 -18.076488
##
17
18
19
20
21
22
23
24
## -13.295146 -16.597057 -33.833920 -24.888536 -46.310304
2.001451 -7.076488 23.704854
##
25
26
27
28
29
30
31
32
## 42.402943 30.166080 45.111464 27.689696
0.001451 -20.076488 -7.295146
0.402943
##
33
34
35
## -6.833920 10.111464 -9.310304

Nota de R 34 (Precio de la vivienda) Vamos a trabajar con un banco de datos


relativo a precios de la vivienda. Es un fichero que viene con el paquete SPSS.
Tenemos las siguientes variables:
VALTERR Valor de tasaci
on del terreno.
VALMEJOR Valor de tasaci
on de las mejoras.
VALTOT Valor de tasaci
on total.
PRECIO Precio de venta.
TASA Raz
on del precio de venta sobre el valor de tasaci
on 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 tasaci
on del terreno y de las mejoras. Notemos que el valor
total no es m
as que la suma de la tasaci
on del terreno m
as el valor de las mejoras. Comenzamos leyendo los datos. Notemos que por estar en formato de SPSS
utilizamos el paquete foreign ?.
library(foreign)
x <- read.spss(file = "../data/venta_casas.sav", to.data.frame = T)
attach(x)
Nos planteamos predecir el precio de la vivienda utilizando como variables predictoras el precio de terreno y el valor de las mejoras.
(casas.lm <- lm(precio ~ valterr + valmejor))
##
##
##
##
##
##
##

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

valterr
3.192

valmejor
0.478

113

6.7.

Distribuci
on muestral de

Hemos visto que = (X 0 X)1 X 0 Y . Aplicando propiedades simples de la media


tenemos que
E = (X 0 X)1 X 0 (EY ) = ,
(6.25)
o, lo que es lo mismo, que es un estimador insesgado de , el estimador tiene
por vector de medias el vector de parametros que estima. Es una buena propiedad.
La matriz de covarianzas del error se obtiene facilmente como
= (X 0 X)1 X 0 ( 2 I)X(X 0 X)1 = (X 0 X)1 2 .
var()

(6.26)

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


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

2 =

0 
.
np

(6.28)

Este estimador sera


Ya podemos estimar var().
= (X 0 X)1
vd
ar()
2.

(6.29)

Si (X 0 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 cuadr
atico medio. Finalmente el error estandar de i , es decir,
su desviaci
on tpica (raz cuadrada de su varianza) sera
d i ) = aii
SE(
.

(6.30)

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


Nn (X, 2 Inn ) entonces, por propiedades basicas de la distribucion normal multivariante (ver apartado 1.4) se tiene que
Np (, (X 0 X)1 2 ).

(6.31)

Nota de R 35 Una vez realizado el ajuste con la funci


on summary podemos observar los valores estimados de (etiquetado como Residual standard error y los
errores est
andar de i .
Veamos el resumen b
asico del ajuste de regresi
on donde la respuesta es el precio
de la vivienda y los predictores son el valor del terreno y el valor de las mejoras.
summary(casas.lm)
##
##
##
##
##
##
##
##
##

Call:
lm(formula = precio ~ valterr + valmejor)
Residuals:
Min
1Q
-153634 -10451

Median
-576

3Q
8690

Coefficients:
114

Max
356418

##
##
##
##
##
##
##
##
##
##

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


(Intercept) 7.67e+02
1.29e+03
0.59
0.55
valterr
3.19e+00
5.34e-02
59.78
<2e-16 ***
valmejor
4.78e-01
2.55e-02
18.73
<2e-16 ***
--Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 28100 on 2437 degrees of freedom
Multiple R-squared: 0.676,Adjusted R-squared: 0.675
F-statistic: 2.54e+03 on 2 and 2437 DF, p-value: <2e-16

6.8.

Bondad de ajuste

Hemos supuesto una relaci


on lineal entre la media de la variable respuesta y las
variables predictoras. Asumiendo la relacion hemos considerado una funcion objetivo y minimizando dicha funci
on 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 observados 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 determinaci
on que se denota por R2 y se define como
Pn
(yi yi )2
SS(Error)
P
.
=1
R = 1 ni=1
2
SS(T otal)
(y

)
i
i=1 i
2

(6.32)

Pn
Es habitual denominar a Pi=1 (yi yi )2 , suma de cuadrados del error mientras
n
yi y)2 se le llama suma de cuadrados de la
que a SS(Regresion) = i=1 (
regresi
on. Tenemos pues que
Pn
(
yi y)2
SS(Regresion)
R2 = Pni=1
.
=
2
SS(T otal)
(y

)
i
i=1 i

(6.33)

El ajuste que estamos realizando se supone que sera tanto mejor cuanto mas peque
na 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. Notemos 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
variaci
on residual despues de utilizar las variables predictoras. Es de esperar que
un mejor ajuste vaya acompa
nado de un valor de SS(Error) peque
no en relacion
con SS(T otal). Esa es la idea del coeficiente de determinacion. Toma valores entre
0 y 1 y cuanto m
as cerca de 1 mejor es el ajuste.
Tiene un peque
no inconveniente y es que no tiene en cuenta el n
umero de variables predictoras que estamos utilizando para predecir la variable respuesta. Una
peque
na modificaci
on de R2 para incorporar esta informacion es el coeficiente de
determinaci
on ajustado que podemos denotar R2 -ajustado y se define como
Pn
(yi yi )2 /(n p)
,
R2 ajustado = 1 Pi=1
n
)2 /(n 1)
i=1 (yi y
donde suponemos que tenemos p 1 variables predictoras.
115

(6.34)

6.9.

Valoraci
on de las hip
otesis del modelo

Un modelo de regresi
on lineal m
ultiple supone, como hemos visto, varias hipotesis. Es necesario valorar lo razonables, lo asumibles que son estas hipotesis. Las
hip
otesis 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 0 X)1 X 0 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 proyecci
on sobre el espacio engendrado por las columnas de X y X
est
a 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 ,
(6.35)
ya que var() = 2 Inn . Vemos pues que, aunque asumimos que los errores  son
incorrelados y con la misma varianza, esto no es cierto para los residuos .
Homogeneidad de la varianza
La mera observaci
on de los residuos sin considerar su posible asociacion con
otra variable no nos proporciona informacion sobre si la varianza de los mismos
es constante. Hemos de considerarlos en relacion con otras variables. Es habitual
considerar un diagrama de puntos de los residuos  como funcion de las predicciones
y. Cuando 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 36 Los datos que vamos a utilizar para valorar las hip
otesis del modelo
son los datos savings contenido en la librera faraway (?). Se pretende estudiar la
relaci
on que liga la fracci
on de ahorro con la proporci
on de poblaci
on menor de
15 a
nos, mayor de 75 y las variables dpi y ddpi. El siguiente diagrama de puntos
muestra en abscisas las predicciones y en ordenadas los residuos. No parece en
principio que no podamos asumir una varianza constante. Vemos tambien que nos
indica los tres pases con los residuos m
as extremos: Chile, Filipinas y Zambia.
library(faraway)
data(savings)
attach(savings)
Hacemos el ajuste lineal.

116

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


Notemos que elegimos el primer dibujo.
plot(savings.lm, which = 1)

10

Residuals vs Fitted

Zambia

Philippines

Residuals

10

Chile

10

12

14

16

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

Cuando no tenemos una varianza constante una opcion es transformar las variables. 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 representaci
on cabe esperar cuando la varianza no es constante?
Veamos distintas representaciones de los residuos frente a los valores ajustados
correspondiendo a varianza constante, varianzas no constantes y situaciones en que
no hay linealidad.
Nota de R 37 (Hip
otesis del modelo de regresi
on) Ilustramos c
omo observaramos residuos cuya varianza es constante. En la siguiente figura tenemos 50
posibles residuos en donde la varianza es constante.
par(mfrow = c(2, 2))
for (i in 1:4) plot(1:50, rnorm(50))
117

20

30

40

10

rnorm(50)

rnorm(50)

50

10

20

40

50

1:50

1:50

30

10

50

1:50

40

30

20

rnorm(50)

1
0

rnorm(50)

10

20

30

40

50

1:50

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


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

par(mfrow = c(2, 2))


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

10

20

30

40

50

50

100

10

20

30

40

50

30

40

20 40 60

50

60

20 0

(1:50) * rnorm(50)

50
0
50

100

(1:50) * rnorm(50)

20

10

1:50

1:50

100

50

(1:50) * rnorm(50)

20
20

60

(1:50) * rnorm(50)

100

60

10

20

1:50

30

40

50

1:50

En la siguiente figura los valores por los que multiplicamos son 1, 2, 3, . . . , 50


por lo que las varianzas se incrementan muy menos de una abscisa a la siguiente.

par(mfrow = c(2, 2))


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

10

20

10 15 20

30

40

10

20

20

10

20

50

30

40

10

50

1:50

15

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

40

15
10
5
0

30
1:50

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

50

1:50

15

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

10

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

10

10

20

30

40

50

1:50

Finalmente en la siguiente figura mostramos un ejemplo de un residuo no lineal.


Es un caso en que no podemos suponer que la media es una funci
on lineal de los
predictores.

par(mfrow = c(2, 2))


for (i in 1:4) plot(1:50, cos((1:50) * pi/25) + rnorm(50))
par(mfrow = c(1, 1))
120

10

20

30

40

10

20

10

20

30

40

50

40

50

3
2
1

1
0
1

1:50

30

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

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

1:50

1:50

50

1
0

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

4
3
2

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

10

20

30

40

50

1:50

Normalidad
La siguiente hip
otesis a valorar es la normalidad de los errores. La herramienta
gr
afica m
as habitual es el dibujo q-q o la representacion cuantil-cuantil. Ordenamos
i
) para
los residuos y representamos los residuos ordenados en funcion de 1 ( n+1
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 38 (Dibujos cuantil-cuantil) Para los datos savings representamos


un dibujo q-q. En la figura que sigue mostramos c
omo hacerlo despues de ajustar el
modelo y utilizando la funci
on plot (realmente estamos utilizando plot.lm).

plot(savings.lm, which = 2)
121

Normal QQ

Zambia

Philippines

Standardized residuals

Chile

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

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

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


qqline(residuals(savings.lm))
122

10

Normal QQ Plot

Residuos

Theoretical Quantiles

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

Nota de R 39 (Dibujos cuantil-cuantil y error no normal) Veamos c


omo se
modifican los dibujos q-q con otras distribuciones de probabilidad. En esta nota
consideramos cuatro distribuciones de probabilidad. En la siguiente aparecen las
densidades de los modelos considerados. La primera es la correspondiente a la distribuci
on normal. Luego tenemos la lognormal, la densidad de una Cauchy y la
densidad uniforme. La lognormal se toma como ejemplo de distribuci
on asimetrica,
la Cauchy como ejemplo de una distribuci
on con las colas m
as largas que la normal
y finalmente la uniforme como ejemplo de distribuci
on con las colas m
as cortas.

par(mfrow = c(2, 2))


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

0.6

0.4
0.0

0.4
0.0

0.2

dlnorm(x)

0.3
0.2
0.1

dnorm(x)

0.6
0.0

0.05

0.2

0.4

dunif(x)

0.15

dcauchy(x)

0.25

0.8

1.0

0
x

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

par(mfrow = c(2, 2))


for (i in 1:4) {
residuos <- rnorm(50)
qqnorm(residuos)
qqline(residuos)
}
124

1
0
1

Theoretical Quantiles

Theoretical Quantiles

Normal QQ Plot

Normal QQ Plot

1
2

Theoretical Quantiles

Sample Quantiles

2
0

Sample Quantiles

Sample Quantiles

Sample Quantiles

Normal QQ Plot
2

Normal QQ Plot

Theoretical Quantiles

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

par(mfrow = c(2, 2))


for (i in 1:4) {
residuos <- exp(rnorm(50))
qqnorm(residuos)
qqline(residuos)
}
125

Normal QQ Plot

Normal QQ Plot

Sample Quantiles

2
0
2

2
0

20

Normal QQ Plot

25

Normal QQ Plot

15
2

Theoretical Quantiles

10
5
0

Theoretical Quantiles

Sample Quantiles

5
4
2

Sample Quantiles

Sample Quantiles

10

Theoretical Quantiles

Theoretical Quantiles

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

par(mfrow = c(2, 2))


for (i in 1:4) {
residuos <- rcauchy(50)
qqnorm(residuos)
qqline(residuos)
}
126

Normal QQ Plot

Normal QQ Plot

40

30
20

Theoretical Quantiles

Theoretical Quantiles

Normal QQ Plot

Normal QQ Plot

0
20

10 5

Sample Quantiles

10 20 30 40

20

0
10

Sample Quantiles

10

Sample Quantiles

20
40
60

Sample Quantiles

Theoretical Quantiles

Theoretical Quantiles

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

par(mfrow = c(2, 2))


for (i in 1:4) {
residuos <- runif(50)
qqnorm(residuos)
qqline(residuos)
}
127

1.0
0.8

0.8

0.6
0.0

Theoretical Quantiles

0.4

Sample Quantiles

0.8

1.0

Normal QQ Plot

1.0

Normal QQ Plot

0.6
0.4

Theoretical Quantiles

Theoretical Quantiles

0.6
0.0

0.2

0.4

Sample Quantiles

0.8
0.4

0.6

0.2
0.0

0.2

Sample Quantiles

Normal QQ Plot

0.2
0.0

Sample Quantiles

1.0

Normal QQ Plot

Theoretical Quantiles

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


f
acil diferenciar entre una distribucion con colas mas largas de una situacion en donde tenemos observaciones an
omalas. Como hacerlo? Si quitamos las observaciones
extremas y aparecen otras estamos en una distribucion con colas largas.
Si tenemos muestras grandes el problema de la no normalidad se alivia. El problema 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
opci
on que viene implementada con la funcion shapiro.test es el test de ShapiroWilk.
Nota de R 40 (Residuos y test de normalidad de Shapiro-Wilks) Aplicamos
un test de Shapiro-Wilks a los residuos observados en el ajuste de los datos savings.
Vemos que el p-valor observado es muy grande y no podemos rechazar la normalidad
de los residuos.
residuals(savings.lm)
##
##
##

Australia
0.8636
Chile

Austria
0.6164
China

Belgium
2.2190
Colombia
128

Bolivia
-0.6983
Costa Rica

Brazil
3.5528
Denmark

Canada
-0.3169
Ecuador

##
-8.2422
##
Finland
##
-1.6811
##
Iceland
##
-6.2106
##
Luxembourg
##
-1.6708
##
Panama
##
-3.2942
## South Rhodesia
##
1.2914
## United Kingdom
##
-2.6924
##
Libya
##
-2.8295

2.5360
France
2.4755
India
0.5087
Malta
2.9749
Paraguay
-6.1258
Spain
-0.6712
United States
-1.1116
Malaysia
-2.9709

-1.4517
Germany
-0.1807
Ireland
3.3911
Norway
-0.8718
Peru
6.5394
Sweden
-4.2603
Venezuela
3.6325

5.1251
Greece
-3.1162
Italy
1.9268
Netherlands
0.4255
Philippines
6.6750
Switzerland
2.4868
Zambia
9.7509

5.4002
Guatamala
-3.3553
Japan
5.2815
New Zealand
2.2856
Portugal
-0.7684
Turkey
-2.6657
Jamaica
-3.0185

shapiro.test(residuals(savings.lm))
##
## Shapiro-Wilk normality test
##
## data: residuals(savings.lm)
## W = 0.987, p-value = 0.8524

Incorrelaci
on de los errores
Estamos asumiendo que los errores son incorrelados. La correlacion entre
los datos pueden venir de que han sido observados proximos bien en el tiempo bien
en el espacio. C
omo contrastar si los residuos son incorrelados?
Un test de la hip
otesis de incorrelacion es el test de Durbin-Watson que utiliza
el siguiente estadstico
Pn
(
i i1 )2
,
(6.36)
DW = i=2Pn 2
i
i=1 
bajo la hip
otesis nula de incorrelacion la distribucion es una combinacion lineal de
distintas distribuciones 2 .
Nota de R 41 Vamos a aplicar el test de Durbin-Watson de correlaci
on serial.
library(lmtest)
Aplicamos el test de Durbin-Watson.
dwtest(savings.lm)
##
## Durbin-Watson test
##
## data: savings.lm
## DW = 1.934, p-value = 0.3897
## alternative hypothesis: true autocorrelation is greater than 0

129

-2.4056
Honduras
0.7100
Korea
-6.1070
Nicaragua
0.6464
South Africa
0.4832
Tunisia
-2.8179
Uruguay
-2.2638

Observaciones an
omalas y observaciones influyentes

Algunas observaciones no ajustan bien al modelo y son llamadas observaciones


an
omalas. Otras observaciones influyen mucho en el ajuste y lo modifican de un
modo substantivo. Estas u
ltimas reciben el nombre de observaciones influyentes.
Una observaci
on dada puede ser o bien anomala o bien influyente o ambas cosas.
Empecemos estudiando que se entiende por influencia de una observacion. Llamaremos 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 influencia alta supone una varianza del correspondiente
residuo baja. Forzamos al
Pp
ajuste a que este pr
oximo a yi . Se tiene que i=1 hi = p. En consecuencia el valor
medio de los hi es p/n. Como una regla simple de aplicar si la influencia hi es mayor
que 2p/n debemos de observar el dato con atencion. Buscamos valores grandes de
las influencias.

Nota de R 42 Calculamos las influencias para los datos savings. En la siguiente


figura aparece una representaci
on de las influencias respecto de los residuos estandarizados. Calculamos las influencias.

savings.inf <- influence(savings.lm)


savings.inf$hat
##
Australia
##
0.06771
##
Chile
##
0.03730
##
Finland
##
0.09204
##
Iceland
##
0.07050
##
Luxembourg
##
0.08635
##
Panama
##
0.03897
## South Rhodesia
##
0.16081
## United Kingdom
##
0.11651
##
Libya
##
0.53146

Austria
0.12038
China
0.07796
France
0.13620
India
0.07145
Malta
0.07940
Paraguay
0.06937
Spain
0.07733
United States
0.33369
Malaysia
0.06523

Belgium
0.08748
Colombia
0.05730
Germany
0.08736
Ireland
0.21224
Norway
0.04793
Peru
0.06505
Sweden
0.12399
Venezuela
0.08628

Y las representamos.

plot(savings.lm, which = 5)
130

Bolivia
0.08947
Costa Rica
0.07547
Greece
0.09662
Italy
0.06651
Netherlands
0.09061
Philippines
0.06425
Switzerland
0.07359
Zambia
0.06433

Brazil
0.06956
Denmark
0.06272
Guatamala
0.06049
Japan
0.22331
New Zealand
0.05422
Portugal
0.09715
Turkey
0.03964
Jamaica
0.14076

Canada
0.15840
Ecuador
0.06373
Honduras
0.06008
Korea
0.06080
Nicaragua
0.05035
South Africa
0.06510
Tunisia
0.07457
Uruguay
0.09795

Residuals vs Leverage

Zambia

Japan

0.5

Standardized residuals

Libya

0.5

Cook's distance
0.0

0.1

0.2

0.3

0.4

0.5

Leverage
lm(sr ~ pop15 + pop75 + dpi + ddpi)

Notemos que Libia es el pais que tiene un mayor valor de la influencia.


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

1 hi
Estos son los residuos estudentizados. Si el modelo que asumimos es correcto entonces la varianza de estos residuos es uno y son aproximadamente incorrelados. Notemos que la estudentizaci
on corrige las varianzas desiguales de los residuos cuando
las varianzas de los errores son iguales entre si. En otro caso esto no es cierto. Si
las varianzas de los errores no son iguales (tenemos heterocedasticidad) entonces la
estudentizaci
on 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 observaci
on an
omala es una observacion que no se ajusta a nuestro modelo. Hemos de protegernos frente a este tipo de puntos. Un test para observaciones
an
omalas es u
til si nos permite distinguir entre observaciones que son realmente
an
omala y aquellas que simplemente tienen un residuo grande aunque no excepcionalmente 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
131

para el punto i-esimo la siguiente estimacion


y(i) = x0i (i) .

(6.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
0
vd
ar(yi y(i) ) =
(i)
(1 + x0i (X(i)
X(i) )1 xi )
de modo que podemos definir los residuos jackknife como
yi y(i)
yi y(i)
q
tnp1 ,
=
ti = p
0 X )1 x
vd
ar(yi y(i) )

(i) 1 + x0i (X(i)


i
(i)
asumiendo que el modelo es correcto. Se tiene la siguiente expresion
ti =

1/2


np1
i
= ri
.
n p ri2

(i) 1 hi

Puesto que cada uno de los ti sigue una distribucion conocida podemos contrastar si
tenemos una observaci
on an
omala. En principio el procedimiento sera simplemente
fijar un nivel de significaci
on 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 s
olo 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
Nota de R 43 (Residuos estudentizados) Calculamos para los datos savings
los residuos estudentizados con la funci
on rstudent. La pregunta que nos hacemos
es si alguno de estos residuos es muy grande o muy peque
no. Comparamos el m
odulo
.
de los residuos estandarizados con tnp1,1 2n
savings.rs <- rstudent(savings.lm)
Comparamos los residuos con el percentil correspondiente.
abs(savings.rs) > qt(1 - 0.05/(50 * 2), 44)
##
Australia
##
FALSE
##
Chile
##
FALSE
##
Finland
##
FALSE
##
Iceland
##
FALSE
##
Luxembourg
##
FALSE
##
Panama
##
FALSE
## South Rhodesia

Austria
FALSE
China
FALSE
France
FALSE
India
FALSE
Malta
FALSE
Paraguay
FALSE
Spain

Belgium
FALSE
Colombia
FALSE
Germany
FALSE
Ireland
FALSE
Norway
FALSE
Peru
FALSE
Sweden
132

Bolivia
FALSE
Costa Rica
FALSE
Greece
FALSE
Italy
FALSE
Netherlands
FALSE
Philippines
FALSE
Switzerland

Brazil
FALSE
Denmark
FALSE
Guatamala
FALSE
Japan
FALSE
New Zealand
FALSE
Portugal
FALSE
Turkey

Canada
FALSE
Ecuador
FALSE
Honduras
FALSE
Korea
FALSE
Nicaragua
FALSE
South Africa
FALSE
Tunisia

##
FALSE
## United Kingdom
##
FALSE
##
Libya
##
FALSE

FALSE
United States
FALSE
Malaysia
FALSE

FALSE
Venezuela
FALSE

FALSE
Zambia
FALSE

Un punto influyente es aquel que cuando lo quitamos causa una modificacion


importante del ajuste. Un punto influyente puede ser o no una observacion anomala,
puede tener o no una alta influencia pero tendera a tener al menos una de las dos
propiedades. El estadstico de Cook es una de las maneras de medir la influencia.
Se define como
(
yi y(i) )0 (
yi y(i) )
1
hi
= ri2
.
(6.39)
Di =
2
p

p 1 hi
Nota de R 44 Con los datos savings representamos las distancias de Cook y las
obtenemos utilizando la funci
on Cooks.distance. Vemos Lbia, Zambia y Jap
on son
observaciones que influyen mucho en el ajuste. Habra que valorar el ajuste con y
sin estas observaciones.
plot(savings.lm, which = 4)

Cook's distance

0.15
0.10

Japan

0.05

Zambia

0.00

Cook's distance

0.20

0.25

Libya

10

20

30

Obs. number
lm(sr ~ pop15 + pop75 + dpi + ddpi)

Tambien podemos ver los valores de la distancia de Cook.


133

40

50

FALSE
Jamaica
FALSE

FALSE
Uruguay
FALSE

cooks.distance(savings.lm)
##
Australia
##
8.036e-04
##
Chile
##
3.781e-02
##
Finland
##
4.364e-03
##
Iceland
##
4.353e-02
##
Luxembourg
##
3.994e-03
##
Panama
##
6.334e-03
## South Rhodesia
##
5.267e-03
## United Kingdom
##
1.497e-02
##
Libya
##
2.681e-01

6.10.

Austria
8.176e-04
China
8.157e-03
France
1.547e-02
India
2.966e-04
Malta
1.147e-02
Paraguay
4.157e-02
Spain
5.659e-04
United States
1.284e-02
Malaysia
9.113e-03

Belgium
7.155e-03
Colombia
1.879e-03
Germany
4.737e-05
Ireland
5.440e-02
Norway
5.559e-04
Peru
4.401e-02
Sweden
4.056e-02
Venezuela
1.886e-02

Bolivia
7.279e-04
Costa Rica
3.208e-02
Greece
1.590e-02
Italy
3.919e-03
Netherlands
2.744e-04
Philippines
4.522e-02
Switzerland
7.335e-03
Zambia
9.663e-02

Brazil
1.403e-02
Denmark
2.880e-02
Guatamala
1.067e-02
Japan
1.428e-01
New Zealand
4.379e-03
Portugal
9.734e-04
Turkey
4.224e-03
Jamaica
2.403e-02

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 est
a 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
hip
otesis indicadas? Se puede hacer mediante el test del cociente de verosimilitudes,
es decir, utilizando el estadstico
=
siendo L(, ) =

1
n
(2) 2 n

max(,)0 L(, )
max(,) L(, )

(6.40)

exp{ 21 2 (y X)0 (y X)}, 0 = {(, ) Rp

(0, +) : i1 = . . . = ir = 0} y = Rp (0, +). Como es habitual en un


test del cociente de verosimilitudes rechazaramos la hipotesis nula si es peque
no
(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
134

Canada
3.106e-04
Ecuador
5.819e-03
Honduras
4.742e-04
Korea
3.555e-02
Nicaragua
3.226e-04
South Africa
2.405e-04
Tunisia
9.562e-03
Uruguay
8.532e-03

y
SS(Error)
2np
2 (n p)
adem
as ambas cantidades son independientes. Por ello se verifica que
F =

(SS(Error)0 SS(Error) )/r


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

0 (y X ))/(p

((y 1n y)0 (y 1n y) (y X )
1)
Fp1,np .
0 (y X )/(n

(y X )
p)

Como segundo caso tendramos la situacion en que contrastamos que un solo coeficiente 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
ti =

i
SE(i )

tnp

donde SE(i ) es el error est


andar de i y viene dado en ecuacion 6.30. Se tiene, de
hecho, que
F = t2i .
Rechazaremos la hip
otesis 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 45 (Contrastes sobre los coeficientes) Utilizando los datos savings
podemos ver en la u
ltima lnea el contraste de que todas las variables predictoras tienen su coeficiente asociado nulo. El p-valor es 0,0007904, es decir, es muy peque
no
por lo que rechazamos la hip
otesis nula. Al menos una de las variables predictoras
tiene su coeficiente asociado no nulo.
Cuando contrastamos la hip
otesis de que cada coeficiente valga cero vemos que
no podemos rechazarlo para las variables pop75 y dpi.
Realizamos un summary del modelo de regresi
on ajustado.
summary(savings.lm)
##
## Call:
## lm(formula = sr ~ pop15 + pop75 + dpi + ddpi, data = savings)
##
135

##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##

Residuals:
Min
1Q Median
-8.242 -2.686 -0.249

3Q
2.428

Max
9.751

Coefficients:
Estimate Std. Error t
(Intercept) 28.566087
7.354516
pop15
-0.461193
0.144642
pop75
-1.691498
1.083599
dpi
-0.000337
0.000931
ddpi
0.409695
0.196197
--Signif. codes: 0 '***' 0.001 '**'

value Pr(>|t|)
3.88 0.00033 ***
-3.19 0.00260 **
-1.56 0.12553
-0.36 0.71917
2.09 0.04247 *
0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 3.8 on 45 degrees of freedom


Multiple R-squared: 0.338,Adjusted R-squared: 0.28
F-statistic: 5.76 on 4 and 45 DF, p-value: 0.00079

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


i i
tnp entonces el intervalo de confianza al nivel
Teniendo en cuenta que SE(
i )
1 para el coeficiente i sera
i tnp,1 2 SE(i ).
Nota de R 46 (Intervalos de confianza) Calculamos los intervalos de confianza para los coeficientes de savings con la funci
on confint.
confint(savings.lm)
##
##
##
##
##
##

(Intercept)
pop15
pop75
dpi
ddpi

2.5 %
97.5 %
13.753331 43.378842
-0.752518 -0.169869
-3.873978 0.490983
-0.002212 0.001538
0.014534 0.804856

Supongamos que consideramos un vector de predictores x0 y pretendemos predecir la correspondiente media de la variable respuesta. Esta media viene dada por
E[Y |x0 ] = x00 .
La estimaci
on de esta media es

x00 ,
que tiene varianza
= x0 (X 0 X)1 x0 2 .
var(x00 )
0
Esta varianza la estimamos mediante
= x0 (X 0 X)1 x0
vd
ar(x00 )
2.
0
Y el intervalo de confianza sera
x00 tnp,1 2

136

x00 (X 0 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 seg
un nuestro modelo tenemos
Y = x00 + .
En consecuencia la predicci
on de la propia observacion sera
x00
pero hay que considerar la varianza a
nadida por el error  de modo que la varianza
al predecir Y dado x0 sera
+ 2
var(x00 )
que estimaramos como
+
vd
ar(x00 )
2 +
2 = (x00 (X 0 X)1 x0 + 1)
2 .
2 = x00 (X 0 X)1 x0
Finalmente tendremos que el intervalo de confianza para una observacion Y que
tiene predictores x0 es el siguiente
q
x00 tnp,1 2
x00 (X 0 X)1 x0 + 1
Nota de R 47 Con los datos savings consideramos c
omo obtener las predicciones, intervalos de confianza para las medias y para las predicciones. Utilizamos los
propios datos que se han utilizado para ajustar el modelo. Con la funci
on predict
obtenemos las predicciones as como los intervalos de confianza para las medias
de las predicciones (predict con la opci
on interval=confidence) y los intervalos de
confianza para las observaciones (predict con la opci
on interval=prediction).
Primero obtengamos las predicciones para los propios datos.
savings.lm <- lm(sr ~ pop15 + pop75 + dpi + ddpi, savings)
predict(savings.lm)
##
Australia
##
10.566
##
Chile
##
8.842
##
Finland
##
12.921
##
Iceland
##
7.481
##
Luxembourg
##
12.021
##
Panama
##
7.734
## South Rhodesia
##
12.009
## United Kingdom
##
10.502
##
Libya
##
11.720

Austria
11.454
China
9.364
France
10.165
India
8.491
Malta
12.505
Paraguay
8.146
Spain
12.441
United States
8.672
Malaysia
7.681

Belgium
10.951
Colombia
6.432
Germany
12.731
Ireland
7.949
Norway
11.122
Peru
6.161
Sweden
11.120
Venezuela
5.587

Bolivia
6.448
Costa Rica
5.655
Greece
13.786
Italy
12.353
Netherlands
14.224
Philippines
6.105
Switzerland
11.643
Zambia
8.809

Brazil
9.327
Denmark
11.450
Guatamala
6.365
Japan
15.819
New Zealand
8.384
Portugal
13.258
Turkey
7.796
Jamaica
10.739

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


on de la
media.

137

Canada
9.107
Ecuador
5.996
Honduras
6.990
Korea
10.087
Nicaragua
6.654
South Africa
10.657
Tunisia
5.628
Uruguay
11.504

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


##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##

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

fit
10.566
11.454
10.951
6.448
9.327
9.107
8.842
9.364
6.432
5.655
11.450
5.996
12.921
10.165
12.731
13.786
6.365
6.990
7.481
8.491
7.949
12.353
15.819
10.087
12.021
12.505
11.122
14.224
8.384
6.654
7.734
8.146
6.161
6.105
13.258
10.657
12.009
12.441
11.120
11.643
7.796
5.628
10.502
8.672
5.587
8.809
10.739
11.504
11.720
7.681

lwr
8.573
8.796
8.686
4.157
7.307
6.059
7.363
7.225
4.598
3.551
9.532
4.062
10.597
7.338
10.467
11.405
4.482
5.113
5.447
6.444
4.420
10.378
12.199
8.198
9.770
10.347
9.445
11.919
6.601
4.935
6.222
6.128
4.207
4.164
10.871
8.703
8.937
10.311
8.423
9.565
6.271
3.536
7.888
4.247
3.338
6.866
7.865
9.107
6.136
5.725

upr
12.559
14.111
13.216
8.739
11.347
12.155
10.321
11.502
8.265
7.759
13.368
7.929
15.245
12.991
14.994
16.167
8.249
8.867
9.514
10.539
11.477
14.328
19.438
11.975
14.271
14.663
12.799
16.530
10.168
8.372
9.246
10.163
8.114
8.046
15.646
12.611
15.080
14.571
13.817
13.721
9.321
7.719
13.117
13.096
7.837
10.752
13.612
13.901
17.303
9.637

138

Y finalmente obtenemos los intervalos de confianza para la predicci


on de la observaci
on.
predict(savings.lm, interval = "prediction")
## Warning: predictions on current data refer to future responses
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##

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

fit
10.566
11.454
10.951
6.448
9.327
9.107
8.842
9.364
6.432
5.655
11.450
5.996
12.921
10.165
12.731
13.786
6.365
6.990
7.481
8.491
7.949
12.353
15.819
10.087
12.021
12.505
11.122
14.224
8.384
6.654
7.734
8.146
6.161
6.105
13.258
10.657
12.009
12.441
11.120
11.643
7.796
5.628
10.502
8.672
5.587
8.809

lwr
2.65239
3.34674
2.96408
-1.54594
1.40632
0.86361
1.04174
1.41206
-1.44364
-2.28779
3.55427
-1.90361
4.91740
2.00061
4.74420
5.76572
-1.52194
-0.89571
-0.44375
0.56345
-0.48378
4.44367
7.34744
2.19862
4.03802
4.54786
3.28141
6.22601
0.52059
-1.19581
-0.07263
0.22559
-1.74359
-1.79621
5.23607
2.75248
3.75673
4.49157
3.00037
3.70738
-0.01362
-2.31147
2.40955
-0.17340
-2.39507
0.90760

upr
18.48
19.56
18.94
14.44
17.25
17.35
16.64
17.32
14.31
13.60
19.35
13.89
20.92
18.33
20.72
21.81
14.25
14.88
15.40
16.42
16.38
20.26
24.29
17.98
20.00
20.46
18.96
22.22
16.25
14.50
15.54
16.07
14.06
14.01
21.28
18.56
20.26
20.39
19.24
19.58
15.60
13.57
18.60
17.52
13.57
16.71

139

##
##
##
##

Jamaica
Uruguay
Libya
Malaysia

6.11.

10.739 2.55827
11.504 3.47853
11.720 2.24140
7.681 -0.22396

18.92
19.53
21.20
15.59

Selecci
on 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
f
acil de entender. Es bueno tener pocas variables porque luego no tendremos que
recoger esta informaci
on. 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 primera vamos comparando modelos sucesivos y, basicamente, consideramos si los modelos
sucesivos que comparamos difieren significativamente como modelos. En la segunda se adopta una medida de calidad global del ajuste y se plantea el problema de
determinar el modelo que optimiza ese criterio global.

6.11.1.

Procedimientos que comparan modelos

Tres procedimientos se pueden considerar: selecci


on backward, selecci
on forward y selecci
on stepwise. En el primer procedimiento, selecci
on backward
(selecci
on hacia atr
as), empezamos el proceso de seleccion con un modelo en que
tenemos todas las variables consideradas a priori. Elegimos aquella que, cuando la
quitamos, el p-valor resultante de comparar ambos modelos (completo y aquel que
le falta la variable considerada) es mayor. Si este p-valor es mayor que un valor
previamente especificado entonces eliminamos la variable del modelo. Y as continuamos hasta que al eliminar una variable el p-valor correspondiente sea menor que
el elegido.
El procedimiento selecci
on 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 m
as 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 m
as usado es el selecci
on stepwise (hacia adelante y hacia
atr
as). Vistos los anteriores es de esperar como funciona este metodo. Despues de la
inclusi
on 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 48 (Selecci
on hacia atr
as) Utilizamos los datos state y aplicamos
un procedimiento de selecci
on backward.
data(state)
statedata <- data.frame(state.x77, row.names = state.abb, check.names = T)
g <- lm(Life.Exp ~ ., data = statedata)
summary(g)
##
140

##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##

Call:
lm(formula = Life.Exp ~ ., data = statedata)
Residuals:
Min
1Q Median
-1.4890 -0.5123 -0.0275

3Q
0.5700

Max
1.4945

Coefficients:
Estimate Std. Error t
(Intercept) 7.09e+01
1.75e+00
Population
5.18e-05
2.92e-05
Income
-2.18e-05
2.44e-04
Illiteracy
3.38e-02
3.66e-01
Murder
-3.01e-01
4.66e-02
HS.Grad
4.89e-02
2.33e-02
Frost
-5.74e-03
3.14e-03
Area
-7.38e-08
1.67e-06
--Signif. codes: 0 '***' 0.001 '**'

value Pr(>|t|)
40.59 < 2e-16 ***
1.77
0.083 .
-0.09
0.929
0.09
0.927
-6.46 8.7e-08 ***
2.10
0.042 *
-1.82
0.075 .
-0.04
0.965
0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.745 on 42 degrees of freedom


Multiple R-squared: 0.736,Adjusted R-squared: 0.692
F-statistic: 16.7 on 7 and 42 DF, p-value: 2.53e-10

g <- update(g, . ~ . - Area)


summary(g)
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##

Call:
lm(formula = Life.Exp ~ Population + Income + Illiteracy + Murder +
HS.Grad + Frost, data = statedata)
Residuals:
Min
1Q Median
-1.4905 -0.5253 -0.0255

3Q
0.5716

Max
1.5037

Coefficients:
Estimate Std. Error t
(Intercept) 7.10e+01
1.39e+00
Population
5.19e-05
2.88e-05
Income
-2.44e-05
2.34e-04
Illiteracy
2.85e-02
3.42e-01
Murder
-3.02e-01
4.33e-02
HS.Grad
4.85e-02
2.07e-02
Frost
-5.78e-03
2.97e-03
--Signif. codes: 0 '***' 0.001 '**'

value Pr(>|t|)
51.17 < 2e-16 ***
1.80
0.079 .
-0.10
0.917
0.08
0.934
-6.96 1.5e-08 ***
2.35
0.024 *
-1.94
0.058 .
0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.736 on 43 degrees of freedom


Multiple R-squared: 0.736,Adjusted R-squared: 0.699
F-statistic:
20 on 6 and 43 DF, p-value: 5.36e-11

141

g <- update(g, . ~ . - Illiteracy)


summary(g)
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##

Call:
lm(formula = Life.Exp ~ Population + Income + Murder + HS.Grad +
Frost, data = statedata)
Residuals:
Min
1Q Median
-1.4892 -0.5122 -0.0329

3Q
0.5645

Max
1.5166

Coefficients:
Estimate Std. Error t
(Intercept) 7.11e+01
1.03e+00
Population
5.11e-05
2.71e-05
Income
-2.48e-05
2.32e-04
Murder
-3.00e-01
3.70e-02
HS.Grad
4.78e-02
1.86e-02
Frost
-5.91e-03
2.47e-03
--Signif. codes: 0 '***' 0.001 '**'

value Pr(>|t|)
69.07 < 2e-16 ***
1.89
0.066 .
-0.11
0.915
-8.10 2.9e-10 ***
2.57
0.014 *
-2.39
0.021 *
0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.728 on 44 degrees of freedom


Multiple R-squared: 0.736,Adjusted R-squared: 0.706
F-statistic: 24.5 on 5 and 44 DF, p-value: 1.02e-11

g <- update(g, . ~ . - Income)


summary(g)
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##

Call:
lm(formula = Life.Exp ~ Population + Murder + HS.Grad + Frost,
data = statedata)
Residuals:
Min
1Q Median
-1.471 -0.535 -0.037

3Q
0.576

Max
1.507

Coefficients:
Estimate Std. Error t
(Intercept) 7.10e+01
9.53e-01
Population
5.01e-05
2.51e-05
Murder
-3.00e-01
3.66e-02
HS.Grad
4.66e-02
1.48e-02
Frost
-5.94e-03
2.42e-03
--Signif. codes: 0 '***' 0.001 '**'

value Pr(>|t|)
74.54 < 2e-16 ***
2.00
0.052 .
-8.20 1.8e-10 ***
3.14
0.003 **
-2.46
0.018 *
0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.72 on 45 degrees of freedom


Multiple R-squared: 0.736,Adjusted R-squared: 0.713
F-statistic: 31.4 on 4 and 45 DF, p-value: 1.7e-12
142

g <- update(g, . ~ . - Population)


summary(g)
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##

Call:
lm(formula = Life.Exp ~ Murder + HS.Grad + Frost, data = statedata)
Residuals:
Min
1Q Median
-1.502 -0.539 0.101

3Q
0.592

Max
1.227

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 71.03638
0.98326
72.25
<2e-16 ***
Murder
-0.28307
0.03673
-7.71
8e-10 ***
HS.Grad
0.04995
0.01520
3.29
0.002 **
Frost
-0.00691
0.00245
-2.82
0.007 **
--Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 0.743 on 46 degrees of freedom
Multiple R-squared: 0.713,Adjusted R-squared: 0.694
F-statistic:
38 on 3 and 46 DF, p-value: 1.63e-12

6.11.2.

Procedimientos basados en criterios

Estamos ajustando un modelo de regresion lineal m


ultiple con alg
un proposito.
Podemos fijarnos en una medida global de calidad del ajuste y buscar la seleccion
de variables que nos da el
optimo seg
un ese criterio.
Una medida global puede ser AIC (Akaike Information Criterion) definido como
AIC = 2 max logverosimilitud + 2p.
A partir de la definici
on de esta medida global es claro que un valor peque
no
indica un mejor ajuste.
Nota de R 49 (Selecci
on de variables) Notemos que con en la funci
on step
podemos indicar con el argumento direction si queremos both (stepwise), o bien
backward o bien forward.
data(state)
statedata <- data.frame(state.x77, row.names = state.abb, check.names = T)
g <- lm(Life.Exp ~ ., data = statedata)
step(g)
##
##
##
##
##
##
##
##

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

- Area
- Income
- Illiteracy

Df Sum of Sq RSS
AIC
1
0.00 23.3 -24.2
1
0.00 23.3 -24.2
1
0.00 23.3 -24.2
143

##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##

<none>
- Population
- Frost
- HS.Grad
- Murder

1
1
1
1

1.75
1.85
2.44
23.14

23.3
25.0
25.1
25.7
46.4

-22.2
-20.6
-20.4
-19.2
10.3

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

- Illiteracy
- Income
<none>
- Population
- Frost
- HS.Grad
- Murder

Df Sum of Sq RSS
AIC
1
0.00 23.3 -26.2
1
0.01 23.3 -26.2
23.3 -24.2
1
1.76 25.1 -22.5
1
2.05 25.3 -22.0
1
2.98 26.3 -20.2
1
26.27 49.6 11.6

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

- Income
<none>
- Population
- Frost
- HS.Grad
- Murder

Df Sum of Sq RSS
1
0.0 23.3
23.3
1
1.9 25.2
1
3.0 26.3
1
3.5 26.8
1
34.7 58.0

AIC
-28.2
-26.2
-24.3
-22.1
-21.2
17.5

Step: AIC=-28.16
Life.Exp ~ Population + Murder + HS.Grad + Frost
Df Sum of Sq
<none>
- Population
- Frost
- HS.Grad
- Murder

1
1
1
1

2.1
3.1
5.1
34.8

RSS
23.3
25.4
26.4
28.4
58.1

AIC
-28.2
-25.9
-23.9
-20.2
15.5

Call:
lm(formula = Life.Exp ~ Population + Murder + HS.Grad + Frost,
data = statedata)
Coefficients:
(Intercept)
Population
7.10e+01
5.01e-05

Murder
-3.00e-01

HS.Grad
4.66e-02

Frost
-5.94e-03

Utilizamos stepAIC de la librera MASS ?.


library(MASS)
data(state)
statedata <- data.frame(state.x77, row.names = state.abb, check.names = T)
g <- lm(Life.Exp ~ ., data = statedata)
144

stepAIC(g)
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##

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

- Area
- Income
- Illiteracy
<none>
- Population
- Frost
- HS.Grad
- Murder

Df Sum of Sq RSS
AIC
1
0.00 23.3 -24.2
1
0.00 23.3 -24.2
1
0.00 23.3 -24.2
23.3 -22.2
1
1.75 25.0 -20.6
1
1.85 25.1 -20.4
1
2.44 25.7 -19.2
1
23.14 46.4 10.3

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

- Illiteracy
- Income
<none>
- Population
- Frost
- HS.Grad
- Murder

Df Sum of Sq RSS
AIC
1
0.00 23.3 -26.2
1
0.01 23.3 -26.2
23.3 -24.2
1
1.76 25.1 -22.5
1
2.05 25.3 -22.0
1
2.98 26.3 -20.2
1
26.27 49.6 11.6

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

- Income
<none>
- Population
- Frost
- HS.Grad
- Murder

Df Sum of Sq RSS
1
0.0 23.3
23.3
1
1.9 25.2
1
3.0 26.3
1
3.5 26.8
1
34.7 58.0

AIC
-28.2
-26.2
-24.3
-22.1
-21.2
17.5

Step: AIC=-28.16
Life.Exp ~ Population + Murder + HS.Grad + Frost
Df Sum of Sq
<none>
- Population
- Frost
- HS.Grad
- Murder

1
1
1
1

2.1
3.1
5.1
34.8

RSS
23.3
25.4
26.4
28.4
58.1

AIC
-28.2
-25.9
-23.9
-20.2
15.5

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

145

## Coefficients:
## (Intercept)
Population
##
7.10e+01
5.01e-05

Murder
-3.00e-01

HS.Grad
4.66e-02

Frost
-5.94e-03

Vemos que se obtiene el mismo resultado.

6.12.

Algunos ejemplos

Terminamos el tema con algunos ejemplos.


Nota de R 50 Son unos datos sobre el abul
on. 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 abal
on se calcula habitualmente cortando la concha y contando el
n
umero de anillos utilizando un microscopio. Es una tarea bastante laboriosa. Se
pretende predecir la edad del animal utilizando distintas medidas que son m
as f
aciles
de obtener.
Vemos c
omo quitando un par de observaciones con un leverage alto el ajuste
mejora.
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 ~ V1 + V2 + V3 + V4 + V5 + V6 + V7 + V8
y <- log(x[, 9])
y.fit <- lm(fmla, data = x)
summary(y.fit)
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##

Call:
lm(formula = fmla, data = x)
Residuals:
Min
1Q Median
-1.3791 -0.1317 -0.0159

3Q
0.1112

Max
0.8043

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 1.34118
0.02691
49.83 < 2e-16 ***
V1I
-0.09249
0.00945
-9.78 < 2e-16 ***
V1M
0.00893
0.00769
1.16
0.2461
V2
0.53305
0.16700
3.19
0.0014 **
V3
1.42358
0.20560
6.92 5.1e-12 ***
V4
1.20663
0.14181
8.51 < 2e-16 ***
V5
0.60825
0.06696
9.08 < 2e-16 ***
V6
-1.65705
0.07545 -21.96 < 2e-16 ***
V7
-0.83550
0.11942
-7.00 3.1e-12 ***
V8
0.60681
0.10382
5.84 5.5e-09 ***
--146

##
##
##
##
##

Signif. codes:

0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.203 on 4167 degrees of freedom


Multiple R-squared: 0.599,Adjusted R-squared: 0.598
F-statistic: 692 on 9 and 4167 DF, p-value: <2e-16

x <- x[-2052, ]
attach(x)
xnam <- paste("V", 1:8, sep = "")
(fmla <- as.formula(paste("y ~ ", paste(xnam, collapse = "+"))))
## y ~ V1 + V2 + V3 + V4 + V5 + V6 + V7 + V8
y <- log(x[, 9])
y.fit <- lm(fmla, data = x)
summary(y.fit)
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##

Call:
lm(formula = fmla, data = x)
Residuals:
Min
1Q Median
-1.3473 -0.1308 -0.0165

3Q
0.1104

Max
0.8001

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 1.30893
0.02699
48.51 < 2e-16 ***
V1I
-0.08984
0.00938
-9.58 < 2e-16 ***
V1M
0.00823
0.00763
1.08
0.2811
V2
0.47852
0.16580
2.89
0.0039 **
V3
1.25015
0.20504
6.10 1.2e-09 ***
V4
2.37198
0.19937
11.90 < 2e-16 ***
V5
0.59652
0.06644
8.98 < 2e-16 ***
V6
-1.62479
0.07495 -21.68 < 2e-16 ***
V7
-0.89038
0.11866
-7.50 7.6e-14 ***
V8
0.51045
0.10366
4.92 8.8e-07 ***
--Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 0.201 on 4166 degrees of freedom
Multiple R-squared: 0.605,Adjusted R-squared: 0.605
F-statistic: 710 on 9 and 4166 DF, p-value: <2e-16

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


(fmla <- as.formula(paste("y ~ ", paste(xnam, collapse = "+"))))
## y ~ V1 + V2 + V3 + V4 + V5 + V6 + V7 + V8
y <- log(x[, 9])
y.fit <- lm(fmla, data = x)
summary(y.fit)
147

##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##

Call:
lm(formula = fmla, data = x)
Residuals:
Min
1Q Median
-1.3473 -0.1308 -0.0165

3Q
0.1104

Max
0.8001

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 1.30893
0.02699
48.51 < 2e-16 ***
V1I
-0.08984
0.00938
-9.58 < 2e-16 ***
V1M
0.00823
0.00763
1.08
0.2811
V2
0.47852
0.16580
2.89
0.0039 **
V3
1.25015
0.20504
6.10 1.2e-09 ***
V4
2.37198
0.19937
11.90 < 2e-16 ***
V5
0.59652
0.06644
8.98 < 2e-16 ***
V6
-1.62479
0.07495 -21.68 < 2e-16 ***
V7
-0.89038
0.11866
-7.50 7.6e-14 ***
V8
0.51045
0.10366
4.92 8.8e-07 ***
--Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 0.201 on 4166 degrees of freedom
Multiple R-squared: 0.605,Adjusted R-squared: 0.605
F-statistic: 710 on 9 and 4166 DF, p-value: <2e-16

Nota de R 51 (Un ejemplo de producci


on) Se trata de unos datos utilizados
para reducir costes de producci
on. En concreto se pretende valorar el consumo de
agua en una f
abrica. 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 producci
on (en libras), n
umero de das que ha funcionado la f
abrica
durante ese mes, n
umero de personas trabajando. Los datos han sido obtenidos de
http://www.statsci.org/data/general/water.html.
x <- read.table(file = "../data/agua.txt", header = T)
attach(x)
Ajustamos el modelo.
a.lm <- lm(agua ~ temperatura + produccion + dias + personas)
summary(a.lm)
##
##
##
##
##
##
##
##
##
##

Call:
lm(formula = agua ~ temperatura + produccion + dias + personas)
Residuals:
Min
1Q Median
-445.0 -131.5
2.6

3Q
109.0

Max
368.5

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

##
##
##
##
##
##
##
##
##
##
##

(Intercept) 6360.3373 1314.3916


4.84 0.00041 ***
temperatura
13.8689
5.1598
2.69 0.01975 *
produccion
0.2117
0.0455
4.65 0.00056 ***
dias
-126.6904
48.0223
-2.64 0.02165 *
personas
-21.8180
7.2845
-3.00 0.01117 *
--Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 249 on 12 degrees of freedom
Multiple R-squared: 0.767,Adjusted R-squared: 0.689
F-statistic: 9.88 on 4 and 12 DF, p-value: 0.000896

Introducimos un termino cuadr


atico y otro c
ubico en la producci
on.

b.lm <- lm(agua ~ temperatura + poly(produccion, 3) + dias + personas)


summary(b.lm)
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##

Call:
lm(formula = agua ~ temperatura + poly(produccion, 3) + dias +
personas)
Residuals:
Min
1Q Median
-435.9 -103.8
29.4

3Q
123.9

Max
388.4

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept)
8734.09
2393.47
3.65
0.0045 **
temperatura
14.52
6.52
2.23
0.0502 .
poly(produccion, 3)1 2742.29
851.98
3.22
0.0092 **
poly(produccion, 3)2
208.89
337.56
0.62
0.5499
poly(produccion, 3)3 -108.68
357.64
-0.30
0.7675
dias
-138.47
66.88
-2.07
0.0652 .
personas
-18.69
9.87
-1.89
0.0875 .
--Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Residual standard error: 266 on 10 degrees of freedom
Multiple R-squared: 0.779,Adjusted R-squared: 0.647
F-statistic: 5.88 on 6 and 10 DF, p-value: 0.00736

Veamos los distintos procedimientos gr


aficos para el diagn
ostico del modelo.

plot(a.lm, which = 1)
149

400

Residuals vs Fitted

200

15

Residuals

200

400

14

3000

3500

4000

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

plot(a.lm, which = 2)
150

Normal QQ

Standardized residuals

17

14

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

plot(a.lm, which = 3)
151

1.4

ScaleLocation
14

1.2

6
17

0.8

0.6

0.4

Standardized residuals

1.0

0.2

0.0

3000

3500

4000

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

plot(a.lm, which = 4)
152

Cook's distance

0.15

0.10

16

0.00

0.05

Cook's distance

0.20

10

15

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

plot(a.lm, which = 5)
153

Residuals vs Leverage
1

0.5

Standardized residuals

16

0.5

Cook's distance
0.0

0.1

0.2

0.3

0.4

0.5

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

plot(a.lm, which = 6)
154

0.6

Cook's dist vs Leverage hii (1 hii)


21.5

0.5

16

0.10

Cook's distance

0.15

0.20

0.05

0.00

0.1

0.2

0.3

0.4

0
0.5

0.6

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

Intervalo de confianza para observaciones.


predict(a.lm, interval = "prediction")
## Warning: predictions on current data refer to future responses
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

fit
3205
2750
2657
3228
3214
3529
3538
3138
3116
3283
3469
3148
2913
3367
3627
4362
3617

lwr
2521
2131
2036
2601
2563
2940
2945
2556
2526
2664
2825
2501
2309
2803
3050
3691
3026

upr
3890
3370
3278
3854
3864
4119
4132
3720
3706
3903
4113
3795
3517
3931
4203
5034
4208
155

Intervalo de confianza para la media.


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

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

fit
3205
2750
2657
3228
3214
3529
3538
3138
3116
3283
3469
3148
2913
3367
3627
4362
3617

lwr
2788
2451
2355
2915
2854
3299
3297
2927
2884
2984
3122
2795
2648
3212
3432
3966
3383

upr
3623
3050
2959
3540
3573
3760
3779
3349
3348
3583
3816
3501
3179
3522
3821
4758
3852

Nota de R 52 (Crmenes) Las variables son las siguientes:


Variable
Description
M
percentage of males aged 1424
So
indicator variable for a southern state
Ed
mean years of schooling
Po1
police expenditure in 1960
Po2
police expenditure in 1959
LF
labour force participation rate
M.F
number of males per 1000 females
Pop
state population
NW
number of nonwhites per 1000 people
U1
unemployment rate of urban males 1424
U2
unemployment rate of urban males 3539
GDP
gross domestic product per head
Ineq
income inequality
Prob
probability of imprisonment
Time
average time served in state prisons
Crime
rate of crimes in a particular category per head of population
Se pretende predecir la variable Crime a partir de las dem
as. 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)
156

##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##

Call:
lm(formula = Crime ~ M + So + Ed + Po1 + Po2 + LF + M.F + Pop +
NW + U1 + U2 + GDP + Ineq + Prob + Time)
Residuals:
Min
1Q Median
-395.7 -98.1
-6.7

3Q
113.0

Max
512.7

Coefficients:
Estimate Std. Error t
(Intercept) -5984.288
1628.318
M
8.783
4.171
So
-3.803
148.755
Ed
18.832
6.209
Po1
19.280
10.611
Po2
-10.942
11.748
LF
-0.664
1.470
M.F
1.741
2.035
Pop
-0.733
1.290
NW
0.420
0.648
U1
-5.827
4.210
U2
16.780
8.234
GDP
0.962
1.037
Ineq
7.067
2.272
Prob
-4855.266
2272.375
Time
-3.479
7.165
--Signif. codes: 0 '***' 0.001 '**'

value Pr(>|t|)
-3.68 0.00089 ***
2.11 0.04344 *
-0.03 0.97977
3.03 0.00486 **
1.82 0.07889 .
-0.93 0.35883
-0.45 0.65465
0.86 0.39900
-0.57 0.57385
0.65 0.52128
-1.38 0.17624
2.04 0.05016 .
0.93 0.36075
3.11 0.00398 **
-2.14 0.04063 *
-0.49 0.63071
0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 209 on 31 degrees of freedom


Multiple R-squared: 0.803,Adjusted R-squared: 0.708
F-statistic: 8.43 on 15 and 31 DF, p-value: 3.54e-07

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


summary(crime.lm2)
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##
##

Call:
lm(formula = Crime ~ M + Ed + Po1 + U2 + Ineq + Prob)
Residuals:
Min
1Q Median
-470.7 -78.4 -19.7

3Q
133.1

Max
556.2

Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -5040.50
899.84
-5.60 1.7e-06 ***
M
10.50
3.33
3.15
0.0031 **
Ed
19.65
4.48
4.39 8.1e-05 ***
Po1
11.50
1.38
8.36 2.6e-10 ***
U2
8.94
4.09
2.18
0.0348 *
Ineq
6.77
1.39
4.85 1.9e-05 ***
Prob
-3801.84
1528.10
-2.49
0.0171 *
157

##
##
##
##
##
##

--Signif. codes:

0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 201 on 40 degrees of freedom


Multiple R-squared: 0.766,Adjusted R-squared: 0.731
F-statistic: 21.8 on 6 and 40 DF, p-value: 3.42e-11
Podemos ver que no hay diferencias significativas entre ambos modelos.

anova(crime.lm, crime.lm2)
##
##
##
##
##
##
##
##

Analysis of Variance Table


Model 1:
U2 +
Model 2:
Res.Df
1
31
2
40

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


GDP + Ineq + Prob + Time
Crime ~ M + Ed + Po1 + U2 + Ineq + Prob
RSS Df Sum of Sq
F Pr(>F)
1354946
1611057 -9
-256111 0.65
0.75

158

Captulo 7

De c
omo usar R en un
tiempo razonable (no f
acil,
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 raz
on. Si llevas a
nos utilizandolo con unas pocas lneas de codigo haces lo
que con programas basados en men
u te cuesta horas (y cuando lo vuelves a repetir
te vuelve a costar horas porque tu aprendizaje no te ahorra tiempo futuro lo que en
R no as). Pero lo de a
nos 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 dise
nado el interfaz? Donde han
puesto tal o cual opci
on de la tecnica? En fin, no vale la pena seguir. Se asume que un
buen men
u es la clave de un buen programa (sobre todo, para un usuario inexperto).
En definitiva, se trata de eliminar cualquier tipo de aprendizaje (inicial o posterior)
para que sea de uso inmediato. Algunas personas (entre las que me encuentro)
piensan que eso no est
a tan claro. Se acaba pagando el pato. Lo que no pierdes (no
me atreve a hablar de ganar) al principio lo pierdes mas tarde. Programas como R
basados en el uso de un lenguaje sencillo permiten un aprendizaje rapido y profundo.
Aprendes Estadstica al mismo tiempo que aprendes a manejar el programa. Y,
desde un punto de vista docente, es una razon importante para utilizarlo.
En este captulo he ido incluyendo distintas cuestiones basicas para el uso del
programa. Desde el c
omo 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 u
tiles.
Mi edad (y cerraz
on mental) me impiden cada vez mas adaptarme a nuevas ideas.
Es importante darse cuenta de que es un programa abierto y que, facilmente, lo
puedes integrar con otras herramientas informaticas. La idea es: elige el editor que
quieras. Genera las figuras en formatos distintos y utiliza el procesador de textos
que se quiera. En fin, de esto vamos a tratar.
159

7.1.

Instalaci
on y c
omo trabajar con R

La direcci
on b
asica es http://cran.r-project.org. All se tienen tanto las
fuentes como versiones compiladas para Windows, Mac y Linux.

7.1.1.

R y Windows

Los puntos a seguir para una instalacion son los siguientes:


1.

a) Traer la distribuci
on base de cran.
b) El programa se instala simplemente ejecutandolo.
c) Una vez instalado en el men
u principal teneis una herramienta que permite seleccionar el espejo desde traer los paquetes adicionales comodamente.

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


Tinn-R. Vamos escribiendo el codigo en su editor y tiene muchas herramientas
para interactuar con R. Es, sin duda, la mejor opcion para Windows.
3. Una segunda opci
on es utilizar RWinEdt. Para poder usarlo hay que tener
instalado Winedt. Es un programa shareware muy u
til para escribir en LATEX.
Una vez instalado WinEdt cargamos el paquete RWinEdt ?.

7.1.2.

R y Linux

Es mi opci
on personal de trabajo. La recomiendo definitivamente. Por Linux y
porque el trabajo con R es muy comodo. 1
Instalaci
on 1. Para Linux hay distintas versiones compiladas que puedes encontrar en cran.
2. No es complicado compilar R a partir de las fuentes. Hay que tener la
precauci
on de tener gfortran.
3. Cuando instalamos R en Linux hemos de instalar previamente la librera
BLAS.
Edici
on con Emacs y ESS
En Linux sin duda la mejor opcion de trabajo
es utilizar Emacs con el paquete Emacs Speaks Statistics (ESS) 2 .
C
omo trabajamos con Emacs y ESS?
1.
2.
3.
4.

7.2.

Abrimos el fichero R con emacs.


Abrimos una nueva ventana (mejor separada) con CTRL x 52.
En la nueva ventana marcamos el icono de R.
Utilizamos la ventana donde esta el codigo para editar y podemos
usar los distintos controles que nos da el men
u ESS de emacs podemos trabajar muy comodamente.

C
omo instalar un paquete?

Supongamos que queremos instalar el paquete UsingR ?.


install.packages{``UsingR''}
1 Imagino a un usuario de Windows t
pico sonreir ante la afirmaci
on anterior. Me alegro de que
pueda sonreir despu
es de los lloros continuos usando esa cosa llamada Windows (que no sistema
operativo).
2 La mejor opci
on es acudir a la p
agina de los paquetes binarios y buscar en la distribuci
on
correspondiente donde teneis el paquete

160

7.3.

C
omo fijar el directorio de trabajo?

Empezamos una sesi


on de R y todo nuestro trabajo (datos, codigo R) lo tenemos
en un directorio. Hemos de tener un acceso comodo a estos ficheros. Como hacerlo?
En Linux no hay problema. Simplemente con la consola nos vamos al directorio
correspondiente y ejecutamos R. Automaticamente hemos fijado el directorio de
trabajo como aquel en que iniciamos el programa.
En Windows lo recomendable es utilizar el men
u 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.

7.4.

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.

7.4.1.

C
omo etiquetar una variable?

Supongamos que la variable a etiquetar es x en el data frame datos. Usamos la


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

7.5.

Elaboraci
on de un informe a partir del c
odigo
R

Una vez hemos analizado un banco de datos hemos de elaborar un informe.


Normalmente nos va a llevar m
as tiempo esta segunda parte que la primera.

7.5.1.

Sweave

Es conveniente consultar esta pagina. Un documento de gran utilidad donde ver


la utilizaci
on de Sweave es este tutorial.

7.6.

R y Octave/Matlab

Es frecuente que un usuario de Octave/Matlab utilice R. En este enlace y en


este teneis tablas de equivalencia entre los comandos en ambos programas.
Tambien se puede encontrar en http://mathesaurus.sourceforge.net/matlab-pythonxref.pdf una tabla de equivalencias entre Matlab/Octave, Python y R.

161

162

Bibliografa
H. Abdi and L. J. Williams. Principal component analysis. Wiley Interdisciplinary Reviews: Computational Statistics, 2(4):433459, 2010. URL /home/gag/
BIBLIOGRAFIA/REPRINTS/AbdiWilliams10.pdf.
C.L. Blake D.J. Newman, S. Hettich and C.J. Merz. UCI repository of machine learning databases, 1998. URL http://www.ics.uci.edu/$\sim$mlearn/
MLRepository.html.
E.R. Dougherty. Probability and Statistics for the Engineering, Computing and
Physical Sciences. Prentice Hall International Editions, 1990.
R.A. Fisher. The analysis of covariance method for the relation between a part and
the whole. Biometrics, 3:6568, 1947.
L. Kaufman and P.J. Rousseeuw. Finding Groups in Data. An Introduction to
Cluster Analysis. Wiley, 1990.
C.R. Rao. Linear Statistical Inference and Its Applications. Wiley, 1967.
J. Verzani. Using R for Introductory Statistics. Chapman & Hall / CRC, 2005.

163