Está en la página 1de 163

An alisis de datos con R

1
Guillermo Ayala Gallego
2
26 de marzo de 2014
1
Uno mas.
2
.
2

Indice general
1. Probabilidad: lo bueno si . . . 9
1.1. Experimento y probabilidad . . . . . . . . . . . . . . . . . . . . . . . 9
1.2. Variable aleatoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
1.2.1. Funcion de distribucion . . . . . . . . . . . . . . . . . . . . . 11
1.2.2. Media y varianza . . . . . . . . . . . . . . . . . . . . . . . . . 11
1.2.3. Teorema de Bayes . . . . . . . . . . . . . . . . . . . . . . . . 19
1.3. Vectores aleatorios . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
1.4. Distribucion normal multivariante . . . . . . . . . . . . . . . . . . . 20
2. Un muy breve repaso a la Estadstica 25
2.1. Algo de Estadstica Descriptiva, poco . . . . . . . . . . . . . . . . . 25
2.2. Verosimilitud . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
2.3. Estimacion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 29
2.3.1. Estimacion insesgada de media y varianza . . . . . . . . . . . 29
2.3.2. Estimacion insesgada del vector de medias y la matriz de co-
varianzas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30
2.4. Estimador maximo verosmil . . . . . . . . . . . . . . . . . . . . . . 32
2.5. Contraste de hipotesis . . . . . . . . . . . . . . . . . . . . . . . . . . 34
2.5.1. Test del cociente de verosimilitudes . . . . . . . . . . . . . . 35
2.5.2. Test de Wald . . . . . . . . . . . . . . . . . . . . . . . . . . . 35
2.5.3. Intervalos de conanza . . . . . . . . . . . . . . . . . . . . . 35
3. Componentes principales 37
3.1. Introduccion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.2. Componentes principales . . . . . . . . . . . . . . . . . . . . . . . . . 37
3.3. Componentes principales de los datos golub . . . . . . . . . . . . . . 45
3.4. Un poco de teora . . . . . . . . . . . . . . . . . . . . . . . . . . . 48
4. Analisis cluster 51
4.1. Algunos ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
4.2. Disimilaridades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
4.2.1. Disimilaridades entre observaciones . . . . . . . . . . . . . . 55
4.2.2. Disimilaridades entre grupos de observaciones . . . . . . . . 58
4.3. Cluster jerarquico . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59
4.4. Metodos de particionamiento . . . . . . . . . . . . . . . . . . . . . . 65
4.4.1. Metodo de las k-medias . . . . . . . . . . . . . . . . . . . . . 65
4.4.2. Particionamiento alrededor de los mediodes . . . . . . . . . . 70
4.5. Silueta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74
4.6. Un ejemplo completo . . . . . . . . . . . . . . . . . . . . . . . . . . . 77
3
5. Analisis discriminante o de como clasicar con muestra de entre-
namiento 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 desconoci-
dos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88
5.5. Analisis discriminante con mas de dos poblaciones normales . . . . 91
5.6. Valoracion del procedimiento de clasicacion . . . . . . . . . . . . . 92
5.7. Variables discriminantes canonicas o discriminantes lineales . . . . . 96
5.8. Algunos ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100
6. Regresion 103
6.1. Regresion lineal simple . . . . . . . . . . . . . . . . . . . . . . . . . . 106
6.2. Regresion lineal m ultiple . . . . . . . . . . . . . . . . . . . . . . . . . 108
6.3. Estimacion de . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 108
6.4. Algunos casos particulares . . . . . . . . . . . . . . . . . . . . . . . . 110
6.5. Verosimilitud . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
6.6. Algunos ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111
6.7. Distribucion muestral de

. . . . . . . . . . . . . . . . . . . . . . . 114
6.8. Bondad de ajuste . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115
6.9. Valoracion de las hipotesis del modelo . . . . . . . . . . . . . . . . . 116
6.10. Inferencia sobre el modelo . . . . . . . . . . . . . . . . . . . . . . . . 134
6.11. Seleccion de variables . . . . . . . . . . . . . . . . . . . . . . . . . . 140
6.11.1. Procedimientos que comparan modelos . . . . . . . . . . . . . 140
6.11.2. Procedimientos basados en criterios . . . . . . . . . . . . . . 143
6.12. Algunos ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146
7. De como usar R en un tiempo razonable (no facil, no) 159
7.1. Instalacion y como trabajar con R . . . . . . . . . . . . . . . . . . . 160
7.1.1. R y Windows . . . . . . . . . . . . . . . . . . . . . . . . . . 160
7.1.2. R y Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . 160
7.2. Como instalar un paquete? . . . . . . . . . . . . . . . . . . . . . . . 160
7.3. Como jar el directorio de trabajo? . . . . . . . . . . . . . . . . . . 161
7.4. Etiquetas de valor y de variable . . . . . . . . . . . . . . . . . . . . . 161
7.4.1. Como etiquetar una variable? . . . . . . . . . . . . . . . . . 161
7.5. Elaboracion de un informe a partir del codigo R . . . . . . . . . . . 161
7.5.1. Sweave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
7.6. R y Octave/Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161
4
Prologo
Cada vez hay mas datos. Tenemos mas datos introducidos en cheros. Y esto
es lo peor. Si los datos estuvieran en hojas sueltas y perdidas pues no pasa nada.
Se archivan los papeles y los datos no molestan. No, ahora los propios ordenadores
o bien muchas personas accediendo desde distintos lugares, tienen el mal gusto de
crear unas bancos de datos cada vez mayores. Cada vez con mas casos y con mas
variables. El problema no es conseguir datos. Los tienes a precio de saldo. Te los dan
sin que los pidas. Si tienes conocidos biologos, medicos, qumicos, psicologos seguro
que tienen datos para analizar. Si trabajais en un hospital, tendreis una legion de
medicos (y cada vez mas enfermeros) con datos. Todo el mundo tiene datos. A los
que tienen 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 (solo se pretende) partiendo de unos conocimientos
informaticos que no sean basicos y de unos conocimientos probabilsticos y estadsti-
cos mas bien basicos, llegar a poder hacer algo decente con un banco de datos.
La parte de analisis descriptivo de datos se obvia. Simplemente a lo largo del
curso se va utilizando y recordando. Ya esta bien de perder el tiempo explicando
como hacer un histograma si luego lo hace un programa.
El tono de estas notas pretende ser ameno pues bastante toston es lo que se
cuenta. No in util. Pero s toston. Hay que asumirlo desde un principio. Esto no es
Sexo en Nueva York.
1
Son unas notas de Estadstica con R ?.
2
Este documento contiene unas notas de clase para la asignatura de An alisis de
Datos de Ingeniera Informatica de la Universidad de Valencia. Pretende en cada
tema empezar desde un nivel basico de contenidos para llegar al uso de la tecnica
correspondiente. Es una realidad que el informatico acaba realizando analisis de
datos. Entre otras cosas porque suele ser la persona mas a mano o bien porque ya ha
programado el resto de la aplicacion que tambien incorporar alg un tipo de analisis
mas o menos sencillo. Y es una pena ver como se desaprovecha la informacion.
Por ello en estas notas pretendo tratar rapidamente muchos temas y, ademas, que
podamos utilizarlas. Por ello se recurre a R. Por su potencia y por su disponibilidad.
Incluso en su propia casa y con una conexion a Internet no demasiado rapida puede
el estudiante instalarse R y cualquier paquete que se necesite. Esto ya es bastante
desde el punto de vista docente. Ademas, cualquier procedimiento estadstico esta en
R. Casi se puede decir, que si no lo esta, no merece la pena de utilizarse.
Se proponen distintos apendices como apoyo a conceptos anteriores necesarios.
Se hace un repaso rapido de los conceptos basicos de la Probabilidad en el tema
1
Sin duda, la mejor serie de televisi on de la historia. Hay que verla. Las pelculas de despues
no. En cualquier caso ahora es mas recomendable Girls.
2
Un anuncio de la radio (Cadena Ser para mas se nas) hablaba de una persona que no entenda
porque 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 habran pagado por ello.
5
1. Las ideas basicas 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 estan orientadas para estudiantes de Ingeniera Informatica y por
ello en muchas ocasiones se incluyen deniciones 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 dicultad a nadida. Sin embargo, tiene la com-
pensacion de ver como muchos de los conceptos que se estudian son reescritura uno
de otro.
Por n, un signo de edad es tener que escribir las cosas para que no se nos
olviden. Quizas para que uno mismo lo aprenda y para no olvidarlo despues. En el
fondo, todos vamos aprendiendo seg un lo explicamos y lo escuchamos.
Sin duda, unas notas como las que siguen solo se pueden hacer utilizando L
A
T
E
X
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 L
A
T
E
X es fundamental
utilizada con R. En este texto hablamos de analisis de datos. No de L
A
T
E
X. Sin
embargo, uno aprende a veces cosas importantes mientras estudia otras que cree
que lo son mas. En este sentido, habra referencias a L
A
T
E
X.
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 unicos temas de
caracter basico. Los demas van al grano. En particular si te interesa como reducir
la dimension del banco de datos lee el tema 3. Si el problema que te quita el sue no
es como dadas unas variables sobre un individuo clasicarlo 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 analisis de datos se la hubieran ventilado. Los modelos lineales es un esfuerzo
colectivo que ha construido una teora redonda, util, facil de aprender y aplicar.
Parece que casi todo esta previsto y bien resuelto. Los modelos lineales generalizados
surgen de la envidia que todo lo corroe. Cuando la variable respuesta, en lugar de
ser continua, como en los modelos lineales, es una respuesta binaria, o multinomial,
o bien un conteo. Que hacer? La teora de modelos lineales no se puede aplicar
ni con calzadores. Sin embargo, con unos cuantos cambios tecnicamente simples
surgen unos modelos probabilsticos para analizar estos datos que son absolutamente
preciosos.
3
La primera lecci on sobre R es como citar el programa. En la lnea de comandos escribimos
citation y nos devuelve la referencia bibliogr aca. Del mismo modo lo podemos hacer si utilizamos
otro paquete. Por ejemplo tecleando citation(cluster) nos indica como citar el paquete cluster
que utilizamos en el tema 4.
6
Un detalle practico de enorme interes. Para programar con R en el sistema ope-
rativa Windows lo mas comodo es utilizar RWinEdt (?) mientras que si trabajamos
en Linux la opcion mas comoda es utilizar emacs con el paquete ESS. Se pueden
encontrar detalles adicionales R.
R es libre. Esto signica que es malo? Tiene pocas funciones? Lo que tiene
no es de ar? Hay una idea muy extendida de que el precio de las cosas esta nti-
mamente 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.r-
bloggers.com/.
7
8
Captulo 1
Probabilidad: lo bueno si . . .
Empezamos por donde hay que empezar. Con la Probabilidad. Temida, odiada.
Despreciada porque habla de juegos. Por encima de todo, util, de una utilidad
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, distribucion conjunta y marginal, . . .) hay que leer alg un texto. Uno muy
bueno, pero no facil de encontrar, es ?.
1.1. Experimento y probabilidad
Dadas un conjunto de condiciones, un experimento, no siempre podemos predecir
exactamente lo que va a ocurrir. La Probabilidad es la disciplina matematica que
estudia estos experimentos.
En primer lugar determinamos el conjunto de posibles resultados que se puede
producir en la experiencia, es el espacio muestral, . Los posibles subconjuntos
de A son los sucesos aleatorios y la probabilidad no nos dice si cada suceso
si va a producir o no sino que se limita a cuanticar 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 vericar las distintas probabilidades
de los sucesos aleatorios. Son las siguientes
Denicion 1 (Medida de probabilidad) P funcion de conjunto denida 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 {A
n
}
n1
es una sucesion de sucesos
disjuntos entonces
P(
n1
A
n
) =

n1
P(A
n
).
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 version leve de dicha enfermedad.
9
Ejemplo 1 Si el espacio muestral es nito y consideramos que todos los elementos
que lo componen son equiprobables entonces la probabilidad de un suceso A vendra
dada como
P(A) =
#(A)
#()
(1.1)
siendo # el cardinal del conjunto. Se comprueba con facilidad que es una medida
de probabilidad que verica la axiom atica previa. Es el modelo que corresponde al
concepto intuitivo de resultados equiprobables. Practicamente 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 con-
junto nito y numeramos sus elementos de 1 a n. Nuestro espacio muestral es
{1, . . . , n}. Veamos como extraer k elementos (con k n) sin reemplazamiento
de este conjunto. La funcion sample es la funcion basica. En el siguiente codigo
tenemos k = 6.
n <- 30
omega <- 1:n
sample(omega, size = 6, replace = FALSE)
## [1] 4 14 5 9 25 15
Ahora lo repetimos con reemplazamiento.
sample(omega, size = 6, replace = TRUE)
## [1] 28 2 6 26 2 7
1.2. Variable aleatoria
Supongamos el experimento consistente en elegir a una individuo al azar de la
Comunidad Valenciana. Obviamente el espacio muestral esta formado por los dis-
tintos individuos. Si los numeramos tendramos = {
i
}
N
i=i
donde N es el n umero
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
}) =
1
N
. Obvia-
mente cuando se elige una muestra de personas pensamos en alguna caracterstica
numerica de la misma por ejemplo su edad. Denotemos por X R la aplicacion
tal que X() es la edad de la persona . Puesto que el individuo es seleccionado
de un modo aleatorio, tambien sera aleatoria la cantidad X(). La aplicacion X
recibe el nombre de variable aleatoria. Si B es un subconjunto arbitrario de n umeros
reales entonces cualquier armacion de interes sobre la variable aleatoria X suele
poderse expresar como P({ : X() B}). Por ejemplo, si nos interesa la pro-
porcion 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, nito o si innito numerable. Si el conjunto de valores
que puede tomar lo denotamos por D entonces se dene la funcion de probabilidad
de X como P(X = x). En estas variables se tiene que
P(a X b) =

axb
P(X = x), (1.2)
para cualesquiera valores reales a b.
10
Una variable aleatoria se dice continua cuando
P(a X b) =
_
b
a
f(x)dx, (1.3)
para cualesquiera valores reales a b. La funcion f recibe el nombre de funcion
de densidad (de probabilidad) de la variable X.
De un modo generico cuando se habla de la distribucion de una variable aleatoria
X hablamos de las probabilidades P(X B) para cualquier subconjunto B de R.
Obviamente, para variables discretas,
P(X B) =

xB
P(X = x) (1.4)
y para variables continuas
P(X B) =
_
A
f(x)dx. (1.5)
En resumen, si conocemos la funcion de probabilidad o la de densidad conocemos
la distribucion de la variable.
1.2.1. Funcion de distribuci on
Se dene la funcion de distribucion de una variable aleatoria X como la funcion
real de variable real dada por
F(x) = P(X x) con x R. (1.6)
1.2.2. Media y varianza
Una variable suele describirse de un modo simple mediante su media y su va-
rianza. La media nos da una idea de alrededor de que valor se producen los va-
lores aleatorios de la variable mientras que la varianza cuantica la dispersion
de estos valores alrededor de la media. Se denen para variables discretas co-
mo: la media es EX = =

xD
xP(X = x); mientras que la varianza es
var(X) =
2
= E(X )
2
=

xD
(x )
2
P(X = x). Habitualmente ademas
de la varianza se suele utilizar para medir variabilidad la desviacion tpica dada por
=
_
var(X).
En variables continuas las deniciones de media y varianza son las analogas susti-
tuyendo sumatorios por integrales, de modo que la media se dene como EX = =
_
+

xf(x)dx mientras que la varianza sera var(X) =


2
=
_
+

(x )
2
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 distribucion 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 funcion de pro-
babilidad es dbinom, la funci on de distribucion es pbinom, la inversa de la funcion
de distribuci on que nos da los percentiles es qbinom y, nalmente, podemos gene-
rar datos con distribucion binomial mediante la funcion rbinom. Consideramos una
binomial con 10 pruebas y una probabilidad de exito en cada prueba de 0.23.
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
C
u
a
d
r
o
1
.
1
:
D
i
s
t
r
i
b
u
c
i
o
n
e
s
d
i
s
c
r
e
t
a
s
D
i
s
t
r
i
b
u
c
i
o
n
F
u
n
c
i
o
n
d
e
p
r
o
b
a
b
i
l
i
d
a
d
M
e
d
i
a
V
a
r
i
a
n
z
a
B
e
r
n
o
u
l
l
i
f
(
x
|
p
)
=
p
x
(
1

p
)
1

x
s
i
x
=
0
,
1
p
p
(
1

p
)
B
i
n
o
m
i
a
l
f
(
x
|
n
,
p
)
=
_
n x
_
p
x
(
1

p
)
n

x
s
i
x
=
0
,
1
,
.
.
.
,
n
n
p
n
p
(
1

p
)
H
i
p
e
r
g
e
o
m
e
t
r
i
c
a
f
(
x
|
A
,
B
,
n
)
=

A x


B
n

x


A
+
B
n

s
i
x
=
0
,
.
.
.
,
n
.
n
A
A
+
B
n
A
B
(
A
+
B

n
)
(
A
+
B
)
2
(
A
+
B

1
)
G
e
o
m
e
t
r
i
c
a
f
(
x
|
p
)
=
p
(
1

p
)
x
s
i
x
=
0
,
1
,
2
,
.
.
.
1

p
p
1

p
p
2
B
i
n
o
m
i
a
l
N
e
g
a
t
i
v
a
f
(
x
|
r
,
p
)
=
_
r
+
x

1
x
_
p
r
(
1

p
)
x
s
i
x
=
0
,
1
,
2
,
.
.
.
r
(
1

p
)
p
r
(
1

p
)
p
2
P
o
i
s
s
o
n
f
(
x
|

)
=
e

x
x
!
s
i
x
=
0
,
1
,
.
.
.

12
C
u
a
d
r
o
1
.
2
:
D
i
s
t
r
i
b
u
c
i
o
n
e
s
c
o
n
t
i
n
u
a
s
D
i
s
t
r
i
b
u
c
i
o
n
F
u
n
c
i
o
n
d
e
d
e
n
s
i
d
a
d
M
e
d
i
a
V
a
r
i
a
n
z
a
U
n
i
f
o
r
m
e
f
(
x
|

)
=
1

s
i

<
x
<

2
(

)
2
1
2
N
o
r
m
a
l
,
N
(

2
)
f
(
x
|

2
)
=
1

12
(
x

)
2
x

2
G
a
m
m
a
G
a
(

)
f
(
x
|

)
=

)
x

1
e

x
s
i
x
>
0
a

2
E
x
p
o
n
e
n
c
i
a
l
E
x
p
o
(

)
f
(
x
|

)
=
1
e
x
p

x
s
i
x

2
J
i
-
C
u
a
d
r
a
d
o

2
(

)
X

2
(

)
s
i
X

G
a
(
2
,
12
)

B
e
t
a
B
e
(

)
f
(
x
|

)
=

)
x

1
(
1

x
)

1
s
i
0
<
x
<
1

)
2
(

+
1
)
t
-
S
t
u
d
e
n
t
t
(

)
f
(
x
)
=

+
1
2
)

(
2
)
_
1
+
x
2

+
1
2

R
0
s
i

>
1

2
s
i

>
2
F
-
S
n
e
d
e
c
o
r
F
(
m
,
n
)
f
(
x
)
=

(
m
+
n
2
)

(
m
2
)

(
n2
)
m
m
/
2
n
n
/
2
x
m
/
2

1
(
m
x
+
n
)
(
m
+
n
)
/
2
s
i
x
>
0
n
(
n

2
)
s
i
n
>
2
2
n
2
(
m
+
n

2
)
m
(
n

2
)
2
(
n

4
)
s
i
n
>
4
W
e
i
b
u
l
l
(

)
f
(
x
|

)
=

1
e
x
p

(
x
)

s
i
x
>
0

(
1
)

(
2

(
2
)

2
(
1
)
)
L
o
g
n
o
r
m
a
l
X

N
(

2
)

e
X

L
N
(

2
)
a
L
a
f
u
n
c
i
o
n
g
a
m
m
a
s
e
d
e

n
e
c
o
m
o

)
=

0
x

1
e
x
p
{

x
}
d
x
,
q
u
e
e
x
i
s
t
e
y
e
s

n
i
t
a

>
0
13
De hecho podemos ver la forma que tiene esta funcion de probabilidad para todos
los valores posibles.
plot(dbinom(0:10, size = 10, prob = 0.23), xlab = "")
2 4 6 8 10
0
.
0
0
0
.
0
5
0
.
1
0
0
.
1
5
0
.
2
0
0
.
2
5
0
.
3
0
d
b
i
n
o
m
(
0
:
1
0
,

s
i
z
e

=

1
0
,

p
r
o
b

=

0
.
2
3
)
Es interesante ver como se modica la forma de la funcion de probabilidad cuan-
do modicamos 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
1
1
1
1
1
1
1
1
1 1 1
2 4 6 8 10
0
.
0
0
0
.
0
5
0
.
1
0
0
.
1
5
0
.
2
0
0
.
2
5
0
.
3
0
d
b
i
n
o
m
(
0
:
1
0
,

s
i
z
e

=

1
0
,

p
r
o
b

=

0
.
2
3
)
2 2 2
2
2
2
2
2
2
2
2
La funcion de distribucion 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
0 2 4 6 8 10
0
.
2
0
.
4
0
.
6
0
.
8
1
.
0
stepfun(0:10, c(pbinom(0:10, size = 10, prob = 0.23), 1))
x
f
(
x
)
La inversa de la funcion de distribucion, esto es, los cuantiles nos la dara
qbinom.
qbinom(0.3, size = 10, prob = 0.23)
## [1] 2
Podemos simular valores de la distribucion binomial con rbinom.
rbinom(5, size = 10, prob = 0.23)
## [1] 5 1 1 2 3
Nota de R 3 (Manejo de la distribucion Poisson) La funcion de densidad y
de distribucion las obtenemos con dpois y ppois.
dpois(0:60, lambda = 12)
## [1] 6.144e-06 7.373e-05 4.424e-04 1.770e-03 5.309e-03 1.274e-02 2.548e-02 4.368e-02
## [9] 6.552e-02 8.736e-02 1.048e-01 1.144e-01 1.144e-01 1.056e-01 9.049e-02 7.239e-02
## [17] 5.429e-02 3.832e-02 2.555e-02 1.614e-02 9.682e-03 5.533e-03 3.018e-03 1.574e-03
## [25] 7.872e-04 3.779e-04 1.744e-04 7.751e-05 3.322e-05 1.375e-05 5.498e-06 2.128e-06
## [33] 7.982e-07 2.902e-07 1.024e-07 3.512e-08 1.171e-08 3.797e-09 1.199e-09 3.689e-10
16
## [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 mo-
dicando el valor de que es su media y varianza de modo que un valor de mayor
se traduce en una densidad que toma valores mayores y mas dispersa.
plot(0:60, dpois(0:60, lambda = 12), xlab = "", pch = "1")
points(0:60, dpois(0:60, lambda = 24), xlab = "", pch = "2")
111
1
1
1
1
1
1
1
1
11
1
1
1
1
1
1
1
1
1
1
1
1111111111111111111111111111111111111
0 10 20 30 40 50 60
0
.
0
0
0
.
0
2
0
.
0
4
0
.
0
6
0
.
0
8
0
.
1
0
d
p
o
i
s
(
0
:
6
0
,

l
a
m
b
d
a

=

1
2
)
22222222222
2
2
2
2
2
2
2
2
2
2
2
2
22
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
222222222222222222222
Los cuantiles obtenidos como inversa de la funcion de distribucion se obtienen
qpois.
qpois(seq(0.1, 0.9, 0.1), lambda = 12)
## [1] 8 9 10 11 12 13 14 15 17
Y nalmente podemos generar valores con esta distribucion con rpois.
rpois(50, lambda = 12)
## [1] 10 8 16 9 12 13 11 12 9 11 9 17 17 6 12 12 12 14 15 14 18 10 15 12 20 9 9 13
## [29] 13 7 20 10 8 11 14 16 6 10 15 14 11 14 10 10 7 10 11 13 9 16
17
Nota de R 4 La funcion de densidad y de distribucion las obtenemos con dpois y
ppois.
dpois(0:60, lambda = 12)
## [1] 6.144e-06 7.373e-05 4.424e-04 1.770e-03 5.309e-03 1.274e-02 2.548e-02 4.368e-02
## [9] 6.552e-02 8.736e-02 1.048e-01 1.144e-01 1.144e-01 1.056e-01 9.049e-02 7.239e-02
## [17] 5.429e-02 3.832e-02 2.555e-02 1.614e-02 9.682e-03 5.533e-03 3.018e-03 1.574e-03
## [25] 7.872e-04 3.779e-04 1.744e-04 7.751e-05 3.322e-05 1.375e-05 5.498e-06 2.128e-06
## [33] 7.982e-07 2.902e-07 1.024e-07 3.512e-08 1.171e-08 3.797e-09 1.199e-09 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 mo-
dicando el valor de que es su media y varianza de modo que un valor de mayor
se traduce en una densidad que toma valores mayores y mas dispersa.
plot(0:60, dpois(0:60, lambda = 12), xlab = "", pch = "1")
points(0:60, dpois(0:60, lambda = 24), xlab = "", pch = "2")
111
1
1
1
1
1
1
1
1
11
1
1
1
1
1
1
1
1
1
1
1
1111111111111111111111111111111111111
0 10 20 30 40 50 60
0
.
0
0
0
.
0
2
0
.
0
4
0
.
0
6
0
.
0
8
0
.
1
0
d
p
o
i
s
(
0
:
6
0
,

l
a
m
b
d
a

=

1
2
)
22222222222
2
2
2
2
2
2
2
2
2
2
2
2
22
2
2
2
2
2
2
2
2
2
2
2
2
2
2
2
222222222222222222222
Los cuantiles obtenidos como inversa de la funcion de distribucion se obtienen
con qpois.
18
qpois(seq(0.1, 0.9, 0.1), lambda = 12)
## [1] 8 9 10 11 12 13 14 15 17
Y nalmente podemos generar valores con esta distribucion con rpois.
rpois(50, lambda = 12)
## [1] 10 16 11 13 8 13 14 12 13 6 7 12 10 14 13 15 12 17 10 10 12 7 10 16 16 5 6 11
## [29] 11 15 14 6 13 13 13 10 14 8 13 12 7 11 17 14 18 18 11 14 14 20
1.2.3. Teorema de Bayes
Tenemos el espacio muestral y una particion de dicho espacio, B
1
, . . . , B
k
, 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(B
i
| A) =
P(A | B
i
)P(B
i
)

k
j=1
P(A | B
j
)P(B
j
)
(1.7)
1.3. Vectores aleatorios
Supongamos X = (X
1
, . . . , X
d
) 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(x
1
, . . . , x
n
). Si X es discreto entonces f(x
1
, . . . , x
n
) =
P(X
1
= x
1
, . . . , X
n
= x
n
) 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 = (X
1
, . . . , X
d
) es un vector continuo entonces
P(a
1
X
1
b
1
, . . . , a
d
X
1
b
d
) =
_
b1
a1
. . .
_
b
d
a
d
f(x
1
, . . . , x
d
)dx
1
. . . dx
n
, (1.8)
para cualesquiera a
i
b
i
con i = 1, . . . , d.
En particular la distribucion del vector suele venir descrita mediante el vector
de medias y por la matriz de covarianzas.
Si para la i-esima variable X
i
consideramos la media
i
= EX
i
entonces el
vector de medias viene dado por

X
=
_

1
.
.
.

d
_

_
Si no hace falta indicar el vector X entonces denotaremos simplemente en lugar
de
X
.
Para cada par de variables X
i
y X
j
podemos considerar su covarianza denida
como
ij
= cov(X
i
, X
j
) = E(X
i
EX
i
)(X
j
EX
j
) = E(X
i
X
j
) EX
i
EX
j
.
Obviamente si X
i
= X
j
entonces cov(X
i
, X
i
) = var(X
i
), es decir, la covarianza
de una variable consigo misma es la varianza de la variable, es decir,
ii
= var(X
i
).
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
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 = (X
1
, . . . , X
d
)

e Y =
(Y
1
, . . . , Y
p
) denotaremos
cov(X, Y ) =
_

_
cov(X
1
, Y
1
) . . . cov(X
1
, Y
p
)
.
.
.
.
.
.
.
.
.
cov(X
d
, Y
1
) . . . cov(X
d
, Y
p
)
_

_
y sera la matriz de covarianzas entre dichos vectores.
Si los vectores X e Y son independientes se verica que cov(X, Y ) = 0.
Dado el vector X = (X
1
, . . . , X
d
)

podemos considerar la matriz de correla-


ciones que en la posicion (j, k) tiene el coeciente de correlacion entre las variables
X
i
y X
j
,
jk
=

jk

jjkk
, es decir,
P

=
_

_
1
12
. . .
1d
.
.
.
.
.
.
.
.
.
.
.
.

d1

d2
. . . 1
_

_
Obviamente, como la matriz de covarianzas, la matriz de correlaciones es simetrica
ya que
jk
=
kj
. Si denotamos por D

= diag(
11
, . . . ,
dd
) entonces tenemos que
P

= D

1
2

1
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 las y p columnas que son linealmente independientes). Tenemos un
vector aleatorio X con d componentes y consideramos el vector Y = Ax, esto es,
consideramos la transformacion lineal del vector X asociada a la matriz A. Entonces
se tiene que

Y
= E[Y ] = AE[X] = A
X
. (1.10)
y
cov(Y ) = cov(AX) = Acov(X)A

. (1.11)
1.4. Distribuci on normal multivariante
Veamos dos deniciones equivalentes.
Denicion 2 Sea Y = (Y
1
, . . . , Y
d
)

un vector aleatorio d-dimensional. Se dice que


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

1
2
(y )

1
(y )
_
, (1.12)
donde < y
j
< +, j = 1, . . . , d y = [
jk
] es una matriz denida positiva
( > 0).
20
Se puede probar que EY = y var(Y ) = y por ello se suele denotar
Y N
d
(, ). (1.13)
Se tiene que si Y
1
, . . . , Y
d
son variables aleatorias con distribucion normal indepen-
dientes con medias nulas y varianza com un
2
entonces se tiene que Y N
d
(0,
2
I
d
).
Teorema 1 Supongamos Y N
d
(, ) y sea
Y =
_
Y
(1)
Y
(2)
_
, =
_

(1)

(2)
_
, =
_

11

12

21

22
_
,
donde Y
(i)
y
(i)
son vectores d
i
1 y
ii
es una matriz d
i
d
i
(con d
1
+d
2
= d).
Se verican las siguientes propiedades:
1. Si C es una matriz q d de rango q entonces CY N
q
(C, CC

).
2. Cualquier subvector de Y tiene una distribucion normal multivariante. En
particular, se tiene que Y
(1)
N
d1
(
(1)
,
11
).
3. Y
(1)
e Y
(2)
son independientes si cov(Y
(1)
, Y
(2)
) = 0.
4. Si U
i
= A
i
Y (i = 1, . . . , m) y cov(U
i
, U
j
) = 0 para i = j entonces los distintos
vectores U
i
son independientes.
5. (Y )

1
(Y )
2
d
.
6. La distribucion condicionada de Y
(2)
, dado Y
(1)
= y
(1)
es N
d2
(
(2)
+
21

1
11
[y
(1)

(1)
],
22,1
) donde
22,1
=
22

21

1
11

12
.
Una segunda manera en que podemos denir la distribucion normal multiva-
riante es del siguiente modo.
Denicion 3 Y tiene una distribucion normal multivariante si a

Y =

d
i=1
a
i
Y
i
tiene una distribucion normal univariante para cualquier vector a = (a
1
, . . . , a
d
)

.
Si EY = and cov(Y ) = > 0 entonces Y N
d
(, ).
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)
z
Y
Z
22

2


0


2


2


2


2


2


2


2


2


2


2


2


2


2


2


2


2


2


4


4


4


4


4


4


4


4


4


4


4


4


4


4


4


4


4


4


4


4


4


4


4


4


6


6


6


6


6


6


6


6


6


6


6


6


6


6


6


6


6


6


6


6


6


6


6


6


6


6


6


6


6


6


8


8


8


8


8


8

8


8


8


8


8


8


8


8


8


8


8


8


8


8


8


8


8


8


8


8


8


8


8


8


8


8


8


1
0


1
0


1
0


1
0


1
0


1
0


1
0


1
0


1
0


1
0


1
0


1
0


1
0


1
0


1
0


1
0


1
0


1
0


1
0


1
0


1
0


1
0


1
0


1
0


1
0


1
0


1
0


1
0


1
2

1
2


1
2


1
2


1
2


1
2


1
2


1
2


1
2

0.0 0.2 0.4 0.6 0.8 1.0
0
.
0
0
.
2
0
.
4
0
.
6
0
.
8
1
.
0
Como generar valores normales multivariantes? Consideramos el vector de me-
dias 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
Solo pretendemos jar notaci on y recordar algunos de los conceptos basicos. Es
mas 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 sera 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 basica con el programa.
2.1. Algo de Estadstica Descriptiva, poco
Cuando tenemos un banco de datos lo primero y conveniente es describir de un
modo sencillo dichos datos, bien mediante unos res umenes numericos o bien median-
te unos res umenes gracos. Esto es lo que se conoce como Estadstica descriptiva.
Veamos alg un ejemplo para recordar estos conceptos.
Nota de R 6 (Analisis descriptivo de unos datos de hospitalizacion ambulatoria)
Vamos a realizar un analisis descriptivo de unos datos relativos a hospitalizacion
ambulatoria. Empezamos cargando el chero de datos.
load("../data/scoremaster")
Lo que acabamos de cargar es un data frame cuyo nombre es scoremaster. Hemos
de saber cuales son las variables que lo componen.
names(scoremaster)
## [1] "score" "eg1" "d1" "t1" "s1"
## [6] "score2" "eg2" "d2" "t2" "s2"
## [11] "score3" "eg3" "d3" "t3" "s3"
## [16] "score4" "score5" "especialidad" "intensidad" "tipoanes"
## [21] "asa" "sexo" "T.TOTALP" "T.QUIRUR" "edad"
Para poder trabajar con los nombres de las variables hemos de adjuntar el banco
de datos
attach(scoremaster)
Podemos ver los primeros diez valores de la variable score.
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 categoricas como puede ser la especia-
lidad o tipoanes (tipo de anestesia), otras son ordinales como score, score2, score3,
. . . mientras que otras son continuas como T.TOTALP o T.QUIRUR. Es intere-
sante utilizar la funcion extractora summary sobre un data frame.
summary(scoremaster)
## score eg1 d1 t1 s1 score2 eg2 d2 t2
## 3: 13 0: 18 0: 18 0: 50 0: 17 3 : 7 0 : 27 0 : 36 0 : 11
## 4: 89 1:545 1:360 1:359 1:307 4 : 33 1 :377 1 :359 1 : 59
## 5:199 2:359 2:544 2:513 2:598 5 :133 2 :359 2 :366 2 :691
## 6:276 6 :234 NA's:159 NA's:161 NA's:161
## 7:219 7 :192
## 8:126 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 categorica
nos muestra los conteos asociados a cada uno de los valores posibles (si hay muchas
categoras solo pone algunas y las demas las agrupa en una ultima categora). En
las variables numericas saca unas descriptivas numericas. Observemos la descriptiva
numerica de T.TOTALP.
summary(T.TOTALP)
## Min. 1st Qu. Median Mean 3rd Qu. Max.
## 900 6060 8790 9880 12400 35200
26
Nos aparece el mnimo, el primer cuartil (o percentil 0,25), la mediana, la media,
el tercer cuartil (o percentil 0,75) y el maximo de las observaciones.
Para una variable categorica podemos pedirle una tabla de frecuencias.
table(tipoanes)
## tipoanes
## General Plexo CAM
## 746 108 65
La tabla anterior es algo parca en su presentacion. Si queremos un diagrama de
barras (que es lo mismo pero en dibujo) lo podemos conseguir haciendo
barplot(table(tipoanes))
General Plexo CAM
0
1
0
0
2
0
0
3
0
0
4
0
0
5
0
0
6
0
0
7
0
0
2.2. Verosimilitud
Sea y = (y
1
, . . . , y
n
) una realizacion del vector aleatorio Y = (Y
1
, . . . , Y
n
). Es
habitual asumir que Y tiene una funcion de densidad conjunta f en una cierta
familia F. Para una funcion dada f, el valor f(y) nos muestra como vara la densidad
dentro del espacio muestral de valores posibles de y. Y viceversa, si consideramos
unos datos y y lo que hacemos variar es la funcion de densidad entonces estamos
27
viendo como de verosmil es cada una de las funciones dados los datos y. Esta funcion
recibe el nombre de verosimilitud de f dados los datos y y se suele denotar como
V erosimilitud[f; y] = L(f; y) = f(y). (2.1)
Con frecuenica, es conveniente trabajar con el logaritmo natural de la funcion an-
terior y hablaremos de la log-verosimilitud.
l[f; y] = log f(y). (2.2)
Una simplicacion adicional (que es habitual en las aplicaciones) supone que la
funcion de densidad f pertenece a una familia parametrica F, esto es, cada elemento
de la familia es conocido completamente salvo un n umero nito de parametros
= (
1
, . . . ,
p
) de modo que denotaremos f(y; ) o f
Y
(y; ). Al conjunto de valores
posibles de se le llama espacio parametrico y lo denotaremos por . En este
caso, la logverosimilitud es una funcion de y denotaremos
V erosimilitud[; y] = l(; y) = log f(y; ). (2.3)
Supongamos una transformacion 1-1 de Y a Z, Z = g(Y ). Las densidades de
ambos vectores se relacionan seg un la siguiente relacion
f
Z
(z) = f
Y
(y)

y
z

,
donde

y
z

es el jacobiano de la transformacion de z a y. Se tiene la siguiente relacion


entre las verosimilitudes
L
Z
(; z) =

y
z

L
Y
(; y).
Esto sugiere que es mejor trabajar con el cociente de las verosimilitudes para dos
vectores de parametros
1
y
2
en lugar de los valores aislados.
Si asumimos que los distintos Y
1
, . . . , Y
n
son independientes entonces
L
Y
(; y) = f
Y
(y) =
n

i=1
f
Yi
(y
i
),
y
l
y
(; y) =
n

i=1
log f
Yi
(y
i
) =
n

i=1
L
Yi
(; y
i
).
Veamos algunos ejemplos de verosimilitud.
Ejemplo 2 (Pruebas Bernoulli) Y
1
, . . . , Y
n
son independientes y con la misma
distribucion (i.i.d.) P(Y
i
= y
i
) =
yi
(1 )
1yi
y
L(; y) =

n
i=1
yi
(1 )
n

n
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. En-
tonces la variable correspondiente R tiene una distribucion binomial con n pruebas
y una probabilidad de exito . La verosimilitud viene dada por
L(; r) =
_
n
r
_

r
(1 )
nr
28
Ejemplo 4 (Muestreo Bernoulli inverso) Nuestros datos son ahora el n umero
total de pruebas necesarias para alcanzar un n umero previamente especicado de
exitos. La variable aleatoria correspondiente N tendra una distribucion binomial
negativa con r exitos y una probabilidad de exito . La funcion de verosimilitud
correspondiente viene dada por
L(; n) =
_
n 1
r 1
_

r
(1 )
nr
Consideremos los tres ejemplos anteriores 2, 3 y 4. Si consideramos dos valores del
parametro
1
y
2
entonces el cociente de las verosimilitudes calculados en ambos
valores tiene el mismo valor en los tres ejemplos.
2.3. 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
funcion de la muestra X
1
, . . . , X
n
que toma valores en el espacio parametrico.
Si (X
1
, . . . , X
n
) es un estimador del parametro entonces se dene el error
cuadratico medio como
MSE() = E[(X
1
, . . . , X
n
) ]
2
(2.4)
En el caso en que se verique que E(X
1
, . . . , X
n
) =

= , es decir, que el
estimador sea insesgado entonces:
MSE() = E[(X
1
, . . . , X
n
) ]
2
= E[(X
1
, . . . , X
n
)

]]
2
= var().
Y el error cuadratico medio no es mas que la varianza del estimador.
Consideremos la siguiente cadena de igualdades. Denotamos
MSE() = 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 MSE() lo podemos expresar como la suma de la varianza del estimador,
E[

]
2
, mas el sesgo al cuadrado, [

]
2
.
A la raz cuadrada de la varianza de un estimador, es decir, a su desviacion
tpica o estandar se le llama error estandar. La expresion error estandar se usa
en ocasiones indistintamente para referirse o bien dicha desviacion tpica o bien al
estimador de la misma.
2.3.1. Estimacion insesgada de media y varianza
Dada una muestra Y
1
, . . . , Y
n
de una variable. Un estimador habitualmente uti-
lizado para estimar = EY
i
es la media muestral dada por

Y =
1
n
n

i=1
Y
i
. (2.6)
Notemos que
E

Y = E[
1
n
n

i=1
Y
i
] =
1
n
n

i=1
EY
i
=
1
n
n

i=1
= .
En denitiva, la media muestral es un estimador que no tiene ning un sesgo cuando
estima la media de Y
i
(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
Y
1
, . . . , Y
n
se utiliza la varianza muestral dada por
S
2
=
1
n 1
n

i=1
(Y
i


Y )
2
. (2.7)
La razon de la division por n 1 en lugar de dividir por n viene de las siguientes
igualdades.
E
n

i=1
(Y
i


Y )
2
=
E
n

i=1
[(Y
i
) (

Y )
2
)]
2
=
n

i=1
E(Y
i
)
2
nE(

Y )
2
, (2.8)
pero E(Y
i
)
2
=
2
y E(

Y )
2
= var(

Y ) =
2
/n. En consecuencia,
E
n

i=1
(Y
i


Y )
2
= n
2


2
n
= n
2

2
= (n 1)
2
,
de donde,
ES
2
= E
1
n 1
n

i=1
(Y
i


Y )
2
=
2
,
es decir, S
2
estima la varianza
2
sin sesgo.
Nota de R 7 (Estimacion insesgada de media y varianza) Vamos a estimar
la media y la varianza de un modo insesgado. Empezamos leyendo los datos score-
master.
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 desviacion tpica muestral vienen dadas por
var(T.QUIRUR)
## [1] 3107898
sd(T.QUIRUR)
## [1] 1763
2.3.2. Estimacion insesgada del vector de medias y la matriz
de covarianzas
Ahora consideramos una muestra de un vector de dimension d, Y
1
, . . . , Y
n
i.i.d.
con vector de medias = EY
i
y matriz de covarianzas = cov(Y
i
). Los estima-
dores insesgados de y son las versiones multivariantes de la media y varianza
30
muestrales. Si
Y
i
=
_

_
Y
i1
.
.
.
Y
ip
_

_
Entonces podemos representar toda la muestra como la siguiente matriz
Y =
_

_
Y

1
.
.
.
Y

n
_

_ =
_

_
Y
11
. . . Y
1d
.
.
.
.
.
.
.
.
.
Y
n1
. . . Y
nd
_

_
mientras que los datos observados, la matriz de datos, vendra dada por
y =
_

_
y

1
.
.
.
y

n
_

_ =
_

_
y
11
. . . y
1d
.
.
.
.
.
.
.
.
.
y
n1
. . . y
nd
_

_
El vector de medias muestral viene dado por la siguiente expresion en terminos de
la matriz Y ,

Y =
1
n
n

i=1
Y
i
=
1
n
Y

1
n
. (2.9)
siendo 1
n
el vector n 1 con todos los valores iguales a uno. Tambien denotaremos

Y =
_

Y
1
.
.
.

Y
p
_

_
El estimador de la matriz de covarianzas (poblacional) sera la matriz de co-
varianzas muestral que tiene en la posicion (j, k) la covarianza muestral entre las
componentes j y k,
S
jk
=
1
n 1
n

i=1
(Y
ij


Y
j
)(Y
ik


Y
k
),
de modo que
S =
_

_
S
11
. . . S
1d
.
.
.
.
.
.
.
.
.
S
d1
. . . S
dd
_

_ =
1
n 1
n

i=1
(Y
i


Y )(Y
i


Y )

=
1
n 1
Q.
Es inmediato que E

Y = porque componente a componente hemos visto que se


verica la igualdad. A partir de los vectores Y
i
consideramos X
i
= Y
i
de modo
que se verica

X =

X . Se sigue que
n

i=1
(Y
i


Y )(Y
i


Y )

=
n

i=1
(X
i


X)(X
i


X)

=
n

i=1
X
i
X

i
n

X

X

.
Los vectores X
1
, . . . , X
n
tienen vector de medias nulo y matriz de covarianzas , la
misma que los Y
i
. En consecuencia, E

X

X

= y
EQ =
n

i=1
cov(Y
i
) n cov(

Y ) = n n cov(

Y ) = n n

n
= (n 1).
31
Tenemos pues que S es un estimador insesgado de la matriz .
Finalmente, si denotamos por r
jk
el coeciente de correlacion entre las variables
j y k, es decir,
r
jk
=

n
i=1
(Y
ij


Y
j
)(Y
ik


Y
k
)
_

n
i=1
(Y
ij


Y
j
)
2

n
i=1
(Y
ik


Y
k
)
2
=
S
jk
_
S
jj
S
kk
(2.10)
Denotaremos por R la matriz de correlaciones muestrales R = [r
jk
].
Nota de R 8 (Matrices de covarianza y correlacion muestrales) Vamos a es-
timar la media y la varianza de un modo insesgado. Empezamos leyendo los datos
scoremaster.
load("../data/scoremaster")
attach(scoremaster)
La covarianza y la correlacion muestrales entre el timepo total 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 maximo verosmil
El metodo de estimacion que vamos a utilizar en este curso el metodo de
maxima verosimilitud. El estimador maximo verosmil de , que denotaremos
por

, se obtienen maximizando la funcion de verosimilitud o, equivalentemente,
la transformacion monotona de dicha funcion que es la funcion de logverosimilitud.
Utilizaremos para denotar el estimador maximo verosmil la notacion inglesa MLE.
L(

) = max

L(), (2.11)
o tambien

= argmax

L(), (2.12)
32
Ejemplo 5 (Bernoulli) Se puede comprobar sin dicultad que p =

n
i=1
xi
n
.
Una propiedad importante de los estimadores maximo verosmiles consiste en
que si

= f() siendo f una biyeccion entonces el estimador maximo verosmil de

es verica que

= f(

). (2.13)
Ejemplo 6 (Normal) En este caso se comprueba que =

X
n
y que

2
=
n1
n
S
2
=
1
n

n
i=1
(X
i


X
n
)
2
. Teniendo en que cuenta la propiedad enunciada en 2.13 ten-
dremos que =
_
n1
n
S
2
.
En muchas situaciones la funcion L() es concava y el estimador maximo ve-
rosmil

es la solucion de las ecuaciones de verosimilitud
L(

= 0. Si cov(

)
denota la matriz de covarianzas de

entonces, para un tama no muestral grande y
bajo ciertas condiciones de regularidad (ver Rao [1967], pagina 364), se verica que
cov(

) es la inversa de la matriz de informacion cuyo elemento (j, k) viene dado


por
E
_

2
l()

k
_
(2.14)
Notemos que el error estandar de

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

. En resumen, es de esperar que este mas proximo
a

.
Ejemplo 7 (Binomial) Supongamos que una muestra en una poblacion nita y
consideremos como valor observado el n umero de exitos. Entonces la verosimilitud
sera
L(p) =
_
n
y
_
p
y
(1 p)
ny
, (2.15)
y la logverosimilitud viene dada como
l(p) = log
_
n
y
_
+y log p + (n y) log(1 p), (2.16)
La ecuacion de verosimilitud sera
l(p)
p
=
y
p

n y
1 p
=
y np
p(1 p)
. (2.17)
Igualando a cero tenemos que la solucion es p =
y
n
que no es mas que la proporcion
muestral de exitos en las n pruebas. La varianza asntotica sera
E
_

2
l(p)
p
2
_
= E
_
y
p
2
+
n y
(1 p)
2
_
=
n
p(1 p)
. (2.18)
En consecuencia asintoticamente p tiene varianza
p(1p)
n
lo cual era de prever pues
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
hipotesis siguiente.
H
0
:
0
(2.19)
H
1
:
1
(2.20)
Basandonos en una muestra aleatoria X
1
, . . . , X
n
hemos de tomar una decision.
Las decisiones a tomar son una entre dos posibles: (i) Rechazar la hipotesis nula o
bien (ii) no rechazar la hipotesis nula. Notemos que, una vez hemos tomado una
decision, podemos tener dos posibles tipos de error como recoge la siguiente tabla.
En las columnas indicamos la realidad mientras que en las las indicamos la decision
que tomamos.
H
0
H
1
Rechazamos H
0
Error tipo I
No rechazamos H
0
Error tipo II
Supongamos que R
n
es el conjunto de valores que puede tomar el vector aleatorio
(X
1
, . . . , X
n
). Entonces el contraste de hipotesis se basa en tomar un estadstico o
funcion de la muestra que denotamos (X
1
, . . . , X
n
) de modo que si (X
1
, . . . , X
n
)
C entonces rechazamos la hip otesis nula mientras que si (X
1
, . . . , X
n
) / C entonces
no rechazamos la hipotesis nula. Notemos que simplemente estamos particionando
el espacio muestral (que suponemos) R
n
en dos partes, C y C
c
, de modo que to-
mamos una decision basandonos en si el estadstico esta en C o bien esta en el
complementario de C. Al conjunto C se le suele llamar la region crtica. La funcion
potencia se dene como
() = P( C|). (2.21)
Contraste de la media en la poblaciones normales
Si tenemos una muestra X
1
, . . . , X
n
de una poblacion normal con media y
varianza
2
donde ambos parametros se asumen desconocidos un test habitualmente
considerado es si la media toma un valor dado. El test formalmente planteado sera:
H
0
: =
0
, (2.22)
H
1
: =
0
. (2.23)
Siendo S
2
=

n
i=1
(Xi

X)
2
n1
, el estadstico habitualmente utilizado es el siguiente
T =

X
0
S/

n
.
Bajo la hipotesis nula este estadstico sigue una distribucion t de Student con n1
grados de libertad,
T t(n 1).
Si suponemos que trabajamos con un nivel de signicacion la region crtica en la
cual rechazamos la hipotesis nula sera
|T| > t
n1,1

2
.
34
2.5.1. Test del cociente de verosimilitudes
El cociente de verosimilitudes para contrastar estas hipotesis se dene como
=
max
0
L()
max

L()
(2.24)
Es razonable pensar que en la medida en que tome valores menores entonces
la hipotesis alternativa sea mas plausible que la hipotesis nula y por lo tanto re-
chacemos la hipotesis nula. Realmente se suele trabajar con 2 log pues bajo
la hipotesis 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 L
0
= max
0
L() y L
1
= max

L() entonces
=
L0
L1
y
2 log = 2 log
L
0
L
1
= 2(l
0
l
1
) (2.25)
siendo l
0
y l
1
los logaritmos de L
0
y L
1
respectivamente que tambien corresponden
con los maximos de la logverosimilitud sobre
0
y sobre .
2.5.2. Test de Wald
Supongamos que el es un parametro y

denota su estimador maximo verosmil.
Supongamos que queremos contrastar las siguientes hipotesis:
H
0
: =
0
, (2.26)
H
1
: =
0
. (2.27)
Denotamos por SE(

) el error estandar bajo la hipotesis alternativa de



. Entonces
el estadstico
z =


0
SE(

)
(2.28)
tiene, bajo la hipotesis nula, aproximadamente una distribucion normal estandar,
z N(0, 1). Este tipo de estadsticos donde se utiliza el error estandar del estimador
bajo la hipotesis alternativa recibe el nombre de estadstico de Wald.
Supongamos que es un vector de parametros y queremos contrastar las hipote-
sis dadas en 2.26. La version multivariante del estadstico dado en 2.28 viene dada
por
W = (


0
)

[cov(

)]
1
(


0
), (2.29)
donde cov(

) se estima como la matriz de informacion observada en el MLE



. La
distribucion asintotica de W bajo la hipotesis nula es una distribucion ji-cuadrado
donde el n umero de grados de libertad coincide con el n umero de parametros no
redundantes en .
2.5.3. Intervalos de conanza
Empezamos recordando el concepto de intervalo de conanza con un ejemplo
muy conocido como es la estimacion de la media en poblaciones normales.
Ejemplo 8 (Intervalo de conanza para la media de una normal) Veamos-
lo con un ejemplo y luego planteamos la situacion mas general. Tenemos una mues-
tra aleatoria X
1
, . . . , X
n
i.i.d. tales que X
i
N(, 2). Entonces es conocido que

X
n

S/

n
t
n1
. (2.30)
35
Vemos como

Xn
S/

n
depende tanto de la muestra que conocemos como de un parame-
tro (la media ) que desconocemos. Fijamos un valor de (habitualmente tomare-
mos = 0,05) y elegimos un valor t
n1,1/2
tal que
P(t
n1,1/2

X
n

S/

n
t
n1,1/2
) = 1 . (2.31)
La ecuaci on anterior la podemos reescribir como
P(

X
n
t
n1,1/2
S

n


X
n
+t
n1,1/2
S

n
) = 1 . (2.32)
Tenemos una muestra aleatoria X
1
, . . . , X
n
y por lo tanto tenemos un intervalo alea-
torio dado por [

X
n
t
n1,1/2
S

n
,

X
n
+ t
n1,1/2
S

n
]. Este intervalo tiene una
probabilidad de 1 de contener a la verdadera media. Tomemos ahora la muestra
y consideremos no los valores aleatorios de

X
n
y de S
2
sino los valores observados
x
n
y s. Tenemos ahora un intervalo [ x
n
t
n1,1/2
s

n
, x
n
+t
n1,1/2
s

n
] jo. 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 conanza de 1 de con-
tener a la verdadera media. Al intervalo [ x
n
t
n1,1/2
s

n
, x
n
+t
n1,1/2
s

n
] se
le llama intervalo de conanza para con nivel de conanza 1 .
Vamos a ver un planteamiento mas general del problema.
Supongamos que tenemos un test para contrastar la hipotesis simple H
0
: =
0
frente a la alternativa H
1
: =
0
. Supongamos que elegimos un nivel de signica-
cion 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 . Es-
te conjunto es un conjunto de conanza al nivel 1 . Cuando el conjunto de
conanza es un intervalo hablamos de intervalo de conanza.
Supongamos que consideramos el test del cociente de verosimilitudes. Denotemos
por
2
k
(1 ) el percentil 1 de una distribucion ji-cuadrado con k grados de
libertad. Entonces el intervalo de conanza al nivel 1 sera el conjunto
{
0
: 2[l(
0
) l(

)] <
2
k
(1 )} (2.33)
Consideremos ahora un test de Wald. En este caso, el intervalo de conanza de
Wald vendra dado por el siguiente conjunto:
{
0
:
|


0
|
SE(

)
< Z
1/2
} (2.34)
donde SE(

) es el error estandar 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 sig-
nica reducir la dimension? Responder a esta pregunta es obvio si nos jamos en los
datos que tenemos. Trabajando con expresion de genes tenemos tantas las como
genes y tantas columnas como muestras. En resumen miles de las y decenas o cen-
tenares de columnas. En temas anteriores hemos visto como seleccionar las, esto
es, seleccionar genes es una tarea incluso previa. Hemos de quedarnos con genes que
tengan una expresion 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 variacion. Que hacemos con las columnas? O de otro modo:
que hacemos con las muestras? Quizas la respuesta natural sera: si tenemos miles
de las, por que preocuparse de unas decenas de las? 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 jamos 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 1.0 0.5 0.0 0.5 1.0 1.5 2.0

1
.
5

1
.
0

0
.
5
0
.
0
0
.
5
1
.
0
1
.
5
golub.red[,1]
g
o
l
u
b
.
r
e
d
[
,
2
]
Para la la i (para el gen i) denotamos las expresiones observadas en las dos
muestras como x
i
= (x
i1
, x
i1
). Tenemos n las y por lo tanto nuestros datos son x
i
con i = 1, . . . , n.
Vamos a repetir el dibujo anterior mostrando el nombre del gen.
38
1.5 1.0 0.5 0.0 0.5 1.0 1.5 2.0

1
.
5

1
.
0

0
.
5
0
.
0
0
.
5
1
.
0
1
.
5
Primera muestra
S
e
g
u
n
d
a

m
u
e
s
t
r
a
CCND2 Cyclin D2
CDK2 Cyclindependent kinase 2
CCND3 Cyclin D3
CDKN1A Cyclindependent kinase inhibitor 1A (p21, Cip1)
CCNH Cyclin H
Cyclindependent kinase 4 (CDK4) gene
Cyclin G2 mRNA
Cyclin A1 mRNA
Cyclinselective ubiquitin carrier protein mRNA
CDK6 Cyclindependent kinase 6
Cyclin G1 mRNA
CCNF Cyclin F
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 = ( x
1
, x
2
) donde
x
j
=
n

i=1
x
ij
n
es decir, cada componente es la media de las componentes. En resumen el primer
valor es la expresion media en la primera muestra para todos los genes. Podemos
calcular facilmente el vector de medias. Una funcion especca 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 gura 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 1.0 0.5 0.0 0.5 1.0 1.5

1
.
0

0
.
5
0
.
0
0
.
5
1
.
0
1
.
5
golub.red[,1]
g
o
l
u
b
.
r
e
d
[
,
2
]
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 (las) corresponden a las expresiones correspondientes a los ge-
nes. 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 unico 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) a
1
= (a
11
, a
12
) de modo que en
lugar de utilizar x
i
consideremos (el resumen) u
i
= a
11
x
i1
+a
12
x
i2
. Que a
1
elegi-
mos? La idea es lograr que los valores u
i
tengan la mayor variabilidad que se pueda
con objeto de no perder informacion. Mantener la variabilidad original indica que
mantenemos la informacion que los datos originales tienen. En concreto se elige a
1
40
de modo que maximizamos
1
n
n

i=1
(u
i
u)
2
.
El vector a
1
nos indica la direcci on sobre la cual proyectamos los datos originales.
Las proyecciones sobre a
1
, los valores u
i
son la mejor descripcion univariante de los
datos.
La segunda mejor descripcion que sea ortogonal a la anterior seran las proyec-
ciones 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 proyecta-
mos.
1.5 1.0 0.5 0.0 0.5 1.0 1.5

1
.
0

0
.
5
0
.
0
0
.
5
1
.
0
1
.
5
golub.red[,1]
g
o
l
u
b
.
r
e
d
[
,
2
]
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 1.0 0.5 0.0 0.5 1.0 1.5

1
.
0

0
.
5
0
.
0
0
.
5
1
.
0
1
.
5
golub.red[,1]
g
o
l
u
b
.
r
e
d
[
,
2
]
Y nalmente podemos ver las proyecciones. En verde mostramos las proyecciones
sobre la primera componente.
42
1.5 1.0 0.5 0.0 0.5 1.0 1.5

1
.
0

0
.
5
0
.
0
0
.
5
1
.
0
1
.
5
golub.red[,1]
g
o
l
u
b
.
r
e
d
[
,
2
]
Y ahora consideremos la proyeccion sobre la segunda componente.
43
1.5 1.0 0.5 0.0 0.5 1.0 1.5

1
.
0

0
.
5
0
.
0
0
.
5
1
.
0
1
.
5
golub.red[,1]
g
o
l
u
b
.
r
e
d
[
,
2
]
Los valores de estas proyecciones los obtenemos con
predict(a.pca)
## PC1 PC2
## [1,] -2.50309 -1.542e-01
## [2,] 0.01369 -2.024e-01
## [3,] -2.38702 3.714e-03
## [4,] 0.33490 -6.847e-05
## [5,] 0.76608 2.806e-01
## [6,] 0.27145 2.900e-02
## [7,] 0.31170 -2.876e-01
## [8,] 2.22052 -8.232e-02
## [9,] -0.93221 1.837e-01
## [10,] -0.39946 -7.240e-03
## [11,] 0.08294 3.192e-01
## [12,] 2.22052 -8.232e-02
Las desviaciones estandar 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
Como de variables son nuestros datos? Podemos cuanticar el total de la va-
riacion 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 proporcion 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 ne-
cesitamos utilizar dos n umeros por gen si con uno tenemos esencialmente la misma
informacion.
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 signicado 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 desviacion estandar) de las nuevas variables sea la unidad.
Diferentes criterios podemos aplicar a la hora de decidir con cuantas componen-
tes nos quedamos.
1. Uno puede ser la proporcion total explicada. Fijar un nivel mnimo y quedar-
nos 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
estandar menor que una de las variables originales. Si hemos escalado cada
variable original dividiendo por su desviacion estandar entonces la desviacion
estandar de cada componente ha de ser mayor que uno.
3. Otro criterio puede ser ver en que momento se produce un descenso de la
desviacion estandar 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 compo-
nentes. 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 que-
damos con las cinco primeras componentes estamos explicando un 80.44 % de la
variacion 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 la).
46
a[1, ]
## PC1 PC2 PC3 PC4 PC5 PC6 PC7 PC8 PC9
## -7.037558 -1.611153 -0.580508 0.008742 0.538498 0.217864 0.095230 -0.918847 0.512902
## PC10 PC11 PC12 PC13 PC14 PC15 PC16 PC17 PC18
## 0.863368 -0.199101 -0.661874 0.098494 1.167026 -0.080884 0.019310 0.311826 -0.734193
## PC19 PC20 PC21 PC22 PC23 PC24 PC25 PC26 PC27
## 0.484427 -0.413978 0.861061 0.412109 -0.169220 -0.042500 0.392160 -0.810611 -0.724087
## PC28 PC29 PC30 PC31 PC32 PC33 PC34 PC35 PC36
## -0.022861 -0.267373 0.223251 0.004499 -0.066890 -0.420015 0.043023 0.325942 -0.095873
## PC37 PC38
## 0.451057 0.873975
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")
5 0 5 10 15 20

5
0
5
Primera componente
S
e
g
u
n
d
a

c
o
m
p
o
n
e
n
t
e
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 coecientes muy parecidos, todos positivos. Basicamente
tenemos la media muestral de todos los niveles de expresion en las 38 muestras. La
primera componente es basicamente 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 coecientes vemos que las primeros 27 valores son positivos y
los 11 ultimos son negativos. Ademas no hay una gran diferencia entre los 27 prime-
ros y tampoco entre los 11 ultimos. 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 experi-
mentales de un modo generico, se tiende a recoger el maximo de variables posible.
En consecuencia tenemos dimensiones del vector de caractersticas X grandes.
Una opcion consiste en sustituir la observacion original, de dimension d, por k
combinaciones lineales de las mismas. Obviamente pretendemos que k sea mucho
menor que d. El objetivo es elegir k de modo que expresen una proporcion razo-
nable de la dispersion o variacion total cuanticada 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 = (t
1
, t
2
, . . . , t
d
) (los t
i
indican la i-esima columna de la
matriz) la matriz ortogonal tal que
T

T = = diag(
1
, . . . ,
d
), (3.1)
donde
1

2
. . .
d
0 son los valores propios de la matriz . Sea
Y = T

(X ). (3.2)
Si denotamos la j-esima componente de Y como Y
j
entonces Y
j
= t

j
(X ) con
j = 1, . . . , d. A la variable Y
j
la llamamos la j-esima componente principal de
Y . La variable Z
j
=
_

j
Y
j
es la j-esima componente principal estandarizada
de Y .
Estas componentes tienen algunas propiedades de gran interes.
Notemos que el vector t
j
tiene longitud unitaria y, por lo tanto, Y
j
no es mas
que la proyeccion ortogonal de X en la direccion t
j
.
Proposicion 1 1. Las variables Y
j
son incorreladas y var(Y
j
) =
j
.
48
2. Las variables Z
j
son incorreladas y con varianza unitaria.
Demostraci on.
En cuanto al apartado primero tenemos que
var(Y ) = var(T

(X ) = T

var(Y )T = T

T = .
El segundo apartado es directo a partir del primero.

Se verica el siguiente resultado.


Teorema 2 Las componentes principales Y
j
= t

j
(X ) con j = 1, . . . , d tienen
las siguientes propiedades:
1. Para cualquier vector a
1
de longitud unitaria, var(a

1
X) alcanza su valor maxi-
mo
1
cuando a
1
= t
1
.
2. Para cualquier vector a
j
de longitud unitaria tal que a

j
t
i
= 0 para i =
1, . . . , j 1, se tiene que var(a

j
X toma su valor maximo
j
cuando a
j
= t
j
.
3.

d
j=1
var(Y
j
) =

d
j=1
var(X
j
) = traza().
La version muestral de las componentes principales la obtenemos sustituyendo en
lo anterior y por

X y

respectivamente. Es importante considerar el estimador
de que estamos utilizando (o bien el estimador insesgado donde dividimos por
n 1 o bien el estimador en donde dividimos por n).
Si denotamos por

1
. . .

d
los valores propios ordenados de

y la matriz

T = (

t
1
, . . . ,

t
d
) es la matriz tal que cada columna es el correspondiente vector propio
entonces tenemos las componentes principales muestrales dadas por y
j
=

T

(x
i
x).
La nueva matriz de datos viene dada por
Y

= (y
1
, . . . , y
n
) =

T

(x
1
x, . . . , x
n
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 co-
rrespondiente matriz de correlaciones. De hecho, una de los inconvenientes de las
componentes principales como un modo de reducir la dimension de los datos es preci-
samente que obtenemos resultados distintos si utilizamos las componentes principa-
les obtenidas a partir de la matriz de covarianzas o bien las componentes principales
obtenidas a partir de la matriz de correlaciones.
A partir de las d variables originales podemos obtener hasta d componentes prin-
cipales. Sin embargo, hemos dicho que pretendemos reducir la dimension del vector
de datos. La pregunta a responder es: con cuantas componentes nos quedamos?
Supongamos que estamos trabajando con la matriz de covarianzas . Hemos
de recordar que var(y
j
) =
j
y que

d
j=1
var(x
j
) =

d
j=1
var(y
j
) =

d
j=1

j
. En
consecuencia se suelen considerar los siguientes cocientes

k
j=1

d
j=1

j
, con k = 1, . . . , d,
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 Wi-
lliams [2010].
49
50
Captulo 4
Analisis cluster
En este tema vamos a tratar lo que en la literatura estadstica recibe el nombre de
analisis cluster
1
o, en mejor castellano, analisis de conglomerados. En la literatura
de Inteligencia Articial se utiliza la expresion clasicacion 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 ja 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 estan jugando con todos y los grupos son una consecuencia pasajera del juego
(delanteros y defensas que aparecen agrupados en un ataque)?
Parece claro y simple el problema. S, lo parece. Que es un grupo? Como
deno un grupo? Cuantos grupos distingo en los datos? Estamos viendo el efecto
del ruido o realmente hay una estructura debajo que la vemos en un entorno con
ruido.
Que quiere decir encontrar grupos? Se trata de clasicar 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 tie-
nen un modelo probabilstico debajo, no son procedimientos basados en modelo. Son
metodos que esencialmente utilizan el concepto de proximidad. Valoran de distintas
formas lo proximos, lo cercanos que estan los puntos, dentro de un mismo grupo
y entre distintos grupos. Es pues, el primer punto a tratar: como cuanticamos
lo cerca o lejos que estan los distintos puntos? En la seccion 4.2 nos ocupamos de
este punto. Tambien sera necesario, como veremos en el tema, valorar cuando dos
conjuntos de puntos son mas o menos parecidos, proximos, similares. En la misma
seccion nos ocupamos de ello. Supongamos que ya hemos clasicado 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 clasicado. Esto nos permita valorar si nuestro procedimiento clasica
bien o no. Aqu no vamos a tener esta referencia que nos da la muestra de entrena-
miento. Como 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 analisis discriminante (como es de esperar si tenemos menos
informacion para trabajar). Lo estudiamos en la seccion 4.5.
Entre los muchos procedimientos de obtener los grupos a partir de los datos,
los mas utilizados son dos tipos: procedimientos jerarquicos y metodos de parti-
cionamiento. De los jerarquicos nos ocupamos en la seccion 4.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
seccion 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 x
i
con i = 1, . . . n siendo x
i
= x
i1
, . . . , x
id
.
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 co-
rrespondientes a distribuciones bivariates normales. La matriz de covarianzas va-
mos 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 X
i
N
d
(
i
, I
22
. Vamos a ge-
nerar 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
0 2 4 6 8
0
2
4
6
8
x1[,1]
x
1
[
,
2
]
Se ve que hay tres grupos pero estos no estan muy claramente delimitados. No-
sotros no disponemos de esta informacion. Conocemos los valores que componen los
vectores de datos pero no conocemos el grupo al que podra pertenecer cada uno de
ellos. Tampoco tenemos porque tener prejado el n umero de grupos. Los datos son
articiales pero ilustran bien el problema.
Nota de R 10 (Un ejemplo articial: los datos Ruspini) Son unos datos co-
nocidos, los datos Ruspini. Estan en el paquete cluster ?. Cargamos el paquete y los
datos.
library(cluster)
data(ruspini)
Representamos los puntos que pretendemos clasicar.
plot(ruspini)
53
0 20 40 60 80 100 120
0
5
0
1
0
0
1
5
0
x
y
Son datos bivariantes. Visualmente vemos como se agrupan los puntos. Parece
claro que podemos distinguir cuatro grupos.
Nota de R 11 (Un ejemplo con los datos golub) Empezamos cargando los da-
tos.
library(multtest)
data(golub)
Previamente hemos visto que los valores de expresion de los genes CCND3
Cyclin D3 y Zyxin permiten diferenciar entre ALL y AML. Localicemos las ex-
presiones 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 las. 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 sera un segundo ejemplo para analizar. Veamos los datos.
plot(cz.data)
0.5 0.0 0.5 1.0 1.5 2.0 2.5

1
0
1
2
CCND3 Cyclin D3
Z
y
x
i
n
En este caso las observaciones corresponden a las muestras y las variables son
los niveles de expresion de dos genes. Hay grupos? Esto no son datos articiales
como los de Ruspini y ya no es tan claro.
4.2. Disimilaridades
4.2.1. Disimilaridades entre observaciones
Empezamos tratando el problema de cuanticar el grado de proximidad, de
similaridad entre dos puntos en el espacio de dimension d. Tradicionalmente este
tema en Matematicas se ha formalizado a traves del concepto de distancia o metrica.
Una metrica es una funcion que a cada par de puntos x, y R
d
le asocia un valor
positivo de modo que cuando mayor es mas distantes son, mas alejados estan. Como
siempre la formalizacion matematica de un concepto intuitivo ha de ser prudente
y pedir que se veriquen ciertos axiomas que resulten razonables y generalmente
55
admisibles. En concreto la funcion d denida en el espacio producto R
d
R
d
se dice
que es una metrica si verica:
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 R
d
.
Las distancias mas utilizadas en analisis cluster son la distancia eucldea y la dis-
tancia de Manhattan. Para dos vectores x e y (en R
d
) entonces la distancia eucldea
se dene como
d(x, y) =

_
d

k=1
(x
k
y
k
)
2
, (4.1)
con x, y R
d
. La distancia de Manhattan viene dada por
d(x, y) =
d

k=1
|x
k
y
k
|. (4.2)
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
estan igualmente escaladas estas distancias pueden pesar mas unas variables que
otras no por lo diferentes que sean entre los individuos sino simplemente por su
escala.
Con mucha frecuencia nos encontramos trabajando con variables que a un siendo
continuas estan medidas en escalas muy diversas o bien tenemos variables que son
continuas, otras que son binarias, otras categoricas con mas de dos categoras o bien
variable ordinales. En resumen, todos los posibles tipos de variables simultaneamen-
te considerados. Es lo habitual. Una variable binaria la codicamos habitualmente
como 1 y 0 indicando presencia o ausencia del atributo que estemos consideran-
do. En una variable categorica la codicacion 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 verique las propiedades anteriores. Son demasiado exigentes estas
propiedades. Lo que se hace es proponer medidas entre los vectores de caractersti-
cas que tienen algunas de las propiedades y son, ademas, razonables. Por ello no
hablaremos, en general, de una distancia o una metrica, sino de una medida de
disimilaridad. Finalmente, valores grandes estaran asociados con vectores de carac-
tersticas que tienen una mayor diferencia. Se han propuesto distintas medidas de
disimilaridad entre variables cualitativas (binarias simetricas o asimetricas, cuali-
tativas, ordinales) y cuantitativas. En lo que sigue comentamos con alg un detalle
la que lleva la funcion daisy de la librera cluster ?. Es una opcion muy generica y
razonable.
Consideramos el problema cuando solo tenemos un tipo de variable. Finalmente
combinaremos todo en una sola medida de disimilaridad.
Supongamos descrita al individuo o caso mediante d variables binarias. Es natu-
ral construir la tabla de contingencia 22 que aparece en la tabla 4.1 donde las las
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 calculo de estas y otras distancias. Tambien
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 B A+B
0 C D C+D
A+C B+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
estan en i pero s que estan en j.
El total de variables binarias es de d = A+B+C+D. Basandonos en esta tabla
se pueden denir distintas medidas de disimilaridad. Vamos a considerar dos situa-
ciones distintas. En la primera trabajamos con variables binarias simetricas y otra
para variables binarias no simetricas. Una variable binaria es simetrica cuando las
dos categoras que indica son intercambiables, cuando no tenemos una preferencia
especial en que resultado lo codicamos como 1 y que resultado codicamos como
0. Un ejemplo frecuente es el sexo de la persona. Si las variables son todas bina-
rias simetricas es natural utilizar como disimilaridad el coeciente de acoplamiento
simple denido como
d(i, j) =
B +C
A+B +C +D
= 1
A+D
A+B +C +D
.
La interpretacion de esta medida de disimilaridad es simple. Dos individuos son
tanto mas 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
mas es com un, estan mas proximas, que dos personas que no lo tienen. Supongamos
que codicamos 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 signicativo que
un acoplamiento negativo o acoplamiento 0-0 por lo que A, n umero de acoplamientos
positivos, ha de tener mas peso que d o n umero de acoplamientos negativos. El mas
conocido es el coeciente de Jaccard que se dene como
d(i, j) =
B +C
A+B +C
= 1
A
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 mas 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) =
d u
d
.
Finalmente veamos como tratar las variables ordinales. Lo que haremos para va-
riables de este tipo es transformarlas al intervalo [0, 1]. Si x
ij
denota la j-esima
variable del i-esimo individuo entonces consideramos la transformacion
y
ik
=
x
ik
1
M
k
1
57
siendo 1, . . . , M
k
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 cate-
goras sea mayor esta transformacion tendra mas sentido.
Hemos visto como tratar cada tipo de variable aisladamente. El problema es
combinar todas ellas en una sola medida de disimilaridad. La funcion daisy del
paquete cluster ? utiliza la siguiente medida:
d(i, j) =

d
k=1

(k)
ij
d
(k)
ij

d
k=1

(k)
ij
, (4.3)
donde:

(k)
ij
vale uno cuando las medidas x
ik
y x
jk
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;
el valor d
(k)
ij
es lo que contribuye a la disimilaridad entre i y j la variable k.
Si la variable k es binaria o categorica entonces d
(k)
ij
es denida como
d
(k)
ij
= 1 si x
ik
= x
jk
y 0 en otro caso.
Si la variable k es numerica entonces
d
(k)
ij
=
|x
ik
x
jk
|
R
k
siendo R
k
el rango de la variable k denido como
R
k
= max
h
x
hk
mn
h
x
hk
donde h vara entre todos los individuos con valor no faltante de la va-
riable k.
Si todas las variables son categoricas entonces 4.3 nos da el n umero de acoplamientos
del total de pares disponibles, en denitiva, el coeciente de acoplamiento simple. Si
todas son variables binarias simetricas entonces obtenemos otra vez el coeciente de
acoplamiento simple. Si las variables son binarias asimetricas entonces obtenemos
el coeciente de Jaccard. Cuando todas las variables con las que trabajamos son
numericas la medida de disimilaridad es la distancia de Manhattan donde cada
variable esta normalizada.
Dado un conjunto de datos x
i
con i = 1, . . . , n tendremos, utilizando algunas
de las medidas de disimilaridades comentadas, una matriz de dimension n n que
tiene en la posicion (i, j) la disimilaridad entre x
i
y x
j
, d(i, j): [d(i, j)]
i,j=1,...,n
.
Con esta matriz cuanticamos la disimilaridad que hay entre los elementos ori-
ginales de la muestra. Algunos de los procedimientos de agrupamiento que vamos
a considerar en lo que sigue no necesitan conocer los datos originales. Pueden apli-
carse con solo conocer esta matriz de disimilaridades. Otros no. Otros utilizan los
datos a lo largo de las distintas etapas de aplicacion del procedimiento.
4.2.2. Disimilaridades entre grupos de observaciones
En algunos procedimientos de agrupamiento (en particular, los jerarquicos) va-
mos a necesitar calcular disimilaridades entre conjuntos disjuntos de las observa-
ciones originales. Estas disimilaridades las podemos calcular a partir de las disi-
milaridades 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 denir una disimilaridad entre A y B partiendo de las disimilaridades
entre los datos individuales? Se han propuesto muchos procedimientos. Si denota-
mos la disimilaridad entre A y B como d(A, B) entonces las disimilaridades mas
habitualmente utilizadas son las siguientes:
Enlace simple La disimilaridad entre los dos grupos es el mnimo de las disimi-
laridades entre las observaciones de uno y de otro. Tomamos la disimilaridad
de los objetos que mas se parecen en uno y otro grupo.
d(A, B) = mn
aA,bB
d(a, b)
Enlace completo Ahora tomamos como disimilaridad entre los grupos como el
maximo de las disimilaridades, en denitiva, la disimilaridad entre los objetos
mas alejados o mas distintos.
d(A, B) = max
aA,bB
d(a, b)
Promedio La disimilaridad es el promedio de las disimilaridades entre todos los
posibles pares.
d(A, B) =
1
|A| |B|

aA,bB
d(a, b)
donde |A| es el cardinal del conjunto A.
Es importante notar que solamente necesitamos conocer las disimilaridades entre
los individuos para poder calcular las disimilaridades entre grupos de individuos.
En la siguiente seccion nos vamos a ocupar de los metodos jerarquicos en los
cuales es fundamental el procedimiento que elijamos para calcular distintas entre
grupos.
4.3. Cluster jerarquico
La idea de estos procedimientos es construir una jerarqua de particiones del
conjunto de ndices.
Sea {1, . . . , n} el conjunto de ndices que indexan las distintas observaciones.
Supongamos que {C
1
, . . . , C
r
} es una particion de este conjunto de ndices:
C
i
{1, . . . , n}; son disjuntos dos a dos, C
i
C
j
= si i = j con i, j = 1, . . . , n
y

r
i=
C
i
= {1, . . . , n}.
Dada una particion del conjunto de ndices podemos calcular la matriz r r que
en la posicion (i, j) tiene la disimilaridad entre el conjunto C
i
y C
j
, d(C
i
, C
j
) seg un
alguno de los procedimientos antes indicados.
Veamos los procedimientos jerarquicos aglomerativos. En estos procedimientos
vamos a iniciar el agrupamiento con la particion: C
i
= {i} con i = 1, . . . , n, es
decir, cada grupo es un individuo. En cada iteracion vamos agrupando el par de
conjuntos (elementos de la particion que tengamos en esa iteracion) que esten mas
proximos seg un la disimilaridad entre grupos que estemos utilizando. El proceso
contin ua hasta que tengamos un unico 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 C
i
= {i} con i = 1, . . . , n. En un principio,
cada dato es un grupo.
Paso 1 Calculamos las disimilaridades entre los elementos de la particion. Para
ello utilizamos cualquiera de los procedimientos antes indicados.
Paso 2 Agrupamos los dos conjuntos de la particion mas proximos y dejamos los
demas conjuntos igual. Tenemos ahora C
i
con i = 1, . . . , k.
Paso 3 Si tenemos un solo conjunto en la particion paramos el procedimiento.
Paso 4 Volvemos al paso 1.
Hay una representacion graca muy utilizada para describir los resultados de
un cluster jerarquico aglomerativo como el que acabamos de describir. Esta repre-
sentacion tiene el nombre de dendograma. En el dendograma se va mostrando
a que valor de la medida de disimilaridad se produce la union de los grupos y si-
multaneamente que grupos se estan uniendo para esa disimilaridad. Tambien nos
permite una valoracion rapida de cuantos grupos puede haber en el banco de datos.
Simplemente trazando una linea horizontal a la altura en que tengamos el n umero
de grupos que pensamos que puede haber.
Nota de R 12 Veamos un ejemplo de analisis cluster. Los datos han sido obteni-
dos de esta pagina. Tenemos cuatro variables que nos dan las puntuaciones obte-
nidas 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 analisis cluster jer arquico utilizando la funcion agnes del paquete
cluster.
y.ag <- agnes(y)
Veamos el dendograma.
plot(y.ag, which = 2)
60
1
1
4
2
0
1
5
2
21
8
1
6
4
6
2
4
8
2
1
2
1
9
5
2
1
2
3
1
1
1
7
9
37
2
5
1
0
1
3
0
.
0
0
.
5
1
.
0
1
.
5
2
.
0
2
.
5
3
.
0
Dendrogram of agnes(x = y)
Agglomerative Coefficient = 0.84
y
H
e
i
g
h
t
Observando el dendograma parece razonable considerar tres grupos.
@
Nota de R 13 (Un ejemplo con votos republicanos) Veamos un analisis clus-
ter jerarquico. Los datos son los porcentajes de votas que recibio el candidato repu-
blicano en las elecciones americanas entre los a nos 1856 y1976. Cada observacion
corresponde a un estado y las variables corresponden con las distintas elecciones.
library(cluster)
data(votes.repub)
agn1 <- agnes(votes.repub, metric = "manhattan", stand = TRUE)
El dendograma sera el siguiente
plot(agn1, which = 2)
61
A
l
a
b
a
m
a
G
e
o
r
g
i
a
A
r
k
a
n
s
a
s
L
o
u
i
s
i
a
n
a
M
i
s
s
i
s
s
i
p
p
i
S
o
u
t
h

C
a
r
o
l
i
n
a
A
l
a
s
k
a
V
e
r
m
o
n
t
A
r
i
z
o
n
a
M
o
n
t
a
n
a
N
e
v
a
d
a
C
o
l
o
r
a
d
o
I
d
a
h
o
W
y
o
m
i
n
g
U
t
a
h
C
a
l
i
f
o
r
n
i
a
O
r
e
g
o
n
W
a
s
h
i
n
g
t
o
n
M
i
n
n
e
s
o
t
a
C
o
n
n
e
c
t
i
c
u
t
N
e
w

Y
o
r
k
N
e
w

J
e
r
s
e
y
I
l
l
i
n
o
i
s
O
h
i
o
I
n
d
i
a
n
a
M
i
c
h
i
g
a
n
P
e
n
n
s
y
l
v
a
n
i
a
N
e
w

H
a
m
p
s
h
i
r
e
W
i
s
c
o
n
s
i
n
D
e
l
a
w
a
r
e
K
e
n
t
u
c
k
y
M
a
r
y
l
a
n
d
M
i
s
s
o
u
r
i
N
e
w

M
e
x
i
c
o
W
e
s
t

V
i
r
g
i
n
i
a
I
o
w
a
S
o
u
t
h

D
a
k
o
t
a
N
o
r
t
h

D
a
k
o
t
a
K
a
n
s
a
s
N
e
b
r
a
s
k
a
M
a
i
n
e
M
a
s
s
a
c
h
u
s
e
t
t
s
R
h
o
d
e

I
s
l
a
n
d
F
l
o
r
i
d
a
N
o
r
t
h

C
a
r
o
l
i
n
a
T
e
n
n
e
s
s
e
e
V
i
r
g
i
n
i
a
O
k
l
a
h
o
m
a
H
a
w
a
i
i
T
e
x
a
s
0
2
0
4
0
6
0
8
0
Dendrogram of agnes(x = votes.repub, metric = "manhattan", stand = TRUE)
Agglomerative Coefficient = 0.8
votes.repub
H
e
i
g
h
t
Pasamos ahora la matriz de distancias cambiamos el procedimiento para el calcu-
lo de las disimilaridades entre grupos.
agn2 <- agnes(daisy(votes.repub), diss = TRUE, method = "complete")
plot(agn2, which = 2)
62
A
l
a
b
a
m
a
G
e
o
r
g
i
a
L
o
u
i
s
i
a
n
a
A
r
k
a
n
s
a
s
F
l
o
r
i
d
a
T
e
x
a
s
M
i
s
s
i
s
s
i
p
p
i
S
o
u
t
h

C
a
r
o
l
i
n
a
A
l
a
s
k
a
M
i
c
h
i
g
a
n
C
o
n
n
e
c
t
i
c
u
t
N
e
w

Y
o
r
k
N
e
w

H
a
m
p
s
h
i
r
e
I
n
d
i
a
n
a
O
h
i
o
I
l
l
i
n
o
i
s
N
e
w

J
e
r
s
e
y
P
e
n
n
s
y
l
v
a
n
i
a
M
i
n
n
e
s
o
t
a
N
o
r
t
h

D
a
k
o
t
a
W
i
s
c
o
n
s
i
n
I
o
w
a
S
o
u
t
h

D
a
k
o
t
a
K
a
n
s
a
s
N
e
b
r
a
s
k
a
A
r
i
z
o
n
a
N
e
v
a
d
a
M
o
n
t
a
n
a
O
k
l
a
h
o
m
a
C
o
l
o
r
a
d
o
I
d
a
h
o
W
y
o
m
i
n
g
U
t
a
h
C
a
l
i
f
o
r
n
i
a
O
r
e
g
o
n
W
a
s
h
i
n
g
t
o
n
M
i
s
s
o
u
r
i
N
e
w

M
e
x
i
c
o
W
e
s
t

V
i
r
g
i
n
i
a
D
e
l
a
w
a
r
e
K
e
n
t
u
c
k
y
M
a
r
y
l
a
n
d
N
o
r
t
h

C
a
r
o
l
i
n
a
T
e
n
n
e
s
s
e
e
V
i
r
g
i
n
i
a
H
a
w
a
i
i
M
a
i
n
e
M
a
s
s
a
c
h
u
s
e
t
t
s
R
h
o
d
e

I
s
l
a
n
d
V
e
r
m
o
n
t
0
5
0
1
0
0
1
5
0
2
0
0
2
5
0
Dendrogram of agnes(x = daisy(votes.repub), diss = TRUE, method = "complete")
Agglomerative Coefficient = 0.88
daisy(votes.repub)
H
e
i
g
h
t
Nota de R 14 Consideremos los datos ruspini. Apliquemos un cluster jerarquico
aglomerativo utilizando como disimilaridad entre grupos el promedio de las disimi-
laridades 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
1
23
5
4
68
7
9
1
01
4
1
5
1
7
1
6
1
8
1
9
1
1
1
2
1
3
2
0
6
1
6
2
6
6
6
3
6
4
6
8
6
5
6
7
6
9
7
0
7
17
2
7
5
7
3
7
4
2
1
2
2
2
3
2
4
2
7
2
8
2
9
3
0
2
5
2
6
3
2
3
5
3
1
3
6
3
94
0
3
3
3
4
3
7
3
8
4
1
4
2
4
3
4
4
4
5
4
9
5
1
5
3
5
0
5
4
5
2
5
5
5
6
5
7
5
9
6
0
5
8
4
6
4
7
4
8
0
2
0
4
0
6
0
8
0
1
0
0
Dendrogram of agnes(x = ruspini, metric = "euclidean", method = "average")
Agglomerative Coefficient = 0.95
ruspini
H
e
i
g
h
t
Supongamos que decidimos quedarnos con cuatro grupos. Las clasicaciones 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 clasicado en un grupo.
plot(ruspini, col = cutree(ruspini.ag, 4))
64
0 20 40 60 80 100 120
0
5
0
1
0
0
1
5
0
x
y
Un procedimiento jerarquico aglomerativo tiene interes cuando el banco de datos
no tiene muchos individuos. En otro caso es muy difcil de interpretar un dendo-
grama o de seleccionar el n umero de grupos que hay. En todo caso lo hemos de ver
como un analisis exploratorio para decidir el n umero de grupos y posteriormente
utilizar alg un metodo de particionamiento como los que vamos a ver.
4.4. Metodos de particionamiento
Suponemos ahora que tenemos una idea de cuantos grupos hay. Posiblemente
hemos realizado un analisis jerarquico previo con todos los datos o, si eran muchos,
con una seleccion aleatoria de los datos. Tenemos pues una idea de cuantos grupos
tendremos que considerar. Obviamente podemos luego evaluar los resultados modi-
cando el n umero de grupos. En principio, vamos a suponer que jamos el n umero
de grupos a considerar. Suponemos pues que sabemos el n umero de grupos y lo
denotamos por k.
4.4.1. Metodo de las k-medias
El primer procedimiento que vamos a ver es el metodo de las k-medias (que por
alguna extra na razon en la literatura de Inteligencia Articial se le llama de las
c-medias lo que demuestra que cada persona copia a sus amigos o, simplemente,
conocidos). Supongamos que tenemos C
1
, . . . , C
k
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

i=1

jCi
d
E
(x
j
, x
Ci
)
2
, (4.4)
donde d
E
denota aqu la distancia eucldea y
x
Ci
=
1
|C
i
|

jCi
x
j
, (4.5)
es el vector de medias del grupo cuyos ndices estan en C
i
. 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
identica con un procedimiento concreto para encontrar el mnimo de la funcion.
Aqu entendemos el procedimiento como la minimizacion de la funcion objetivo.
De hecho, R ofrece hasta cuatro posibles procedimientos de los muchos que cabe
proponer. Hay que diferenciar claramente el procedimiento del metodo de aplicacion
del mismo, del metodo de obtencion de dicho mnimo.
Es importante darnos cuenta de que el procedimiento que acabamos de ver
esta basado en la utilizacion de la distancia eucldea y en que, dado un grupo,
podemos calcular el vector de medias y esto solo lo podemos hacer si todas las
variables son cuantitativas.
Nota de R 15 Aplicamos el k-medias.
ruspini.km <- kmeans(ruspini, 4)
Las clasicaciones 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)
0 20 40 60 80 100 120
0
5
0
1
0
0
1
5
0
x
y
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 clasicaciones 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
0.5 0.0 0.5 1.0 1.5 2.0 2.5

1
0
1
2
CCND3 Cyclin D3
Z
y
x
i
n
Supongamos que probamos con tres grupos.
cz.km <- kmeans(cz.data, 3)
plot(cz.data, col = cz.km$cluster)
68
0.5 0.0 0.5 1.0 1.5 2.0 2.5

1
0
1
2
CCND3 Cyclin D3
Z
y
x
i
n
Y nalmente con cuatro.
cz.km <- kmeans(cz.data, 4)
plot(cz.data, col = cz.km$cluster)
69
0.5 0.0 0.5 1.0 1.5 2.0 2.5

1
0
1
2
CCND3 Cyclin D3
Z
y
x
i
n
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? Como promediar dos conguraciones de puntos distintas? Como
promediamos dos formas distintas descritas numericamente? Cuando el concepto de
promedio aritmetico no tiene sentido podemos generalizar el procedimiento anterior
y hablar de (perdon por el neologismo) de k-mediodes.
La idea ahora es sustituir esos centros calculados como vectores de medias de
los individuos de un mismo grupo por individuos bien centrados, por individuos
tpicos, que sustituyan a las medias.
Supongamos que tomamos k individuos de la muestra que denotamos por m
i
con i = 1, . . . , k. Particionamos la muestra en k grupos de modo que el grupo C
i
esta formado por los individuos mas proximos a m
i
que a cualquier otro m
j
con
j = i,
C
i
= {l : d(l, i) = mn
j=i
d(l, j)}.
Consideremos la siguiente cantidad:
k

i=1

jCi
d(j, m
i
). (4.6)
En el metodo de particionamiento alrededor de los mediodes nos planteamos encon-
trar las observaciones m
1
, . . . , m
k
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)
0 20 40 60 80 100 120
0
5
0
1
0
0
1
5
0
x
y
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
0.5 0.0 0.5 1.0 1.5 2.0 2.5

1
0
1
2
CCND3 Cyclin D3
Z
y
x
i
n
Supongamos que probamos con tres grupos.
cz.pam <- pam(cz.data, 3)
plot(cz.data, col = cz.pam$cluster)
72
0.5 0.0 0.5 1.0 1.5 2.0 2.5

1
0
1
2
CCND3 Cyclin D3
Z
y
x
i
n
Y nalmente con cuatro.
cz.pam <- pam(cz.data, 4)
plot(cz.data, col = cz.pam$cluster)
73
0.5 0.0 0.5 1.0 1.5 2.0 2.5

1
0
1
2
CCND3 Cyclin D3
Z
y
x
i
n
4.5. Silueta
Veamos como se construye la silueta. Para la observacion i y el grupo C consi-
deramos

d(i, C) =
1
|C|

jC
d(i, j),
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
grupo A, a(i) =

d(i, A). Obviamente estamos asumiendo que A contiene al menos
otro objeto. Consideremos

d(i, C) para todos los grupos C = A y seleccionemos el
que tiene el mnimo valor:
b(i) = mn
C=A

d(i, C).
74
Cuadro 4.2: Silueta media y estructura en un conjunto de datos
SC Interpretacion
0,71 1,00 Fuerte estructura
0,51 0,70 Estructura razonable
0,26 0,50 Estructura debil. Probar otros metodos
0,25 No se encuentra estructura
El grupo B donde se alcanza este mnimo, es decir,

d(i, B) = b(i) se le llama vecino
del objeto i.
3
Denimos s(i) como
s(i) = 1
a(i)
b(i)
si a(i) < b(i), (4.7)
= 0 si a(i) = b(i), (4.8)
=
b(i)
a(i)
1 si a(i) > b(i). (4.9)
Esto se puede expresar en una unica ecuacion como
s(i) =
b(i) a(i)
max{a(i), b(i)}
.
En el caso en que el grupo A contenga un unico objeto no esta muy claro como
denir 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 signicado de s(i) es bueno ver los valores extremos. Si s(i)
es proximo a uno signica que a(i) es mucho menor que b(i) o lo que es lo mismo,
que el objeto i esta bien clasicado pues la disimilaridad con los de su propio grupo
es mucho menor que la disimilaridad con los del grupo mas proximo que no es el
suyo. Un valor proximo a cero signica que a(i) y b(i) son similares y no tenemos
muy claro si clasicarlo en A o en B. Finalmente un valor de s(i) proximo a 1
signica que a(i) es claramente mayor que b(i). Su disimilaridad media con B es
menor que la que tiene con A. Estara mejor clasicado en B que en A. No esta bien
clasicado.
Los valores de s(i) apareceran representados para cada cluster en orden decre-
ciente. Para cada objeto se representa una barra horizontal con longitud propor-
cional al valor s(i). Una buena separacion entre grupos o cluster viene indicada
por unos valores positivos grandes de s(i). Ademas de la representacion graca se
proporciona un analisis descriptivo. En concreto la media de los valores de la silueta
dentro de cada cluster y la media de la silueta para todo el conjunto de datos. La
clasicacion sera 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.
Cuando 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 gracamente.
plot(silhouette(ruspini.pam))
Silhouette width s
i
0.0 0.2 0.4 0.6 0.8 1.0
Silhouette plot of pam(x = ruspini, k = 4)
Average silhouette width : 0.74
n = 75
4 clusters C
j
j : n
j
| ave
iCj
s
i
1 : 20 | 0.73
2 : 23 | 0.75
3 : 17 | 0.67
4 : 15 | 0.80
Nota de R 20 (cz.data) Para estos datos vamos a evaluar el procedimiento k-
medias.
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 = dist(cz.data)) :
## 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. Max.
## 0.0113 0.3480 0.5220 0.4530 0.6000 0.6700
plot(silhouette(cz.km$cluster, dist(cz.data)))
26
4
15
13
16
2
12
19
5
14
20
10
25
17
18
6
21
3
1
24
11
22
8
27
23
9
7
38
35
29
31
28
33
34
37
30
36
32
Silhouette width s
i
0.0 0.2 0.4 0.6 0.8 1.0
Silhouette plot of (x = cz.km$cluster, dist = dist(cz.data))
Average silhouette width : 0.45
n = 38
4 clusters C
j
j : n
j
| ave
iCj
s
i
1 : 11 | 0.53
2 : 12 | 0.42
3 : 11 | 0.38
4 : 4 | 0.58
4.6. Un ejemplo completo
Nota de R 21 (Un analisis completo de ALL) En esta seccion vamos a ver
un analisis 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 BCR/ABL E2A/PBX1 NEG NUP-98 p15/p16
## 10 37 5 74 1 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 mo-
lecular.
ALLs <- ALL[, selSamples]
No vamos a trabajar con todos los genes. En lugar de ello vamos a ltrar aten-
diendo a criterios basados en sus niveles de expresion. Quizas podramos decir que
ltramos de acuerdo con criterios estadsticos. Obviamente otro ltraje de genes
podra basarse en criterios biologicos atendiendo a alg un conocimiento previo sobre
los mismos.
En concreto los criterios estadsticos seran que el nivel medio de expresion 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 verica 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 las son tales que esta media (calculada para cada
gen) es mayor que el valor log
2
(100).
s1 <- (m1 > log2(100))
Cuantos genes verican este criterio?
table(s1)
## s1
## FALSE TRUE
## 9186 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 verican y no la condicion.
table(s2)
## s2
## FALSE TRUE
## 9118 3507
78
Podemos ver la tabla de contingencia en donde mostramos el n umero de genes
que verican 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 verican los dos criterios.
Notemos que s1 es TRUE cuando se verica la primera condicion y s2 es TRUE
cuando se verica la segunda. Mediante el signo | indicamos la interseccion, esto
es, ha de darse la primera y la segunda.
ALLs <- ALLs[s1 | s2, ]
Podemos ver el n umero de las y columnas de ALLs para comprobar que vamos
bien.
dim(ALLs)
## Features Samples
## 3762 15
Y vamos bien.
Vamos a considerar tambien que los niveles de expresion sean sucientemente
variables. En concreto la condicion sera que la desviacion absoluta respecto de la
mediana (o simplemente mad) supere un cierto valor. Primero hemos de calcular la
desviacion absoluta respecto de la mediana de cada la.
gen.mad <- apply(exprs(ALLs), 1, mad)
En concreto nos quedamos con los genes que tienen un valor de la desviacion
absoluta respecto de la mediana superior a 1.4.
ALLs <- ALLs[gen.mad > 1.4, ]
Otra vez, veamos que datos tenemos.
dim(ALLs)
## Features Samples
## 58 15
Pocos. No tenemos muchos ahora. Mejor. Menos problemas para clasicar.
Vemos un cluster jerarquico aglomerativo de los genes.
genes.ag <- agnes(exprs(ALLs))
plot(genes.ag, which = 2)
79
1
0
6
5
_
a
t
3
4
5
8
3
_
a
t
4
0
4
6
8
_
a
t
3
2
1
8
4
_
a
t
4
1
4
0
1
_
a
t
3
8
0
3
7
_
a
t
4
1
7
7
9
_
a
t
1
1
1
8
_
a
t
3
1
4
7
2
_
s
_
a
t
3
5
1
2
7
_
a
t
3
8
4
1
3
_
a
t
3
3
3
5
8
_
a
t
3
6
8
7
3
_
a
t
3
7
5
5
8
_
a
t
3
7
2
8
3
_
a
t
9
3
1
_
a
t
3
7
8
0
9
_
a
t
3
6
5
7
5
_
a
t
5
4
7
_
s
_
a
t
3
7
2
5
1
_
s
_
a
t
3
4
7
2
1
_
a
t
4
1
4
7
0
_
a
t
1
1
5
0
_
a
t
4
1
5
7
7
_
a
t
3
7
7
0
1
_
a
t
3
3
2
7
4
_
f
_
a
t
4
1
8
2
7
_
f
_
a
t
3
9
9
2
9
_
a
t
3
8
1
9
4
_
s
_
a
t
4
0
1
1
7
_
a
t
3
8
5
1
4
_
a
t
3
9
3
1
8
_
a
t
1
6
7
5
_
a
t
3
2
1
1
1
_
a
t
4
0
6
1
5
_
a
t
3
3
2
1
9
_
a
t
3
6
5
1
1
_
a
t
3
5
9
9
5
_
a
t
3
2
0
3
5
_
a
t
3
5
9
6
1
_
a
t
4
0
9
3
6
_
a
t
3
8
6
0
4
_
a
t
2
6
6
_
s
_
a
t
3
6
9
4
1
_
a
t
3
7
2
2
5
_
a
t
4
0
7
2
6
_
a
t
3
7
4
9
3
_
a
t
4
0
0
8
8
_
a
t
3
8
0
5
2
_
a
t
3
3
4
1
2
_
a
t
4
0
3
6
5
_
a
t
4
0
3
9
6
_
a
t
3
9
1
8
2
_
a
t
A
F
F
X

B
i
o
D
n

5
_
a
t
4
0
9
5
1
_
a
t
3
8
5
8
5
_
a
t
3
8
3
5
5
_
a
t
3
1
5
2
5
_
s
_
a
t
0
5
1
0
1
5
Dendrogram of agnes(x = exprs(ALLs))
Agglomerative Coefficient = 0.75
exprs(ALLs)
H
e
i
g
h
t
O un analisis jerarquico de las muestras. Observemos que aplicamos la funcion
agnes a la matriz transpuesta de las expresiones t(exprs(ALLs)).
muestras.ag <- agnes(t(exprs(ALLs)))
plot(muestras.ag, which = 2)
80
0
4
0
0
6
2
6
0
0
8
1
5
0
0
4
1
6
0
0
4
3
1
0
0
7
1
9
0
0
5
2
4
0
0
5
2
8
0
2
8
2
8
0
3
2
6
3
0
0
1
0
8
0
1
8
2
4
0
1
9
2
8
0
0
3
L
A
L
5
3
6
0
0
1
6
8
1
0
1
2
1
4
1
6
1
8
2
0
Dendrogram of agnes(x = t(exprs(ALLs)))
Agglomerative Coefficient = 0.51
t(exprs(ALLs))
H
e
i
g
h
t
81
82
Captulo 5
Analisis discriminante o de
como clasicar con muestra
de entrenamiento
Discriminar es clasicar. Es una palabra mal vista. Cuando una persona le dice a
otra: Usted me discrimina esta indicando algo negativo en la medida en que piensa
que lo esta separando para perjudicarle. Se asume la discriminacion como algo que
se realiza en un sentido negativo. Pues no. El analisis discriminante simplemente se
reere al problema de clasicar en distintos grupos un conjunto de observaciones
vectoriales. Clasicar 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 clasicar 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 clasicacion que pretende hacer bien y clasicar
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 infecto y le causo 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 torax) y, por ello, una complicacion adicional. En la realizacion del test
se han recogido la presencia o ausencia de una serie de aminoacidos. Tenemos que
nuestro vector de caractersticas son variables binarias o dicotomicas y pretendemos
poder decidir a partir de ellas si la persona esta sana sin anticuerpos, sana con
anticuerpos o nalmente enferma utilizando la presencia o ausencia de los distintos
anticuerpos. Este es un segundo problema de interes a tratar aqu.
Pretendemos clasicar 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 ca-
da individuo con los que trabajamos. Esto hace bastante natural el nombre mas
83
utilizado en el contexto de la Informatica de clasicacion supervisada.
Nota de R 22 (Cristales en la orina) Tenemos pacientes de los cuales se co-
nocen algunas variables obtenidas de un analisis de orina. En concreto las variables
nos dan la gravidez especca (grav), la osmolaridad (osmo), la conductibilidad (con-
duc), la concentracion de urea (urea) y la concentracion de calcio (calcio). Tambien
tenemos una variable que nos indica la presencia o ausencia de cristales en la orina
del individuo (grupo donde 1 indica ausencia y 2 indica presencia). El problema
que nos planteamos es dise nar un procedimiento de clasicacion de modo que, dado
el vector de caractersticas de la orina, nos permita clasicar 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 informacion que ya tenemos,
esto es, conocemos para una serie de individuos si tiene o no cristales y los vectores
de caractersticas asociados. En una observacion futura tendremos el vector de ca-
ractersticas pero no conoceremos la clasicacion. Leemos los datos de un chero 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 GRUPO GRAV PH OSMO CONDUC UREA CALCIO
## 2 2 ausencia de cristales 1.017 5.74 577 20.0 296 4.49
## 3 3 ausencia de cristales 1.008 7.20 321 14.9 101 2.36
## 4 4 ausencia de cristales 1.011 5.51 408 12.6 224 2.15
## 5 5 ausencia de cristales 1.005 6.52 187 7.5 91 1.16
## 6 6 ausencia de cristales 1.020 5.27 668 25.3 252 3.34
## 7 7 ausencia de cristales 1.012 5.62 461 17.4 195 1.40
Incluimos un analisis descriptivo de los datos.
summary(x)
## IND GRUPO GRAV PH OSMO
## Min. : 2.0 ausencia de cristales :44 Min. :1.00 Min. :4.76 Min. : 187
## 1st Qu.:21.0 presencia de cristales:33 1st Qu.:1.01 1st Qu.:5.53 1st Qu.: 410
## Median :40.0 Median :1.02 Median :5.94 Median : 594
## Mean :40.3 Mean :1.02 Mean :6.04 Mean : 614
## 3rd Qu.:60.0 3rd Qu.:1.02 3rd Qu.:6.40 3rd Qu.: 803
## Max. :79.0 Max. :1.04 Max. :7.94 Max. :1236
## CONDUC UREA CALCIO
## Min. : 5.1 Min. : 10 Min. : 0.17
## 1st Qu.:14.3 1st Qu.:159 1st Qu.: 1.45
## Median :21.4 Median :255 Median : 3.16
## Mean :20.9 Mean :262 Mean : 4.16
## 3rd Qu.:27.0 3rd Qu.:362 3rd Qu.: 6.19
## Max. :38.0 Max. :620 Max. :14.34
84
Nota de R 23 (Diabetes) Los datos corresponden a una serie de personas de
las cuales conocemos informacion que previsiblemente nos permitira predecir si son
diabeticos o no. Incluso dentro de los diabeticos pretendemos discriminar (distin-
guir) entre diabetes clnica y diabetes maniesta. La variable tipo nos indica en
que grupo esta la persona observada de los tres grupos indicados. El resto de varia-
bles nos describen al paciente: peso es el peso relativo, gpb es la glucosa plasmatica
en ayunas, garea el area bajo la curva de la glucosa, iarea el area bajo la curva de
insulina y sspg la glucosa plasmatica en estado estacionario. Pretendemos clasicar
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 PESO GPB GAREA IAREA SSPG TIPO LIAREA
## 1 1 0.81 80 356 124 55 control 4.820
## 2 2 0.95 97 289 117 76 control 4.762
## 3 3 0.94 105 319 143 105 control 4.963
## 4 4 1.04 90 356 199 108 control 5.293
## 5 5 1.00 90 323 240 143 control 5.481
## 6 6 0.76 86 381 157 165 control 5.056
Veamos un breve analisis descriptivo de los datos.
summary(x)
## IND PESO GPB GAREA IAREA SSPG
## Min. : 1 Min. :0.710 Min. : 70 Min. : 269 Min. : 10 Min. : 29
## 1st Qu.: 37 1st Qu.:0.880 1st Qu.: 90 1st Qu.: 352 1st Qu.:118 1st Qu.:100
## Median : 73 Median :0.980 Median : 97 Median : 413 Median :156 Median :159
## Mean : 73 Mean :0.977 Mean :122 Mean : 544 Mean :186 Mean :184
## 3rd Qu.:109 3rd Qu.:1.080 3rd Qu.:112 3rd Qu.: 558 3rd Qu.:221 3rd Qu.:257
## Max. :145 Max. :1.200 Max. :353 Max. :1568 Max. :748 Max. :480
## 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
El captulo esta organizado del siguiente modo. Empezamos (seccion 5.1) recor-
dando el teorema de Bayes con un ejemplo muy simple de urnas (no funerarias).
De este modo vemos la idea basica del metodo de clasicacion basado en probabi-
lidades 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 parametros conocidos
1
. En la seccion 5.3 abordamos la situacion con dos pobla-
ciones 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 plan-
teamos la estimacion de los vectores de medias y las matrices de covarianzas y
vemos la implementacion practica del metodo. El problema de la reduccion de la
dimension dentro del problema de la clasicacion es considerado en la seccion 5.7
1
En datos reales los par ametros no son conocidos.
85
5.1. Un problema de probabilidad sencillo
Veamos un problema de probabilidad basico que nos servira para introducir el
procedimiento de clasicacion 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
aplicacion del teorema de Bayes (ver 1.2.3). Denotamos B
i
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 B
i
seran P(B
i
) = 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 | B
1
) = 1/3 y P(A | B
2
) = 2/3. Esta informacion se puede
combinar aplicando el teorema de Bayes para determinar la probabilidad de que sea
la primera o la segunda urna la elegida sabiendo (teniendo pues una informacion
adicional sobre el experimento) que ha salido blanca. En concreto tenemos que
P(B
i
| A) =
P(A|Bi)P(Bi)

k
j=1
P(A|Bj)P(Bj)
. Finalmente podemos comprobar que P(B
1
| A) =
1/3 y P(B
2
| A) = 2/3.
Las probabilidades P(B
1
) y P(B
2
) reciben el nombre de probabilidades a
priori. Vamos a denotarlas en lo que sigue por
i
, esto es, la probabilidad de la urna
i. Nuestra informacion consiste en la ocurrencia del suceso A (la bola ha sido blanca)
de modo que las probabilidades P(A | B
1
) y P(A | B
2
) seran las verosimilitudes
de que ocurra lo que ha ocurrido si la urna es la primera o la segunda. Finalmente
tenemos P(B
1
| A) y P(B
2
| A) que nos daran las probabilidades a posteriori.
Hemos de tomar una decision: cual fue la urna elegida? Parece natural elegir
aquella que tiene a posteriori una maxima probabilidad y quedarnos con la segunda
urna.
Vamos a reescribir lo que acabamos de hacer que nos acerque al planteamiento
mas generico del problema. Supongamos que describimos el color de la bola elegida
mediante una variable dicotomica o binaria. Consideramos la variable aleatoria X
que vale uno si es blanca la bola y cero en otro caso. Es lo que se llama una
variable indicatriz pues nos indica si se ha producido el suceso que nos interesa.
2
El comportamiento aleatorio de X, su distribucion de probabilidad, depende que
estemos extrayendo una bola de la primera o de la segunda urna. En concreto en la
primera urna X sigue una distribucion Bernoulli con probabilidad de exito p
1
= 1/3
mientras que en la segunda urna tenemos una Bernoulli con probabilidad de exito
p
2
= 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
f
i
(x) = p
x
i
(1 p
i
)
1x
con x = 0, 1.
Tenamos unas probabilidades a priori de que X estuviera siendo observada en la
poblacion i-esima que denotamos por (i) donde (1) +(2) = 1 y (1), (2) 0.
Las probabilidades a posteriori obtenidas por la aplicacion del teorema de Bayes
vienen dadas por
(i | x) =
f
i
(x)(i)
f
1
(x)(1) +f
2
(x)(2)
.
2
Si A es el suceso de interes entonces X() = 1 si A y cero en otro caso. A veces se denota
como X() = 1
A
().
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
poblacion.
5.2. Dos poblaciones normales
Supongamos ahora que tenemos que decidir entre dos poblaciones basandonos
en un valor aleatorio continuo con distribucion normal. En concreto supondremos
que en la primera poblacion X es normal con media
1
y varianza
2
. En la segunda
poblacion X tiene distribucion normal con media
2
y varianza
2
. Gracamente en
la gura ?? aparece la situacion 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: cual de las dos distribuciones lo ha generado? De otro modo: a que poblacion
pertenece este valor generado?
La idea para clasicar este valor generado es la misma de antes. Ahora tendremos
f
i
(x) = f(x |
i
,
2
) =
1

2
exp
_

1
2
2
(x
i
)
2
_
,
aunque f
i
(x) no es la probabilidad del valor x asumiendo que estamos en la po-
blacion i. No obstante, f
i
(x)dx s que tiene este sentido. Hablando en un sentido
amplio tenemos una interpretaci on similar. La observacion x la clasicaramos en
la poblacion 1 si
(1)f(x |
1
,
2
)
(2)f(x |
2
,
2
)
> 1,
Facilmente comprobamos que esto equivale con que
1

2
(
1

2
)
_
x
1
2
(
1
+
2
)
_
> log
(2)
(1)
.
5.3. Dos normales multivariantes
En la seccion 5.2 nos planteabamos la situacion de dos normales univariantes. En
las aplicaciones es mas habitual el caso en que trabajamos con varias caractersticas
simultaneamente. En particular, vamos a asumir ahora que X puede pertenecer a
una de dos poblaciones normales multivariantes. La primera con vector de medias

1
y matriz de covarianzas y la segunda con vector de medias
2
y matriz de cova-
rianzas . Dada una observacion multivariante x, la clasicaremos en la poblacion
1 si
(1)f(x |
1
, )
(2)f(x |
2
, )
> 1,
pero,
f(x |
1
, )
f(x |
2
, )
=
exp
_

1
2
(x
1
)

1
(x
1
) +
1
2
(x
2
)

1
(x
2
)
_
=
exp
_
(
1

2
)

1
x
1
2
(
1

2
)

1
(
1
+
2
)
_
. (5.1)
Sea =
1
(
1

2
), entonces la observacion es asignada a la primera poblacion
si
D(x) =

_
x
1
2
(
1
+
2
)
_
> log
(2)
(1)
. (5.2)
87
Notemos que la ecuacion D(x) = log
(2)
(1)
nos dene 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:
Q(x) = log
f(x |
1
,
1
)
f(x |
2
,
2
)
=
1
2
log
|
2
|
|
1
|

1
2
(x
1
)

1
1
(x
1
) +
1
2
(x
2
)

1
2
(x
2
) =
1
2
log
|
2
|
|
1
|

1
2
_
x

(
1
1

1
2
)x 2x

(
1
1

1

1
2

2
)
_
. (5.3)
Como en el caso anterior asignamos la observacion x a la primera poblacion si
Q(x) > log
(2)
(1)
.
Notemos que ahora Q(x) = log
(2)
(1)
no es un hiperplano sino que tenemos una
supercie no plana.
5.4. Dos poblaciones normales multivariantes con
parametros desconocidos
Lo visto en las secciones anteriores tena como objeto mostrar de un modo
suave la transicion desde el resultado probabilstico basico, el teorema de Bayes, y
su aplicacion en el problema de la clasicacion. Sin embargo, no es real asumir que
conocemos completamente la distribucion de las observaciones en cada poblacion o
clase. En las aplicaciones los vectores de medias y la matriz o matrices de covarianzas
no son conocidas. Hemos de estimarlas a partir de los datos. Veamos primero como
hacerlo y luego como usar estos parametros en el procedimiento de clasicacion.
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 n
i
individuos de la poblacion i y los vectores de ca-
ractersticas son los vectores columna x
ij
R
d
(con i = 1, 2 y j = 1, . . . , n
i
).
Denotamos
x
i
=

ni
j=1
x
ij
n
i
, x

2
i=1

ni
j=1
x
ij
n
(5.4)
donde n = n
1
+n
2
. Sea S
i
la matriz de varianzas o de dispersion de la poblacion i,
es decir,
S
i
=

ni
j=1
(x
ij
x
i
)(x
ij
x
i
)

n
i
1
. (5.5)
El vector
i
es estimado mediante
i
= x
i
. La matriz
i
la estimamos mediante
S
i
. En el caso particular en que asumamos que =
1
=
2
entonces la matriz de
covarianzas com un la estimamos con
S
p
=

2
i=1
(n
i
1)S
i
n 2
.
Como clasicamos? 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
D
s
(x) > log
(2)
(1)
, (5.6)
donde
D
s
(x) =

(x
1
2
( x
1
+ x
2
) (5.7)
y

= S
1
p
( x
1
x
2
). (5.8)
La funcion D
s
recibe el nombre de funcion discriminante lineal. La razon es obvia:
clasicamos en uno o en otro grupo utilizando una funcion lineal de las distintas
variables.
En el caso particular en que (1) = (2), esto es, consideramos a priori igual-
mente probables ambos grupos entonces la regla de clasicacion propuesta sera:
clasicamos en la poblacion o clase 1 si,

x >
1
2
(

x
1
+

x
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| x
i
, S
p
)
(1)f(x| x
1
, S
p
) +(2)f(x| x
2
, S
p
)
. (5.9)
Una vez tenemos las probabilidades a posteriori estimadas el individuo es clasicado
en el grupo que tiene una mayor probabilidad a posteriori.
En la situacion mas general no asumiremos una misma matriz de covarianzas
en las dos poblaciones. En este caso estimamos la matriz
i
mediante la matriz S
i
dada en la ecuacion 5.5. Las probabilidades a posteriori las estimamos como
(i|x) =
(i)f(x| x
i
, S
i
)
(1)f(x| x
1
, S
1
) +(2)f(x| x
2
, S
2
)
. (5.10)
Nota de R 24 Vamos a trabajar con los datos de cristales en la orina. Esta nota
es un ejemplo de analisis 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)
Denimos 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 como recuperar los distintos elementos del analisis.
attributes(z)
## $names
## [1] "prior" "counts" "means" "scaling" "lev" "svd" "N" "call"
## [9] "terms" "xlevels"
##
## $class
## [1] "lda"
Las probabilidades a priori vienen dadas por
z$prior
## ausencia de cristales presencia de cristales
## 0.5 0.5
El 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 opcion CV=TRUE.
z <- lda(GRUPO ~ CALCIO + CONDUC + GRAV + OSMO + PH + UREA, prior = c(1, 1)/2, CV = TRUE)
attributes(z)
## $names
## [1] "class" "posterior" "terms" "call" "xlevels"
Obtengamos las probabilidades a posteriori.
head(z$posterior)
## ausencia de cristales presencia de cristales
## 1 0.6411 0.35893
## 2 0.8700 0.12997
## 3 0.8484 0.15162
## 4 0.9053 0.09466
## 5 0.5762 0.42381
## 6 0.8968 0.10321
90
y las clasicaciones 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)
## ausencia de cristales presencia de cristales
## 1 0.7043 0.29573
## 2 0.8992 0.10075
## 3 0.8818 0.11820
## 4 0.9273 0.07272
## 5 0.6445 0.35553
## 6 0.9205 0.07946
5.5. Analisis discriminante con mas de dos pobla-
ciones normales
Supongamos que tenemos unas probabilidades a priori (i) de que el caso per-
tenezca al grupo i con i = 1, . . . , g (obviamente

g
i=1
(i) = 1). Si x son las carac-
tersticas de un caso entonces vamos a asumir que x tiene una distribucion normal
multivariante con media
i
y matriz de varianzas
i
en la clase i. Su densidad de
probabilidad viene dada por
f(x |
i
,
i
) = (2)
d/2
|
i
|
1/2
exp{
1
2
(x
i
)

1
i
(x
i
)}. (5.11)
Utilizando el teorema de Bayes tenemos que las probabilidades a posteriori vienen
dadas por
(i | x) =
(i)f(x |
i
,
i
)

g
j=1
(j)f(x |
j
,
j
)
. (5.12)
Un metodo de clasicacion consiste en clasicar 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: clasicamos en el grupo tal que
(i)f(x|
i
,
i
) = max
j

j
f(x|
j
,
j
).
Obviamente, habitualmente no conocemos los parametros (
i
,
i
) de las distintas
clases por lo que hemos de estimarlos.
Supongamos que tenemos n
i
individuos en la clase i y los vectores de carac-
tersticas son los vectores columna x
ij
R
d
(con i = 1, . . . , g y j = 1, . . . , n
i
).
Denotamos
x
i
=

ni
j=1
x
ij
n
i
, x

g
i=1

ni
j=1
x
ij
n
(5.13)
91
donde n =

g
i=1
n
i
. Sea S
i
la matriz de varianzas o de dispersion de la clase i, es
decir,
S
i
=

ni
j=1
(x
ij
x
i
)(x
ij
x
i
)

n
i
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
entonces el estimador de =
1
= . . . =
g
es

= S
p
donde
S
p
=

g
i=1
(n
i
1)S
i
n g
.
Si no asumimos que las distintas matrices de varianzas son iguales entonces cada

i
es estimada mediante S
i
.
Es claro que el procedimiento indicado en la ecuacion 5.5 no es aplicable pues
no conocemos los parametros. Veamos como queda el procedimiento en las dos
situaciones posibles: asumiendo igualdad de las matrices de covarianzas y asumiendo
que son distintas.
Bajo la hipotesis de matriz de covarianza com un tendremos que
log[(i)f(x| x
i
, S
p
)] = log (i) +c
1
2
(x x
i
)

S
1
p
(x x
i
).
Le quitamos a log[(i)f(x| x
i
, S
p
)] la parte que no depende de i dada por c
1
2
x

S
1
p
x
y obtenemos la funcion
L
i
(x) = log (i) + x

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

S
1
i
(x x
i
). (5.15)
Notemos que el ultimo termino no es mas que la distancia de Mahalanobis de x al
centro estimado de la clase, x
i
. La diferencia entre las funciones Q
i
para dos clases
distintas es una funcion cuadr atica y por ello el metodo recibe el nombre de analisis
discriminante cuadratico.
5.6. Valoracion del procedimiento de clasicacion
Nuestros datos son (x
i
, y
i
) con i = 1, . . . , n siendo x
i
el vector de caracterstica
del individuo y denotando y
i
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. Clasicamos 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 clasicar a los individuos en los
grupos a los que realmente pertenecen.
Una primera practica que pretende valorar la probabilidad (y por lo tanto la
frecuencia de veces que ocurre) de una clasicacion correcta es, una vez estimadas
las probabilidades a posteriori para los propios elementos de la muestra. Esto es,
nos planteamos clasicar a los individuos utilizados para construir el procedimiento
92
de clasicacion. Tendremos para cada data, y
i
, el grupo al que pertenece e y

i
el
grupo en el que lo clasicamos. Podemos considerar una valoracion del resultado de
la clasicacion la siguiente cantidad,
I =
n

i=1

yi,y

i
n
, (5.16)
donde
y,y
= 1 si y = y

y cero en otro caso. La cantidad denida 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 clasicacion. Se queda pobre.
Al menos parece insuciente. C omo nos equivocamos cuando clasicamos? La si-
guiente opcion habitual es utilizar la tabla de clasicacion en donde cruzamos los
valores (y
i
, y

i
). En esta tabla tendremos en la la (r, c) el n umero de casos que ori-
ginalmente son de la clase r y los hemos clasicado en el grupo c. Valorando la tabla
de clasicacion podemos valorar el metodo de clasicacion. Es importante tener en
cuenta aqu que no todos los errores de clasicacion tienen la misma importancia.
Independientemente de la valoracion numerica que hagamos del procedimiento
de clasicacion hemos de tener en cuenta sobre que casos estamos realizando esta
valoracion. Si un mismo caso lo utilizamos para construir el procedimiento de valo-
racion y lo volvemos a utilizar para clasicarlo estamos sesgando la valoracion del
procedimiento a favor del mismo. Un procedimiento de clasicacion siempre ira me-
jor 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 x
j
. Utilizando el resto de la muestra estimamos los vectores de
medias y las matrices de covarianzas y, nalmente, las probabilidades a posteriori
del individuo j en cada clase. Lo clasicamos 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 clasicacion que
valoramos en cada ocasion no es exactamente el mismo pero no es muy diferente. En
cada ocasion solamente estamos prescindiendo de un caso y los vectores de medias
y matrices de covarianzas no se modican mucho. Estamos valorando esencialmente
el mismo metodo.
Una segunda opcion; 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 nm restantes son clasicados y podemos valorar las distintas proporciones de
error. Es una estimacion del error basada en un metodo de aleatorizacion. Si elegimos
las sucesivas muestras con reemplazamiento tendramos un metodo bootstrap.
Nota de R 25 (Los datos iris de Fisher) Consideremos los datos iris tratados
originalmente por Fisher. Vemos como se utiliza una muestra para estimar las ma-
trices de covarianzas y los vectores de medias mientras que clasicamos a los indi-
viduos 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 clasicar 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 li-
mitamos a construir la tabla de clasicacion. 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 analisis discriminante lineal.
z1 <- lda(GRUPO ~ CALCIO + CONDUC + GRAV + OSMO + PH + UREA, CV = TRUE)
Construimos la tabla de clasicaciones.
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 electroni-
co. El objetivo del analisis es decidir si el correo es basura o no basandonos en
informacion de dicho correo. Estos datos se pueden encontrar en D.J. Newman and
Merz [1998]. Los datos los podemos encontrar en http: // mlearn. ics. uci. edu/
databases/ spambase/ y en particular la descripcion de estos datos la tenemos en
http: // mlearn. ics. uci. edu/ databases/ spambase/ spambase. DOCUMENTATION .
Realizamos un an alisis discriminante linear y un analisis cuadratico. Vemos que
el lineal nos proporciona mejores resultados.
library(MASS)
x <- read.table(file = "../data/spambase_data", sep = ",")
attach(x)
xnam <- paste("V", 1:57, sep = "")
(fmla <- as.formula(paste("y ~ ", paste(xnam, collapse = "+"))))
y <- x[, 58]
94
Realizamos el analisis discriminante lineal.
z <- lda(fmla, data = x, prior = c(1, 1)/2, CV = T)
La tabla de clasicacion es la siguiente.
table(V58, z$class)
##
## V58 0 1
## 0 2625 163
## 1 265 1548
Realizamos el analisis discriminante cuadratico y obtenemos la nueva tabla de
clasicacion.
z <- qda(fmla, data = x, prior = c(1, 1)/2, CV = T)
table(V58, z$class)
##
## V58 0 1
## 0 2086 695
## 1 86 1723
Vamos a realizar una valoracion de los resultados de clasicacion con el an alisis
discriminante lineal utilizando remuestreo. Elegimos la muestra de entrenamiento
como una seleccion aleatoria de los datos.
entrenamiento <- sample(nrow(x), 2000)
Vemos la distribucion del correo en la muestra de entrenamiento.
table(y[entrenamiento])
##
## 0 1
## 1207 793
Realizamos el analisis discriminante lineal.
z <- lda(fmla, data = x, prior = c(1, 1)/2, subset = entrenamiento)
Vemos la tabla de clasicacion sobre los datos de entrenamiento.
table(predict(z, x[entrenamiento, ])$class, y[entrenamiento])
##
## 0 1
## 0 1149 108
## 1 58 685
Vemos la tabla de clasicacion sobre el resto de los datos.
95
table(predict(z, x[-entrenamiento, ])$class, y[-entrenamiento])
##
## 0 1
## 0 1486 162
## 1 95 858
Repetimos en muestras con reemplazamiento.
entrenamiento <- sample(nrow(x), 2000, replace = T)
table(y[entrenamiento])
##
## 0 1
## 1220 780
z <- lda(fmla, data = x, prior = c(1, 1)/2, subset = entrenamiento)
Vemos la tabla de clasicacion sobre los datos de entrenamiento.
table(predict(z, x[entrenamiento, ])$class, y[entrenamiento])
##
## 0 1
## 0 1155 112
## 1 65 668
Vemos la tabla de clasicacion sobre el resto de los datos.
table(predict(z, x[-entrenamiento, ])$class, y[-entrenamiento])
##
## 0 1
## 0 1687 190
## 1 101 978
5.7. Variables discriminantes can onicas o discrimi-
nantes lineales
Vamos a estudiar una tecnica de reduccion de la dimension relacionada con el
planteamiento que del analisis discriminante lineal hizo Fisher. Consideramos las
matrices W y B denidas como
W =
g

i=1
ni

j=1
(x
ij
x
i
)(x
ij
x
i
)

=
g

i=1
(n
i
1)S
i
, (5.17)
y
B =
g

i=1
ni

j=1
( x
i
x

)( x
i
x

=
g

i=1
n
i
( x
i
x

)( x
i
x

(5.18)
Notemos que
S
p
=
W
n g
(5.19)
96
Estas matrices reciben el nombre de matrices intra grupos y entre grupos respec-
tivamente. Son las versiones matriciales de las sumas de cuadrados intra y entre
grupos habituales en analisis de la varianza.
Es claro que cuando mas agrupados esten los datos dentro de los grupos y mas
separados esten para grupos distintos tendremos que la magnitud de W ha de ser
menor que la de B. Supongamos que reducimos las observaciones multivariantes x
ij
a datos univariantes mediante tomando z
ij
= c

x
ij
. Las sumas de cuadrados intra
y entre vendran dadas por c

Wc y c

Bc. El cociente F
c
= c

Bc/c

Wc nos compara
la variabilidad intra con la variabilidad entre. Fisher (1936) introdujo el analisis
discriminante lineal buscando el vector c tal que el cociente F
c
sea el mayor posible.
Ese fue su objetivo inicial.
La matriz W es suma de matrices semidenidas positivas por lo que es de-
nida positiva y consideramos su descomposicion de Cholesky dada por W = T

T.
Tomamos b = Tc. Se tiene
F
c
=
c

Bc
c

Wc
=
b

(T

)
1
BT
1
b
b

b
=
b

Ab
b

b
= a

Aa, (5.20)
donde a = b/ b , esto es, a tiene modulo unitario y A = (T

)
1
BT
1
. Se nos
plantea el problema de maximizar a

Aa con la restriccion de a

a = 1. Por re-
sultados estandar del algebra lineal se tiene que a
1
es el vector propio de A con el
mayor propio
1
vericando que
1
= a

1
Aa
i
. Hemos encontrado una combinacion
lineal que, en el sentido que hemos indicado, es optima a la hora de separar los
grupos. Parece logico buscar la siguiente combinacion lineal que verique el mis-
mo criterio de optimalidad pero que el vector correspondiente sea ortogonal al ya
calculado. Nos planteamos pues maximizar a

Aa con la restriccion de a = 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
(Aa
2
=
2
a
2
por
lo que
2
= a

2
Aa
2
). Procedemos del mismo modo obteniendo k direcciones ortogo-
nales 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 a
r
constituyen una base ortonormal
tales que
(T

)
1
BT
1
a
r
= Aa
r
=
r
a
r
,
con
1

2
. . .
k
. Si multiplicamos por la izquierda por la matriz T
1
(n
g)
1/2
se deduce que
W
1
Bc
r
=
r
c
r
,
donde c
r
= (n g)
1/2
T
1
a
r
. En consecuencia W
1
B tiene valores propios
r
y
vectores propios c
r
con r = 1, . . . , k. Ademas los vectores a
r
= Tc
r
(n g)
1/2
constituyen una base ortonormal. Consideremos la matriz C que tiene por la r-
esima el vector c
r
. Sea z
ij
= Cx
ij
. 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

j
i=1

k
i=1

i
(5.21)
como funcion de j y quedarse con las coordenadas discriminantes hasta un j proximo
a uno.
Es muy importante darse cuenta que las coordenadas discriminantes estan tipi-
cadas y son independientes entre ellas. Recordemos que W = T

T y que la matriz
de covarianzas agrupada viene dada por S
p
= W/(g 1). Por tanto tendremos que
c

r
S
p
c
s
= (n g)
1
c

r
T

Tc
s
= a

r
a
s
=
rs
, (5.22)
97
donde
rs
= 1 si r = s y cero en otro caso. Tenemos pues que CS
p
C

= I
k
.
Asumiendo que las matrices de dispersion son iguales para los distintos grupos
tendremos que cov(c

r
x
ij
, c

s
x
ij
) = c

r
c
s
y reemplazando por S
p
tenemos que los
z
ij
tienen covarianzas muestrales nulas y varianzas muestrales unitarias.
Nota de R 28 (Variables discriminantes canonicas) Repetimos el analisis dis-
criminante tanto para los datos de cristales en la orina como para los datos de la
diabetes.
En la siguietne gura vemos un histograma de la primera variable discriminante
canonica en el primer y segundo grupo.
plot(z)
2 1 0 1 2 3 4
0
.
0
0
.
4
0
.
8
group ausencia de cristales
2 1 0 1 2 3 4
0
.
0
0
.
4
0
.
8
group presencia de cristales
Para los datos de las diabetes podemos tendremos dos variables discriminantes
canonicas. Mostramos dos posibles representaciones gracas.
plot(z)
98
6 4 2 0 2

2
0
2
4
LD1
L
D
2
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
diabetes quimica
diabetes quimica
control
diabetes quimica
diabetes quimica
control
control
control
control
diabetes quimica
control control
control
control control
diabetes quimica
control
control
control
control
control
diabetes quimica
control
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 quimica
diabetes quimica
diabetes quimica
diabetes quimica
diabetes quimica
diabetes quimica
diabetes quimica
diabetes quimica
diabetes quimica
diabetes quimica
diabetes quimica
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
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
diabetes manifiesta
diabetes manifiesta
diabetes manifiesta
diabetes manifiesta
diabetes manifiesta
pairs(z)
99
LD1
4 2 0 2

2
0
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
diabetes quimica
control
control
diabetes quimica
diabetes quimica
control
diabetes quimica
diabetes quimica
control
control
control
control
diabetes quimica
control
control
control
control
control
diabetes quimica
control
control
control
control
control
diabetes quimica
control
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 quimica
diabetes quimica
diabetes quimica
diabetes quimica
diabetes quimica
diabetes quimica
diabetes quimica
diabetes quimica
diabetes quimica
diabetes quimica
diabetes quimica
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
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
diabetes manifiesta
diabetes manifiesta
diabetes manifiesta
diabetes manifiesta
diabetes manifiesta
6 4 2 0 2 4

2
0
2
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
diabetes quimica
diabetes quimica
control
diabetes quimica
diabetes quimica
control
control
control
control
diabetes quimica
control control control
control control
diabetes quimica
control
control
control
control
control
diabetes quimica
control
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 quimica
diabetes quimica
diabetes quimica
diabetes quimica
diabetes quimica
diabetes quimica
diabetes quimica
diabetes quimica
diabetes quimica
diabetes quimica
diabetes quimica
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
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
diabetes manifiesta
diabetes manifiesta
diabetes manifiesta
diabetes manifiesta
diabetes manifiesta
LD2
5.8. Algunos ejemplos
Nota de R 29 En la seccion ?? tenemos una descripcion de los mismos. Realiza-
mos un analisis discriminante en donde a partir de las caractersticas morfologicas
pretendemos saber si es una abeja reina o bien es una obrera.
library(MASS)
x <- read.table(file = "../data/wasp.dat", header = T)
attach(x)
Aplicamos un analisis discriminante lineal y mostramos los histogramas de la
variable discriminante canonica.
z <- lda(caste ~ TL + WL + HH + HW + TH + TW + G1L + G2Wa, prior = c(1, 1)/2)
plot(z)
100
4 2 0 2 4
0
.
0
0
.
2
0
.
4
group Q
4 2 0 2 4
0
.
0
0
.
2
0
.
4
group W
Los histogramas muestran que los valores de la variable discriminante son cla-
ramente distintos en cada grupo. La tabla de clasicaci 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 clasicacion son realmente buenos.
Nota de R 30 (Datos wbca) En la seccion ?? tenemos la descripcion de los da-
tos. Basicamente tenemos personas enfermas de cancer y no enfermos y preten-
demos clasicar en estos dos posibles grupos. Pretendemos clasicar a la paciente
como enferma o no de cancer utilizando el resto de las variables.
library(faraway)
library(MASS)
attach(wbca)
Realizamos para ello un analisis discriminante lineal y, como tenemos solamente
dos grupos, mostramos los histogramas de la variable discriminante canonica en
cada uno de los grupos.
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 clasicacion.
train <- sample(1:nrow(wbca), 400)
wbca.lda0 <- lda(Class ~ Adhes + BNucl + Chrom + Epith + Mitos + NNucl + Thick + UShap + USize,
subset = train, CV = T)
table(wbca.lda0$class[train], Class[train])
##
## 0 1
## 0 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 lla-
maremos variables predictoras. Tambien se utilizan las denominaciones de variable
dependiente para la variable respuesta y variables independientes en lugar en pre-
dictoras.
Si denotamos a la variable respuesta por Y (al valor observado lo denotaremos
por y) y a la variable predictora por X nuestro problema es intentar conocer el valor
de Y cuando conocemos el valor de la variable X.
Nota de R 31 (notaR100) El primer conjunto de datos fueron publicados por
Fisher[Fisher, 1947]. El chero contiene tres variables correspondientes al peso del
corazon, el peso del cuerpo y el sexo de una muestra de gatos. Tenemos 47 hembras
y de 97 machos.
library(MASS)
attach(cats)
names(cats)
Empezamos representando el peso del corazon frente al peso del cuerpo para las
hembras.
plot(Bwt[Sex == "F"], Hwt[Sex == "F"])
103
2.0 2.2 2.4 2.6 2.8 3.0
7
8
9
1
0
1
1
1
2
1
3
Bwt[Sex == "F"]
H
w
t
[
S
e
x

=
=

"
F
"
]
Repetimos el dibujo para los machos.
plot(Bwt[Sex == "M"], Hwt[Sex == "M"])
104
2.0 2.5 3.0 3.5
6
8
1
0
1
2
1
4
1
6
1
8
2
0
Bwt[Sex == "M"]
H
w
t
[
S
e
x

=
=

"
M
"
]
Nuestro problema es intentar predecir el peso del corazon a partir del peso del
cuerpo. Ademas parece razonable plantearse si esta relacion es similar para machos
y hembras.
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
5 10 15 20 25
0
20
40
60
80
100
120
Speed (mph)
S
t
o
p
p
i
n
g

d
i
s
t
a
n
c
e

(
f
t
)
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 va-
lor de Y a partir del valor de X. Obviamente la respuesta mas simple sera buscar
una funcion que podemos denotar por f de modo que para un valor dado x simple-
mente calculamos y = f(x). Un poco de imaginacion y conocimiento de la posible
relacion entre x e y podran darnos una idea de que funcion f buscar. Este plantea-
miento es de base muy restrictivo. Por que? Pues en primer lugar porque estamos
asumiendo que, para un valor de x, existe un unico valor de y asociado. Y esto
nunca (o casi) es as. Un detalle, a veces X es una variable aleatoria que observa-
mos simultaneamente con Y , en otras ocasiones es un valor que nosotros prejamos
(dosis de medicacion, tratamiento en un problema de dise no de experimentos). Sin
embargo, desde el punto de vista de la regresion X siempre lo consideramos jo y
estudiamos como se comporta Y dado el valor de X = x. Es decir, de la distribucion
condicionada de Y al valor de X = x.
Un ejemplo muy famoso de Galton. Se tomaba como variable predictora la es-
tatura del padre y como variable respuesta o a predecir, la estatura de un hijo.
Es claro que para un mismo padre la estatura de sus hijos es variable. No todos
106
los hijos de un mismo padre miden lo mismo. No tiene ning un sentido asumir una
relacion funcional entre la estatura de un padre y la de un hijo.
Tan tontos no son los estadsticos (que no estadistas). De hecho, lo que se mode-
liza es la relacion entre el valor x y el valor medio de la variable Y dado ese valor x.
Siguiendo con el ejemplo de Galton. Si consideramos un padre de estatura X = 178
centmetros. Supondremos que la media de la variable Y que nos da la estatura
aleatoria de un hijo es la que se relaciona con x. Denotemos por E[Y | x] esta media
(estatura media de todos los hijos de un padre con estatura 178 centmetros). He-
mos de admitir que ademas de lo que mide el padre, algo tendra que decir la madre,
y tambien otros muchos factores que todos podemos imaginar. De modo que Y ,
conocida la estatura del padre, sigue siendo una cantidad aleatoria. De hecho, se
asume que la distribucion de Y es normal cuya media depende de Y , E[Y | x], pero
cuya varianza no depende de x, es decir, es una cantidad constante que denotaremos
por
2
. En resumen, estamos asumiendo que
Y N(E[Y | x],
2
). (6.1)
En el modelo de regresion mas simple con el que se trabaja se asume que la media
condicionada E[Y | x] es una funcion lineal de x, en otras palabras, se asume que
E[Y | x] =
0
+
1
x. (6.2)
Las hipotesis 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)
donde
N(0,
2
). (6.4)
En la formulacion de 6.3 expresamos el valor aleatorio de Y como suma de una
parte que sistematicamente depende de x (la componente sistematica del modelo)
y un termino aleatorio con distribucion normal, un termino de error o desajuste del
modelo. En esta variable normal con media cero y varianza constante
2
estamos
incluyendo todas las posibles causas que inuyen el valor de Y y que no vienen
dadas por la variable predictora.
No consideramos un solo valor aleatorio de Y dado un valor jo de x. Realmente,
tenemos n valores observados cuyos valores son independientes entre s pero no
tienen la misma distribucion. Hemos de pensar que cad a Y
i
tiene una variable
predictora distinta que inuye en la distribucion de Y
i
. Tenemos pares (x
i
, Y
i
) donde
la x
i
viene dada y consideramos la distribucion de Y
i
condicionada a x
i
, es decir,
Y
i
| x
i
.
Resumiendo, estamos asumiendo que Y
i
N(
0
+
1
x
i
,
2
) y que los distintos Y
i
son independientes entre si. Utilizando propiedades de la distribucion normal multi-
variante tenemos que estas hipotesis las podemos expresar conjuntamente diciendo
que
Y N
n
(X,
2
I
nn
), (6.5)
donde
Y =
_

_
Y
1
.
.
.
Y
n
_

_ X =
_

_
1 x
1
.
.
.
.
.
.
1 x
n
_

_ =
_

1
_
Si consideramos que
=
_

1
.
.
.

n
_

_
107
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 N
n
(0,
2
I
nn
).
Este modelo probabilstico es conocido como el modelo de regresion lineal
simple. No lo estudiaremos en mas detalle porque nos vamos a ocupar de la situa-
cion mas general en que tenemos mas de una variable predictora. No es mas que
un caso particular y sin mucha dicultad 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
funcion de p 1 variables predictoras, x
1
, . . . , x
p1
. Siguiendo el razonamiento an-
terior podemos plantearnos un modelo muy general como el que sigue.
Y = f(x
1
, . . . , x
n
) +, (6.7)
donde f es una funcion desconocida y es el termino del error. Vamos a asumir
una situacion mas simple. En concreto que la funcion f es lineal de modo que la
relacion sera Y =
0
+
1
x
1
+ . . . +
p1
x
p1
. Realmente observamos n vectores
(y
i
, x
i1
, . . . , x
i,p1
) en consecuencia nuestro modelo estocastico ha de considerar el
modelo para los n valores aleatorios Y
i
, donde cada Y
i
tiene asociado un vector x
i
.
Vamos a suponer que para una combinacion de valores (x
i1
, . . . , x
i,p1
) vamos a
observar un valor aleatorio Y
i
con distribucion normal cuya media es
0
+
1
x
i1
+
. . .+
p1
x
i,p1
y cuya varianza va a ser constante e igual a
2
. Ademas los distintos
Y
i
son independientes entre si.
Vamos a formular conjuntamente estas hipotesis. Denotaremos
Y =
_

_
Y
1
.
.
.
Y
n
_

_ X =
_

_
1 x
11
. . . x
1,p1
.
.
.
.
.
.
.
.
.
1 x
n1
. . . x
n,p1
_

_ =
_

1
.
.
.

p1
_

_
=
_

1
.
.
.

n
_

_
El modelo estocastico basico es el que sigue
Y = X +. (6.8)
En este modelo a X le llamaremos la parte sistematica mientras que es la com-
ponente aleatoria del modelo. Estamos expresando los datos como la suma de una
parte sistematica mas una parte aleatoria. La parte sistematica es la media del vec-
tor Y . Notemos que la dimension del espacio en que estamos trabajando es n, el
n umero de observaciones. El vector de medias o parte sistematica del modelo tiene
dimension p por lo que la parte no explicada, el residuo, tiene dimension n p.
6.3. Estimaci on de
Como estimamos los parametros ? Nuestros datos son (y
i
, x
i1
, . . . , x
i,p1
)
con i = 1, . . . , n. Nuestro objetivo es estimar los coecientes de modo que X
este proximo a y. En concreto vamos a minimizar
n

i=1

2
i
=

= (y X)

(y X). (6.9)
108
Espacio
engendrado
por X
y
Residuo
Valor ajustado
Figura 6.1: Expresamos la observacion y como suma ortogonal de una parte sis-
tematica mas un residuo.
Si desarrollamos la expresion anterior tendremos que
(y X)

(y X) = y

y 2

y + +

X.
Diferenciando respecto de los distintos
j
e igualando a cero nos da el siguiente
sistema de ecuaciones normales:
X

= X

y. (6.10)
Si asumimos que la matriz X

X es una matriz no singular entonces tendremos que

= (X

X)
1
X

y, (6.11)
y en consecuencia se sigue que
X

= X(X

X)
1
X

y = Hy. (6.12)
La matriz H = X(X

X)
1
X

y = Hy es la matriz de proyeccion de y sobre el


espacio engendrado por los p vectores columna de la matriz X. Es una matriz nn.
Utilizando la matriz H podemos calcular las predicciones para cada una de los
x
i
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 coecientes 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

i=1
(y
i
y
i
)
2
, (6.15)
y sera, como funcion de la matriz H,

= y

(I H)(I H)y = y

(I H)y. (6.16)
109
Veamos una interpretacion geometrica que nos ayude a entender que son los estima-
dores mnimo cuadraticos que utilizamos. Estamos minimizando (yX)

(yX).
Si vemos la gura 6.1 el valor de que nos da el mnimo coincide con el punto que
nos da la proyeccion ortogonal de y sobre el plano que viene engendrado por las
columnas de la matriz X. De este modo es claro que
(y y1
n
)

(y y1
n
) = (y X

(y X

) + ( y y1
n
)

( y y1
n
). (6.17)
o de otro modo la ecuacion anterior la podemos expresar como
n

i=1
(y
i
y)
2
=
n

i=1
(y
i
y
i
)
2
+
n

i=1
( y
i
y)
2
. (6.18)
Las sumas de cuadrados que acabamos de considerar reciben la siguiente denomi-
nacion:
Suma de cuadrados total
SS(Total) = (y y1
n
)

(y y1
n
) =
n

i=1
(y
i
y)
2
. (6.19)
Suma de cuadrados del error
SS(Error) = (y X

(y X

) =
n

i=1
(y
i
y
i
)
2
. (6.20)
Suma de cuadrados de la regresion
SS(Regresion) = ( y y1
n
)

( y y1
n
) =
n

i=1
( y
i
y)
2
. (6.21)
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 = 1
n
= (1, . . . , 1)

, X

X = n y, nalmente,

= (X

X)
1
X

y =
1
n
1

n
y = y.
El segundo ejemplo que podemos considerar sera con una sola variable pre-
dictora o lo que es lo mismo, el modelo de regresion lineal simple. En este caso,
tendremos
_

_
Y
1
.
.
.
Y
n
_

_ =
_

_
1 x
1
.
.
.
.
.
.
1 x
n
_

_
_

1
_
+
_

1
.
.
.

n
_

_
Notemos que podemos hacer Y
i
=
0
+
1
x +
1
(x
i
x) +
i
. Nuestra matriz de
dise no sera
X =
_

_
1 x
1
x
.
.
.
.
.
.
1 x
n
x
_

_
con
X

X =
_
n 0
0

n
i=1
(x
i
x)
2
_
Finalmente se comprueba sin dicultad que

n
i=1
(x
i
x)y
i

n
i=1
(x
i
x)
2
(6.22)
110
6.5. Verosimilitud
Dados los datos (x
i
, y
i
) con i = 1, . . . , n la verosimilitud de y = (y
1
, . . . , y
n
)

vendra dada por


L(, ) =
1
(2)
n
2

n
exp{
1
2
2
(y X)

(y X)} (6.23)
y la logverosimilitud sera
l(, ) =
n
2
log(2) nlog
1
2
2
(y X)

(y X). (6.24)
El estimador maximo verosmil de se obtiene maximizando cualquiera de las dos
funciones anteriores. Es obvio que el maximo respecto de se obtiene como el
valor que minimiza (y X)

(y X), en denitiva, que los estimadores maximo


verosmiles no son mas que los estimadores mnimo cuadraticos.
6.6. Algunos ejemplos
Nota de R 33 (Un ejemplo de regresion lineal simple) En este banco de da-
tos (Orange) tenemos la variable predictora que nos da la edad del arbol y como
variable respuesta la circunferencia del arbol.
Obtenemos el ajuste de regresion lineal simple con la funcion lm. La salida basica
que produce nos muestra los estimadores mnimo cuadraticos de los coecientes .
Vemos tambien como obtener las predicciones y los residuos observados. Finalmente
mostramos los residuos frente a las predicciones de los valores. En principio, bajo
la hipotesis de que el error tiene varianza constante no debieramos de observar
residuos mayores cuando las predicciones son mayores. En este caso parece que es
esto lo que observamos. Leemos los datos.
data(Orange)
attach(Orange)
Representamos en abscisas la edad y en ordenadas el n umero de anillos. Ajus-
tamos el modelo de regresion lineal simple y a nadimos la recta de regresion a los
datos.
plot(age, circumference)
lm(circumference ~ age, data = Orange)
##
## Call:
## lm(formula = circumference ~ age, data = Orange)
##
## Coefficients:
## (Intercept) age
## 17.400 0.107
abline(lm(circumference ~ age, data = Orange))
111
500 1000 1500
5
0
1
0
0
1
5
0
2
0
0
age
c
i
r
c
u
m
f
e
r
e
n
c
e
Vamos a explorar la informacion que podemos obtener del ajuste.
orange.lm <- lm(circumference ~ age, data = Orange)
attributes(orange.lm)
## $names
## [1] "coefficients" "residuals" "effects" "rank" "fitted.values"
## [6] "assign" "qr" "df.residual" "xlevels" "call"
## [11] "terms" "model"
##
## $class
## [1] "lm"
Los valores ajustados o predicciones los obtenemos con
orange.lm$fitted.values
## 1 2 3 4 5 6 7 8 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 chero que viene con el paquete SPSS.
Tenemos las siguientes variables:
VALTERR Valor de tasacion del terreno.
VALMEJOR Valor de tasacion de las mejoras.
VALTOT Valor de tasacion total.
PRECIO Precio de venta.
TASA Razon del precio de venta sobre el valor de tasacion total.
BARRIO Barrio en el que se encuentra la vivienda.
Nos planteamos predecir el precio de venta de la vivienda utilizando como variables
predictoras el valor de tasacion del terreno y de las mejoras. Notemos que el valor
total no es mas que la suma de la tasaci on del terreno mas el valor de las mejo-
ras. Comenzamos leyendo los datos. Notemos que por estar en formato de SPSS
utilizamos el paquete foreign ?.
library(foreign)
x <- read.spss(file = "../data/venta_casas.sav", to.data.frame = T)
attach(x)
Nos planteamos predecir el precio de la vivienda utilizando como variables pre-
dictoras el precio de terreno y el valor de las mejoras.
(casas.lm <- lm(precio ~ valterr + valmejor))
##
## Call:
## lm(formula = precio ~ valterr + valmejor)
##
## Coefficients:
## (Intercept) valterr valmejor
## 767.408 3.192 0.478
113
6.7. Distribuci on muestral de

Hemos visto que



= (X

X)
1
X

Y . Aplicando propiedades simples de la media


tenemos que
E

= (X

X)
1
X

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

) = (X

X)
1
X

(
2
I)X(X

X)
1
= (X

X)
1

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


n p
. (6.28)
Ya podemos estimar var(

). Este estimador sera


var(

) = (X

X)
1

2
. (6.29)
Si (X

X)
1
= [a
ij
]
i,j=1,...,p
entonces el estimador de la varianza de

i
, var(

i
), sera
a
ii

2
. Recordemos que

i
es un estimador insesgado de
i
y por lo tanto su varianza
coincide con su error cuadratico medio. Finalmente el error estandar de

i
, es decir,
su desviacion tpica (raz cuadrada de su varianza) sera

SE(

i
) =

a
ii
. (6.30)
Realmente de

sabemos mas cosas:

= (X

X)
1
X

Y y puesto que Y
N
n
(X,
2
I
nn
) entonces, por propiedades basicas de la distribucion normal mul-
tivariante (ver apartado 1.4) se tiene que

N
p
(, (X

X)
1

2
). (6.31)
Nota de R 35 Una vez realizado el ajuste con la funcion summary podemos ob-
servar los valores estimados de (etiquetado como Residual standard error y los
errores estandar de

i
.
Veamos el resumen basico del ajuste de regresion donde la respuesta es el precio
de la vivienda y los predictores son el valor del terreno y el valor de las mejoras.
summary(casas.lm)
##
## Call:
## lm(formula = precio ~ valterr + valmejor)
##
## Residuals:
## Min 1Q Median 3Q Max
## -153634 -10451 -576 8690 356418
##
## Coefficients:
114
## 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 relacion lineal entre la media de la variable respuesta y las
variables predictoras. Asumiendo la relacion hemos considerado una funcion objeti-
vo y minimizando dicha funcion hemos obtenido los estimadores mnimo cuadrati-
cos. Sin embargo, la primera pregunta que hay que responder es: tenemos un ajuste
razonable? La respuesta se da utilizando medidas que comparan los valores observa-
dos con las predicciones asumiendo el modelo, es decir, comparando y
i
con y
i
para
los distintos datos. En concreto, con diferencia la mas utilizada es el coeciente
de determinacion que se denota por R
2
y se dene como
R
2
= 1

n
i=1
(y
i
y
i
)
2

n
i=1
(y
i
y
i
)
2
= 1
SS(Error)
SS(Total)
. (6.32)
Es habitual denominar a

n
i=1
(y
i
y
i
)
2
, suma de cuadrados del error mientras
que a SS(Regresion) =

n
i=1
( y
i
y)
2
se le llama suma de cuadrados de la
regresion. Tenemos pues que
R
2
=

n
i=1
( y
i
y)
2

n
i=1
(y
i
y
i
)
2
=
SS(Regresion)
SS(Total)
. (6.33)
El ajuste que estamos realizando se supone que sera tanto mejor cuanto mas pe-
que 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. No-
temos que SS(Total) es una cuanticacion de la variabilidad de los distintos y
i
sin
tener en cuenta las variables predictoras mientras que SS(Error) nos cuantica la
variacion 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(Total). Esa es la idea del coeciente de determinacion. Toma valores entre
0 y 1 y cuanto mas cerca de 1 mejor es el ajuste.
Tiene un peque no inconveniente y es que no tiene en cuenta el n umero de va-
riables predictoras que estamos utilizando para predecir la variable respuesta. Una
peque na modicacion de R
2
para incorporar esta informacion es el coeciente de
determinacion ajustado que podemos denotar R
2
-ajustado y se dene como
R
2
ajustado = 1

n
i=1
(y
i
y
i
)
2
/(n p)

n
i=1
(y
i
y)
2
/(n 1)
, (6.34)
donde suponemos que tenemos p 1 variables predictoras.
115
6.9. Valoracion de las hip otesis del modelo
Un modelo de regresion lineal m ultiple supone, como hemos visto, varias hipote-
sis. Es necesario valorar lo razonables, lo asumibles que son estas hipotesis. Las
hipotesis del modelo que vamos a valorar son las siguientes:
1. Tenemos errores independientes, con la misma varianza y con distribucion
normal? Esto es, nos preguntamos si es asumible la hipotesis N
n
(0,
2
I
nn
).
2. Asumimos que E[Y
i
| x
i
] =
0
+
1
x
i1
+. . . +
p1
x
i,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
I
nn
. Sin embargo, esta armacion no es cierta
para los residuos observados . Notemos que
y = X(X

X)
1
X

y = Hy.
De modo que
= y y = (I H)y = (I H)X + (I H) = (I H).
La tercera igualdad anterior es consecuencia de que HX = X porque H es la
matriz de proyeccion sobre el espacio engendrado por las columnas de X y X
esta en este espacio por lo que la proyeccion es el propio punto. Notemos que I H
tambien es una matriz de proyeccion (sobre el espacio ortogonal al engendrado por
las columnas de X) de modo que (I H)
2
= I H. Aplicando esta propiedad se
tiene que
var( ) = var(I H) = (I H)
2
, (6.35)
ya que var() =
2
I
nn
. Vemos pues que, aunque asumimos que los errores son
incorrelados y con la misma varianza, esto no es cierto para los residuos .
Homogeneidad de la varianza
La mera observacion de los residuos sin considerar su posible asociacion con
otra variable no nos proporciona informacion sobre si la varianza de los mismos
es 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 compor-
tamiento no aleatorio alrededor del eje de abscisas cuando la parte estructural del
modelo no es lineal, es decir, cuando no se verica que EY = X.
Nota de R 36 Los datos que vamos a utilizar para valorar las hipotesis del modelo
son los datos savings contenido en la librera faraway (?). Se pretende estudiar la
relacion que liga la fraccion de ahorro con la proporci on de poblacion 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 mas 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)
6 8 10 12 14 16

1
0

5
0
5
1
0
Fitted values
R
e
s
i
d
u
a
l
s
lm(sr ~ pop15 + pop75 + dpi + ddpi)
Residuals vs Fitted
Zambia
Chile
Philippines
Cuando no tenemos una varianza constante una opcion es transformar las varia-
bles. Si y es la variable original y h(y) la transformada queremos determinar h de
modo que la transformada tenga varianza constante. Transformaciones habituales
que podemos valorar son la raz cuadrada o el logaritmo de la variable respuesta.
Que tipo de representacion cabe esperar cuando la varianza no es constante?
Veamos distintas representaciones de los residuos frente a los valores ajustados
correspondiendo a varianza constante, varianzas no constantes y situaciones en que
no hay linealidad.
Nota de R 37 (Hipotesis del modelo de regresion) Ilustramos como obser-
varamos residuos cuya varianza es constante. En la siguiente gura 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
0 10 20 30 40 50

1
0
1
1:50
r
n
o
r
m
(
5
0
)
0 10 20 30 40 50

1
0
1
1:50
r
n
o
r
m
(
5
0
)
0 10 20 30 40 50

1
0
1
2
1:50
r
n
o
r
m
(
5
0
)
0 10 20 30 40 50

1
0
1
2
1:50
r
n
o
r
m
(
5
0
)
En la siguiente gura tenemos como abscisas valores que van de 1 a 50 en
incrementos unitarios. El valor de residuo que generamos tienen varianza creciente.
En concreto vamos multiplicando el valor con distribucion N(0, 1) por una constante
c. La varianza es del orden del cuadrado del valor por el que multiplicamos.
par(mfrow = c(2, 2))
for (i in 1:4) plot(1:50, (1:50) * rnorm(50))
118
0 10 20 30 40 50

6
0

2
0
2
0
6
0
1:50
(
1
:
5
0
)

*

r
n
o
r
m
(
5
0
)
0 10 20 30 40 50

1
0
0

5
0
0
5
0
1
0
0
1:50
(
1
:
5
0
)

*

r
n
o
r
m
(
5
0
)
0 10 20 30 40 50

1
0
0

5
0
0
5
0
1
0
0
1:50
(
1
:
5
0
)

*

r
n
o
r
m
(
5
0
)
0 10 20 30 40 50

6
0

2
0
0
2
0
4
0
6
0
1:50
(
1
:
5
0
)

*

r
n
o
r
m
(
5
0
)
En la siguiente gura 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
0 10 20 30 40 50

1
0

5
0
5
1
0
1:50
s
q
r
t
(
(
1
:
5
0
)
)

*

r
n
o
r
m
(
5
0
)
0 10 20 30 40 50

1
5

5
0
5
1
0
1
5
2
0
1:50
s
q
r
t
(
(
1
:
5
0
)
)

*

r
n
o
r
m
(
5
0
)
0 10 20 30 40 50

5
0
5
1
0
1
5
2
0
1:50
s
q
r
t
(
(
1
:
5
0
)
)

*

r
n
o
r
m
(
5
0
)
0 10 20 30 40 50

1
5

5
0
5
1
0
1:50
s
q
r
t
(
(
1
:
5
0
)
)

*

r
n
o
r
m
(
5
0
)
Finalmente en la siguiente gura mostramos un ejemplo de un residuo no lineal.
Es un caso en que no podemos suponer que la media es una funcion lineal de los
predictores.
par(mfrow = c(2, 2))
for (i in 1:4) plot(1:50, cos((1:50) * pi/25) + rnorm(50))
par(mfrow = c(1, 1))
120
0 10 20 30 40 50

2
0
1
2
3
4
1:50
c
o
s
(
(
1
:
5
0
)

*

p
i
/
2
5
)

+

r
n
o
r
m
(
5
0
)
0 10 20 30 40 50

1
0
1
2
1:50
c
o
s
(
(
1
:
5
0
)

*

p
i
/
2
5
)

+

r
n
o
r
m
(
5
0
)
0 10 20 30 40 50

1
0
1
2
1:50
c
o
s
(
(
1
:
5
0
)

*

p
i
/
2
5
)

+

r
n
o
r
m
(
5
0
)
0 10 20 30 40 50

1
0
1
2
3
1:50
c
o
s
(
(
1
:
5
0
)

*

p
i
/
2
5
)

+

r
n
o
r
m
(
5
0
)
Normalidad
La siguiente hipotesis a valorar es la normalidad de los errores. La herramienta
graca mas habitual es el dibujo q-q o la representacion cuantil-cuantil. Ordenamos
los residuos y representamos los residuos ordenados en funcion de
1
(
i
n+1
) para
i = 1, . . . , n. Si los residuos tienen una distribucion normal entonces deben estar
alineados. El histograma no es muy adecuado para ver la normalidad de los residuos.
Nota de R 38 (Dibujos cuantil-cuantil) Para los datos savings representamos
un dibujo q-q. En la gura que sigue mostramos como hacerlo despues de ajustar el
modelo y utilizando la funcion plot (realmente estamos utilizando plot.lm).
plot(savings.lm, which = 2)
121
2 1 0 1 2

1
0
1
2
3
Theoretical Quantiles
S
t
a
n
d
a
r
d
i
z
e
d

r
e
s
i
d
u
a
l
s
lm(sr ~ pop15 + pop75 + dpi + ddpi)
Normal QQ
Zambia
Chile
Philippines
En la siguiente gura 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
2 1 0 1 2

5
0
5
1
0
Normal QQ Plot
Theoretical Quantiles
R
e
s
i
d
u
o
s
Hemos visto como es una dibujo q-q cuando tenemos normalidad. Pero: y
que pasa cuando no tenemos normalidad. Esto es lo interesante saber que tene-
mos que buscar para detectar que los residuos no siguen una distribucion normal.
Nota de R 39 (Dibujos cuantil-cuantil y error no normal) Veamos como se
modican 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 dis-
tribucion normal. Luego tenemos la lognormal, la densidad de una Cauchy y la
densidad uniforme. La lognormal se toma como ejemplo de distribucion asimetrica,
la Cauchy como ejemplo de una distribucion con las colas mas largas que la normal
y nalmente la uniforme como ejemplo de distribucion con las colas mas cortas.
par(mfrow = c(2, 2))
curve(dnorm, xlim = c(-3, 3))
curve(dlnorm, xlim = c(-3, 3))
curve(dcauchy, xlim = c(-3, 3))
curve(dunif, xlim = c(-3, 3))
123
3 2 1 0 1 2 3
0
.
0
0
.
1
0
.
2
0
.
3
0
.
4
x
d
n
o
r
m
(
x
)
3 2 1 0 1 2 3
0
.
0
0
.
2
0
.
4
0
.
6
x
d
l
n
o
r
m
(
x
)
3 2 1 0 1 2 3
0
.
0
5
0
.
1
5
0
.
2
5
x
d
c
a
u
c
h
y
(
x
)
3 2 1 0 1 2 3
0
.
0
0
.
2
0
.
4
0
.
6
0
.
8
1
.
0
x
d
u
n
i
f
(
x
)
En la gura que sigue tenemos nueve dibujos q-q realizados con datos simulados
con una distribucion normal.
par(mfrow = c(2, 2))
for (i in 1:4) {
residuos <- rnorm(50)
qqnorm(residuos)
qqline(residuos)
}
124
2 1 0 1 2

1
0
1
Normal QQ Plot
Theoretical Quantiles
S
a
m
p
l
e

Q
u
a
n
t
i
l
e
s
2 1 0 1 2

1
0
1
2
Normal QQ Plot
Theoretical Quantiles
S
a
m
p
l
e

Q
u
a
n
t
i
l
e
s
2 1 0 1 2

1
0
1
2
3
Normal QQ Plot
Theoretical Quantiles
S
a
m
p
l
e

Q
u
a
n
t
i
l
e
s
2 1 0 1 2

1
0
1
2
Normal QQ Plot
Theoretical Quantiles
S
a
m
p
l
e

Q
u
a
n
t
i
l
e
s
La gura que sigue muestra el dibujo q-q con datos simulados correspondientes
a la distribucion lognormal.
par(mfrow = c(2, 2))
for (i in 1:4) {
residuos <- exp(rnorm(50))
qqnorm(residuos)
qqline(residuos)
}
125
2 1 0 1 2
0
1
2
3
4
5
6
Normal QQ Plot
Theoretical Quantiles
S
a
m
p
l
e

Q
u
a
n
t
i
l
e
s
2 1 0 1 2
0
2
4
6
8
1
0
Normal QQ Plot
Theoretical Quantiles
S
a
m
p
l
e

Q
u
a
n
t
i
l
e
s
2 1 0 1 2
0
5
1
0
1
5
2
0
2
5
Normal QQ Plot
Theoretical Quantiles
S
a
m
p
l
e

Q
u
a
n
t
i
l
e
s
2 1 0 1 2
0
2
4
6
8
Normal QQ Plot
Theoretical Quantiles
S
a
m
p
l
e

Q
u
a
n
t
i
l
e
s
La gura que sigue muestra el dibujo q-q con datos simulados correspondientes
a la distribucion de Cauchy.
par(mfrow = c(2, 2))
for (i in 1:4) {
residuos <- rcauchy(50)
qqnorm(residuos)
qqline(residuos)
}
126
2 1 0 1 2

6
0

4
0

2
0
0
Normal QQ Plot
Theoretical Quantiles
S
a
m
p
l
e

Q
u
a
n
t
i
l
e
s
2 1 0 1 2

1
0
0
1
0
2
0
3
0
4
0
Normal QQ Plot
Theoretical Quantiles
S
a
m
p
l
e

Q
u
a
n
t
i
l
e
s
2 1 0 1 2

2
0
0
1
0
2
0
3
0
4
0
Normal QQ Plot
Theoretical Quantiles
S
a
m
p
l
e

Q
u
a
n
t
i
l
e
s
2 1 0 1 2

2
0

1
0

5
0
5
Normal QQ Plot
Theoretical Quantiles
S
a
m
p
l
e

Q
u
a
n
t
i
l
e
s
La gura que sigue muestra el dibujo q-q con datos simulados correspondientes
a la distribucion de uniforme.
par(mfrow = c(2, 2))
for (i in 1:4) {
residuos <- runif(50)
qqnorm(residuos)
qqline(residuos)
}
127
2 1 0 1 2
0
.
0
0
.
2
0
.
4
0
.
6
0
.
8
1
.
0
Normal QQ Plot
Theoretical Quantiles
S
a
m
p
l
e

Q
u
a
n
t
i
l
e
s
2 1 0 1 2
0
.
0
0
.
2
0
.
4
0
.
6
0
.
8
1
.
0
Normal QQ Plot
Theoretical Quantiles
S
a
m
p
l
e

Q
u
a
n
t
i
l
e
s
2 1 0 1 2
0
.
0
0
.
2
0
.
4
0
.
6
0
.
8
1
.
0
Normal QQ Plot
Theoretical Quantiles
S
a
m
p
l
e

Q
u
a
n
t
i
l
e
s
2 1 0 1 2
0
.
0
0
.
2
0
.
4
0
.
6
0
.
8
1
.
0
Normal QQ Plot
Theoretical Quantiles
S
a
m
p
l
e

Q
u
a
n
t
i
l
e
s
Como vemos no es simple la interpretacion de estos dibujos. Por ejemplo, no es
facil diferenciar entre una distribucion con colas mas largas de una situacion en don-
de tenemos observaciones anomalas. Como hacerlo? Si quitamos las observaciones
extremas y aparecen otras estamos en una distribucion con colas largas.
Si tenemos muestras grandes el problema de la no normalidad se alivia. El pro-
blema de la no normalidad es mayor para colas largas que para colas mas cortas.
La asimetra se resolvera transformando los datos.
Tambien podemos usar un test de normalidad. Un test de normalidad es un
cualquier test estadstico donde la hipotesis nula es que los datos observados (en
nuestro caso los residuos observados) proceden de una distribucion normal. Una
opcion que viene implementada con la funcion shapiro.test es el test de Shapiro-
Wilk.
Nota de R 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 Austria Belgium Bolivia Brazil Canada
## 0.8636 0.6164 2.2190 -0.6983 3.5528 -0.3169
## Chile China Colombia Costa Rica Denmark Ecuador
128
## -8.2422 2.5360 -1.4517 5.1251 5.4002 -2.4056
## Finland France Germany Greece Guatamala Honduras
## -1.6811 2.4755 -0.1807 -3.1162 -3.3553 0.7100
## Iceland India Ireland Italy Japan Korea
## -6.2106 0.5087 3.3911 1.9268 5.2815 -6.1070
## Luxembourg Malta Norway Netherlands New Zealand Nicaragua
## -1.6708 2.9749 -0.8718 0.4255 2.2856 0.6464
## Panama Paraguay Peru Philippines Portugal South Africa
## -3.2942 -6.1258 6.5394 6.6750 -0.7684 0.4832
## South Rhodesia Spain Sweden Switzerland Turkey Tunisia
## 1.2914 -0.6712 -4.2603 2.4868 -2.6657 -2.8179
## United Kingdom United States Venezuela Zambia Jamaica Uruguay
## -2.6924 -1.1116 3.6325 9.7509 -3.0185 -2.2638
## Libya Malaysia
## -2.8295 -2.9709
shapiro.test(residuals(savings.lm))
##
## Shapiro-Wilk normality test
##
## data: residuals(savings.lm)
## W = 0.987, p-value = 0.8524
Incorrelacion de los errores
Estamos asumiendo que los errores son incorrelados. La correlacion entre
los datos pueden venir de que han sido observados proximos bien en el tiempo bien
en el espacio. Como contrastar si los residuos son incorrelados?
Un test de la hipotesis de incorrelacion es el test de Durbin-Watson que utiliza
el siguiente estadstico
DW =

n
i=2
(
i

i1
)
2

n
i=1

2
i
, (6.36)
bajo la hipotesis 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 correlacion 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
Observaciones anomalas y observaciones inuyentes
Algunas observaciones no ajustan bien al modelo y son llamadas observaciones
anomalas. Otras observaciones inuyen mucho en el ajuste y lo modican de un
modo substantivo. Estas ultimas reciben el nombre de observaciones inuyentes.
Una observacion dada puede ser o bien anomala o bien inuyente o ambas cosas.
Empecemos estudiando que se entiende por inuencia de una observacion. Lla-
maremos a h
i
= H
ii
, esto es, el valor en la posicion (i, i) de la matriz H la inuencia
(leverage en ingles). Notemos que var(
i
) =
2
(1 h
i
). En consecuencia, una in-
uencia alta supone una varianza del correspondiente residuo baja. Forzamos al
ajuste a que este proximo a y
i
. Se tiene que

p
i=1
h
i
= p. En consecuencia el valor
medio de los h
i
es p/n. Como una regla simple de aplicar si la inuencia h
i
es mayor
que 2p/n debemos de observar el dato con atencion. Buscamos valores grandes de
las inuencias.
Nota de R 42 Calculamos las inuencias para los datos savings. En la siguiente
gura aparece una representacion de las inuencias respecto de los residuos estan-
darizados. Calculamos las inuencias.
savings.inf <- influence(savings.lm)
savings.inf$hat
## Australia Austria Belgium Bolivia Brazil Canada
## 0.06771 0.12038 0.08748 0.08947 0.06956 0.15840
## Chile China Colombia Costa Rica Denmark Ecuador
## 0.03730 0.07796 0.05730 0.07547 0.06272 0.06373
## Finland France Germany Greece Guatamala Honduras
## 0.09204 0.13620 0.08736 0.09662 0.06049 0.06008
## Iceland India Ireland Italy Japan Korea
## 0.07050 0.07145 0.21224 0.06651 0.22331 0.06080
## Luxembourg Malta Norway Netherlands New Zealand Nicaragua
## 0.08635 0.07940 0.04793 0.09061 0.05422 0.05035
## Panama Paraguay Peru Philippines Portugal South Africa
## 0.03897 0.06937 0.06505 0.06425 0.09715 0.06510
## South Rhodesia Spain Sweden Switzerland Turkey Tunisia
## 0.16081 0.07733 0.12399 0.07359 0.03964 0.07457
## United Kingdom United States Venezuela Zambia Jamaica Uruguay
## 0.11651 0.33369 0.08628 0.06433 0.14076 0.09795
## Libya Malaysia
## 0.53146 0.06523
Y las representamos.
plot(savings.lm, which = 5)
130
0.0 0.1 0.2 0.3 0.4 0.5

1
0
1
2
3
Leverage
S
t
a
n
d
a
r
d
i
z
e
d

r
e
s
i
d
u
a
l
s
lm(sr ~ pop15 + pop75 + dpi + ddpi)
Cook's distance
1
0.5
0.5
1
Residuals vs Leverage
Libya
Japan
Zambia
Notemos que Libia es el pais que tiene un mayor valor de la inuencia.
Otra posibilidad es para encontrar observaciones anomalas consiste en trabajar
con los residuos estudentizados. Veamos su denicion. Notemos que var(
i
) =
2
(1
h
i
) lo que sugiere tomar
r
i
=

i

1 h
i
(6.37)
Estos son los residuos estudentizados. Si el modelo que asumimos es correcto enton-
ces la varianza de estos residuos es uno y son aproximadamente incorrelados. Note-
mos que la estudentizacion corrige las varianzas desiguales de los residuos cuando
las varianzas de los errores son iguales entre si. En otro caso esto no es cierto. Si
las varianzas de los errores no son iguales (tenemos heterocedasticidad) entonces la
estudentizacion no hace homogeneas las varianzas de los residuos.
Algunos autores (y programas) tienden a usar en lugar de los residuos originales,
los residuos estudentizados.
Una observacion anomala es una observacion que no se ajusta a nuestro mo-
delo. Hemos de protegernos frente a este tipo de puntos. Un test para observaciones
anomalas es util si nos permite distinguir entre observaciones que son realmente
anomala y aquellas que simplemente tienen un residuo grande aunque no excepcio-
nalmente grande.
Para detectar este tipo de puntos, lo que hacemos es excluir el punto i-esimo y
ajustamos el modelo sin ese punto obteniendo los estimadores

(i)
y
2
(i)
. Tendremos
131
para el punto i-esimo la siguiente estimacion
y
(i)
= x

(i)
. (6.38)
Si el valor y
i
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
var(y
i
y
(i)
) =
2
(i)
(1 +x

i
(X

(i)
X
(i)
)
1
x
i
)
de modo que podemos denir los residuos jackknife como
t
i
=
y
i
y
(i)
_
var(y
i
y
(i)
)
=
y
i
y
(i)

(i)
_
1 +x

i
(X

(i)
X
(i)
)
1
x
i
t
np1
,
asumiendo que el modelo es correcto. Se tiene la siguiente expresion
t
i
=

i

(i)

1 h
i
= r
i
_
n p 1
n p r
2
i
_
1/2
.
Puesto que cada uno de los t
i
sigue una distribucion conocida podemos contrastar si
tenemos una observacion anomala. En principio el procedimiento sera simplemente
jar un nivel de signicacion y determinar el percentil 1

2
de una distribucion
t de Student con n p 1 grados de libertad. Si denotamos el percentil como
t
np1,1

2
entonces residuos que no esten en el intervalo [t
np1,1

2
, t
np1,1

2
]
seran sospechosos. Esto no es adecuado. Porque estamos analizando n residuos
estudentizados. Con uno solo s que sera aplicable el razonamiento. Tenemos un
problema de muchos tests simultaneamente considerados. Si aplicamos la correccion
de Bonferroni tendramos que corregir el nivel de signicacion y trabajar con
/n. Por tanto, consideramos como sospechosos aquellos residuos estandarizados
que esten fuera del intervalo [t
np1,1

2n
, t
np1,1

2n
].
Nota de R 43 (Residuos estudentizados) Calculamos para los datos savings
los residuos estudentizados con la funcion rstudent. La pregunta que nos hacemos
es si alguno de estos residuos es muy grande o muy peque no. Comparamos el modulo
de los residuos estandarizados con t
np1,1

2n
.
savings.rs <- rstudent(savings.lm)
Comparamos los residuos con el percentil correspondiente.
abs(savings.rs) > qt(1 - 0.05/(50 * 2), 44)
## Australia Austria Belgium Bolivia Brazil Canada
## FALSE FALSE FALSE FALSE FALSE FALSE
## Chile China Colombia Costa Rica Denmark Ecuador
## FALSE FALSE FALSE FALSE FALSE FALSE
## Finland France Germany Greece Guatamala Honduras
## FALSE FALSE FALSE FALSE FALSE FALSE
## Iceland India Ireland Italy Japan Korea
## FALSE FALSE FALSE FALSE FALSE FALSE
## Luxembourg Malta Norway Netherlands New Zealand Nicaragua
## FALSE FALSE FALSE FALSE FALSE FALSE
## Panama Paraguay Peru Philippines Portugal South Africa
## FALSE FALSE FALSE FALSE FALSE FALSE
## South Rhodesia Spain Sweden Switzerland Turkey Tunisia
132
## FALSE FALSE FALSE FALSE FALSE FALSE
## United Kingdom United States Venezuela Zambia Jamaica Uruguay
## FALSE FALSE FALSE FALSE FALSE FALSE
## Libya Malaysia
## FALSE FALSE
Un punto inuyente es aquel que cuando lo quitamos causa una modicacion
importante del ajuste. Un punto inuyente puede ser o no una observacion anomala,
puede tener o no una alta inuencia pero tendera a tener al menos una de las dos
propiedades. El estadstico de Cook es una de las maneras de medir la inuencia.
Se dene como
D
i
=
( y
i
y
(i)
)

( y
i
y
(i)
)
p
2
=
1
p
r
2
i
h
i
1 h
i
. (6.39)
Nota de R 44 Con los datos savings representamos las distancias de Cook y las
obtenemos utilizando la funcion Cooks.distance. Vemos Lbia, Zambia y Japon son
observaciones que inuyen mucho en el ajuste. Habra que valorar el ajuste con y
sin estas observaciones.
plot(savings.lm, which = 4)
0 10 20 30 40 50
0
.
0
0
0
.
0
5
0
.
1
0
0
.
1
5
0
.
2
0
0
.
2
5
Obs. number
C
o
o
k
'
s

d
i
s
t
a
n
c
e
lm(sr ~ pop15 + pop75 + dpi + ddpi)
Cook's distance
Libya
Japan
Zambia
Tambien podemos ver los valores de la distancia de Cook.
133
cooks.distance(savings.lm)
## Australia Austria Belgium Bolivia Brazil Canada
## 8.036e-04 8.176e-04 7.155e-03 7.279e-04 1.403e-02 3.106e-04
## Chile China Colombia Costa Rica Denmark Ecuador
## 3.781e-02 8.157e-03 1.879e-03 3.208e-02 2.880e-02 5.819e-03
## Finland France Germany Greece Guatamala Honduras
## 4.364e-03 1.547e-02 4.737e-05 1.590e-02 1.067e-02 4.742e-04
## Iceland India Ireland Italy Japan Korea
## 4.353e-02 2.966e-04 5.440e-02 3.919e-03 1.428e-01 3.555e-02
## Luxembourg Malta Norway Netherlands New Zealand Nicaragua
## 3.994e-03 1.147e-02 5.559e-04 2.744e-04 4.379e-03 3.226e-04
## Panama Paraguay Peru Philippines Portugal South Africa
## 6.334e-03 4.157e-02 4.401e-02 4.522e-02 9.734e-04 2.405e-04
## South Rhodesia Spain Sweden Switzerland Turkey Tunisia
## 5.267e-03 5.659e-04 4.056e-02 7.335e-03 4.224e-03 9.562e-03
## United Kingdom United States Venezuela Zambia Jamaica Uruguay
## 1.497e-02 1.284e-02 1.886e-02 9.663e-02 2.403e-02 8.532e-03
## Libya Malaysia
## 2.681e-01 9.113e-03
6.10. Inferencia sobre el modelo
Hemos formulado un modelo probabilstico en donde relacionamos la variable
respuesta con una serie de variables predictoras. Es claro que el experimentador
introduce en el modelo como variables predictoras variables que a priori sospecha
que pueden ser relevantes a la hora de predecir. Esto no quiere decir que luego
podamos prescindir de alguna o algunas de ellas. Bien porque se demuestra que
dicha variable no es relevante o bien porque la informacion que contiene esa variable
predictora esta contenida en las otras.
Supongamos que nos planteamos el siguiente contraste de hipotesis: H
0
:
i1
=
. . . =
ir
= 0 frente a la alternativa H
1
: No H
0
. Si un coeciente determinado
i
es
nulo entonces la variable respuesta Y no dependera de la variable asociada a dicho
coeciente. En denitiva, la hipotesis nula considerada se podra formular diciendo
que la variable Y no depende de las variables x
i1
, . . . , x
ir
. Como contrastar las
hipotesis indicadas? Se puede hacer mediante el test del cociente de verosimilitudes,
es decir, utilizando el estadstico
=
max
(,)0
L(, )
max
(,)
L(, )
(6.40)
siendo L(, ) =
1
(2)
n
2
n
exp{
1
2
2
(y X)

(y X)},
0
= {(, ) R
p

(0, +) :
i1
= . . . =
ir
= 0} y = R
p
(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 verica que
SS(Error)
0
SS(Error)

2
r

2
r
134
y
SS(Error)

2
(n p)

2
np
ademas ambas cantidades son independientes. Por ello se verica que
F =
(SS(Error)
0
SS(Error)

)/r
(SS(Error)

)/(n p)
F
r,np
.
De modo que rechazaremos la hipotesis nula de que H
0
:
i1
= . . . =
ir
= 0 si
F > F
r,np,1
donde F
r,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 coecientes, salvo el
termino constante
0
, valen cero, es decir, la hipotesis nula H
0
:
1
= . . . =
p1
=
0. En este caso tendremos que
F =
((y 1
n
y)

(y 1
n
y) (y X

(y X

))/(p 1)
(y X

(y X

)/(n p)
F
p1,np
.
Como segundo caso tendramos la situacion en que contrastamos que un solo coe-
ciente vale cero, es decir, la hipotesis nula H
0
:
i
= 0 frente a la alternativa
H
1
:
i
= 0. Tenemos que bajo la hipotesis nula indicada
t
i
=

i
SE(

i
)
t
np
donde SE(

i
) es el error estandar de

i
y viene dado en ecuacion 6.30. Se tiene, de
hecho, que
F = t
2
i
.
Rechazaremos la hipotesis nula si
|t
i
| > t
np,1

2
o bien si
F = t
2
i
> F
1,np,1

2
.
Ambos procedimientos son equivalentes como se puede ver facilmente.
Nota de R 45 (Contrastes sobre los coecientes) Utilizando los datos savings
podemos ver en la ultima lnea el contraste de que todas las variables predictoras tie-
nen su coeciente 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 coeciente asociado no nulo.
Cuando contrastamos la hipotesis de que cada coeciente valga cero vemos que
no podemos rechazarlo para las variables pop75 y dpi.
Realizamos un summary del modelo de regresion ajustado.
summary(savings.lm)
##
## Call:
## lm(formula = sr ~ pop15 + pop75 + dpi + ddpi, data = savings)
##
135
## Residuals:
## Min 1Q Median 3Q Max
## -8.242 -2.686 -0.249 2.428 9.751
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 28.566087 7.354516 3.88 0.00033 ***
## pop15 -0.461193 0.144642 -3.19 0.00260 **
## pop75 -1.691498 1.083599 -1.56 0.12553
## dpi -0.000337 0.000931 -0.36 0.71917
## ddpi 0.409695 0.196197 2.09 0.04247 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 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 conanza para cada uno de los coecientes
i
.
Teniendo en cuenta que

ii
SE(

i)
t
np
entonces el intervalo de conanza al nivel
1 para el coeciente
i
sera

i
t
np,1

2
SE(

i
).
Nota de R 46 (Intervalos de conanza) Calculamos los intervalos de conan-
za para los coecientes de savings con la funcion connt.
confint(savings.lm)
## 2.5 % 97.5 %
## (Intercept) 13.753331 43.378842
## pop15 -0.752518 -0.169869
## pop75 -3.873978 0.490983
## dpi -0.002212 0.001538
## ddpi 0.014534 0.804856
Supongamos que consideramos un vector de predictores x
0
y pretendemos pre-
decir la correspondiente media de la variable respuesta. Esta media viene dada por
E[Y |x
0
] = x

0
.
La estimacion de esta media es
x

,
que tiene varianza
var(x

) = x

0
(X

X)
1
x
0

2
.
Esta varianza la estimamos mediante
var(x

) = x

0
(X

X)
1
x
0

2
.
Y el intervalo de conanza sera
x

t
np,1

2

_
x

0
(X

X)
1
x
0
.
136
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 = x

0
+.
En consecuencia la prediccion de la propia observacion sera
x

pero hay que considerar la varianza a nadida por el error de modo que la varianza
al predecir Y dado x
0
sera
var(x

) +
2
que estimaramos como
var(x

) +
2
= x

0
(X

X)
1
x
0

2
+
2
= (x

0
(X

X)
1
x
0
+ 1)
2
.
Finalmente tendremos que el intervalo de conanza para una observacion Y que
tiene predictores x
0
es el siguiente
x

t
np,1

2

_
x

0
(X

X)
1
x
0
+ 1
Nota de R 47 Con los datos savings consideramos como obtener las prediccio-
nes, intervalos de conanza 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 conanza para las medias
de las predicciones (predict con la opcion interval=condence) y los intervalos de
conanza para las observaciones (predict con la opcion interval=prediction).
Primero obtengamos las predicciones para los propios datos.
savings.lm <- lm(sr ~ pop15 + pop75 + dpi + ddpi, savings)
predict(savings.lm)
## Australia Austria Belgium Bolivia Brazil Canada
## 10.566 11.454 10.951 6.448 9.327 9.107
## Chile China Colombia Costa Rica Denmark Ecuador
## 8.842 9.364 6.432 5.655 11.450 5.996
## Finland France Germany Greece Guatamala Honduras
## 12.921 10.165 12.731 13.786 6.365 6.990
## Iceland India Ireland Italy Japan Korea
## 7.481 8.491 7.949 12.353 15.819 10.087
## Luxembourg Malta Norway Netherlands New Zealand Nicaragua
## 12.021 12.505 11.122 14.224 8.384 6.654
## Panama Paraguay Peru Philippines Portugal South Africa
## 7.734 8.146 6.161 6.105 13.258 10.657
## South Rhodesia Spain Sweden Switzerland Turkey Tunisia
## 12.009 12.441 11.120 11.643 7.796 5.628
## United Kingdom United States Venezuela Zambia Jamaica Uruguay
## 10.502 8.672 5.587 8.809 10.739 11.504
## Libya Malaysia
## 11.720 7.681
En segundo lugar, obtenemos los intervalos de conanza para la prediccion de la
media.
137
predict(savings.lm, interval = "confidence")
## fit lwr upr
## Australia 10.566 8.573 12.559
## Austria 11.454 8.796 14.111
## Belgium 10.951 8.686 13.216
## Bolivia 6.448 4.157 8.739
## Brazil 9.327 7.307 11.347
## Canada 9.107 6.059 12.155
## Chile 8.842 7.363 10.321
## China 9.364 7.225 11.502
## Colombia 6.432 4.598 8.265
## Costa Rica 5.655 3.551 7.759
## Denmark 11.450 9.532 13.368
## Ecuador 5.996 4.062 7.929
## Finland 12.921 10.597 15.245
## France 10.165 7.338 12.991
## Germany 12.731 10.467 14.994
## Greece 13.786 11.405 16.167
## Guatamala 6.365 4.482 8.249
## Honduras 6.990 5.113 8.867
## Iceland 7.481 5.447 9.514
## India 8.491 6.444 10.539
## Ireland 7.949 4.420 11.477
## Italy 12.353 10.378 14.328
## Japan 15.819 12.199 19.438
## Korea 10.087 8.198 11.975
## Luxembourg 12.021 9.770 14.271
## Malta 12.505 10.347 14.663
## Norway 11.122 9.445 12.799
## Netherlands 14.224 11.919 16.530
## New Zealand 8.384 6.601 10.168
## Nicaragua 6.654 4.935 8.372
## Panama 7.734 6.222 9.246
## Paraguay 8.146 6.128 10.163
## Peru 6.161 4.207 8.114
## Philippines 6.105 4.164 8.046
## Portugal 13.258 10.871 15.646
## South Africa 10.657 8.703 12.611
## South Rhodesia 12.009 8.937 15.080
## Spain 12.441 10.311 14.571
## Sweden 11.120 8.423 13.817
## Switzerland 11.643 9.565 13.721
## Turkey 7.796 6.271 9.321
## Tunisia 5.628 3.536 7.719
## United Kingdom 10.502 7.888 13.117
## United States 8.672 4.247 13.096
## Venezuela 5.587 3.338 7.837
## Zambia 8.809 6.866 10.752
## Jamaica 10.739 7.865 13.612
## Uruguay 11.504 9.107 13.901
## Libya 11.720 6.136 17.303
## Malaysia 7.681 5.725 9.637
138
Y nalmente obtenemos los intervalos de conanza para la prediccion de la ob-
servacion.
predict(savings.lm, interval = "prediction")
## Warning: predictions on current data refer to future responses
## fit lwr upr
## Australia 10.566 2.65239 18.48
## Austria 11.454 3.34674 19.56
## Belgium 10.951 2.96408 18.94
## Bolivia 6.448 -1.54594 14.44
## Brazil 9.327 1.40632 17.25
## Canada 9.107 0.86361 17.35
## Chile 8.842 1.04174 16.64
## China 9.364 1.41206 17.32
## Colombia 6.432 -1.44364 14.31
## Costa Rica 5.655 -2.28779 13.60
## Denmark 11.450 3.55427 19.35
## Ecuador 5.996 -1.90361 13.89
## Finland 12.921 4.91740 20.92
## France 10.165 2.00061 18.33
## Germany 12.731 4.74420 20.72
## Greece 13.786 5.76572 21.81
## Guatamala 6.365 -1.52194 14.25
## Honduras 6.990 -0.89571 14.88
## Iceland 7.481 -0.44375 15.40
## India 8.491 0.56345 16.42
## Ireland 7.949 -0.48378 16.38
## Italy 12.353 4.44367 20.26
## Japan 15.819 7.34744 24.29
## Korea 10.087 2.19862 17.98
## Luxembourg 12.021 4.03802 20.00
## Malta 12.505 4.54786 20.46
## Norway 11.122 3.28141 18.96
## Netherlands 14.224 6.22601 22.22
## New Zealand 8.384 0.52059 16.25
## Nicaragua 6.654 -1.19581 14.50
## Panama 7.734 -0.07263 15.54
## Paraguay 8.146 0.22559 16.07
## Peru 6.161 -1.74359 14.06
## Philippines 6.105 -1.79621 14.01
## Portugal 13.258 5.23607 21.28
## South Africa 10.657 2.75248 18.56
## South Rhodesia 12.009 3.75673 20.26
## Spain 12.441 4.49157 20.39
## Sweden 11.120 3.00037 19.24
## Switzerland 11.643 3.70738 19.58
## Turkey 7.796 -0.01362 15.60
## Tunisia 5.628 -2.31147 13.57
## United Kingdom 10.502 2.40955 18.60
## United States 8.672 -0.17340 17.52
## Venezuela 5.587 -2.39507 13.57
## Zambia 8.809 0.90760 16.71
139
## Jamaica 10.739 2.55827 18.92
## Uruguay 11.504 3.47853 19.53
## Libya 11.720 2.24140 21.20
## Malaysia 7.681 -0.22396 15.59
6.11. Seleccion de variables
Habitualmente tenemos un gran conjunto de variables y pretendemos determinar
un buen conjunto de variables. En que sentido bueno? En primer lugar, bueno en
el sentido de sencillo. Tener pocas variables supone un modelo mas simple, mas
facil de entender. Es bueno tener pocas variables porque luego no tendremos que
recoger esta informacion. Es bueno porque los estimadores de los parametros que
intervienen en el modelo son mucho menos variables.
Dos son las aproximaciones al problema de la seleccion de variables. En la prime-
ra vamos comparando modelos sucesivos y, basicamente, consideramos si los modelos
sucesivos que comparamos dieren signicativamente como modelos. En la segun-
da se adopta una medida de calidad global del ajuste y se plantea el problema de
determinar el modelo que optimiza ese criterio global.
6.11.1. Procedimientos que comparan modelos
Tres procedimientos se pueden considerar: seleccion backward, seleccion for-
ward y seleccion stepwise. En el primer procedimiento, seleccion backward
(seleccion hacia atras), empezamos el proceso de seleccion con un modelo en que
tenemos todas las variables consideradas a priori. Elegimos aquella que, cuando la
quitamos, el p-valor resultante de comparar ambos modelos (completo y aquel que
le falta la variable considerada) es mayor. Si este p-valor es mayor que un valor
previamente especicado entonces eliminamos la variable del modelo. Y as conti-
nuamos hasta que al eliminar una variable el p-valor correspondiente sea menor que
el elegido.
El procedimiento 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 mas signicativo. 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 signicativamente.
El procedimiento mas usado es el seleccion stepwise (hacia adelante y hacia
atras). Vistos los anteriores es de esperar como funciona este metodo. Despues de la
inclusion de una variable consideramos la posible exclusion de las variables que estan
en el modelo. Si es posible eliminar una lo hacemos y nos planteamos la inclusion
de la variable que produzca un cambio mas signicativo.
Nota de R 48 (Seleccion hacia atras) Utilizamos los datos state y aplicamos
un procedimiento de seleccion backward.
data(state)
statedata <- data.frame(state.x77, row.names = state.abb, check.names = T)
g <- lm(Life.Exp ~ ., data = statedata)
summary(g)
##
140
## Call:
## lm(formula = Life.Exp ~ ., data = statedata)
##
## Residuals:
## Min 1Q Median 3Q Max
## -1.4890 -0.5123 -0.0275 0.5700 1.4945
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 7.09e+01 1.75e+00 40.59 < 2e-16 ***
## Population 5.18e-05 2.92e-05 1.77 0.083 .
## Income -2.18e-05 2.44e-04 -0.09 0.929
## Illiteracy 3.38e-02 3.66e-01 0.09 0.927
## Murder -3.01e-01 4.66e-02 -6.46 8.7e-08 ***
## HS.Grad 4.89e-02 2.33e-02 2.10 0.042 *
## Frost -5.74e-03 3.14e-03 -1.82 0.075 .
## Area -7.38e-08 1.67e-06 -0.04 0.965
## ---
## Signif. codes: 0 '***' 0.001 '**' 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 3Q Max
## -1.4905 -0.5253 -0.0255 0.5716 1.5037
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 7.10e+01 1.39e+00 51.17 < 2e-16 ***
## Population 5.19e-05 2.88e-05 1.80 0.079 .
## Income -2.44e-05 2.34e-04 -0.10 0.917
## Illiteracy 2.85e-02 3.42e-01 0.08 0.934
## Murder -3.02e-01 4.33e-02 -6.96 1.5e-08 ***
## HS.Grad 4.85e-02 2.07e-02 2.35 0.024 *
## Frost -5.78e-03 2.97e-03 -1.94 0.058 .
## ---
## Signif. codes: 0 '***' 0.001 '**' 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 3Q Max
## -1.4892 -0.5122 -0.0329 0.5645 1.5166
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 7.11e+01 1.03e+00 69.07 < 2e-16 ***
## Population 5.11e-05 2.71e-05 1.89 0.066 .
## Income -2.48e-05 2.32e-04 -0.11 0.915
## Murder -3.00e-01 3.70e-02 -8.10 2.9e-10 ***
## HS.Grad 4.78e-02 1.86e-02 2.57 0.014 *
## Frost -5.91e-03 2.47e-03 -2.39 0.021 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 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 3Q Max
## -1.471 -0.535 -0.037 0.576 1.507
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 7.10e+01 9.53e-01 74.54 < 2e-16 ***
## Population 5.01e-05 2.51e-05 2.00 0.052 .
## Murder -3.00e-01 3.66e-02 -8.20 1.8e-10 ***
## HS.Grad 4.66e-02 1.48e-02 3.14 0.003 **
## Frost -5.94e-03 2.42e-03 -2.46 0.018 *
## ---
## Signif. codes: 0 '***' 0.001 '**' 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 3Q Max
## -1.502 -0.539 0.101 0.592 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 jarnos 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) denido como
AIC = 2 max logverosimilitud + 2p.
A partir de la denicion de esta medida global es claro que un valor peque no
indica un mejor ajuste.
Nota de R 49 (Seleccion de variables) Notemos que con en la funcion step
podemos indicar con el argumento direction si queremos both (stepwise), o bien
backward o bien forward.
data(state)
statedata <- data.frame(state.x77, row.names = state.abb, check.names = T)
g <- lm(Life.Exp ~ ., data = statedata)
step(g)
## Start: AIC=-22.18
## Life.Exp ~ Population + Income + Illiteracy + Murder + HS.Grad +
## Frost + Area
##
## Df Sum of Sq RSS AIC
## - Area 1 0.00 23.3 -24.2
## - Income 1 0.00 23.3 -24.2
## - Illiteracy 1 0.00 23.3 -24.2
143
## <none> 23.3 -22.2
## - Population 1 1.75 25.0 -20.6
## - Frost 1 1.85 25.1 -20.4
## - HS.Grad 1 2.44 25.7 -19.2
## - Murder 1 23.14 46.4 10.3
##
## Step: AIC=-24.18
## Life.Exp ~ Population + Income + Illiteracy + Murder + HS.Grad +
## Frost
##
## Df Sum of Sq RSS AIC
## - Illiteracy 1 0.00 23.3 -26.2
## - Income 1 0.01 23.3 -26.2
## <none> 23.3 -24.2
## - Population 1 1.76 25.1 -22.5
## - Frost 1 2.05 25.3 -22.0
## - HS.Grad 1 2.98 26.3 -20.2
## - Murder 1 26.27 49.6 11.6
##
## Step: AIC=-26.17
## Life.Exp ~ Population + Income + Murder + HS.Grad + Frost
##
## Df Sum of Sq RSS AIC
## - Income 1 0.0 23.3 -28.2
## <none> 23.3 -26.2
## - Population 1 1.9 25.2 -24.3
## - Frost 1 3.0 26.3 -22.1
## - HS.Grad 1 3.5 26.8 -21.2
## - Murder 1 34.7 58.0 17.5
##
## Step: AIC=-28.16
## Life.Exp ~ Population + Murder + HS.Grad + Frost
##
## Df Sum of Sq RSS AIC
## <none> 23.3 -28.2
## - Population 1 2.1 25.4 -25.9
## - Frost 1 3.1 26.4 -23.9
## - HS.Grad 1 5.1 28.4 -20.2
## - Murder 1 34.8 58.1 15.5
##
## Call:
## lm(formula = Life.Exp ~ Population + Murder + HS.Grad + Frost,
## data = statedata)
##
## Coefficients:
## (Intercept) Population Murder HS.Grad Frost
## 7.10e+01 5.01e-05 -3.00e-01 4.66e-02 -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
##
## Df Sum of Sq RSS AIC
## - Area 1 0.00 23.3 -24.2
## - Income 1 0.00 23.3 -24.2
## - Illiteracy 1 0.00 23.3 -24.2
## <none> 23.3 -22.2
## - Population 1 1.75 25.0 -20.6
## - Frost 1 1.85 25.1 -20.4
## - HS.Grad 1 2.44 25.7 -19.2
## - Murder 1 23.14 46.4 10.3
##
## Step: AIC=-24.18
## Life.Exp ~ Population + Income + Illiteracy + Murder + HS.Grad +
## Frost
##
## Df Sum of Sq RSS AIC
## - Illiteracy 1 0.00 23.3 -26.2
## - Income 1 0.01 23.3 -26.2
## <none> 23.3 -24.2
## - Population 1 1.76 25.1 -22.5
## - Frost 1 2.05 25.3 -22.0
## - HS.Grad 1 2.98 26.3 -20.2
## - Murder 1 26.27 49.6 11.6
##
## Step: AIC=-26.17
## Life.Exp ~ Population + Income + Murder + HS.Grad + Frost
##
## Df Sum of Sq RSS AIC
## - Income 1 0.0 23.3 -28.2
## <none> 23.3 -26.2
## - Population 1 1.9 25.2 -24.3
## - Frost 1 3.0 26.3 -22.1
## - HS.Grad 1 3.5 26.8 -21.2
## - Murder 1 34.7 58.0 17.5
##
## Step: AIC=-28.16
## Life.Exp ~ Population + Murder + HS.Grad + Frost
##
## Df Sum of Sq RSS AIC
## <none> 23.3 -28.2
## - Population 1 2.1 25.4 -25.9
## - Frost 1 3.1 26.4 -23.9
## - HS.Grad 1 5.1 28.4 -20.2
## - Murder 1 34.8 58.1 15.5
##
## Call:
## lm(formula = Life.Exp ~ Population + Murder + HS.Grad + Frost,
## data = statedata)
##
145
## Coefficients:
## (Intercept) Population Murder HS.Grad Frost
## 7.10e+01 5.01e-05 -3.00e-01 4.66e-02 -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 abulon. Es un molusco. Se trata de predecir
su edad a partir de una serie de caractersticas fsicas. Los datos se pueden encontrar
en http://www.liacc.up.pt/ltorgo/Regression/DataSets.html.
La edad del abalon se calcula habitualmente cortando la concha y contando el
n umero de anillos utilizando un microscopio. Es una tarea bastante laboriosa. Se
pretende predecir la edad del animal utilizando distintas medidas que son mas faciles
de obtener.
Vemos como quitando un par de observaciones con un leverage alto el ajuste
mejora.
x <- read.table(file = "../data/abalone.dat", sep = ",")
attach(x)
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 3Q Max
## -1.3791 -0.1317 -0.0159 0.1112 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 3Q Max
## -1.3473 -0.1308 -0.0165 0.1104 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 3Q Max
## -1.3473 -0.1308 -0.0165 0.1104 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 produccion) Se trata de unos datos utilizados
para reducir costes de produccion. 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 produccion (en libras), n umero de das que ha funcionado la fabrica
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 3Q Max
## -445.0 -131.5 2.6 109.0 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 cuadratico y otro c ubico en la produccion.
b.lm <- lm(agua ~ temperatura + poly(produccion, 3) + dias + personas)
summary(b.lm)
##
## Call:
## lm(formula = agua ~ temperatura + poly(produccion, 3) + dias +
## personas)
##
## Residuals:
## Min 1Q Median 3Q Max
## -435.9 -103.8 29.4 123.9 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 gracos para el diagnostico del modelo.
plot(a.lm, which = 1)
149
3000 3500 4000

4
0
0

2
0
0
0
2
0
0
4
0
0
Fitted values
R
e
s
i
d
u
a
l
s
lm(agua ~ temperatura + produccion + dias + personas)
Residuals vs Fitted
14
6
15
plot(a.lm, which = 2)
150
2 1 0 1 2

1
0
1
2
Theoretical Quantiles
S
t
a
n
d
a
r
d
i
z
e
d

r
e
s
i
d
u
a
l
s
lm(agua ~ temperatura + produccion + dias + personas)
Normal QQ
14
6
17
plot(a.lm, which = 3)
151
3000 3500 4000
0
.
0
0
.
2
0
.
4
0
.
6
0
.
8
1
.
0
1
.
2
1
.
4
Fitted values
S
t
a
n
d
a
r
d
i
z
e
d

r
e
s
i
d
u
a
l
s
lm(agua ~ temperatura + produccion + dias + personas)
ScaleLocation
14
6
17
plot(a.lm, which = 4)
152
5 10 15
0
.
0
0
0
.
0
5
0
.
1
0
0
.
1
5
0
.
2
0
Obs. number
C
o
o
k
'
s

d
i
s
t
a
n
c
e
lm(agua ~ temperatura + produccion + dias + personas)
Cook's distance
1
4
16
plot(a.lm, which = 5)
153
0.0 0.1 0.2 0.3 0.4 0.5 0.6

1
0
1
2
Leverage
S
t
a
n
d
a
r
d
i
z
e
d

r
e
s
i
d
u
a
l
s
lm(agua ~ temperatura + produccion + dias + personas)
Cook's distance
1
0.5
0.5
1
Residuals vs Leverage
1
4
16
plot(a.lm, which = 6)
154
0
.
0
0
0
.
0
5
0
.
1
0
0
.
1
5
0
.
2
0
Leverage h
ii
C
o
o
k
'
s

d
i
s
t
a
n
c
e
0 0.1 0.2 0.3 0.4 0.5 0.6
lm(agua ~ temperatura + produccion + dias + personas)
0
0.5 1 1.5 2
Cook's dist vs Leverage h
ii
(1 h
ii
)
1
4
16
Intervalo de conanza para observaciones.
predict(a.lm, interval = "prediction")
## Warning: predictions on current data refer to future responses
## fit lwr upr
## 1 3205 2521 3890
## 2 2750 2131 3370
## 3 2657 2036 3278
## 4 3228 2601 3854
## 5 3214 2563 3864
## 6 3529 2940 4119
## 7 3538 2945 4132
## 8 3138 2556 3720
## 9 3116 2526 3706
## 10 3283 2664 3903
## 11 3469 2825 4113
## 12 3148 2501 3795
## 13 2913 2309 3517
## 14 3367 2803 3931
## 15 3627 3050 4203
## 16 4362 3691 5034
## 17 3617 3026 4208
155
Intervalo de conanza para la media.
predict(a.lm, interval = "confidence")
## fit lwr upr
## 1 3205 2788 3623
## 2 2750 2451 3050
## 3 2657 2355 2959
## 4 3228 2915 3540
## 5 3214 2854 3573
## 6 3529 3299 3760
## 7 3538 3297 3779
## 8 3138 2927 3349
## 9 3116 2884 3348
## 10 3283 2984 3583
## 11 3469 3122 3816
## 12 3148 2795 3501
## 13 2913 2648 3179
## 14 3367 3212 3522
## 15 3627 3432 3821
## 16 4362 3966 4758
## 17 3617 3383 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 demas. Se proponen dos
modelos y se ve que no hay diferencias signicativas 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 3Q Max
## -395.7 -98.1 -6.7 113.0 512.7
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) -5984.288 1628.318 -3.68 0.00089 ***
## M 8.783 4.171 2.11 0.04344 *
## So -3.803 148.755 -0.03 0.97977
## Ed 18.832 6.209 3.03 0.00486 **
## Po1 19.280 10.611 1.82 0.07889 .
## Po2 -10.942 11.748 -0.93 0.35883
## LF -0.664 1.470 -0.45 0.65465
## M.F 1.741 2.035 0.86 0.39900
## Pop -0.733 1.290 -0.57 0.57385
## NW 0.420 0.648 0.65 0.52128
## U1 -5.827 4.210 -1.38 0.17624
## U2 16.780 8.234 2.04 0.05016 .
## GDP 0.962 1.037 0.93 0.36075
## Ineq 7.067 2.272 3.11 0.00398 **
## Prob -4855.266 2272.375 -2.14 0.04063 *
## Time -3.479 7.165 -0.49 0.63071
## ---
## Signif. codes: 0 '***' 0.001 '**' 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 3Q Max
## -470.7 -78.4 -19.7 133.1 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 signicativas entre ambos modelos.
anova(crime.lm, crime.lm2)
## Analysis of Variance Table
##
## Model 1: Crime ~ M + So + Ed + Po1 + Po2 + LF + M.F + Pop + NW + U1 +
## U2 + GDP + Ineq + Prob + Time
## Model 2: Crime ~ M + Ed + Po1 + U2 + Ineq + Prob
## Res.Df RSS Df Sum of Sq F Pr(>F)
## 1 31 1354946
## 2 40 1611057 -9 -256111 0.65 0.75
158
Captulo 7
De c omo usar R en un
tiempo razonable (no facil,
no)
En este captulo se incluyen algunos consejos practicos para trabajar con R. Las
posibilidades son enormes. Sin embargo, de tantas que tiene lo mas probable es que el
usuario ocasional no llegue a conocer ninguna de ellas. Antes lo habra abandonado.
Y con razon. Si llevas 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 opcion de la tecnica? En n, 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 denitiva, se trata de eliminar cualquier tipo de aprendizaje (inicial o posterior)
para que sea de uso inmediato. Algunas personas (entre las que me encuentro)
piensan que eso no esta tan claro. Se acaba pagando el pato. Lo que no pierdes (no
me atreve a hablar de ganar) al principio lo pierdes mas tarde. Programas como R
basados en el uso de un lenguaje sencillo permiten un aprendizaje rapido y profundo.
Aprendes Estadstica al mismo tiempo que aprendes a manejar el programa. Y,
desde un punto de vista docente, es una razon importante para utilizarlo.
En este captulo he ido incluyendo distintas cuestiones basicas para el uso del
programa. Desde el como conseguirlo o instalarlo hasta como trabajar con el. Mucho
de lo que sigue se basa en mi propia experiencia. De hecho, muchos estudiantes a
los que sugieres formas de trabajo, utilizan otros trucos que les resultan mas utiles.
Mi edad (y cerrazon mental) me impiden cada vez mas adaptarme a nuevas ideas.
Es importante darse cuenta de que es un programa abierto y que, facilmente, lo
puedes integrar con otras herramientas informaticas. La idea es: elige el editor que
quieras. Genera las guras en formatos distintos y utiliza el procesador de textos
que se quiera. En n, de esto vamos a tratar.
159
7.1. Instalaci on y como trabajar con R
La direccion basica es http://cran.r-project.org. All se tienen tanto las
fuentes como versiones compiladas para Windows, Mac y Linux.
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 per-
mite seleccionar el espejo desde traer los paquetes adicionales comoda-
mente.
2. Una vez instalado el programa la opcion mas comoda es utilizar el programa
Tinn-R. Vamos escribiendo el codigo en su editor y tiene muchas herramientas
para interactuar con R. Es, sin duda, la mejor opcion para Windows.
3. Una segunda opcion es utilizar RWinEdt. Para poder usarlo hay que tener
instalado Winedt. Es un programa shareware muy util para escribir en L
A
T
E
X.
Una vez instalado WinEdt cargamos el paquete RWinEdt ?.
7.1.2. R y Linux
Es mi opcion personal de trabajo. La recomiendo denitivamente. Por Linux y
porque el trabajo con R es muy comodo.
1
Instalacion 1. Para Linux hay distintas versiones compiladas que puedes encon-
trar en cran.
2. No es complicado compilar R a partir de las fuentes. Hay que tener la
precaucion de tener gfortran.
3. Cuando instalamos R en Linux hemos de instalar previamente la librera
BLAS.
Edicion con Emacs y ESS En Linux sin duda la mejor opcion de trabajo
es utilizar Emacs con el paquete Emacs Speaks Statistics (ESS)
2
.
Como trabajamos con Emacs y ESS?
1. Abrimos el chero R con emacs.
2. Abrimos una nueva ventana (mejor separada) con CTRL x 52.
3. En la nueva ventana marcamos el icono de R.
4. Utilizamos la ventana donde esta el codigo para editar y podemos
usar los distintos controles que nos da el men u ESS de emacs pode-
mos trabajar muy comodamente.
7.2. Como instalar un paquete?
Supongamos que queremos instalar el paquete UsingR ?.
install.packages{``UsingR''}
1
Imagino a un usuario de Windows tpico sonreir ante la armaci on anterior. Me alegro de que
pueda sonreir despues 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 distribucion
correspondiente donde teneis el paquete
160
7.3. Como jar el directorio de trabajo?
Empezamos una sesion de R y todo nuestro trabajo (datos, codigo R) lo tenemos
en un directorio. Hemos de tener un acceso comodo a estos cheros. Como hacerlo?
En Linux no hay problema. Simplemente con la consola nos vamos al directorio
correspondiente y ejecutamos R. Automaticamente hemos jado 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 jado 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 signicado
de la variable. Dicha etiqueta ha de ser clara y no muy larga.
7.4.1. Como etiquetar una variable?
Supongamos que la variable a etiquetar es x en el data frame datos. Usamos la
librera ?.
library(Hmisc}
label(datos$x) = "Ejemplo de etiqueta"
7.5. Elaboracion 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 mas tiempo esta segunda parte que la primera.
7.5.1. Sweave
Es conveniente consultar esta pagina. Un documento de gran utilidad donde ver
la utilizacion 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-python-
xref.pdf una tabla de equivalencias entre Matlab/Octave, Python y R.
161
162
Bibliografa
H. Abdi and L. J. Williams. Principal component analysis. Wiley Interdiscipli-
nary 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 machi-
ne 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

También podría gustarte