Analisis de Datos Con R
Analisis de Datos Con R
4 de junio de 2009
1
Departamento de Estadstica e Investigacion Operativa. Universidad de Valencia. Gui-
[email protected] Pagina personal, Pagina de grupo
2
Indice general
1. Probabilidad: lo bueno si . . . 1
1.1. Experimento y probabilidad . . . . . . . . . . . . . . . . . . . . . . . 1
1.2. Variable aleatoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2.1. Teorema de Bayes . . . . . . . . . . . . . . . . . . . . . . . . 13
1.3. Vectores aleatorios . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
1.4. Distribucion normal multivariante . . . . . . . . . . . . . . . . . . . 14
3. Regresion 1
3.1. Regresion lineal simple . . . . . . . . . . . . . . . . . . . . . . . . . . 3
3.2. Regresion lineal multiple . . . . . . . . . . . . . . . . . . . . . . . . . 5
3.3. Estimacion de . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
3.4. Algunos casos particulares . . . . . . . . . . . . . . . . . . . . . . . . 7
3.5. Verosimilitud . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.6. Algunos ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.7. Distribucion muestral de . . . . . . . . . . . . . . . . . . . . . . . 11
3.8. Bondad de ajuste . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
3.9. Valoracion de las hipotesis del modelo . . . . . . . . . . . . . . . . . 12
3.10. Inferencia sobre el modelo . . . . . . . . . . . . . . . . . . . . . . . . 30
3.11. Seleccion de variables . . . . . . . . . . . . . . . . . . . . . . . . . . 35
3.11.1. Procedimientos que comparan modelos . . . . . . . . . . . . . 36
3.11.2. Procedimientos basados en criterios . . . . . . . . . . . . . . 39
3.12. Algunos ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41
4. Analisis cluster 1
4.1. Disimilaridades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
4.1.1. Disimilaridades entre observaciones . . . . . . . . . . . . . . 3
4.1.2. Disimilaridades entre grupos de observaciones . . . . . . . . 6
4.2. Cluster jerarquico . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
4.3. Metodos de particionamiento . . . . . . . . . . . . . . . . . . . . . . 10
4.3.1. Metodo de las k-medias . . . . . . . . . . . . . . . . . . . . . 10
3
4.3.2. Particionamiento alrededor de los mediodes . . . . . . . . . . 11
4.4. Silueta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
4.5. Algunos ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
6. Componentes principales 1
9. Miscelanea 11
9.1. Dibujo de la media-diferencia de Tukey o dibujo de Bland-Altman . 11
4
10.De como usar R en un tiempo razonable (no facil, no) 13
10.1. Instalacion y como trabajar con R . . . . . . . . . . . . . . . . . . . 14
10.1.1. R y Windows . . . . . . . . . . . . . . . . . . . . . . . . . . 14
10.1.2. R y Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
10.2. Como fijar el directorio de trabajo? . . . . . . . . . . . . . . . . . . 15
10.3. Etiquetas de valor y de variable . . . . . . . . . . . . . . . . . . . . . 15
10.3.1. Como etiquetar una variable? . . . . . . . . . . . . . . . . . 15
10.4. Elaboracion de un informe a partir del codigo R . . . . . . . . . . . 15
10.4.1. Sweave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
10.5. R y Octave/Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
11.Matrices 17
11.1. Determinante de una matriz . . . . . . . . . . . . . . . . . . . . . . . 17
11.2. Determinante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
11.3. Valores y vectores propios . . . . . . . . . . . . . . . . . . . . . . . . 17
12.Datos 19
12.1. scoremaster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
12.2. Avispa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
12.3. Datos wbca . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
5
6
Prologo
Cada vez hay mas datos. Tenemos mas datos introducidos en ficheros. Y esto
es lo peor. Si los datos estuvieran en hojas sueltas y perdidas pues no pasa nada.
Se archivan los papeles y los datos no molestan. No, ahora los propios ordenadores
o bien muchas personas accediendo desde distintos lugares, tienen el mal gusto de
crear unas bancos de datos cada vez mayores. Cada vez con mas casos y con mas
variables. El problema no es conseguir datos. Los tienes a precio de saldo. Te los dan
sin que los pidas. Si tienes conocidos biologos, medicos, qumicos, psicologos seguro
que tienen datos para analizar. Si trabajais en un hospital, tendreis una legion de
medicos (y cada vez mas enfermeros) con datos. Todo el mundo tiene datos. A los
que tienen carino. Que creen que tienen mucho valor. Pero que no saben que hacer
con ellos. En el mejor de los casos algun dibujo estilo pastel (bueno, se le llama
diagrama de sectores pero es un pastel) o histograma. Que Dios nos libre de tanto
dibujo que solo sirve para gastar papel y tinta!
En estas notas se pretende (solo se pretende) partiendo de unos conocimientos
informaticos que no sean basicos y de unos conocimientos probabilsticos y estads-
ticos mas bien basicos, llegar a poder hacer algo decente con un banco de datos.
La parte de analisis descriptivo de datos se obvia. Simplemente a lo largo del
curso se va utilizando y recordando. Ya esta bien de perder el tiempo explicando
como hacer un histograma si luego lo hace un programa.
El tono de estas notas pretende ser ameno pues bastante toston es lo que se
cuenta. No inutil. Pero s toston. Hay que asumirlo desde un principio. Esto no es
Sexo en Nueva York. 1 Son unas notas de Estadstica con R [? ]. 2
Este documento contiene unas notas de clase para la asignatura de Analisis de
Datos de Ingeniera Informatica de la Universidad de Valencia. Pretende en cada
tema empezar desde un nivel basico de contenidos para llegar al uso de la tecnica
correspondiente. Es una realidad que el informatico acaba realizando analisis de
datos. Entre otras cosas porque suele ser la persona mas a mano o bien porque ya ha
programado el resto de la aplicacion que tambien incorporar algun tipo de analisis
mas o menos sencillo. Y es una pena ver como se desaprovecha la informacion.
Por ello en estas notas pretendo tratar rapidamente muchos temas y, ademas, que
podamos utilizarlas. Por ello se recurre a R. Por su potencia y por su disponibilidad.
Incluso en su propia casa y con una conexion a Internet no demasiado rapida puede
el estudiante instalarse R y cualquier paquete que se necesite. Esto ya es bastante
desde el punto de vista docente. Ademas, cualquier procedimiento estadstico esta
en R. Casi se puede decir, que si no lo esta, no merece la pena de utilizarse.
Se proponen distintos apendices como apoyo a conceptos anteriores necesarios.
Se hace un repaso rapido de los conceptos basicos de la Probabilidad en el tema
1. Las ideas basicas de la Estadstica que utilizamos en el resto del curso aparecen
1 Sin duda, la mejor serie de television de la historia. Hay que verla.
2 Un anuncio de la radio (Cadena Ser para mas senas) hablaba de una persona que no entenda
porque su profesor de Estadstica lo haba suspendido. Es de suponer que la persona que escribio el
anuncio estudiara Periodismo. All hay una asignatura de Estadstica. Claramente le ha servido.
Ha hecho un anuncio y le habran pagado por ello.
7
en el tema 2. Ambos captulos con meros resumenes que no sustituyen el repaso
de muchos de los conceptos en algunos de los textos que se citan en los captulos
correspondientes.
Estas notas estan orientadas para estudiantes de Ingeniera Informatica y por
ello en muchas ocasiones se incluyen definiciones y conceptos basicos que dicho
estudiante no tiene. Una introduccion generica a la Probabilidad y la Estadstica
que es adecuado hojear pues cubre los conceptos previos es el libro de texto de [? ].
El interes fundamental de estas notas es dar una vision muy amplia sin perder
demasiado tiempo en detalles de cada tecnica. En este sentido se intenta ir directo
al grano con lo que eso supone de dificultad anadida. Sin embargo, tiene la com-
pensacion de ver como muchos de los conceptos que se estudian son reescritura uno
de otro.
Por fin, un signo de edad es tener que escribir las cosas para que no se nos
olviden. Quizas para que uno mismo lo aprenda y para no olvidarlo despues. En el
fondo, todos vamos aprendiendo segun lo explicamos y lo escuchamos.
Sin duda, unas notas como las que siguen solo se pueden hacer utilizando LATEX
para escribir y el programa R [? ] 3 para realizar el analisis de los datos. Son dos
herramientas imprescindibles que se complementan perfectamente. Un tratamiento
estadstico no acaba con un codigo o con unos dibujos aislados. Acaba con un
informe. Con frecuencia, se dedica mas tiempo a explicar lo que se ha hecho, a
escribir el informe, que a la preparacion y tratamiento de los datos, al analisis de
los datos. En este sentido, creo que una herramienta como LATEX es fundamental
utilizada con R. En este texto hablamos de analisis de datos. No de LATEX. Sin
embargo, uno aprende a veces cosas importantes mientras estudia otras que cree
que lo son mas. En este sentido, habra referencias a LATEX.
Finalmente veamos una gua de lectura del documento. Es muy habitual que
si uno empieza a leer un texto por el principio nunca pase mas alla del primer o
segundo captulo, y eso con suerte. Las notas estan escritas de manera que se lean
cada tema por separado sin mas conexiones entre ellos. De modo que si quieres un
pequeno repaso de Probabilidad consulta el tema 1. Si patinas un poco en lo basico
de la Estadstica pues entonces hay que leer el tema 2. Son los unicos temas de
caracter basico. Los demas van al grano. En particular si te interesa como reducir
la dimension del banco de datos lee el tema 6. Si el problema que te quita el sueno
es como dadas unas variables sobre un individuo clasificarlo en uno de g posibles
grupos conocidos a priori y de los cuales tienes ejemplos entonces no lo dudes y
lee el tema 5. Si tienes datos y no saben si se disponen formando grupos y ni tan
siquiera del numero de grupos que tienes entonces has de acudir sin remision al
tema 4. Finalmente en los temas ??, 8 y ?? viene la artillera pesada. Como todos
sabemos los modelos lineales son el corazon de la Estadstica, sin ellos, otras tecnicas
de analisis de datos se la hubieran ventilado. Los modelos lineales es un esfuerzo
colectivo que ha construido una teora redonda, util, facil de aprender y aplicar.
Parece que casi todo esta previsto y bien resuelto. Los modelos lineales generalizados
surgen de la envidia que todo lo corroe. Cuando la variable respuesta, en lugar de
ser continua, como en los modelos lineales, es una respuesta binaria, o multinomial,
o bien un conteo. Que hacer? La teora de modelos lineales no se puede aplicar
ni con calzadores. Sin embargo, con unos cuantos cambios tecnicamente simples
surgen unos modelos probabilsticos para analizar estos datos que son absolutamente
preciosos.
Un detalle practico de enorme interes. Para programar con R en el sistema opera-
tiva Windows lo mas comodo es utilizar RWinEdt ([? ]) mientras que si trabajamos
3 La primera leccion sobre R es como citar el programa. En la lnea de comandos escribimos
citation y nos devuelve la referencia bibliografica. Del mismo modo lo podemos hacer si utilizamos
otro paquete. Por ejemplo tecleando citation(cluster) nos indica como citar el paquete cluster
que utilizamos en el tema 4.
8
en Linux la opcion mas comoda es utilizar emacs con el paquete ESS. Se pueden
encontrar detalles adicionales R.
R es libre. Esto significa que es malo? Tiene pocas funciones? Lo que tiene no
es de fiar? Hay una idea muy extendida de que el precio de las cosas esta ntimamente
relacionado con la calidad. No se si en general es cierto. En el caso de R no lo es.
Algunos artculos de prensa que apoyan el comentario son
Tambien podeis encontrar algunas empresas que, basandose en R, desarrollan
productos comerciales como Revolution Computing.
9
10
Captulo 1
Probabilidad: lo bueno si . . .
Empezamos por donde hay que empezar. Con la Probabilidad. Temida, odiada.
Despreciada porque habla de juegos. Por encima de todo, util, de una utilidad
extrana. Da verguenza hablar de Estadstica sin citar algo de Probabilidad. 1 Y
no lo vamos a hacer. Vamos a cumplir con la papeleta. En cualquier caso, si no
te manejas bien con los conceptos basicos probabilsticos (variable aleatoria, vector
aleatorio, distribucion conjunta y marginal, . . .) hay que leer algun texto. Uno muy
bueno, pero no facil de encontrar, es [? ].
1 De hecho, hay una teora muy extendida que dice que podemos saber Estadstica sin ningun
1
Si el espacio muestral es finito y consideramos que todos los elementos que lo
componen son equiprobables entonces la probabilidad de un suceso A vendra dada
como
#(A)
P (A) = (1.1)
#()
siendo # el cardinal del conjunto. Se comprueba con facilidad que es una medida
de probabilidad que verifica la axiomatica previa.
Nota de R 1 (notaR544) Consideramos un conjunto finito y numeramos sus ele-
mentos de 1 a n. Nuestro espacio muestral es {1, . . . , n}. Veamos como extraer k
elementos (con k n) sin reemplazamiento de este conjunto. La funcion sample es
la funcion basica. En el siguiente codigo tenemos k = 6.
> n = 30
> omega = 1:n
> sample(omega, size = 6, replace = FALSE)
[1] 11 4 23 1 30 8
Ahora lo repetimos con reemplazamiento.
> sample(omega, size = 6, replace = TRUE)
[1] 7 11 4 21 4 17
PDF Rcode
2
para cualesquiera valores reales a b. La funcion f recibe el nombre de funcion
de densidad (de probabilidad) de la variable X.
De un modo generico cuando se habla de la distribucion de una variable aleatoria
X hablamos de las probabilidades P (X B) para cualquier subconjunto B de R.
Obviamente, para variables discretas,
X
P (X B) = P (X = x) (1.4)
xB
De hecho podemos ver la forma que tiene esta funcion de probabilidad para todos
los valores posibles.
3
Cuadro 1.1: Distribuciones discretas
Distribucion Funcion de probabilidad Media Varianza
Bernoulli f (x|p) = px (1
p)
1x
si x = 0, 1 p p(1 p)
n
Binomial f (x|n, p) = p (1 p)nx si x = 0, 1, . . . , n
x
np np(1 p)
x0 10 1
@
A A@ B A
x nx
4
nA nAB(A+Bn)
Hipergeometrica f (x|A, B, n) = 0 1 si x = 0, . . . , n. A+B (A+B)2 (A+B1)
@
A+B A
n
x 1p 1p
Geometrica f (x|p) = p(1 p) si x = 0, 1, 2, . . . p2
p
r+x1 r(1p) r(1p)
Binomial Negativa f (x|r, p) = pr (1 p)x si x = 0, 1, 2, . . . p p2
x
x
Poisson f (x|) = e x! si x = 0, 1, . . .
Cuadro 1.2: Distribuciones continuas
Distribucion Funcion de densidad Media Varianza
1 + ()2
Uniforme f (x|, ) = si < x < 2 12
1 x 2
Normal, N (, 2 ) f (x|, 2 ) = 12 e 2 ( ) x R 2
1 x
Gamma Ga(, ) f (x|, ) = () x e si x > 0 a 2
1 x 2
Exponencial Expo() f (x | ) = exp si x 0
Ji-Cuadrado 2 () X 2 () si X Ga( 2 , 12 ) 2
5
(+) 1
Beta Be(, ) f (x|, ) = ()() x (1 x)1 si 0 < x < 1 + (+)2 (++1)
+1
( +12 ) x2 2
t-Student t() f (x) = ( 1 + x R 0 si > 1 2 si > 2
2)
( m+n ) m/2 n/2 x m/21
n 2n2 (m+n2)
F-Snedecor F (m, n) f (x) = ( m )( 2
n m n (mx+n) (m+n)/2 si x > 0 (n2) si n>2 m(n2)2 (n4) si n > 4
2 2)
1 x 1 2 2 1 2 1
Weibull(, ) f (x | , ) = x exp ( ) si x > 0 ( ) (2( ) ( ))
2 X 2
Lognormal X N (, ) e LN (, )
R +
a La funcion gamma se define como () = 0
x1 exp{x}dx, que existe y es finita > 0
0.30
0.25
dbinom(0:10, size = 10, prob = 0.23)
0.20
0.15
0.10
0.05
0.00
2 4 6 8 10
> plot(dbinom(0:10, size = 10, prob = 0.23), xlab = "", pch = "1")
> points(dbinom(0:10, size = 10, prob = 0.77), xlab = "", pch = "2")
6
0.30
1 2
0.25
dbinom(0:10, size = 10, prob = 0.23)
1 2
1 2
0.20
0.15
1 2
0.10
1 2
0.05
2
1
2 1
0.00
2 2 2 2 1 1 1 1
2 4 6 8 10
7
stepfun(0:10, c(pbinom(0:10, size = 10, prob = 0.23), 1))
1.0
0.8
0.6
f(x)
0.4
0.2
0 2 4 6 8 10
La inversa de la funcion de distribucion, esto es, los cuantiles nos la dara qbi-
nom.
> qbinom(0.3, size = 10, prob = 0.23)
[1] 2
Podemos simular valores de la distribucion binomial con rbinom.
> rbinom(5, size = 10, prob = 0.23)
[1] 2 2 4 1 1
PDF Rcode
Nota de R 3 (notaR546) La funcion de densidad y de distribucion las obtene-
mos con dpois y ppois.
> dpois(0:60, lambda = 12)
[1] 6.144212e-06 7.373055e-05 4.423833e-04 1.769533e-03 5.308599e-03
[6] 1.274064e-02 2.548128e-02 4.368219e-02 6.552328e-02 8.736438e-02
[11] 1.048373e-01 1.143679e-01 1.143679e-01 1.055704e-01 9.048890e-02
[16] 7.239112e-02 5.429334e-02 3.832471e-02 2.554981e-02 1.613672e-02
[21] 9.682032e-03 5.532590e-03 3.017776e-03 1.574492e-03 7.872460e-04
[26] 3.778781e-04 1.744053e-04 7.751345e-05 3.322005e-05 1.374623e-05
[31] 5.498491e-06 2.128448e-06 7.981681e-07 2.902429e-07 1.024387e-07
[36] 3.512183e-08 1.170728e-08 3.796955e-09 1.199038e-09 3.689349e-10
[41] 1.106805e-10 3.239428e-11 9.255510e-12 2.582933e-12 7.044362e-13
[46] 1.878497e-13 4.900426e-14 1.251173e-14 3.127932e-15 7.660241e-16
[51] 1.838458e-16 4.325783e-17 9.982576e-18 2.260206e-18 5.022680e-19
[56] 1.095857e-19 2.348266e-20 4.943718e-21 1.022838e-21 2.080349e-22
[61] 4.160697e-23
8
Representamos las funciones de probabilidad de dos distribuciones Poisson mo-
dificando el valor de que es su media y varianza de modo que un valor de mayor
se traduce en una densidad que toma valores mayores y mas dispersa.
11
1 1
0.10
1
1
0.08
dpois(0:60, lambda = 12)
22
2 2
1 2 2
1 2
0.06
2
1 2 2
1 2
0.04
2
1 2
2
2
1 1
0.02
2 2
2 1 2
1 2
2 1 22
1 2 1 22222
1
0.00
1 222 11111111111111111111111111111111111111
111
2222222222 2222222222222222222
0 10 20 30 40 50 60
[1] 8 9 10 11 12 13 14 15 17
[1] 16 16 15 11 7 17 12 12 11 14 10 13 14 11 7 8 12 11 14 11 16 11 12 11 10
[26] 17 8 11 8 15 18 10 16 14 10 19 14 10 10 10 13 13 12 7 12 12 17 11 16 16
PDF Rcode
9
0.20
0.15
dnorm(x, mean = 3, sd = 2)
0.10
0.05
0.00
10 5 0 5 10 15 20
0.6
0.4
0.2
0.0
3 2 1 0 1 2 3
10
Veamos el efecto que tiene modificar media y varianza sobre la forma de las
correspondientes funciones de distribucion.
0.6
0.4
0.2
0.0
10 5 0 5 10 15 20
11
15
10
qnorm(x, mean = 3, sd = 2)
5
0
5
5
0
5
8 6 4 2 0 2
qnorm(x, mean = 3, sd = 2)
12
No es casual que salga una lnea recta. Unos son funcion lineal de los otros. Pero
no son iguales.
PDF Rcode
P (A | Bi )P (Bi )
P (Bi | A) = Pk (1.6)
j=1 P (A | Bj )P (Bj )
1
X = ...
d
13
En general si consideramos dos vectores aleatorios X = (X1 , . . . , Xd ) e Y =
(Y1 , . . . , Yp ) denotaremos
cov(X1 , Y1 ) . . . cov(X1 , Yp )
.. .. ..
cov(X, Y ) = . . .
cov(Xd , Y1 ) . . . cov(Xd , Yp )
1 1
P = D 2 D 2 . (1.8)
Y Nd (, ). (1.12)
14
Teorema 1 Supongamos Y Nd (, ) y sea
(1) (1)
Y 11 12
Y = , = (2) , = ,
Y (2) 21 22
> library(mvtnorm)
Fijamos los puntos en los que vamos evaluar dicha funcion de densidad conjunta
> npuntos = 50
> x = seq(mu[1] - 3 * sqrt(Sigma[1, 1]), mu[1] + 3 * sqrt(Sigma[1,
+ 1]), len = npuntos)
> y = seq(mu[2] - 3 * sqrt(Sigma[2, 2]), mu[2] + 3 * sqrt(Sigma[2,
+ 2]), len = npuntos)
y la evaluamos.
> z = NULL
> for (i in 1:npuntos) {
+ for (j in 1:npuntos) {
+ z = rbind(z, c(x[i], y[j], dmvnorm(c(x[i], y[j]), mean = mu,
+ sigma = Sigma)))
+ }
+ }
> persp(z)
> contour(z)
15
Vamos a generar datos de una normal multivariante. Consideremos un vector de
medias generado al azar con valores entre 0 y 1. La matriz de covarianzas la ge-
neramos tambien aleatoriamente. Para ello, generamos en primer lugar una matriz
cuyos elementos son uniformes en el intervalo unitario. El producto de esta matriz
por su traspuesta es definida positiva y la podemos utilizar como matriz de cova-
rianzas.
> mu = runif(5)
> A = matrix(runif(5 * 5), ncol = 5, nrow = 5)
> Sigma = t(A) %*% A
Generamos datos con el vector de medias y matriz de covarianzas .
> (x = rmvnorm(10, mean = mu, sigma = Sigma))
PDF Rcode
NA
16
Captulo 2
> load("../data/scoremaster")
> names(scoremaster)
Para poder trabajar con los nombres de las variables hemos de adjuntar el banco
de datos
> attach(scoremaster)
> score[1:10]
1
[1] 6 4 5 6 7 6 7 8 6 5
Levels: 3 < 4 < 5 < 6 < 7 < 8
De las variables consideradas algunas son categoricas como puede ser la especia-
lidad o tipoanes (tipo de anestesia), otras son ordinales como score, score2, score3,
. . . mientras que otras son continuas como T.TOTALP o T.QUIRUR.
Es interesante utilizar la funcion extractora summary sobre un data frame.
> summary(scoremaster)
score eg1 d1 t1 s1 score2 eg2 d2
3: 13 0: 18 0: 18 0: 50 0: 17 3 : 7 0 : 27 0 : 36
4: 89 1:545 1:360 1:359 1:307 4 : 33 1 :377 1 :359
5:199 2:359 2:544 2:513 2:598 5 :133 2 :359 2 :366
6:276 6 :234 NA's:159 NA's:161
7:219 7 :192
8:126 8 :162
NA's:161
t2 s2 score3 eg3 d3 t3 s3
0 : 11 0 : 3 3 : 2 0 : 9 0 : 10 0 : 0 0 : 0
1 : 59 1 :237 4 : 3 1 : 78 1 : 76 1 : 9 1 : 45
2 :691 2 :522 5 : 34 2 : 51 2 : 51 2 :127 2 : 92
NA's:161 NA's:160 6 : 45 NA's:784 NA's:785 NA's:786 NA's:785
7 : 34
8 : 20
NA's:784
score4 score5 especialidad intensidad tipoanes asa
Min. : 5.0 Min. : 4.0 1 :325 1:168 General:746 1:555
1st Qu.: 6.0 1st Qu.: 5.5 2 :163 2:426 Plexo :108 2:332
Median : 6.5 Median : 6.5 4 :136 3:328 CAM : 65 3: 35
Mean : 6.4 Mean : 6.0 5 : 55 NA's : 3
3rd Qu.: 7.0 3rd Qu.: 7.0 7 :157
Max. : 8.0 Max. : 7.0 8 : 74
NA's :902.0 NA's :918.0 NA's: 12
sexo T.TOTALP T.QUIRUR edad
0 :329 Min. : 900 Min. : 600 Min. : 4.00
1 :590 1st Qu.: 6060 1st Qu.: 2640 1st Qu.: 31.00
NA's: 3 Median : 8790 Median : 3600 Median : 43.00
Mean : 9881 Mean : 3903 Mean : 43.48
3rd Qu.:12420 3rd Qu.: 4860 3rd Qu.: 56.00
Max. :35160 Max. :16200 Max. : 84.00
NA's :194.00
En el resumen anterior vemos que cuando se trata de una variable categorica
nos muestra los conteos asociados a cada uno de los valores posibles (si hay muchas
categoras solo pone algunas y las demas las agrupa en una ultima categora). En
las variables numericas saca unas descriptivas numericas. Observemos la descriptiva
numerica de T.TOTALP
> summary(T.TOTALP)
Min. 1st Qu. Median Mean 3rd Qu. Max.
900 6060 8790 9881 12420 35160
Nos aparece el mnimo, el primer cuartil (o percentil 0,25), la mediana, la media,
el tercer cuartil (o percentil 0,75) y el maximo de las observaciones.
Para una variable categorica podemos pedirle una tabla de frecuencias.
2
> table(tipoanes)
tipoanes
General Plexo CAM
746 108 65
> barplot(table(tipoanes))
700
600
500
400
300
200
100
0
Repetimos las tablas y los diagramas de barras para el resto de variables catego-
ricas.
> table(intensidad)
intensidad
1 2 3
168 426 328
> barplot(table(intensidad))
3
400
300
200
100
0
1 2 3
> table(especialidad)
especialidad
1 2 4 5 7 8
325 163 136 55 157 74
4
300
250
200
150
100
50
0
En la variable asa (y para no aburrirnos mas con los diagramas de barras) sus-
tituimos un diagrama de barras por un diagrama de sectores.
> table(asa)
asa
1 2 3
555 332 35
5
I
III
II
> boxplot(T.QUIRUR/60)
250
200
150
100
50
0
6
Observemos que en el diagrama de cajas hemos expresado los tiempos quirurgicos
en minutos. La variable intensidad es una variable ordinal que expresa el grado de
agresion que supone la intervencion quirurgica. Para logico comparar graficamente
los tiempos quirurgicos teniendo en consideracion la intensidad de la intervencion.
1 2 3
> stem(T.QUIRUR/60)
0 | 0256667889999
2 | 00000122333445555555555677788888999999000000000000000001111222222222+82
4 | 00000000000000000000000011111111111122222222233333334444444444555555+183
6 | 00000000000000000000000000111111111122222222222333333334444444444444+154
8 | 00000000000000011111111111222222222333333344444445555555555555666666+58
10 | 00000000001122233333344444555566667777788888999900000112235555778899
12 | 000001134555566680014458
14 | 23489039
16 | 0252
18 | 09
20 | 55
22 |
24 |
26 | 0
7
Y yo creo que como analisis descriptivo inicial ya esta mas que bien.
PDF Rcode
2.2. Verosimilitud
Sea y = (y1 , . . . , yn ) una realizacion del vector aleatorio Y = (Y1 , . . . , Yn ). Es
habitual asumir que Y tiene una funcion de densidad conjunta f en una cierta familia
F . Para una funcion dada f , el valor f (y) nos muestra como vara la densidad dentro
del espacio muestral de valores posibles de y. Y viceversa, si consideramos unos datos
y y lo que hacemos variar es la funcion de densidad entonces estamos viendo como
de verosmil es cada una de las funciones dados los datos y. Esta funcion recibe el
nombre de verosimilitud de f dados los datos y y se suele denotar como
8
Supongamos una transformacion 1-1 de Y a Z, Z = g(Y ). Las densidades de
ambos vectores se relacionan segun la siguiente relacion
y
fZ (z) = fY (y) ,
z
donde y
z es el jacobiano de la transformacion de z a y. Se tiene la siguiente relacion
entre las verosimilitudes
y
LZ (; z) = LY (; y).
z
Esto sugiere que es mejor trabajar con el cociente de las verosimilitudes para dos
vectores de parametros 1 y 2 en lugar de los valores aislados.
Si asumimos que los distintos Y1 , . . . , Yn son independientes entonces
n
Y
LY (; y) = fY (y) = fYi (yi ),
i=1
y
n
X n
X
ly (; y) = log fYi (yi ) = LYi (; yi ).
i=1 i=1
2.3. Estimacion
Denotamos por el espacio formado por los valores que puede tomar o espacio
parametrico. Un estimador del parametros o vector parametrico es cualquier
funcion de la muestra X1 , . . . , Xn que toma valores en el espacio parametrico.
9
Si (X1 , . . . , Xn ) es un estimador del parametro entonces se define el error
cuadratico medio como
M SE() = E[(X1 , . . . , Xn ) ]2 (2.4)
En el caso en que se verifique que E(X1 , . . . , Xn ) = = , es decir, que el
estimador sea insesgado entonces:
M SE() = E[(X1 , . . . , Xn ) ]2 = E[(X1 , . . . , Xn ) ]]2 = var().
Y el error cuadratico medio no es mas que la varianza del estimador.
Consideremos la siguiente cadena de igualdades. Denotamos
M SE() = E[ ]2 = E[ + ]2 = E[ ]2 + [ ]2 (2.5)
La diferencia entre la media del estimador y el parametro, , recibe el nombre
de sesgo. Finalmente lo que nos dice la ecuacion anterior es que el error cuadratico
medio M SE() lo podemos expresar como la suma de la varianza del estimador,
E[ ]2 , mas el sesgo al cuadrado, [ ]2 .
A la raz cuadrada de la varianza de un estimador, es decir, a su desviacion
tpica o estandar se le llama error estandar. La expresion error estandar se usa
en ocasiones indistintamente para referirse o bien dicha desviacion tpica o bien al
estimador de la misma.
Notemos que
n n n
1X 1X 1X
E Y = E[ Yi ] = EYi = = .
n i=1 n i=1 n i=1
En definitiva, la media muestral es un estimador que no tiene ningun sesgo cuando
estima la media de Yi (la media poblacional) o, lo que es lo mismo, es un estimador
insesgado.
Para estimar de un modo insesgado la varianza 2 a partir de una muestra
Y1 , . . . , Yn se utiliza la varianza muestral dada por
n
2 1 X
S = (Yi Y )2 . (2.7)
n 1 i=1
10
de donde,
n
1 X
ES 2 = E (Yi Y )2 = 2 ,
n 1 i=1
es decir, S 2 estima la varianza 2 sin sesgo.
> load("../data/scoremaster")
> attach(scoremaster)
La media muestral del tiempo total quirurgico (en segundos) lo obtenemos con
> mean(T.QUIRUR)
[1] 3903.449
> var(T.QUIRUR)
[1] 3107898
> sd(T.QUIRUR)
[1] 1762.923
PDF Rcode
11
siendo 1n el vector n 1 con todos los valores iguales a uno. Tambien denotaremos
Y1
..
Y = .
Yp
de modo que
S11 ... S1d n
.. .. .. = 1 X 1
S= . . . (Yi Y )(Yi Y ) = Q.
n 1 i=1 n1
Sd1 . . . Sdd
> load("../data/scoremaster")
> attach(scoremaster)
[1] 2308272
12
> cor(T.QUIRUR, T.TOTALP)
[1] 0.2364658
T.QUIRUR T.TOTALP
T.QUIRUR 3107898 2308272
T.TOTALP 2308272 30659874
y la de correlaciones sera
T.QUIRUR T.TOTALP
T.QUIRUR 1.0000000 0.2364658
T.TOTALP 0.2364658 1.0000000
PDF Rcode
o tambien
= argmax L(), (2.12)
Pn
xi
Ejemplo 4 (Bernoulli) Se puede comprobar sin dificultad que p = i=1
n .
13
Notemos que el error estandar de j sera el elemento que ocupa la posicion (j, j)
en la inversa de la matriz de informacion. Cuanto mayor es la curvatura de la
logverosimilitud menores seran los errores estandar. La racionalidad que hay detras
de esto es que si la curvatura es mayor entonces la logverosimilitud cae rapidamente
cuando el vector se aleja de . En resumen, es de esperar que este mas proximo
a .
H0 : 0 (2.19)
H1 : 1 (2.20)
H0 H1
Rechazamos H0 Error tipo I
No rechazamos H0 Error tipo II
14
funcion de la muestra que denotamos (X1 , . . . , Xn ) de modo que si (X1 , . . . , Xn )
C entonces rechazamos la hipotesis nula mientras que si (X1 , . . . , Xn )
/ C entonces
no rechazamos la hipotesis nula. Notemos que simplemente estamos particionando
el espacio muestral (que suponemos) Rn en dos partes, C y C c , de modo que to-
mamos una decision basandonos en si el estadstico esta en C o bien esta en el
complementario de C. Al conjunto C se le suele llamar la region crtica. La funcion
potencia se define como
() = P ( C|). (2.21)
H0 : = 0 , (2.22)
6 0 .
H1 : = (2.23)
Pn 2
i=1 (Xi X)
Siendo S 2 = n1 , el estadstico habitualmente utilizado es el siguiente
X 0
T = .
S/ n
Bajo la hipotesis nula este estadstico sigue una distribucion t de Student con n 1
grados de libertad,
T t(n 1).
|T | > tn1,1 2 .
> load("../data/scoremaster")
> attach(scoremaster)
data: T.QUIRUR
t = 15.5609, df = 921, p-value < 2.2e-16
alternative hypothesis: true mean is not equal to 3000
95 percent confidence interval:
3789.506 4017.392
sample estimates:
mean of x
3903.449
15
Podemos ver en la primera lnea el valor del estadstico, los grados de libertad
de la distribucion nula y el p-valor. Tambien nos indica la hipotesis alternativa y
por lo tanto la nula como la negacion de esta. Atendiendo al p-valor rechazamos la
hipotesis nula.
Podemos plantearnos la hipotesis de que el valor no sea tan optimista como
pensabamos y realmente sea de unos 4000 segundos.
data: T.QUIRUR
t = -1.663, df = 921, p-value = 0.09666
alternative hypothesis: true mean is not equal to 4000
95 percent confidence interval:
3789.506 4017.392
sample estimates:
mean of x
3903.449
max0 L()
= (2.24)
max L()
Es razonable pensar que en la medida en que tome valores menores entonces la hi-
potesis alternativa sea mas plausible que la hipotesis nula y por lo tanto rechacemos
la hipotesis nula. Realmente se suele trabajar con 2 log pues bajo la hipotesis
nula tiene una distribucion asintotica ji-cuadrado donde el numero de grados de li-
bertad es la diferencia de las dimensiones de los espacios parametricos = 0 1
y 0 . Si denotamos L0 = max0 L() y L1 = max L() entonces = L L1 y
0
L0
2 log = 2 log = 2(l0 l1 ) (2.25)
L1
siendo l0 y l1 los logaritmos de L0 y L1 respectivamente que tambien corresponden
con los maximos de la logverosimilitud sobre 0 y sobre .
H0 : = 0 , (2.26)
6 0 .
H1 : = (2.27)
16
tiene, bajo la hipotesis nula, aproximadamente una distribucion normal estandar,
z N (0, 1). Este tipo de estadsticos donde se utiliza el error estandar del estimador
bajo la hipotesis alternativa recibe el nombre de estadstico de Wald.
Supongamos que es un vector de parametros y queremos contrastar las hipote-
sis dadas en 2.26. La version multivariante del estadstico dado en 2.28 viene dada
por
W = ( 0 ) [cov()]1 ( 0 ), (2.29)
donde cov() se estima como la matriz de informacion observada en el MLE . La
distribucion asintotica de W bajo la hipotesis nula es una distribucion ji-cuadrado
donde el numero de grados de libertad coincide con el numero de parametros no
redundantes en .
Xn
tn1 . (2.30)
S/ n
Vemos como X
n
S/ n
depende tanto de la muestra que conocemos como de un pa-
rametro (la media ) que desconocemos. Fijamos un valor de (habitualmente
tomaremos = 0,05) y elegimos un valor tn1,1/2 tal que
Xn
P (tn1,1/2 tn1,1/2 ) = 1 . (2.31)
S/ n
S S
P (Xn tn1,1/2 Xn + tn1,1/2 ) = 1 . (2.32)
n n
17
Supongamos que consideramos el test del cociente de verosimilitudes. Denotemos
por 2k (1 ) el percentil 1 de una distribucion ji-cuadrado con k grados de
libertad. Entonces el intervalo de confianza al nivel 1 sera el conjunto
| 0 |
{0 : < Z1/2 } (2.34)
SE()
18
Captulo 3
Regresion
El problema que se trata en este tema es basico. Estudiar relaciones entre una
variable que llamaremos variable respuesta y una (o mas de una) variable que lla-
maremos variables predictoras. Tambien se utilizan las denominaciones de variable
dependiente para la variable respuesta y variables independientes en lugar en pre-
dictoras.
> library(MASS)
> attach(cats)
> names(cats)
Empezamos representando el peso del corazon frente al peso del cuerpo para las
hembras.
1
13
12
11
Hwt[Sex == "F"]
10
9
8
7
Bwt[Sex == "F"]
14
12
10
8
6
Bwt[Sex == "M"]
Nuestro problema es intentar predecir el peso del corazon a partir del peso del
cuerpo. Ademas parece razonable plantearse si esta relacion es similar para machos
2
y hembras.
PDF Rcode
> require(stats)
120
100
Stopping distance (ft)
80
60
40
20
5 10 15 20 25
Speed (mph)
3
(dosis de medicacion, tratamiento en un problema de diseno de experimentos). Sin
embargo, desde el punto de vista de la regresion X siempre lo consideramos fijo y
estudiamos como se comporta Y dado el valor de X = x. Es decir, de la distribucion
condicionada de Y al valor de X = x.
Un ejemplo muy famoso de Galton. Se tomaba como variable predictora la es-
tatura del padre y como variable respuesta o a predecir, la estatura de un hijo. Es
claro que para un mismo padre la estatura de sus hijos es variable. No todos los hijos
de un mismo padre miden lo mismo. No tiene ningun sentido asumir una relacion
funcional entre la estatura de un padre y la de un hijo.
Tan tontos no son los estadsticos (que no estadistas). De hecho, lo que se mo-
deliza es la relacion entre el valor x y el valor medio de la variable Y dado ese
valor x. Siguiendo con el ejemplo de Galton. Si consideramos un padre de estatura
X = 178 centmetros. Supondremos que la media de la variable Y que nos da la
estatura aleatoria de un hijo es la que se relaciona con x. Denotemos por E[Y | x]
esta media (estatura media de todos los hijos de un padre con estatura 178 cent-
metros). Hemos de admitir que ademas de lo que mide el padre, algo tendra que
decir la madre, y tambien otros muchos factores que todos podemos imaginar. De
modo que Y , conocida la estatura del padre, sigue siendo una cantidad aleatoria.
De hecho, se asume que la distribucion de Y es normal cuya media depende de Y ,
E[Y | x], pero cuya varianza no depende de x, es decir, es una cantidad constante
que denotaremos por 2 . En resumen, estamos asumiendo que
En el modelo de regresion mas simple con el que se trabaja se asume que la media
condicionada E[Y | x] es una funcion lineal de x, en otras palabras, se asume que
E[Y | x] = 0 + 1 x. (3.2)
Y = 0 + 1 x + , (3.3)
donde
N (0, 2 ). (3.4)
4
donde
Y1 1 x1
.. ..
Y = ... X = . . = 0
1
Yn 1 xn
Si consideramos que
1
..
=.
n
donde los i N (0, 2 ) e independientes entre si. Entonces el modelo dado en 3.5
lo podemos reescribir como
Y = X + , (3.6)
con Nn (0, 2 Inn ).
Este modelo probabilstico es conocido como el modelo de regresion lineal
simple. No lo estudiaremos en mas detalle porque nos vamos a ocupar de la situa-
cion mas general en que tenemos mas de una variable predictora. No es mas que
un caso particular y sin mucha dificultad adicional se puede estudiar el situacion
general de regresion lineal multiple.
5
y
Residuo
Espacio
engendrado
por X
Valor ajustado
Figura 3.1: Expresamos la observacion y como suma ortogonal de una parte siste-
matica mas un residuo.
3.3. Estimacion de
Como estimamos los parametros ? Nuestros datos son (yi , xi1 , . . . , xi,p1 ) con
i = 1, . . . , n. Nuestro objetivo es estimar los coeficientes de modo que X este
proximo a y. En concreto vamos a minimizar
n
X
2i = = (y X) (y X). (3.9)
i=1
6
y sera, como funcion de la matriz H,
Veamos una interpretacion geometrica que nos ayude a entender que son los estima-
dores mnimo cuadraticos que utilizamos. Estamos minimizando (y X) (y X).
Si vemos la figura 3.1 el valor de que nos da el mnimo coincide con el punto que
nos da la proyeccion ortogonal de y sobre el plano que viene engendrado por las
columnas de la matriz X. De este modo es claro que
1 x1 x
.. ..
X = . .
1 xn x
7
con
n Pn 0
XX= 2
0 i=1 i x)
(x
Finalmente se comprueba sin dificultad que
Pn
(xi x)yi
= Pi=1n 2
(3.22)
i=1 (xi x)
3.5. Verosimilitud
Dados los datos (xi , yi ) con i = 1, . . . , n la verosimilitud de y = (y1 , . . . , yn )
vendra dada por
1 1
L(, ) = n exp{ 2 (y X) (y X)} (3.23)
(2) 2 n 2
y la logverosimilitud sera
n 1
l(, ) = log(2) n log 2 (y X) (y X). (3.24)
2 2
El estimador maximo verosmil de se obtiene maximizando cualquiera de las dos
funciones anteriores. Es obvio que el maximo respecto de se obtiene como el
valor que minimiza (y X) (y X), en definitiva, que los estimadores maximo
verosmiles no son mas que los estimadores mnimo cuadraticos.
Coefficients:
(Intercept) age
17.3997 0.1068
8
> abline(lm(circumference ~ age, data = Orange))
200
150
circumference
100
50
age
names
[1] "coefficients" "residuals" "effects" "rank"
[5] "fitted.values" "assign" "qr" "df.residual"
[9] "xlevels" "call" "terms" "model"
class
[1] "lm"
> orange.lm$fitted.values
1 2 3 4 5 6 7 8
29.99855 69.07649 88.29515 124.59706 148.83392 163.88854 186.31030 29.99855
9 10 11 12 13 14 15 16
69.07649 88.29515 124.59706 148.83392 163.88854 186.31030 29.99855 69.07649
17 18 19 20 21 22 23 24
88.29515 124.59706 148.83392 163.88854 186.31030 29.99855 69.07649 88.29515
25 26 27 28 29 30 31 32
124.59706 148.83392 163.88854 186.31030 29.99855 69.07649 88.29515 124.59706
33 34 35
148.83392 163.88854 186.31030
9
> orange.lm$residuals
1 2 3 4 5
0.001451402 -11.076487573 -1.295146086 -9.597056609 -28.833920400
6 7 8 9 10
-21.888536235 -41.310304499 3.001451402 -0.076487573 22.704853914
11 12 13 14 15
31.402943391 23.166079600 39.111463765 16.689695501 0.001451402
16 17 18 19 20
-18.076487573 -13.295146086 -16.597056609 -33.833920400 -24.888536235
21 22 23 24 25
-46.310304499 2.001451402 -7.076487573 23.704853914 42.402943391
26 27 28 29 30
30.166079600 45.111463765 27.689695501 0.001451402 -20.076487573
31 32 33 34 35
-7.295146086 0.402943391 -6.833920400 10.111463765 -9.310304499
PDF Rcode
> library(foreign)
> x = read.spss(file = "../data/venta_casas.sav", to.data.frame = T)
> attach(x)
Call:
lm(formula = precio ~ valterr + valmejor)
Coefficients:
(Intercept) valterr valmejor
767.4080 3.1916 0.4779
PDF Rcode
10
3.7. Distribucion muestral de
Hemos visto que = (X X)1 X Y . Aplicando propiedades simples de la media
tenemos que
E = (X X)1 X (EY ) = , (3.25)
o, lo que es lo mismo, que es un estimador insesgado de , el estimador tiene
por vector de medias el vector de parametros que estima. Es una buena propiedad.
La matriz de covarianzas del error se obtiene facilmente como
2 = . (3.28)
np
ar() = (X X)1 2 .
vd (3.29)
d i ) = aii .
SE( (3.30)
Np (, (X X)1 2 ). (3.31)
> summary(casas.lm)
Call:
lm(formula = precio ~ valterr + valmejor)
Residuals:
Min 1Q Median 3Q Max
-153634.1 -10451.5 -575.7 8689.8 356418.3
Coefficients:
Estimate Std. Error t value Pr(>|t|)
11
(Intercept) 7.674e+02 1.290e+03 0.595 0.552
valterr 3.192e+00 5.339e-02 59.777 <2e-16 ***
valmejor 4.779e-01 2.552e-02 18.728 <2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
12
1. Tenemos errores independientes, con la misma varianza y con distribucion
normal? Esto es, nos preguntamos si es asumible la hipotesis Nn (0, 2 Inn ).
2. Asumimos que E[Yi | xi ] = 0 + 1 xi1 + . . . + p1 xi,p1 .
Los errores no son directamente observables. Observamos los residuos = y y
que no es lo mismo. Las propiedades de ambos vectores son distintas. En particular,
estamos asumiendo que var() = 2 Inn . Sin embargo, esta afirmacion no es cierta
para los residuos observados . Notemos que
De modo que
Homogeneidad de la varianza
La mera observacion de los residuos sin considerar su posible asociacion con otra
variable no nos proporciona informacion sobre si la varianza de los mismos es cons-
tante. Hemos de considerarlos en relacion con otras variables. Es habitual considerar
un diagrama de puntos de los residuos como funcion de las predicciones y. Cuan-
do la varianza es constante debemos de observar los residuos dispersos de un modo
aleatorio respecto del eje de abscisas. Tambien podemos ver un comportamiento no
aleatorio alrededor del eje de abscisas cuando la parte estructural del modelo no es
lineal, es decir, cuando no se verifica que EY = X.
Nota de R 15 (notaR122) Los datos que vamos a utilizar para valorar las hi-
potesis del modelo son los datos savings contenido en la librera faraway ([? ]).
Se pretende estudiar la relacion que liga la fraccion de ahorro con la proporcion de
poblacion menor de 15 anos, mayor de 75 y las variables dpi y ddpi. El siguiente dia-
grama de puntos muestra en abscisas las predicciones y en ordenadas los residuos.
No parece en principio que no podamos asumir una varianza constante. Vemos tam-
bien que nos indica los tres pases con los residuos mas extremos: Chile, Filipinas
y Zambia.
> library(faraway)
> data(savings)
> attach(savings)
13
Residuals vs Fitted
10
Zambia
Philippines
5
Residuals
0
5
Chile
10
6 8 10 12 14 16
Fitted values
lm(sr ~ pop15 + pop75 + dpi + ddpi)
PDF Rcode
Cuando no tenemos una varianza constante una opcion es transformar las varia-
bles. Si y es la variable original y h(y) la transformada queremos determinar h de
modo que la transformada tenga varianza constante. Transformaciones habituales
que podemos valorar son la raz cuadrada o el logaritmo de la variable respuesta.
14
3
2
2
rnorm(50)
rnorm(50)
1
1
0
0
1
2
0 10 20 30 40 50 0 10 20 30 40 50
1:50 1:50
2
2
1
1
rnorm(50)
rnorm(50)
0
0
1
1
2
0 10 20 30 40 50 0 10 20 30 40 50
1:50 1:50
15
(1:50) * rnorm(50)
(1:50) * rnorm(50)
50
60
20
0
20
50
60
0 10 20 30 40 50 0 10 20 30 40 50
1:50 1:50
100
(1:50) * rnorm(50)
(1:50) * rnorm(50)
50
50
0
0
50
100
0 10 20 30 40 50 0 10 20 30 40 50
1:50 1:50
En la siguiente figura los valores por los que multiplicamos son 1, 2, 3, . . . , 50
por lo que las varianzas se incrementan muy menos de una abscisa a la siguiente.
sqrt((1:50)) * rnorm(50)
10
5
5
0
0
5
10
15
0 10 20 30 40 50 0 10 20 30 40 50
1:50 1:50
sqrt((1:50)) * rnorm(50)
sqrt((1:50)) * rnorm(50)
10
10
5
5
0
0
5
10
0 10 20 30 40 50 0 10 20 30 40 50
1:50 1:50
16
Finalmente en la siguiente figura mostramos un ejemplo de un residuo no lineal.
Es un caso en que no podemos suponer que la media es una funcion lineal de los
predictores.
4
2
3
2
1
1
0
0
2
0 10 20 30 40 50 0 10 20 30 40 50
1:50 1:50
cos((1:50) * pi/25) + rnorm(50)
2
2
1
1
0
0
2 1
2
0 10 20 30 40 50 0 10 20 30 40 50
1:50 1:50
PDF Rcode
Normalidad
17
Normal QQ
3
Zambia
2
Philippines
Standardized residuals
1
0
1
2
Chile
2 1 0 1 2
Theoretical Quantiles
lm(sr ~ pop15 + pop75 + dpi + ddpi)
En la siguiente figura aparece un dibujo q-q utilizando las funciones qqnorm que
construye el dibujo y qqline que anade una lnea uniendo el primer y tercer cuartil.
Como vemos es el mismo dibujo.
18
Normal QQ Plot
10
5
Residuos
0
5
2 1 0 1 2
Theoretical Quantiles
PDF Rcode
Hemos visto como es una dibujo q-q cuando tenemos normalidad. Pero: y que
pasa cuando no tenemos normalidad. Esto es lo interesante saber que tenemos que
buscar para detectar que los residuos no siguen una distribucion normal.
Nota de R 18 (notaR125) Veamos como se modifican los dibujos q-q con otras
distribuciones de probabilidad. En esta nota consideramos cuatro distribuciones de
probabilidad. En la siguiente aparecen las densidades de los modelos considerados. La
primera es la correspondiente a la distribucion normal. Luego tenemos la lognormal,
la densidad de una Cauchy y la densidad uniforme. La lognormal se toma como
ejemplo de distribucion asimetrica, la Cauchy como ejemplo de una distribucion
con las colas mas largas que la normal y finalmente la uniforme como ejemplo de
distribucion con las colas mas cortas.
19
0.4
0.6
0.3
dlnorm (x)
dnorm (x)
0.4
0.2
0.2
0.1
0.0
0.0
3 2 1 0 1 2 3 3 2 1 0 1 2 3
x x
0.8
0.25
dcauchy (x)
dunif (x)
0.15
0.4
0.05
0.0
3 2 1 0 1 2 3 3 2 1 0 1 2 3
x x
En la figura que sigue tenemos nueve dibujos q-q realizados con datos simulados
con una distribucion normal.
20
Normal QQ Plot Normal QQ Plot
1 2 3
1.0
Sample Quantiles
Sample Quantiles
0.0
1
2.0 1.0
3
2 1 0 1 2 2 1 0 1 2
3
Sample Quantiles
Sample Quantiles
1.0
2
1
0.0
0
1.5
2 1 0 1 2 2 1 0 1 2
La figura que sigue muestra el dibujo q-q con datos simulados correspondientes
a la distribucion lognormal.
21
Normal QQ Plot Normal QQ Plot
4
8
Sample Quantiles
Sample Quantiles
3
6
2
4
1
2
0
0
2 1 0 1 2 2 1 0 1 2
15
Sample Quantiles
Sample Quantiles
6
10
4
5
2
0
0
2 1 0 1 2 2 1 0 1 2
La figura que sigue muestra el dibujo q-q con datos simulados correspondientes
a la distribucion de Cauchy.
22
Normal QQ Plot Normal QQ Plot
50
20
Sample Quantiles
Sample Quantiles
50
0
20
250 150
60
2 1 0 1 2 2 1 0 1 2
Sample Quantiles
15
5
0
5
5
5
15
15
2 1 0 1 2 2 1 0 1 2
La figura que sigue muestra el dibujo q-q con datos simulados correspondientes
a la distribucion de uniforme.
23
Normal QQ Plot Normal QQ Plot
1.0
Sample Quantiles
Sample Quantiles
0.8
0.6
0.4
0.2
0.0
2 1 0 1 2 2 1 0 1 2
Sample Quantiles
0.8
0.8
0.4
0.4
0.0
0.0
2 1 0 1 2 2 1 0 1 2
PDF Rcode
> residuals(savings.lm)
24
3.3911306 1.9267549 5.2814855 -6.1069814 -1.6708066
Malta Norway Netherlands New Zealand Nicaragua
2.9749098 -0.8717854 0.4255455 2.2855548 0.6463966
Panama Paraguay Peru Philippines Portugal
-3.2941656 -6.1257589 6.5394410 6.6750084 -0.7684447
South Africa South Rhodesia Spain Sweden Switzerland
0.4831656 1.2914342 -0.6711565 -4.2602834 2.4868259
Turkey Tunisia United Kingdom United States Venezuela
-2.6656824 -2.8179200 -2.6924128 -1.1115901 3.6325177
Zambia Jamaica Uruguay Libya Malaysia
9.7509138 -3.0185314 -2.2638273 -2.8295257 -2.9708690
> shapiro.test(residuals(savings.lm))
data: residuals(savings.lm)
W = 0.987, p-value = 0.8524
PDF Rcode
> library(lmtest)
> dwtest(savings.lm)
Durbin-Watson test
data: savings.lm
DW = 1.9341, p-value = 0.3897
alternative hypothesis: true autocorrelation is greater than 0
PDF Rcode
25
Empecemos estudiando que se entiende por influencia de una observacion. Lla-
maremos a hi = Hii , esto es, el valor en la posicion (i, i) de la matriz H la influencia
(leverage en ingles). Notemos que var(i ) = 2 (1 hi ). En consecuencia, una in-
fluencia alta supone una varianza del correspondiente
Pp residuo baja. Forzamos al
ajuste a que este proximo a yi . Se tiene que i=1 hi = p. En consecuencia el valor
medio de los hi es p/n. Como una regla simple de aplicar si la influencia hi es mayor
que 2p/n debemos de observar el dato con atencion. Buscamos valores grandes de
las influencias.
26
Residuals vs Leverage
3
Zambia
1
2
Japan
0.5
Standardized residuals
1
0
1
Libya
0.5
2
Cooks distance
Leverage
lm(sr ~ pop15 + pop75 + dpi + ddpi) Notemos que Li-
bia es el pais que tiene un mayor valor de la influencia.
PDF Rcode
Otra posibilidad es para encontrar observaciones anomalas consiste en trabajar
con los residuos estudentizados. Veamos su definicion. Notemos que var(i ) = 2 (1
hi ) lo que sugiere tomar
i
ri = (3.37)
1 hi
Estos son los residuos estudentizados. Si el modelo que asumimos es correcto enton-
ces la varianza de estos residuos es uno y son aproximadamente incorrelados. Note-
mos que la estudentizacion corrige las varianzas desiguales de los residuos cuando
las varianzas de los errores son iguales entre si. En otro caso esto no es cierto. Si
las varianzas de los errores no son iguales (tenemos heterocedasticidad) entonces la
estudentizacion no hace homogeneas las varianzas de los residuos.
Algunos autores (y programas) tienden a usar en lugar de los residuos originales,
los residuos estudentizados.
Una observacion anomala es una observacion que no se ajusta a nuestro mo-
delo. Hemos de protegernos frente a este tipo de puntos. Un test para observaciones
anomalas es util si nos permite distinguir entre observaciones que son realmente
anomala y aquellas que simplemente tienen un residuo grande aunque no excepcio-
nalmente grande.
Para detectar este tipo de puntos, lo que hacemos es excluir el punto i-esimo y
2
ajustamos el modelo sin ese punto obteniendo los estimadores (i) y (i) . Tendremos
para el punto i-esimo la siguiente estimacion
y(i) = xi (i) . (3.38)
Si el valor yi y(i) es grande entonces el caso i es una observacion anomala. Con
objeto de valorar si estos nuevos residuos son anormales hemos de estandarizarlos.
Notemos que
2
vd
ar(yi y(i) ) = (i) (1 + xi (X(i)
X(i) )1 xi )
27
de modo que podemos definir los residuos jackknife como
yi y(i) yi y(i)
ti = p = q tnp1 ,
vd
ar(yi y(i) ) X )1 x
(i) 1 + xi (X(i) (i) i
Puesto que cada uno de los ti sigue una distribucion conocida podemos contrastar si
tenemos una observacion anomala. En principio el procedimiento sera simplemente
fijar un nivel de significacion y determinar el percentil 1 2 de una distribucion
t de Student con n p 1 grados de libertad. Si denotamos el percentil como
tnp1,1 2 entonces residuos que no esten en el intervalo [tnp1,1 2 , tnp1,1 2 ]
seran sospechosos. Esto no es adecuado. Porque estamos analizando n residuos
estudentizados. Con uno solo s que sera aplicable el razonamiento. Tenemos un
problema de muchos tests simultaneamente considerados. Si aplicamos la correccion
de Bonferroni tendramos que corregir el nivel de significacion y trabajar con
/n. Por tanto, consideramos como sospechosos aquellos residuos estandarizados
que esten fuera del intervalo [tnp1,1 2n
,t ].
np1,1 2n
Nota de R 22 (notaR130) Calculamos para los datos savings los residuos estu-
dentizados con la funcion rstudent. La pregunta que nos hacemos es si alguno de
estos residuos es muy grande o muy pequeno. Comparamos el modulo de los residuos
estandarizados con tnp1,1 2n
.
PDF Rcode
28
Un punto influyente es aquel que cuando lo quitamos causa una modificacion
importante del ajuste. Un punto influyente puede ser o no una observacion anomala,
puede tener o no una alta influencia pero tendera a tener al menos una de las dos
propiedades. El estadstico de Cook es una de las maneras de medir la influencia.
Se define como
(yi y(i) ) (yi y(i) ) 1 hi
Di = 2
= ri2 . (3.39)
p p 1 hi
Nota de R 23 (notaR129) Con los datos savings representamos las distancias
de Cook y las obtenemos utilizando la funcion Cooks.distance. Vemos Lbia, Zambia
y Japon son observaciones que influyen mucho en el ajuste. Habra que valorar el
ajuste con y sin estas observaciones.
Cooks distance
Libya
0.25
0.20
Cooks distance
0.15
Japan
0.10
Zambia
0.05
0.00
0 10 20 30 40 50
Obs. number
lm(sr ~ pop15 + pop75 + dpi + ddpi)
Tambien podemos ver los valores de la distancia de Cook.
> cooks.distance(savings.lm)
29
Panama Paraguay Peru Philippines Portugal
6.333674e-03 4.157229e-02 4.401457e-02 4.522120e-02 9.733900e-04
South Africa South Rhodesia Spain Sweden Switzerland
2.405063e-04 5.267290e-03 5.659085e-04 4.055963e-02 7.334746e-03
Turkey Tunisia United Kingdom United States Venezuela
4.224370e-03 9.562447e-03 1.496628e-02 1.284481e-02 1.886141e-02
Zambia Jamaica Uruguay Libya Malaysia
9.663275e-02 2.402677e-02 8.532329e-03 2.680704e-01 9.113404e-03
PDF Rcode
30
donde Fr,np,1 es el percentil 1 de una F con r y n p grados de libertad.
Realmente depende la variable respuesta de alguna de las variables predictoras?
Realmente nos estamos planteando la hipotesis de que todos los coeficientes, salvo el
termino constante 0 , valen cero, es decir, la hipotesis nula H0 : 1 = . . . = p1 = 0.
En este caso tendremos que
((y 1n y) (y 1n y) (y X ) (y X ))/(p 1)
F = Fp1,np .
(y X ) (y X )/(n p)
Como segundo caso tendramos la situacion en que contrastamos que un solo coe-
ficiente vale cero, es decir, la hipotesis nula H0 : i = 0 frente a la alternativa
H1 : i 6= 0. Tenemos que bajo la hipotesis nula indicada
i
ti = tnp
SE(i )
o bien si
F = t2i > F1,np,1 2 .
Ambos procedimientos son equivalentes como se puede ver facilmente.
> summary(savings.lm)
Call:
lm(formula = sr ~ pop15 + pop75 + dpi + ddpi, data = savings)
Residuals:
Min 1Q Median 3Q Max
-8.2422 -2.6857 -0.2488 2.4280 9.7509
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 28.5660865 7.3545161 3.884 0.000334 ***
pop15 -0.4611931 0.1446422 -3.189 0.002603 **
pop75 -1.6914977 1.0835989 -1.561 0.125530
dpi -0.0003369 0.0009311 -0.362 0.719173
ddpi 0.4096949 0.1961971 2.088 0.042471 *
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
31
Residual standard error: 3.803 on 45 degrees of freedom
Multiple R-squared: 0.3385, Adjusted R-squared: 0.2797
F-statistic: 5.756 on 4 and 45 DF, p-value: 0.0007904
PDF Rcode
i tnp,1 2 SE(i ).
> confint(savings.lm)
2.5 % 97.5 %
(Intercept) 13.753330728 43.378842354
pop15 -0.752517542 -0.169868752
pop75 -3.873977955 0.490982602
dpi -0.002212248 0.001538444
ddpi 0.014533628 0.804856227
PDF Rcode
E[Y |x0 ] = x0 .
ar(x0 ) = x0 (X X)1 x0 2 .
vd
Y = x0 + .
x0
pero hay que considerar la varianza anadida por el error de modo que la varianza
al predecir Y dado x0 sera
var(x0 ) + 2
32
que estimaramos como
Nota de R 26 (notaR133) Con los datos savings consideramos como obtener las
predicciones, intervalos de confianza para las medias y para las predicciones. Utili-
zamos los propios datos que se han utilizado para ajustar el modelo. Con la funcion
predict obtenemos las predicciones as como los intervalos de confianza para las me-
dias de las predicciones (predict con la opcion interval=confidence) y los intervalos
de confianza para las observaciones (predict con la opcion interval=prediction).
Primero obtengamos las predicciones para los propios datos.
33
Colombia 6.431707 4.598321 8.265094
Costa Rica 5.654922 3.550896 7.758948
Denmark 11.449761 9.531686 13.367837
Ecuador 5.995631 4.062193 7.929070
Finland 12.921086 10.597470 15.244702
France 10.164528 7.337915 12.991142
Germany 12.730699 10.466993 14.994406
Greece 13.786168 11.405464 16.166872
Guatamala 6.365284 4.481549 8.249018
Honduras 6.989976 5.112657 8.867294
Iceland 7.480582 5.447045 9.514119
India 8.491326 6.444043 10.538609
Ireland 7.948869 4.420451 11.477288
Italy 12.353245 10.378008 14.328482
Japan 15.818514 12.199217 19.437811
Korea 10.086981 8.198473 11.975490
Luxembourg 12.020807 9.770218 14.271395
Malta 12.505090 10.346906 14.663274
Norway 11.121785 9.444976 12.798594
Netherlands 14.224454 11.918940 16.529969
New Zealand 8.384445 6.601075 10.167815
Nicaragua 6.653603 4.935013 8.372194
Panama 7.734166 6.222133 9.246198
Paraguay 8.145759 6.128498 10.163019
Peru 6.160559 4.207163 8.113955
Philippines 6.104992 4.163566 8.046418
Portugal 13.258445 10.871236 15.645654
South Africa 10.656834 8.702611 12.611058
South Rhodesia 12.008566 8.937241 15.079891
Spain 12.441156 10.311350 14.570963
Sweden 11.120283 8.423402 13.817164
Switzerland 11.643174 9.565430 13.720919
Turkey 7.795682 6.270754 9.320610
Tunisia 5.627920 3.536485 7.719355
United Kingdom 10.502413 7.888092 13.116733
United States 8.671590 4.247331 13.095849
Venezuela 5.587482 3.337731 7.837234
Zambia 8.809086 6.866490 10.751682
Jamaica 10.738531 7.865039 13.612024
Uruguay 11.503827 9.106837 13.900817
Libya 11.719526 6.136055 17.302996
Malaysia 7.680869 5.724711 9.637027
Y finalmente obtenemos los intervalos de confianza para la prediccion de la ob-
servacion.
> predict(savings.lm, interval = "prediction")
fit lwr upr
Australia 10.566420 2.65239197 18.48045
Austria 11.453614 3.34673522 19.56049
Belgium 10.951042 2.96408447 18.93800
Bolivia 6.448319 -1.54593794 14.44258
Brazil 9.327191 1.40632381 17.24806
Canada 9.106892 0.86361399 17.35017
34
Chile 8.842231 1.04173848 16.64272
China 9.363964 1.41205561 17.31587
Colombia 6.431707 -1.44364012 14.30705
Costa Rica 5.654922 -2.28779264 13.59764
Denmark 11.449761 3.55426865 19.34525
Ecuador 5.995631 -1.90360737 13.89487
Finland 12.921086 4.91740032 20.92477
France 10.164528 2.00061173 18.32844
Germany 12.730699 4.74420105 20.71720
Greece 13.786168 5.76572337 21.80661
Guatamala 6.365284 -1.52193644 14.25250
Honduras 6.989976 -0.89571495 14.87567
Iceland 7.480582 -0.44375158 15.40492
India 8.491326 0.56345398 16.41920
Ireland 7.948869 -0.48377711 16.38152
Italy 12.353245 4.44367177 20.26282
Japan 15.818514 7.34744022 24.28959
Korea 10.086981 2.19861958 17.97534
Luxembourg 12.020807 4.03801659 20.00360
Malta 12.505090 4.54785797 20.46232
Norway 11.121785 3.28141059 18.96216
Netherlands 14.224454 6.22600553 22.22290
New Zealand 8.384445 0.52059132 16.24830
Nicaragua 6.653603 -1.19581320 14.50302
Panama 7.734166 -0.07262817 15.54096
Paraguay 8.145759 0.22558667 16.06593
Peru 6.160559 -1.74358821 14.06471
Philippines 6.104992 -1.79620600 14.00619
Portugal 13.258445 5.23606633 21.28082
South Africa 10.656834 2.75248263 18.56119
South Rhodesia 12.008566 3.75672820 20.26040
Spain 12.441156 4.49157384 20.39074
Sweden 11.120283 3.00037235 19.24019
Switzerland 11.643174 3.70738117 19.57897
Turkey 7.795682 -0.01361931 15.60498
Tunisia 5.627920 -2.31146847 13.56731
United Kingdom 10.502413 2.40954804 18.59528
United States 8.671590 -0.17340027 17.51658
Venezuela 5.587482 -2.39507172 13.57004
Zambia 8.809086 0.90760106 16.71057
Jamaica 10.738531 2.55826556 18.91880
Uruguay 11.503827 3.47853305 19.52912
Libya 11.719526 2.24139669 21.19765
Malaysia 7.680869 -0.22396122 15.58570
PDF Rcode
35
recoger esta informacion. Es bueno porque los estimadores de los parametros que
intervienen en el modelo son mucho menos variables.
Dos son las aproximaciones al problema de la seleccion de variables. En la prime-
ra vamos comparando modelos sucesivos y, basicamente, consideramos si los modelos
sucesivos que comparamos difieren significativamente como modelos. En la segun-
da se adopta una medida de calidad global del ajuste y se plantea el problema de
determinar el modelo que optimiza ese criterio global.
> data(state)
> statedata = data.frame(state.x77, row.names = state.abb, check.names = T)
Call:
lm(formula = Life.Exp ~ ., data = statedata)
Residuals:
Min 1Q Median 3Q Max
-1.48895 -0.51232 -0.02747 0.57002 1.49447
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 7.094e+01 1.748e+00 40.586 < 2e-16 ***
Population 5.180e-05 2.919e-05 1.775 0.0832 .
Income -2.180e-05 2.444e-04 -0.089 0.9293
Illiteracy 3.382e-02 3.663e-01 0.092 0.9269
Murder -3.011e-01 4.662e-02 -6.459 8.68e-08 ***
36
HS.Grad 4.893e-02 2.332e-02 2.098 0.0420 *
Frost -5.735e-03 3.143e-03 -1.825 0.0752 .
Area -7.383e-08 1.668e-06 -0.044 0.9649
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Call:
lm(formula = Life.Exp ~ Population + Income + Illiteracy + Murder +
HS.Grad + Frost, data = statedata)
Residuals:
Min 1Q Median 3Q Max
-1.49047 -0.52533 -0.02546 0.57160 1.50374
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 7.099e+01 1.387e+00 51.165 < 2e-16 ***
Population 5.188e-05 2.879e-05 1.802 0.0785 .
Income -2.444e-05 2.343e-04 -0.104 0.9174
Illiteracy 2.846e-02 3.416e-01 0.083 0.9340
Murder -3.018e-01 4.334e-02 -6.963 1.45e-08 ***
HS.Grad 4.847e-02 2.067e-02 2.345 0.0237 *
Frost -5.776e-03 2.970e-03 -1.945 0.0584 .
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Call:
lm(formula = Life.Exp ~ Population + Income + Murder + HS.Grad +
Frost, data = statedata)
Residuals:
Min 1Q Median 3Q Max
-1.48921 -0.51224 -0.03290 0.56447 1.51662
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 7.107e+01 1.029e+00 69.067 < 2e-16 ***
Population 5.115e-05 2.709e-05 1.888 0.0657 .
Income -2.477e-05 2.316e-04 -0.107 0.9153
Murder -3.000e-01 3.704e-02 -8.099 2.91e-10 ***
HS.Grad 4.776e-02 1.859e-02 2.569 0.0137 *
37
Frost -5.910e-03 2.468e-03 -2.395 0.0210 *
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Call:
lm(formula = Life.Exp ~ Population + Murder + HS.Grad + Frost,
data = statedata)
Residuals:
Min 1Q Median 3Q Max
-1.47095 -0.53464 -0.03701 0.57621 1.50683
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 7.103e+01 9.529e-01 74.542 < 2e-16 ***
Population 5.014e-05 2.512e-05 1.996 0.05201 .
Murder -3.001e-01 3.661e-02 -8.199 1.77e-10 ***
HS.Grad 4.658e-02 1.483e-02 3.142 0.00297 **
Frost -5.943e-03 2.421e-03 -2.455 0.01802 *
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Call:
lm(formula = Life.Exp ~ Murder + HS.Grad + Frost, data = statedata)
Residuals:
Min 1Q Median 3Q Max
-1.5015 -0.5391 0.1014 0.5921 1.2268
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 71.036379 0.983262 72.246 < 2e-16 ***
Murder -0.283065 0.036731 -7.706 8.04e-10 ***
HS.Grad 0.049949 0.015201 3.286 0.00195 **
Frost -0.006912 0.002447 -2.824 0.00699 **
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
38
PDF Rcode
> 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
Step: AIC=-24.18
Life.Exp ~ Population + Income + Illiteracy + Murder + HS.Grad +
Frost
Step: AIC=-26.17
Life.Exp ~ Population + Income + Murder + HS.Grad + Frost
39
<none> 23.302 -26.174
- Population 1 1.887 25.189 -24.280
- Frost 1 3.037 26.339 -22.048
- HS.Grad 1 3.495 26.797 -21.187
- Murder 1 34.739 58.041 17.457
Step: AIC=-28.16
Life.Exp ~ Population + Murder + HS.Grad + Frost
Call:
lm(formula = Life.Exp ~ Population + Murder + HS.Grad + Frost, data = statedata)
Coefficients:
(Intercept) Population Murder HS.Grad Frost
7.103e+01 5.014e-05 -3.001e-01 4.658e-02 -5.943e-03
Utilizamos stepAIC de la librera MASS [? ].
> library(MASS)
> data(state)
> statedata = data.frame(state.x77, row.names = state.abb, check.names = T)
> g = lm(Life.Exp ~ ., data = statedata)
> stepAIC(g)
Start: AIC=-22.18
Life.Exp ~ Population + Income + Illiteracy + Murder + HS.Grad +
Frost + Area
Step: AIC=-24.18
Life.Exp ~ Population + Income + Illiteracy + Murder + HS.Grad +
Frost
40
- HS.Grad 1 2.980 26.279 -20.163
- Murder 1 26.272 49.570 11.568
Step: AIC=-26.17
Life.Exp ~ Population + Income + Murder + HS.Grad + Frost
Step: AIC=-28.16
Life.Exp ~ Population + Murder + HS.Grad + Frost
Call:
lm(formula = Life.Exp ~ Population + Murder + HS.Grad + Frost, data = statedata)
Coefficients:
(Intercept) Population Murder HS.Grad Frost
7.103e+01 5.014e-05 -3.001e-01 4.658e-02 -5.943e-03
41
> xnam <- paste("V", 1:8, sep = "")
> (fmla <- as.formula(paste("y ~ ", paste(xnam, collapse = "+"))))
> y = log(x[, 9])
> y.fit = lm(fmla, data = x)
> summary(y.fit)
42
> x = x[-2052, ]
> attach(x)
43
y.fit = lm (fmla,data=x)
summary(y.fit)
> x = x[-1418, ]
> attach(x)
44
PDF Rcode
Ajustamos el modelo.
Call:
lm(formula = agua ~ temperatura + produccion + dias + personas)
Residuals:
Min 1Q Median 3Q Max
-444.986 -131.522 2.575 108.969 368.516
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 6360.33733 1314.39161 4.839 0.000406 ***
temperatura 13.86886 5.15982 2.688 0.019748 *
produccion 0.21170 0.04554 4.648 0.000562 ***
dias -126.69036 48.02234 -2.638 0.021647 *
personas -21.81796 7.28452 -2.995 0.011168 *
45
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
Call:
lm(formula = agua ~ temperatura + poly(produccion, 3) + dias +
personas)
Residuals:
Min 1Q Median 3Q Max
-435.85 -103.78 29.41 123.85 388.38
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 8734.088 2393.471 3.649 0.00447 **
temperatura 14.521 6.524 2.226 0.05021 .
poly(produccion, 3)1 2742.288 851.981 3.219 0.00920 **
poly(produccion, 3)2 208.891 337.555 0.619 0.54986
poly(produccion, 3)3 -108.677 357.638 -0.304 0.76745
dias -138.467 66.880 -2.070 0.06524 .
personas -18.695 9.872 -1.894 0.08752 .
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
46
Residuals vs Fitted
400
6
15
200
Residuals
0
200
400
14
Fitted values
lm(agua ~ temperatura + produccion + dias + personas)
Normal QQ
2
6
1
Standardized residuals
0
1
17
14
2
2 1 0 1 2
Theoretical Quantiles
lm(agua ~ temperatura + produccion + dias + personas)
47
ScaleLocation
1.4
14
6
1.2
17
1.0
Standardized residuals
0.8
0.6
0.4
0.2
0.0
Fitted values
lm(agua ~ temperatura + produccion + dias + personas)
Cooks distance
1
0.20
0.15
Cooks distance
4
16
0.10
0.05
0.00
5 10 15
Obs. number
lm(agua ~ temperatura + produccion + dias + personas)
48
Residuals vs Leverage
2
0.5
1
16
Standardized residuals
1
1
4
0.5
1
2
Cooks distance
Leverage
lm(agua ~ temperatura + produccion + dias + personas)
4
16
0.10
0.05
0.00
Leverage hii
lm(agua ~ temperatura + produccion + dias + personas)
Intervalo de confianza para observaciones.
49
fit lwr upr
1 3205.385 2520.884 3889.885
2 2750.249 2130.559 3369.940
3 2657.037 2036.241 3277.833
4 3227.559 2601.448 3853.670
5 3213.522 2562.575 3864.470
6 3529.484 2940.043 4118.924
7 3538.372 2944.767 4131.977
8 3138.032 2556.061 3720.004
9 3116.283 2526.273 3706.292
10 3283.425 2663.590 3903.260
11 3469.345 2825.351 4113.339
12 3148.126 2500.847 3795.405
13 2913.031 2309.106 3516.957
14 3366.986 2802.927 3931.045
15 3626.584 3050.307 4202.861
16 4362.459 3690.845 5034.073
17 3617.121 3026.185 4208.057
PDF Rcode
Variable Description
M percentage of males aged 1424
50
So indicator variable for a southern state
Ed mean years of schooling
Po1 police expenditure in 1960
Po2 police expenditure in 1959
LF labour force participation rate
M.F number of males per 1000 females
Pop state population
NW number of nonwhites per 1000 people
U1 unemployment rate of urban males 1424
U2 unemployment rate of urban males 3539
GDP gross domestic product per head
Ineq income inequality
Prob probability of imprisonment
Time average time served in state prisons
Crime rate of crimes in a particular category per head of population
Call:
lm(formula = Crime ~ M + So + Ed + Po1 + Po2 + LF + M.F + Pop +
NW + U1 + U2 + GDP + Ineq + Prob + Time)
Residuals:
Min 1Q Median 3Q Max
-395.738 -98.088 -6.695 112.989 512.671
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -5984.2876 1628.3184 -3.675 0.000893 ***
M 8.7830 4.1714 2.106 0.043443 *
So -3.8035 148.7551 -0.026 0.979765
Ed 18.8324 6.2088 3.033 0.004861 **
Po1 19.2804 10.6110 1.817 0.078892 .
Po2 -10.9422 11.7478 -0.931 0.358830
LF -0.6638 1.4697 -0.452 0.654654
M.F 1.7407 2.0354 0.855 0.398995
Pop -0.7330 1.2896 -0.568 0.573845
NW 0.4204 0.6481 0.649 0.521279
U1 -5.8271 4.2103 -1.384 0.176238
U2 16.7800 8.2336 2.038 0.050161 .
GDP 0.9617 1.0367 0.928 0.360754
Ineq 7.0672 2.2717 3.111 0.003983 **
Prob -4855.2658 2272.3746 -2.137 0.040627 *
Time -3.4790 7.1653 -0.486 0.630708
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
51
Residual standard error: 209.1 on 31 degrees of freedom
Multiple R-squared: 0.8031, Adjusted R-squared: 0.7078
F-statistic: 8.429 on 15 and 31 DF, p-value: 3.539e-07
Call:
lm(formula = Crime ~ M + Ed + Po1 + U2 + Ineq + Prob)
Residuals:
Min 1Q Median 3Q Max
-470.68 -78.41 -19.68 133.12 556.23
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) -5040.505 899.843 -5.602 1.72e-06 ***
M 10.502 3.330 3.154 0.00305 **
Ed 19.647 4.475 4.390 8.07e-05 ***
Po1 11.502 1.375 8.363 2.56e-10 ***
U2 8.937 4.091 2.185 0.03483 *
Ineq 6.765 1.394 4.855 1.88e-05 ***
Prob -3801.836 1528.097 -2.488 0.01711 *
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
PDF Rcode
52
Captulo 4
Analisis cluster
1
pues no existe la palabra) son metodos de particionamiento y los tratamos en la
seccion 4.3.
Empezamos viendo un conjunto de datos que nos sugieran el problema y como
tratarlo.
> 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))
2
0
0 2 4 6 8
x1[,1]
Se ve que hay tres grupos pero estos no estan muy claramente delimitados. No-
sotros no disponemos de esta informacion. Conocemos los valores que componen los
vectores de datos pero no conocemos el grupo al que podra pertenecer cada uno de
ellos. Tampoco tenemos porque tener prefijado el numero de grupos. Los datos son
artificiales pero ilustran bien el problema.
PDF Rcode
2
Una referencia muy adecuada que se puede consultar es el texto de [? ]. Cualquier
texto de reconocimiento de patrones es adecuado.
En lo que sigue vamos a basarnos fundamentalmente en la librera cluster [? ] y
denotaremos los datos a agrupar con xi con i = 1, . . . n siendo xi = xi1 , . . . , xid .
4.1. Disimilaridades
4.1.1. Disimilaridades entre observaciones
Empezamos tratando el problema de cuantificar el grado de proximidad, de
similaridad entre dos puntos en el espacio de dimension d. Tradicionalmente este
tema en Matematicas se ha formalizado a traves del concepto de distancia o metrica.
Una metrica es una funcion que a cada par de puntos x, y Rd le asocia un valor
positivo de modo que cuando mayor es mas distantes son, mas alejados estan. Como
siempre la formalizacion matematica de un concepto intuitivo ha de ser prudente
y pedir que se verifiquen ciertos axiomas que resulten razonables y generalmente
admisibles. En concreto la funcion d definida en el espacio producto Rd Rd se dice
que es una metrica si verifica:
No negativa d(x, y) 0.
Un punto dista 0 de s mismo d(x, x) = 0.
Simetra d(x, y) = d(y, x).
Desigualdad triangular d(x, z) d(x, y) + d(y, z), para todo x, y, z Rd .
Las distancias mas utilizadas en analisis cluster son la distancia eucldea y la dis-
tancia de Manhattan. Para dos vectores u e v (en Rd ) entonces la distancia eucldea
se define como v
u d
uX
d(x, y) = t (xk yk )2 , (4.1)
k=1
d
con x, y R . La distancia de Manhattan viene dada por
d
X
d(x, y) = |xk yk |. (4.2)
k=1
Las distancias eucldea y de Manhattan son adecuadas cuando trabajamos con va-
riables continuas y que ademas esten en una misma escala. 2 Notemos que cada una
de las componentes del vector pesan igualmente. Si tenemos variables que no estan
igualmente escaladas estas distancias pueden pesar mas unas variables que otras no
por lo diferentes que sean entre los individuos sino simplemente por su escala.
Con mucha frecuencia nos encontramos trabajando con variables que aun siendo
continuas estan medidas en escalas muy diversas o bien tenemos variables que son
continuas, otras que son binarias, otras categoricas con mas de dos categoras o bien
variable ordinales. En resumen, todos los posibles tipos de variables simultaneamen-
te considerados. Es lo habitual. Una variable binaria la codificamos habitualmente
como 1 y 0 indicando presencia o ausencia del atributo que estemos considerando.
En una variable categorica la codificacion es completamente arbitraria y por lo tanto
no tiene sentido la aplicacion de una de estas distancias.
Todo esto plantea el hecho de que no es recomendable, ni tampoco facil, en un
banco de datos con distintos tipos de variables considerar una metrica o distancia,
2 La funcion dist de [? ] es una buena opcion para el calculo de estas y otras distancias. Tambien
3
Cuadro 4.1: Conteos asociados a dos casos descritos por variables binarias
1 0
1 A B A+B
0 C D C+D
A+C B+D d=A+B+C+D
esto es, algo que verifique las propiedades anteriores. Son demasiado exigentes estas
propiedades. Lo que se hace es proponer medidas entre los vectores de caracters-
ticas que tienen algunas de las propiedades y son, ademas, razonables. Por ello no
hablaremos, en general, de una distancia o una metrica, sino de una medida de
disimilaridad. Finalmente, valores grandes estaran asociados con vectores de carac-
tersticas que tienen una mayor diferencia. Se han propuesto distintas medidas de
disimilaridad entre variables cualitativas (binarias simetricas o asimetricas, cualita-
tivas, ordinales) y cuantitativas. En lo que sigue comentamos con algun detalle la
que lleva la funcion daisy de la librera cluster [? ]. Es una opcion muy generica y
razonable.
Consideramos el problema cuando solo tenemos un tipo de variable. Finalmente
combinaremos todo en una sola medida de disimilaridad.
Supongamos descrita al individuo o caso mediante d variables binarias. Es natu-
ral construir la tabla de contingencia 2 2 que aparece en la tabla 4.1 donde las filas
corresponden con el individuo i y las columnas con el individuo j. Segun la tabla los
individuos i y j coincidiran en la presencia de A atributos y en la no presencia de
D atributos. Tenemos B atributos en i que no estan en j y C atributos que no estan
en i pero s que estan en j.
4
en el que simplemente no consideramos los acoplamientos negativos.
Consideremos ahora el caso de variables categoricas con mas de dos categoras.
Si todas las variables son de este tipo y tenemos un total de d variables entonces
los individuos i y j son tanto mas disimilares cuanto mas variables categoricas son
distintas. Si denotamos por u el numero de variables en las que coinciden los dos
individuos entonces la medida de disimilaridad sera
du
d(i, j) = .
d
Finalmente veamos como tratar las variables ordinales. Lo que haremos para varia-
bles de este tipo es transformarlas al intervalo [0, 1]. Si xij denota la j-esima variable
del i-esimo individuo entonces consideramos la transformacion
xik 1
yik =
Mk 1
siendo 1, . . . , Mk los valores que puede tomar la j-esima variable ordinal. Lo que
estamos haciendo con este procedimiento es transformar la variable ordinal es una
variable numerica con una escala comun. En la medida en que el numero de cate-
goras sea mayor esta transformacion tendra mas sentido.
Hemos visto como tratar cada tipo de variable aisladamente. El problema es
combinar todas ellas en una sola medida de disimilaridad. La funcion daisy del
paquete cluster [? ] utiliza la siguiente medida:
Pd (k) (k)
k=1 ij dij
d(i, j) = Pd (k)
, (4.3)
k=1 ij
donde:
(k)
ij vale uno cuando las medidas xik y xjk no son valores faltantes y cero en
otro caso;
(k)
ij vale 0 cuando la variable k es binaria asimetrica y tenemos entre los
individuos i y j un acoplamiento 0-0;
(k)
el valor dij es lo que contribuye a la disimilaridad entre i y j la variable k.
(k)
Si la variable k es binaria o categorica entonces dij es definida como
(k)
dij = 1 si xik 6= xjk y 0 en otro caso.
Si la variable k es numerica entonces
(k) |xik xjk |
dij =
Rk
siendo Rk el rango de la variable k definido como
donde h vara entre todos los individuos con valor no faltante de la va-
riable k.
Si todas las variables son categoricas entonces 4.3 nos da el numero de acoplamientos
del total de pares disponibles, en definitiva, el coeficiente de acoplamiento simple. Si
todas son variables binarias simetricas entonces obtenemos otra vez el coeficiente de
acoplamiento simple. Si las variables son binarias asimetricas entonces obtenemos
el coeficiente de Jaccard. Cuando todas las variables con las que trabajamos son
5
numericas la medida de disimilaridad es la distancia de Manhattan donde cada
variable esta normalizada.
Dado un conjunto de datos xi con i = 1, . . . , n tendremos, utilizando algunas
de las medidas de disimilaridades comentadas, una matriz de dimension n n que
tiene en la posicion (i, j) la disimilaridad entre xi y xj , d(i, j): [d(i, j)]i,j=1,...,n .
Con esta matriz cuantificamos la disimilaridad que hay entre los elementos ori-
ginales de la muestra. Algunos de los procedimientos de agrupamiento que vamos
a considerar en lo que sigue no necesitan conocer los datos originales. Pueden apli-
carse con solo conocer esta matriz de disimilaridades. Otros no. Otros utilizan los
datos a lo largo de las distintas etapas de aplicacion del procedimiento.
d(A, B) = mn d(a, b)
aA,bB
Enlace completo Ahora tomamos como disimilaridad entre los grupos como el
maximo de las disimilaridades, en definitiva, la disimilaridad entre los objetos
mas alejados o mas distintos.
6
Sea {1, . . . , n} el conjunto de ndices que indexan las distintas observaciones.
Supongamos que {C1 , . . . , Cr } es una particion de este conjunto de ndices:
Ci {1, . . . , n}; son disjuntos dos a dos, Ci Cj = si i 6= j con i, j = 1, . . . , n
y
ri= Ci = {1, . . . , n}.
Dada una particion del conjunto de ndices podemos calcular la matriz r r que
en la posicion (i, j) tiene la disimilaridad entre el conjunto Ci y Cj , d(Ci , Cj ) segun
alguno de los procedimientos antes indicados.
Veamos los procedimientos jerarquicos aglomerativos. En estos procedimientos
vamos a iniciar el agrupamiento con la particion: Ci = {i} con i = 1, . . . , n, es
decir, cada grupo es un individuo. En cada iteracion vamos agrupando el par de
conjuntos (elementos de la particion que tengamos en esa iteracion) que esten mas
proximos segun la disimilaridad entre grupos que estemos utilizando. El proceso
continua hasta que tengamos un unico grupo.
Un esquema algortmico del procedimiento indicado puede ser el siguiente:
Paso 0 Tenemos grupos unitarios formados por cada una de las observaciones.
Tenemos pues una particion inicial Ci = {i} con i = 1, . . . , n. En un principio,
cada dato es un grupo.
Paso 1 Calculamos las disimilaridades entre los elementos de la particion. Para ello
utilizamos cualquiera de los procedimientos antes indicados.
Paso 2 Agrupamos los dos conjuntos de la particion mas proximos y dejamos los
demas conjuntos igual. Tenemos ahora Ci con i = 1, . . . , k.
Paso 3 Si tenemos un solo conjunto en la particion paramos el procedimiento.
Paso 4 Volvemos al paso 1.
Hay una representacion grafica muy utilizada para describir los resultados de
un cluster jerarquico aglomerativo como el que acabamos de describir. Esta repre-
sentacion tiene el nombre de dendograma. En el dendograma se va mostrando
a que valor de la medida de disimilaridad se produce la union de los grupos y si-
multaneamente que grupos se estan uniendo para esa disimilaridad. Tambien nos
permite una valoracion rapida de cuantos grupos puede haber en el banco de datos.
Simplemente trazando una linea horizontal a la altura en que tengamos el numero
de grupos que pensamos que puede haber.
7
> y.ag = agnes(y)
Veamos el dendograma.
Dendrogram of agnes(x = y)
3.0
2.5
2.0
1.5
Height
1.0
10
13
25
0.5
9
3
7
2
23
0.0
16
11
17
1
12
19
5
21
8
18
4
22
15
14
20
6
24
y
Agglomerative Coefficient = 0.84
> library(cluster)
> data(votes.repub)
> agn1 = agnes(votes.repub, metric = "manhattan", stand = TRUE)
8
Dendrogram of agnes(x = daisy(votes.repub), diss = TRUE, method = "complete")
Alabama Alabama
Georgia Georgia
Louisiana Arkansas
Arkansas Louisiana
Florida Mississippi
Texas South Carolina
Mississippi Alaska
South Carolina Vermont
Alaska Arizona
Michigan Montana
Connecticut Nevada
New York Colorado
Agglomerative Coefficient = 0.88
Minnesota Minnesota
North Dakota Connecticut
Wisconsin New York
votes.repub
Iowa New Jersey
South Dakota Illinois
Kansas Ohio
Nebraska Indiana
Arizona Michigan
Nevada Pennsylvania
Montana New Hampshire
Oklahoma Wisconsin
Colorado Delaware
Idaho Kentucky
9
Wyoming Maryland
Utah Missouri
California New Mexico
Oregon West Virginia
Washington Iowa
Missouri South Dakota
New Mexico North Dakota
West Virginia Kansas
Delaware Nebraska
Kentucky Maine
Maryland Massachusetts
North Carolina Rhode Island
Tennessee Florida
Virginia North Carolina
Hawaii Tennessee
Maine Virginia
Massachusetts Oklahoma
Rhode Island Hawaii
Vermont Texas
PDF Rcode
es el vector de medias del grupo cuyos ndices estan en Ci . Una particion sera tanto
mejor cuanto menor sea el valor de la funcion dada en 4.4. El procedimiento de
agrupamiento de las k-medias simplemente se basa en elegir como particion de los
datos aquella que nos da el mnimo de la funcion objetivo considerada en ecuacion
4.4. Notemos que en muchos textos se hablan del algoritmo de las k-medias y se
identifica con un procedimiento concreto para encontrar el mnimo de la funcion.
Aqu entendemos el procedimiento como la minimizacion de la funcion objetivo.
De hecho, R ofrece hasta cuatro posibles procedimientos de los muchos que cabe
proponer. Hay que diferenciar claramente el procedimiento del metodo de aplicacion
del mismo, del metodo de obtencion de dicho mnimo.
> x = read.table("..//data//descriptores.txt")
> y = x[, 2:ncol(x)]
10
> y.km = kmeans(y, centers = 5, iter.max = 100)
> y.km$cluster[1:10]
[1] 5 4 5 5 1 3 5 4 3 2
> y.km$centers
> y.km$size
Como medida de lo compactos que son los grupos encontrados tenemos tambien
la suma de cuadrados de cada grupo. Notemos que la suma de todos estos cuadrados
es la que hemos minimizado imponiendo simplemente el numero total de grupos.
> y.km$withinss
PDF Rcode
11
Nota de R 36 (notaR114) Aplicamos a los datos descriptores (descriptores de
una base de datos de imagenes digitales) un procedimiento de k-mediodes con cinco
grupos.
Realizamos el analisis cluster.
clusplot(pam(x = y, k = 5))
5
0
Component 2
5
10
15 10 5 0 5 10
Component 1
These two components explain 26.02 % of the point variability.
Los mediodes los podemos obtener con el siguiente codigo.
> y.med$medoids
PDF Rcode
4.4. Silueta
Veamos como se construye la silueta. Para la observacion i y el grupo C consi-
deramos
X
C) = 1
d(i, d(i, j),
|C|
jC
la disimilaridad media i con los elementos del grupo C. Para cada observacion i,
sea A el cluster al cual lo ha asignado el procedimiento cluster que empleamos
y calculamos a(i) la disimilaridad media de i con todos los demas individuos del
A). Obviamente estamos asumiendo que A contiene al menos
grupo A, a(i) = d(i,
12
Cuadro 4.2: Silueta media y estructura en un conjunto de datos
SC Interpretacion
0,71 1,00 Fuerte estructura
0,51 0,70 Estructura razonable
0,26 0,50 Estructura debil. Probar otros metodos
0,25 No se encuentra estructura
a(i)
s(i) = 1 si a(i) < b(i), (4.7)
b(i)
= 0 si a(i) = b(i), (4.8)
b(i)
= 1 si a(i) > b(i). (4.9)
a(i)
b(i) a(i)
s(i) = .
max{a(i), b(i)}
En el caso en que el grupo A contenga un unico objeto no esta muy claro como
definir a(i). Tomaremos s(i) = 0 que es una eleccion arbitraria. Se comprueba con
facilidad que 1 s(i) 1 para cualquier objeto i.
Para interpretar el significado de s(i) es bueno ver los valores extremos. Si s(i)
es proximo a uno significa que a(i) es mucho menor que b(i) o lo que es lo mismo,
que el objeto i esta bien clasificado pues la disimilaridad con los de su propio grupo
es mucho menor que la disimilaridad con los del grupo mas proximo que no es el
suyo. Un valor proximo a cero significa que a(i) y b(i) son similares y no tenemos
muy claro si clasificarlo en A o en B. Finalmente un valor de s(i) proximo a 1
significa que a(i) es claramente mayor que b(i). Su disimilaridad media con B es
menor que la que tiene con A. Estara mejor clasificado en B que en A. No esta
bien clasificado.
Los valores de s(i) apareceran representados para cada cluster en orden decre-
ciente. Para cada objeto se representa una barra horizontal con longitud propor-
cional al valor s(i). Una buena separacion entre grupos o cluster viene indicada
por unos valores positivos grandes de s(i). Ademas de la representacion grafica se
proporciona un analisis descriptivo. En concreto la media de los valores de la silueta
dentro de cada cluster y la media de la silueta para todo el conjunto de datos. La
clasificacion sera tanto mejor cuanto mayor sean estos valores medios. De hecho, se
puede decidir el numero de grupos en funcion del valor medio de las silueta sobre
toda la muestra. Vamos probando distintos numeros de grupos y nos quedamos con
el numero que nos da la silueta media maxima.
Cuando podemos decir que hay estructura de grupos en los datos que estamos
analizando? Experiencias con datos sugieren la tabla 4.2.
3 No parece un nombre inadecuado.
13
Nota de R 37 (notaR115) Utilizamos los datos descriptores. Hemos aplicado una
particionamiento alrededor de los mediodes con cinco grupos.
La silueta de la clasificacion la obtenemos con la funcion silhouette del paquete
cluster [? ].
> summary(y.si)
Vemos que los resultados son realmente malos. No hay estructura cluster de
ningun tipo. El dibujo de la silueta la obtenemos con la funcion plot.
> plot(y.si)
1 : 1130 | 0.30
2 : 385 | 0.37
3 : 1694 | 0.14
4 : 1444 | 0.29
5 : 1120 | 0.09
14
4.5. Algunos ejemplos
Para acabar el tema inclumos algunos ejemplos de analisis cluster.
data(ruspini)
pr4 <- pam(ruspini, 4)
str(si <- silhouette(pr4))
(ssi <- summary(si))
plot(si) # silhouette plot
ar <- agnes(ruspini)
#Se utilizan 5 grupos
si3 <- silhouette(cutree(ar, k = 5), daisy(ruspini))
plot(si3, nmax = 80, cex.names = 0.5)
Figura 4.1:
15
Silhouette plot of (x = cutree(ar, k = 5), dist = daisy(ruspini))
n = 75 5 clusters Cj
1
j : nj | aveiCj si
2
3
4
5
6
7
8
9
10
11
12
1 : 20 | 0.71
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33 2 : 23 | 0.74
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
3 : 14 | 0.56
53
54
55
56
57
58
59
60 4 : 3 | 0.78
61
62
63
64
65
66
67
68
69 5 : 15 | 0.80
70
71
72
73
74
75
Figura 4.2:
Figura 4.3:
16
Hacemos un analisis cluster jerarquico utilizando la funcion agnes del paquete
cluster.
Veamos el dendograma.
Dendrogram of agnes(x = y)
3.0
2.5
2.0
1.5
Height
1.0
10
13
25
0.5
9
3
7
2
23
0.0
16
11
17
1
12
19
5
21
8
18
4
22
15
14
20
6
24
y
Agglomerative Coefficient = 0.84
Observando el dendograma parece razonable considerar tres grupos.
PDF Rcode
#Datos achieve
library(cluster)
library(foreign)
x= read.spss('../data/birth.sav',to.data.frame=T)
names(x) = c("country","birth","death")
17
attach(x)
y = x[,2:ncol(x)]
y.ag = agnes(y)
plot(y.ag)
y.pam = pam(y,3)
summary(y.pam)
y.si = silhouette(y.pam)
plot(y.si)
y.pam = pam(y,2)
summary(y.pam)
y.si = silhouette(y.pam)
plot(y.si)
y.pam = pam(y,4)
summary(y.pam)
y.si = silhouette(y.pam)
plot(y.si)
y.pam = pam(y,2)
y.km = kmeans(y,2)
table(y.pam$cluster,y.km$cluster)
18
Captulo 5
Analisis discriminante o de
como clasificar con muestra
de entrenamiento
Discriminar es clasificar. Es una palabra mal vista. Cuando una persona le dice a
otra: Usted me discrimina esta indicando algo negativo en la medida en que piensa
que lo esta separando para perjudicarle. Se asume la discriminacion como algo que
se realiza en un sentido negativo. Pues no. El analisis discriminante simplemente se
refiere al problema de clasificar en distintos grupos un conjunto de observaciones
vectoriales. Clasificar y discriminar se usan como sinonimos.
Tenemos distintos conjuntos de datos multivariantes. Que quiere que tenemos
grupos y que pretendemos hacer con ellos? Una biologa ha recogido una serie de
animales y ha observado en cada uno unas caractersticas numericas. Esta biologa
ha podido clasificar a los animales en distintas especies utilizando las variables x
de las que dispone y, posiblemente, algunas otras cuya consecucion ya no es tan
simple y, en ocasiones, ni posible. Esta interesada en disenar un procedimiento que,
partiendo de las variables de las que siempre dispone x, le permita decidir la especie
a la que pertenece un animal futuro del cual solamente tiene las caractersticas x.
Tiene esta persona un problema de clasificacion que pretende hacer bien y clasificar
a cada animal en su especie con un esfuerzo pequeno.
Otro ejemplo puede ser el siguiente. Una persona ha pasado una enfermedad
(como la hidatidosis) y por lo tanto guarda en su organismo anticuerpos frente al
virus que lo infecto y le causo la enfermedad. A este individuo se le controla a lo
largo de los anos. Cuando se le aplica un procedimiento diagnostico el resultado
puede ser positivo debido a dos razones: el individuo ha recado en la enfermedad y
por lo tanto ha de ser tratado. Sin embargo, si el procedimiento es muy sensible el
resultado positivo del test puede ser simplemente producidos por los anticuerpos que
la persona conserva. Diferenciar una situacion de la otra supone otra exploracion
(placas del torax) y, por ello, una complicacion adicional. En la realizacion del test
se han recogido la presencia o ausencia de una serie de aminoacidos. Tenemos que
nuestro vector de caractersticas son variables binarias o dicotomicas y pretendemos
poder decidir a partir de ellas si la persona esta sana sin anticuerpos, sana con
anticuerpos o finalmente enferma utilizando la presencia o ausencia de los distintos
anticuerpos. Este es un segundo problema de interes a tratar aqu.
Pretendemos clasificar a un individuo dado utilizando algunas caractersticas
del mismo. Pero para poder hacerlo tenemos que conocer para una muestra, que
podemos llamar muestra de entrenamiento (training sample), en que grupo esta
cada individuo con los que trabajamos. Esto hace bastante natural el nombre mas
1
utilizado en el contexto de la Informatica de clasificacion supervisada.
Nota de R 41 (notaR102) Tenemos pacientes de los cuales se conocen algunas
variables obtenidas de un analisis de orina. En concreto las variables nos dan la
gravidez especfica (grav), la osmolaridad (osmo), la conductibilidad (conduc), la
concentracion de urea (urea) y la concentracion de calcio (calcio). Tambien tenemos
una variable que nos indica la presencia o ausencia de cristales en la orina del
individuo (grupo donde 1 indica ausencia y 2 indica presencia). El problema que
nos planteamos es disenar un procedimiento de clasificacion de modo que, dado
el vector de caractersticas de la orina, nos permita clasificar a un individuo en
uno de los dos posibles grupos, esto es, que va a desarrollar cristales en la orina
o no. En el diseno del procedimiento pretendemos utilizar la informacion que ya
tenemos, esto es, conocemos para una serie de individuos si tiene o no cristales y
los vectores de caractersticas asociados. En una observacion futura tendremos el
vector de caractersticas pero no conoceremos la clasificacion. Leemos los datos de
un fichero de SPSS utilizando el paquete foreign [? ] y mostramos las seis primeras
observaciones.
> library(foreign)
> x = read.spss(file = "../data/cristal.sav", to.data.frame = T)
> x[x == -1] = NA
> cc = complete.cases(x)
> x = x[cc, ]
> attach(x)
> x[1:6, ]
Incluimos un analisis descriptivo de los datos.
> summary(x)
IND GRUPO GRAV PH
Min. : 2.00 ausencia de cristales :44 Min. :1.005 Min. :4.760
1st Qu.:21.00 presencia de cristales:33 1st Qu.:1.012 1st Qu.:5.530
Median :40.00 Median :1.018 Median :5.940
Mean :40.31 Mean :1.018 Mean :6.041
3rd Qu.:60.00 3rd Qu.:1.024 3rd Qu.:6.400
Max. :79.00 Max. :1.040 Max. :7.940
OSMO CONDUC UREA CALCIO
Min. : 187.0 Min. : 5.10 Min. : 10.0 Min. : 0.17
1st Qu.: 410.0 1st Qu.:14.30 1st Qu.:159.0 1st Qu.: 1.45
Median : 594.0 Median :21.40 Median :255.0 Median : 3.16
Mean : 613.6 Mean :20.91 Mean :262.4 Mean : 4.16
3rd Qu.: 803.0 3rd Qu.:27.00 3rd Qu.:362.0 3rd Qu.: 6.19
Max. :1236.0 Max. :38.00 Max. :620.0 Max. :14.34
PDF Rcode
Nota de R 42 (notaR103) Los datos corresponden a una serie de personas de
las cuales conocemos informacion que previsiblemente nos permitira predecir si son
diabeticos o no. Incluso dentro de los diabeticos pretendemos discriminar (distin-
guir) entre diabetes clnica y diabetes manifiesta. La variable tipo nos indica en que
grupo esta la persona observada de los tres grupos indicados. El resto de variables
nos describen al paciente: peso es el peso relativo, gpb es la glucosa plasmatica en
ayunas, garea el area bajo la curva de la glucosa, iarea el area bajo la curva de
insulina y sspg la glucosa plasmatica en estado estacionario. Pretendemos clasificar
a un individuo en uno de los tres grupos posibles teniendo en cuenta las variables
consideradas.
2
> library(foreign)
> x = read.spss(file = "../data/diabetes.sav", to.data.frame = T)
> x[1:2, ]
> summary(x)
PDF Rcode
El captulo esta organizado del siguiente modo. Empezamos (seccion 5.1) recor-
dando el teorema de Bayes con un ejemplo muy simple de urnas (no funerarias). De
este modo vemos la idea basica del metodo de clasificacion basado en probabilidades
a posteriori. Consideramos, en la seccion 5.2, el caso (de interes puramente acade-
mico) de dos poblaciones normales univariantes con la misma varianza y con los
parametros conocidos 1 . En la seccion 5.3 abordamos la situacion con dos poblacio-
nes normales multivariantes. All consideramos tanto el caso en que las matrices de
covarianzas son la misma como cuando son distintas. En la seccion 5.4 nos plantea-
mos la estimacion de los vectores de medias y las matrices de covarianzas y vemos la
implementacion practica del metodo. El problema de la reduccion de la dimension
dentro del problema de la clasificacion es considerado en la seccion 5.7
3
probabilidad (elegimos al azar una de las urnas) y por tanto la probabilidad (previa
o a priori) de los sucesos Bi seran P (Bi ) = 1/2. No sabemos si la urna elegida ha
sido la primera o la segunda pero nos podemos plantear que probabilidad tenemos
de que sea blanca si efectivamente es la urna 1 la elegida y lo mismo para la dos.
Es obvio que P (A | B1 ) = 1/3 y P (A | B2 ) = 2/3. Esta informacion se puede
combinar aplicando el teorema de Bayes para determinar la probabilidad de que sea
la primera o la segunda urna la elegida sabiendo (teniendo pues una informacion
adicional sobre el experimento) que ha salido blanca. En concreto tenemos que
P (Bi | A) = PkP (A|B i )P (Bi )
P (A|B )P (B )
. Finalmente podemos comprobar que P (B1 | A) =
j=1 j j
4
los valores de las media y la varianza comun. Observamos un valor de la variable
X = x: cual de las dos distribuciones lo ha generado? De otro modo: a que
poblacion pertenece este valor generado?
La idea para clasificar este valor generado es la misma de antes. Ahora tendremos
2 1 1 2
fi (x) = f (x | i , ) = exp 2 (x i ) ,
2 2
0 2 4 6
Figura 5.1: Dos densidades normales con la misma varianza y distinta media.
5
una de dos poblaciones normales multivariantes. La primera con vector de medias
1 y matriz de covarianzas y la segunda con vector de medias 2 y matriz de cova-
rianzas . Dada una observacion multivariante x, la clasificaremos en la poblacion
1 si
(1)f (x | 1 , )
> 1,
(2)f (x | 2 , )
pero,
f (x | 1 , )
=
f (x | 2 , )
1 1 1 1
exp (x 1 ) (x 1 ) + (x 2 ) (x 2 ) =
2 2
1 1 1
exp (1 2 ) x (1 2 ) (1 + 2 ) . (5.1)
2
f (x | 1 , 1 )
Q(x) = log =
f (x | 2 , 2 )
1 |2 | 1 1
log (x 1 ) 1 1
1 (x 1 ) + (x 2 ) 2 (x 2 ) =
2 |1 | 2 2
1 |2 | 1 1 1 1 1
log x (1 2 )x 2x (1 1 2 2 ) . (5.3)
2 |1 | 2
Como en el caso anterior asignamos la observacion x a la primera poblacion si
(2)
Q(x) > log .
(1)
6
Supongamos que tenemos ni individuos de la poblacion i y los vectores de ca-
ractersticas son los vectores columna xij Rd (con i = 1, 2 y j = 1, . . . , ni ).
Denotamos Pni P2 Pni
j=1 xij i=1 j=1 xij
xi = , x = (5.4)
ni n
donde n = n1 + n2 . Sea Si la matriz de varianzas o de dispersion de la poblacion i,
es decir, Pni
j=1 (xij xi )(xij xi )
Si = . (5.5)
ni 1
El vector i es estimado mediante i = xi . La matriz i la estimamos mediante
Si . En el caso particular en que asumamos que = 1 = 2 entonces la matriz de
covarianzas comun la estimamos con
P2
(ni 1)Si
Sp = i=1 .
n2
Como clasificamos? Las distribuciones teoricas que suponamos conocidas son
reemplazadas por las distribuciones normales con los parametros estimados.
Si asumimos una matriz de covarianza comun a ambas poblaciones entonces
asignamos x a la primera poblacion si
(2)
Ds (x) > log , (5.6)
(1)
donde
1
Ds (x) = (x (x1 + x2 ) (5.7)
2
y
= S1
p (x1 x2 ). (5.8)
La funcion Ds recibe el nombre de funcion discriminante lineal. La razon es obvia:
clasificamos en uno o en otro grupo utilizando una funcion lineal de las distintas
variables.
En el caso particular en que (1) = (2), esto es, consideramos a priori igual-
mente probables ambos grupos entonces la regla de clasificacion propuesta sera:
clasificamos en la poblacion o clase 1 si,
1
x > ( x1 + x2 ).
2
Es es el procedimiento que propuso R.A. Fisher en 1936.
Notemos que las probabilidades de pertenencia a posteriori a cada una de las
poblaciones pueden ser estimadas mediante
(i)f (x|xi , Sp )
(i|x) = . (5.9)
(1)f (x|x1 , Sp ) + (2)f (x|x2 , Sp )
(i)f (x|xi , Si )
(i|x) = . (5.10)
(1)f (x|x1 , S1 ) + (2)f (x|x2 , S2 )
7
Nota de R 43 (notaR104) Vamos a trabajar con los datos de cristales en la ori-
na. Esta nota es un ejemplo de analisis discriminante lineal con dos grupos. Con-
sideramos dos casos. En el primero las probabilidades a priori de cada grupo se
asumen iguales entre s y, por lo tanto, iguales a 0,5. En el segundo caso, las pro-
babilidades a priori coinciden con las proporciones observadas dentro de la muestra
de cada una de las poblaciones o clases. Leemos los datos.
> library(foreign)
> x = read.spss(file = "../data/cristal.sav", to.data.frame = T)
Eliminamos del estudio todos los casos en los que hay algun dato faltante.
> cc = complete.cases(x)
> attach(x[cc, ])
> library(MASS)
> z = lda(GRUPO ~ CALCIO + CONDUC + GRAV + OSMO + PH + UREA, prior = c(1,
+ 1)/2)
> attributes(z)
names
[1] "prior" "counts" "means" "scaling" "lev" "svd" "N"
[8] "call" "terms" "xlevels"
class
[1] "lda"
> z$prior
> z$counts
> z$means
8
Vamos a obtener las probabilidades a posteriori. Observar la opcion CV=TRUE.
names
[1] "class" "posterior" "terms" "call" "xlevels"
> z$posterior[1:10, ]
> z$class[1:10]
> z1$posterior[1:10]
PDF Rcode
> z$posterior[1:10, ]
9
ausencia de cristales presencia de cristales
1 0.7658585 0.23414150
2 0.9465173 0.05348267
3 0.9718836 0.02811645
4 0.9811643 0.01883569
5 0.5413410 0.45865904
6 0.9434295 0.05657054
7 0.2934976 0.70650235
8 0.9161927 0.08380735
9 0.8622328 0.13776719
10 0.9597205 0.04027955
> z1$posterior[1:10, ]
PDF Rcode
1
f (x | i , i ) = (2)d/2 | i |1/2 exp{ (x i ) 1
i (x i )}. (5.11)
2
Utilizando el teorema de Bayes tenemos que las probabilidades a posteriori vienen
dadas por
(i)f (x | i , i )
(i | x) = Pg . (5.12)
j=1 (j)f (x | j , j )
10
Un metodo de clasificacion consiste en clasificar al individuo con caractersticas
x en la clase o grupo tal que la probabilidad a posteriori (i | x) es maxima o lo
que es lo mismo: clasificamos en el grupo tal que
Si no asumimos que las distintas matrices de varianzas son iguales entonces cada
i es estimada mediante Si .
Es claro que el procedimiento indicado en la ecuacion 5.5 no es aplicable pues
no conocemos los parametros. Veamos como queda el procedimiento en las dos
situaciones posibles: asumiendo igualdad de las matrices de covarianzas y asumiendo
que son distintas.
Bajo la hipotesis de matriz de varianza comun tendremos que
1
log[(i)f (x|xi , Sp )] = log (i) + c (x xi ) S1
p (x xi ).
2
1
Li (x) = log (i) + xi S1
p (x xi ).
2
Asignamos x al grupo que tiene un valor mayor de la funcion Li (x). Estas funciones
reciben el nombre de funciones discriminantes. Observemos que las diferencias entre
distintas funciones Li son hiperplanos y por ello se habla de analisis discriminante
lineal.
En el caso en que no se asume una matriz de varianzas comun entonces
la regla de clasificacion consiste en clasificar donde es maxima la siguiente funcion
11
5.6. Valoracion del procedimiento de clasificacion
Nuestros datos son (xi , yi ) con i = 1, . . . , n siendo xi el vector de caracterstica
del individuo y denotando yi la clase poblacion o grupo al que pertenece realmente
el individuo. Tenemos unas probabilidades a posteriori (j|x) para cada x que nos
queramos plantearla. Clasificamos x en la clase j tal que tiene maxima probabilidad
de las posibles. Pero el metodo as construido, va bien o es un desastre? Parece
que todos coincidimos en que ir bien quiere decir clasificar a los individuos en los
grupos a los que realmente pertenecen.
Una primera practica que pretende valorar la probabilidad (y por lo tanto la
frecuencia de veces que ocurre) de una clasificacion correcta es, una vez estimadas
las probabilidades a posteriori para los propios elementos de la muestra. Esto es,
nos planteamos clasificar a los individuos utilizados para construir el procedimiento
de clasificacion. Tendremos para cada data, yi , el grupo al que pertenece e yi el
grupo en el que lo clasificamos. Podemos considerar una valoracion del resultado de
la clasificacion la siguiente cantidad,
n
X yi ,y i
I= , (5.16)
i=1
n
12
varianzas y los vectores de medias mientras que clasificamos a los individuos no
utilizados en la estimacion de los parametros. Se utilizan los datos iris de Fisher.
> library(MASS)
> data(iris3)
> Iris <- data.frame(rbind(iris3[, , 1], iris3[, , 2], iris3[,
+ , 3]), Sp = rep(c("s", "c", "v"), rep(50, 3)))
Tomamos una muestra y con esta muestra estimamos los vectores de medias y
la matriz de covarianzas.
Con los estimadores podemos ahora clasificar los demas datos de la muestra.
[1] s s s s s s s s s s s s s s s s s s s s s s s s s s s c c c c c c c c v c c
[39] c c v c c c c c c c c v v v v v v v v v v v v v v v v v c v v v v v v v v
Levels: c s v
PDF Rcode
13
No parece que mejoren mucho los resultados de la clasificacion. Tambien podemos
comparar ambas clasificaciones.
PDF Rcode
Nota de R 47 (notaR149) Seguimos con los datos de la orina. Notemos que con-
sideramos probabilidades a priori correspondientes a las proporciones en la muestra.
Nos limitamos a construir la tabla de clasificacion.
Suponemos matrices de covarianzas iguales y probabilidades a priori dadas por
las proporciones de cada clase en la muestra.
PDF Rcode
> 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]
V58 0 1
0 2627 161
1 267 1546
14
> z = qda(fmla, data = x, prior = c(1, 1)/2, CV = T)
> table(V58, z$class)
V58 0 1
0 2086 695
1 86 1723
Vamos a realizar una valoracion de los resultados de clasificacion con el analisis
discriminante lineal utilizando remuestreo. Elegimos la muestra de entrenamiento
como una seleccion aleatoria de los datos.
> entrenamiento = sample(nrow(x), 2000)
Vemos la distribucion del correo en la muestra de entrenamiento.
> table(y[entrenamiento])
0 1
1193 807
Realizamos el analisis discriminante lineal.
> z = lda(fmla, data = x, prior = c(1, 1)/2, subset = entrenamiento)
Vemos la tabla de clasificacion sobre los datos de entrenamiento.
> table(predict(z, x[entrenamiento, ])$class, y[entrenamiento])
0 1
0 1122 111
1 71 696
Vemos la tabla de clasificacion sobre el resto de los datos.
> table(predict(z, x[-entrenamiento, ])$class, y[-entrenamiento])
0 1
0 1493 132
1 102 874
Repetimos en muestras con reemplazamiento.
> entrenamiento = sample(nrow(x), 2000, replace = T)
> table(y[entrenamiento])
0 1
1218 782
> z = lda(fmla, data = x, prior = c(1, 1)/2, subset = entrenamiento)
Vemos la tabla de clasificacion sobre los datos de entrenamiento.
> table(predict(z, x[entrenamiento, ])$class, y[entrenamiento])
0 1
0 1163 116
1 55 666
Vemos la tabla de clasificacion sobre el resto de los datos.
> table(predict(z, x[-entrenamiento, ])$class, y[-entrenamiento])
0 1
0 1692 175
1 104 1000
PDF Rcode
15
5.7. Variables discriminantes canonicas o discrimi-
nantes lineales
Vamos a estudiar una tecnica de reduccion de la dimension relacionada con el
planteamiento que del analisis discriminante lineal hizo Fisher. Consideramos las
matrices W y B definidas como
g X
X ni g
X
W = (xij xi )(xij xi ) = (ni 1)Si , (5.17)
i=1 j=1 i=1
y
g X
X ni g
X
B= (xi x )(xi x ) = ni (xi x )(xi x ) (5.18)
i=1 j=1 i=1
Notemos que
W
Sp = (5.19)
ng
Estas matrices reciben el nombre de matrices intra grupos y entre grupos respectiva-
mente. Son las versiones matriciales de las sumas de cuadrados intra y entre grupos
habituales en analisis de la varianza.
Es claro que cuando mas agrupados esten los datos dentro de los grupos y mas
separados esten para grupos distintos tendremos que la magnitud de W ha de ser
menor que la de B. Supongamos que reducimos las observaciones multivariantes xij
a datos univariantes mediante tomando zij = c xij . Las sumas de cuadrados intra
y entre vendran dadas por c W c y c Bc. El cociente Fc = c Bc/c W c nos compara
la variabilidad intra con la variabilidad entre. Fisher (1936) introdujo el analisis
discriminante lineal buscando el vector c tal que el cociente Fc sea el mayor posible.
Ese fue su objetivo inicial.
La matriz W es suma de matrices semidefinidas positivas por lo que es defi-
nida positiva y consideramos su descomposicion de Cholesky dada por W = T T .
Tomamos b = T c. Se tiene
c Bc b (T )1 BT 1 b b Ab
Fc = = = = a Aa, (5.20)
c W c b b b b
donde a = b/ k b k, esto es, a tiene modulo unitario y A = (T )1 BT 1 . Se nos
plantea el problema de maximizar a Aa con la restriccion de k a a k= 1. Por resulta-
dos estandar del algebra lineal se tiene que a1 es el vector propio de A con el mayor
propio 1 verificando que 1 = a1 Aai . Hemos encontrado una combinacion lineal
que, en el sentido que hemos indicado, es optima a la hora de separar los grupos.
Parece logico buscar la siguiente combinacion lineal que verifique el mismo criterio
de optimalidad pero que el vector correspondiente sea ortogonal al ya calculado. Nos
planteamos pues maximizar a Aa con la restriccion de k a k= 1 y que sea ortogonal
con el anterior. La solucion viene dada por el vector propio de A asociado a su se-
gundo valor propio por orden de magnitud, 2 (Aa2 = 2 a2 por lo que 2 = a2 Aa2 ).
Procedemos del mismo modo obteniendo k direcciones ortogonales que nos dan las
combinaciones optimas que separan a los grupos. El valor de k es el mnimo entre
el numero de grupos menos uno, g 1 y el numero de datos n, k = mn g 1, n.
Notemos que los sucesivos ar constituyen una base ortonormal tales que
(T )1 BT 1 ar = Aar = r ar ,
16
donde cr = (n g)1/2 T 1 ar . En consecuencia W 1 B tiene valores propios r y
vectores propios cr con r = 1, . . . , k. Ademas los vectores ar = T cr (n g)1/2
constituyen una base ortonormal. Consideremos la matriz C que tiene por fila r-
esima el vector cr . Sea zij = Cxij . Estos valores reciben el nombre de coordenadas
discriminantes. Vemos que estas coordenadas pretenden destacar las diferencias
entre los grupos con un orden decreciente de relevancia. Tenemos que decidir con
cuantas de ellas nos quedamos. Es habitual estudiar los cocientes
Pj
i=1 i
Pk (5.21)
i=1 i
cr Sp cs = (n g)1 cr T T cs = ar as = rs , (5.22)
> plot(z)
0.0 0.4 0.8
2 1 0 1 2 3 4
2 1 0 1 2 3 4
17
Para los datos de las diabetes podemos tendremos dos variables discriminantes
canonicas. Mostramos dos posibles representaciones graficas.
> plot(z)
4
diabetes manifiesta
diabetes manifiesta
diabetes manifiesta
diabetes manifiesta
diabetes manifiesta
diabetes manifiesta
control
2
6 4 2 0 2
LD1
> pairs(z)
18
4 2 0 2
4
control
control
control
control
control
control
control
control
control
control
control
control
controlcontrol
control
control
control
control
control
control control
control
control
control
control
control control
control
control
control
control
control
control
control
control
control control
control
control
control
control
control
control
control
control
control
control
control
control
control
control control
control
control
control
control
2
control
controlcontrol
control
diabetes
control control
control
control
control quimica
diabetes
diabetes
control control
quimica
control
quimica
diabetes quimica
diabetes
diabetes
diabetes
control quimica
quimica
diabetes quimica
quimica
diabetes manifiesta
diabetes
diabetes quimica
diabetes
diabetes quimica
quimica
diabetes
quimica
diabetes
diabetes quimica
diabetes
quimicaquimica quimica
diabetes quimica
diabetes quimica
diabetes diabetes
quimica quimica
diabetes
diabetes
diabetes quimica
diabetes quimica
quimica
diabetes quimica
manifiesta
diabetes
diabetes quimica
quimica diabetes manifiesta
0
diabetes quimica
diabetes diabetes
quimica
diabetes quimica
quimica
diabetes quimica
diabetes quimica
diabetes
diabetes
diabetes diabetes manifiesta
quimica
manifiesta
quimica
LD1 diabetes quimica
diabetesdiabetes manifiesta
manifiesta
2
diabetes manifiesta
diabetes manifiesta
diabetes
diabetes
diabetesmanifiesta
manifiesta
manifiesta
diabetes manifiesta
diabetes
diabetes
diabetes diabetesmanifiesta
manifiesta
manifiesta
manifiesta
diabetes manifiesta
diabetes diabetes manifiesta
manifiesta
diabetes manifiesta diabetes manifiesta
4
diabetes diabetes
manifiesta
diabetes manifiesta
manifiesta
diabetes manifiesta
diabetes manifiesta
diabetesdiabetes
manifiestadiabetes manifiesta
manifiesta
diabetes manifiesta
6
diabetes manifiesta
diabetes manifiesta
diabetes
diabetes manifiesta
manifiesta
diabetes manifiesta
diabetes manifiesta
diabetes manifiesta
diabetes manifiesta control
2
manifiesta diabetes
diabetes control
quimica control
control
control
control
quimica
diabetes manifiesta
diabetes manifiesta
diabetes
diabetesquimica
diabetes control
quimica
control
quimica
control
control
control
diabetes
diabetes diabetes
manifiesta
diabetes
manifiesta control
quimica
quimicacontrol
diabetes diabetes
manifiesta
diabetes manifiesta diabetes
diabetes quimica
diabetes
quimica quimica
quimica
diabetes
diabetes
diabetes
diabetesquimica
diabetes quimica
quimica
quimica
quimica
diabetes manifiesta
diabetes
diabetes control
control
quimica
quimica
diabetes
diabetes
diabetes quimica
quimica
quimica
diabetes diabetes quimica
manifiesta
diabetes quimica
diabetes diabetes
diabetes
diabetes manifiesta
manifiesta
quimicaquimica
2
6 4 2 0 2 4
PDF Rcode
> library(MASS)
> x = read.table(file = "../data/wasp.dat", header = T)
> attach(x)
19
0.4
0.2
0.0
4 2 0 2 4
group Q
0.4
0.2
0.0
4 2 0 2 4
group W
Los histogramas muestran que los valores de la variable discriminante son cla-
ramente distintos en cada grupo.
La tabla de clasificacion es la siguiente.
caste Q W
Q 49 1
W 1 49
> library(faraway)
> library(MASS)
> attach(wbca)
20
Class 0 1
0 219 19
1 7 436
0 1
0 34 45
1 67 94
PDF Rcode
NA
21
22
Captulo 6
Componentes principales
T T = = diag(1 , . . . , d ), (6.1)
Y = T (X ). (6.2)
Demostracion.
En cuanto al apartado primero tenemos que
1
1. Para cualquier vector a1 de longitud unitaria, var(a1 X) alcanza su valor ma-
ximo 1 cuando a1 = t1 .
Finalmente, si las variables vienen dadas en unidades muy distintas puede ser
conveniente sustituir la matriz de covarianzas (poblacional o muestral) por la co-
rrespondiente matriz de correlaciones. De hecho, una de los inconvenientes de las
componentes principales como un modo de reducir la dimension de los datos es preci-
samente que obtenemos resultados distintos si utilizamos las componentes principa-
les obtenidas a partir de la matriz de covarianzas o bien las componentes principales
obtenidas a partir de la matriz de correlaciones.
A partir de las d variables originales podemos obtener hasta d componentes prin-
cipales. Sin embargo, hemos dicho que pretendemos reducir la dimension del vector
de datos. La pregunta a responder es: con cuantas componentes nos quedamos?
Supongamos que estamos trabajando Pd con la matrizPd de covarianzas
Pd. Hemos
de recordar que var(yj ) = j y que j=1 var(xj ) = j=1 var(yj ) = j=1 j . En
consecuencia se suelen considerar los siguientes cocientes
Pk
j=1 j
Pd , con k = 1, . . . , d,
j=1 j
de modo que, cuando para un cierto valor de k, estamos proximos a la unidad nos
quedamos con ese valor de k. En la version muestral trabajaremos o bien con los
valores propios de la matriz de covarianzas muestral o la matriz de correlaciones
muestrales.
> library(mvtnorm)
> sigma0 = matrix(c(1, 6, 6, 16), ncol = 2, byrow = T)
> sigma0 = crossprod(t(sigma0), sigma0)
> x = rmvnorm(n = 100, mean = c(1, 1), sigma = sigma0)
> plot(x)
2
40
20
x[,2]
0
20
40
15 10 5 0 5 10
x[,1]
> x.pc$loadings
Loadings:
Comp.1 Comp.2
[1,] 0.318 -0.948
[2,] 0.948 0.318
Comp.1 Comp.2
SS loadings 1.0 1.0
Proportion Var 0.5 0.5
Cumulative Var 0.5 1.0
> plot(x)
> abline(h = 0)
> abline(v = 0)
> abline(a = 0, b = x.pc$loadings[2, 1]/x.pc$loadings[1, 1], lty = 2)
3
40
20
x[,2]
0
20
40
15 10 5 0 5 10
x[,1]
Y ahora un resumen de las varianzas explicadas por cada una de las componen-
tes.
> summary(x.pc)
Importance of components:
Comp.1 Comp.2
Standard deviation 17.9629826 1.183590181
Proportion of Variance 0.9956772 0.004322792
Cumulative Proportion 0.9956772 1.000000000
Es claro que con nos quedaramos con una sola componente. La segunda proporciona
informacion redundante.
PDF Rcode
> library(MASS)
> data(iris)
> ir = iris[, 1:4]
> ir.species = c(rep("s", 50), rep("c", 50), rep("v", 50))
4
En el siguiente resumen tenemos las desviaciones estandar, las proporciones
de varianza explicada por cada componente y la proporcion acumulada de estas
proporciones.
> summary(ir.pca)
Importance of components:
Comp.1 Comp.2 Comp.3 Comp.4
Standard deviation 1.1427311 0.13789069 0.13480585 0.053629741
Proportion of Variance 0.9702335 0.01412726 0.01350223 0.002136976
Cumulative Proportion 0.9702335 0.98436079 0.99786302 1.000000000
> plot(ir.pca)
ir.pca
1.2
1.0
0.8
Variances
0.6
0.4
0.2
0.0
5
Podemos representar las dos primeras componentes principales.
0.5
ss s
ss ss ssss s
s s s cc c v vvvvvvvvv
ss ss c ccc cc
ssssssss cccccc cvvvvvvvvvvvvv
0.0
s
sssss cc c cccccccccccccccvvc vvvvvvvvvv
ccc cc vv v v
s ss ss cccc v
ss
0.5
1.0
1.5
Importance of components:
Comp.1 Comp.2 Comp.3 Comp.4
Standard deviation 1.7124583 0.9523797 0.36470294 0.1656840
Proportion of Variance 0.7331284 0.2267568 0.03325206 0.0068628
Cumulative Proportion 0.7331284 0.9598851 0.99313720 1.0000000
6
c
3
s
c
c
2
c c v
Segunda componente principal
vcc c
c
c
s cc v
s s cc cc
1
s c cv
s s ss ss cc vv v
sss s s cc v cv
ccc cc vv
s cc c cc vc vv v
ss
ss c ccvvc vc
0
ss s s vc v
s
ss
s s
s ss s s
s c c vcv vvv v v v
s c cc vc v v v
s c c vv vv
s sss s v
1
vvc vv v
s ss
s
s
s v
2
s
vv
3 2 1 0 1 2
PDF Rcode
7
8
Captulo 7
1
Su funcion de probabilidad conjunta viene dada por
n!
p(n1 , . . . , nc ) = n1 . . . cnc .
n 1 ! . . . nc ! 1
Finalmente la distribucion de Poisson o distribucion de los sucesos raros se de-
nota por Y P o(), y tiene por funcion de probabilidad
e y
p(y) = con y = 0, 1, . . .
y!
Es bien conocido que su media y varianza son iguales a : EY = var(Y ) = .
[1] 2
[1] 2 1 2 3 3 3 0 1 3 3 1 5 3 1 1 4 2 2 2 3 4 4 2 1 4 1 1 0 1 2 0 2 0 0 2 2 2
[38] 2 4 3 2 3 1 5 0 2 3 3 2 1 1 1 0 2 3 2 1 2 3 0 2 3 3 1 2 1 3 4 3 3 3 2 4 2
[75] 2 3 0 3 2 2 1 3 1 2 2 0 0 4 2 2 3 2 2 6 3 0 0 4 3 2
[1] 2.067297e-05
[1] 0.1164302
2
> rmultinom(10, size = 12, prob = c(0.1, 0.2, 0.8))
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 0 3 0 0 1 2 0 1 1 3
[2,] 3 3 0 1 3 3 1 2 4 3
[3,] 9 6 12 11 8 7 11 9 7 6
[1] 8 9 10 11 12 13 14 15 17
[1] 11 16 15 13 12 10 12 14 12 7 14 9 7 12 10 12 9 15 13 10 8 11 12 10 8
[26] 14 8 12 15 15 10 15 12 17 13 14 11 11 7 12 14 9 15 16 12 6 14 7 10 12
PDF Rcode
con
i
i = Pc .
i=1 j
3
donde y = 0, 1. Para n pruebas Bernoulli tendremos como funcion de verosimilitud
n
Y Pn Pn
L(; y) = yi (1 )1yi = i=1 yi
(1 )n i=1 yi
i=1
Estas funciones son nuestro instrumento basico para el analisis estadstico de este
tipo de datos.
H0 : = 0
H1 : 6 = 0 .
Las opciones para constrastar son (como siempre) los test de Wald, el test score y
el test del cociente de verosimilitudes.
El estadstico de Wald viene dado por
0 0
zW = =p ,
SE (1 )/n
0
zS = p .
0 (1 0 )/n
4
7.2.2. Intervalo de confianza
Una vez hemos visto como son los contrastes para la hipotesis simple pode-
mos construir el intervalo de confianza correspondiente como aquellos valores del
parametro para los cuales no rechazamos la correspondiente hipotesis nula simple.
Facilmente tenemos que el intervalo de confianza basado en el test de Wald sera:
o lo que es lo mismo, r
(1 )
z/2 .
n
Este intervalo de confianza no es muy exacto cuando n es pequeno sobre todo para
valores de proximos a 0 o a 1.
Si utilizamos el test score entonces los extremos los obtenemos resolviendo las
ecuaciones
0
p = z/2 .
0 (1 0 )/n
La expresion final es bastante compleja pues tenemos una funcion cuadratica en 0 .
Este intervalo de confianza es mas exacto que el intervalo de Wald. El intervalo de
confianza del cociente de verosimilitudes sera
{0 : 2(L0 L1 ) 21 ()}
> table(sexo)
sexo
0 1
329 590
1
590
> sum(tsexo)
[1] 919
> library(Hmisc, T)
5
> binconf(x = tsexo[2], n = sum(tsexo), method = "asymptotic")
> library(Hmisc, T)
PDF Rcode
Facilmente se comprueba que los estimadores maximo verosmiles vienen dados por
nj
j = ,
n
esto es, son las correspondientes frecuencias observadas de cada una de las catego-
ras. No poda (ni deba) ser de otra manera.
6
7.3.1. Contraste de una multinomial dada
Nos planteamos el contraste de hipotesis simple en donde especificamos una
probabilidad dada para cada categora. De un modo mas formal tenemos
H0 : j = j0 con j = 1, . . . , c
H1 : No H0 .
El primer test a considerar (uno de los procedimientos estadsticos mas antiguos
en uso) es el que se conoce como el test ji-cuadrado de Pearson. La idea es simple.
Bajo la hipotesis nula, bajo H0 , esperamos observar de la categora j, j = nj
casos. Es decir, la frecuencia esperada nula es j . Pero observamos nj , frecuencia
observada. Pearson propuso comparar ambas frecuencias, observadas y esperadas,
mediante el siguiente estadstico
X (nj j )2 X (nj nj0 )2
X2 = = .
j
j j
nj0
de modo que X nj
G2 = 2 log = 2 nj log .
j
nj0
7
Y tambien consideramos el test del cociente de verosimilitudes
[1] 0.9025024
Hay que reconocer que le fue muy (demasiado) bien la experimentacion a Mendel.
PDF Rcode
ij = P (X = i, Y = j),
I
X I
X
+j = P (Y = j) = P (X = i, Y = j) = ij
i=1 i=1
ij = i+ +j .
8
Cuadro 7.1: Tablade conteos cruzando el estado del paciente y el resultado del test.
Cuadro 7.2: Tabla de proporciones sobre el total cruzando el estado del paciente y
el resultado del test.
ij Test positivo Test negativo Total
Enfermo n11 /n n11 /n n1+ /n
No enfermo n21 /n n22 /n n2+ /n
Total n+1 /n n+2 /n 1
j|i = +j con j = 1, . . . , J.
Cuadro 7.3: Tabla de proporciones sobre el total cruzando el estado del paciente y
el resultado del test.
j|i Test positivo Test negativo Total
Enfermo n11 /n1+ n11 /n1+ 1
No enfermo n21 /n2+ n22 /n2+ 1
9
La especificidad es la proporcion de sanos correctamente diagnosticados o
eg1
intensidad 0 1 2
1 5 97 66
2 6 242 178
3 7 206 115
d1
intensidad 0 1 2
1 3 62 103
2 6 139 281
3 9 159 160
> prop.table(tt0)
eg1
intensidad 0 1 2
1 0.005422993 0.105206074 0.071583514
2 0.006507592 0.262472885 0.193058568
3 0.007592191 0.223427332 0.124728850
> prop.table(tt0, 1)
eg1
intensidad 0 1 2
1 0.02976190 0.57738095 0.39285714
2 0.01408451 0.56807512 0.41784038
3 0.02134146 0.62804878 0.35060976
PDF Rcode
10
Cuadro 7.4:
Enfermedad venerea No enfermedad
Con preservativo
Sin preservativo
Finalmente si cada fila es una muestra de una multinomial independiente, esto es,
tenemos un muestreo multinomial independiente y su verosimilitud viene dada por
Y ni+ ! Y n
Q j|iij .
i
n
j ij ! j
11
Cuadro 7.5:
1 2
1 1|1 2|1
2 1|2 2|2
Cuadro 7.6:
Exito Fracaso
Grupo 1 1|1 2|1
Grupo 2 1|2 2|2
1|i = i
2|i = 1 1|i = 1 i
Cuadro 7.7:
Exito Fracaso
Grupo 1 1 1 1
Grupo 2 2 1 2
12
En una tabla 2 2 tenemos los odds en la fila i
i
i = .
1 i
El cociente de los odds de las dos filas sera el odds ratio.
1 /(1 1 )
= .
2 /(1 2 )
4. Se suele trabajar con log pues entonces el valor que tenemos es simetrico
respecto a cero.
data: x out of n
X-squared = 24.4291, df = 1, p-value = 7.71e-07
alternative hypothesis: two.sided
95 percent confidence interval:
-0.010814914 -0.004597134
sample estimates:
prop 1 prop 2
0.00942285 0.01712887
names
[1] "statistic" "parameter" "p.value" "estimate" "null.value"
[6] "conf.int" "alternative" "method" "data.name"
class
[1] "htest"
[1] 7.709708e-07
13
> asp.ataque$p.value
[1] 7.709708e-07
data: x out of n
X-squared = 24.4291, df = 1, p-value = 3.855e-07
alternative hypothesis: less
95 percent confidence interval:
-1.000000000 -0.005082393
sample estimates:
prop 1 prop 2
0.00942285 0.01712887
> asp.ataque$estimate
prop 1 prop 2
0.00942285 0.01712887
prop 2
0.007706024
el riesgo relativo,
asp.ataqueestimate[2]/asp.ataqueestimate[1]
y el odds ratio
x[2]*(n[1]-x[1])/(x[1]*(n[2]-x[2]))
PDF Rcode
> library(vcd)
14
Cuadro 7.8: Procesamientos por asesinatos multiple sen Florida entre 1976 y 1987
Pena de muerte
Vctima Acusado Si No % S
Cuadro 7.9: Procesamientos por asesinatos multiple sen Florida entre 1976 y 1987
, , victima = blanco
muerte
agresor si no
blanco 53 414
negro 11 37
, , victima = negro
muerte
agresor si no
blanco 0 16
negro 4 139
15
temp
blanco negro
blanco negro blanco negro
si
muerte
no
agresor
Aqu tenemos los logaritmos de los odds ratio y los test de si podemos conside-
rarlos nulos.
> summary(oddsratio(temp))
> confint(oddsratio(temp))
lwr upr
blanco -1.561961 -0.1231423
negro -3.028482 2.9034412
PDF Rcode
16
El estimador puede ser 0, infinito o no estar definido () dependiendo de los conteos.
Por ello no existe ni la media ni la varianza de ni de log . Una posibilidad es
trabajar con
(n11 + 0,5)(n22 + 0,5)
=
(n12 + 0,5)(n21 + 0,5)
y con log .
Un estimacion del error estandar de es
1/2
1 1 1 1
(log ) = + + + .
n11 n12 n21 n22
Infarto de miocardio
Si No Total
Placebo 28 656 684
Aspirina 18 658 656
i = Yi /ni
E(1 2 ) = 1 2
y el error estandar es
1/2
1 (1 1 ) 2 (1 2 )
(1 2 ) = + .
n1 n2
1 2 z/2 (1 2 ).
17
Hay una convergencia a la normalidad mas rapida trabajando en la escala logart-
mica. El error estandar asintotico de log r es
1/2
1 1 1 2
(log r) = +
n1 1 n2 2
Es algo conservador (probabilidad de cubrimiento mayor que el nivel de confianza
nominal). El intervalo de confianza de Wald para log 1 /2 es
log r z/2
Los tests que vamos a considerar se pueden aplicar tanto para muestreo multino-
mial (con I J categoras) como para muestreo multinomial independiente (para
las distintas filas). En el primer caso contrastamos independencia y en el segundo
homogeneidad.
El primer test que vamos a considerar es el test ji-cuadrado. Es el test clasico
propuesto por K. Pearson. Bajo H0 ,
Enij = ij = ni+ +j .
Comparar estos residuos con los percentiles normales da una vision conservadora.
Se definen los residuos de Pearson estandarizados como
nij ij
1/2
ij (1 i+ )(1 +j )
18
que s tienen una distribucion normal estandar.
Podemos comparar los residuos de Pearson estandarizados con los percentiles de
la normal.
Valores superiores (en modulo) a 2 o 3 indican falta de ajuste.
m n11 m+
H0 : = 1
P (n11 t0 )
Estamos ordenando las tablas de acuerdo con n11 . Podramos ordenarlas segun
el odds ratio o la diferencia de las proporciones y obtenemos el mismo test. Esto no
sera cierto para test bilateral.
p = P (p(n11 ) p(t0 ))
19
Sumamos la probabilidad de todas aquellas tablas que son tan probables o menos
que la tabla observada.
Otra opcion es
p = P |n11 E(n11 )| |t0 E(n11 )|
p = P (X 2 X02 )
20
Captulo 8
Modelos lineales
generalizados
1
La componente sistematica de un GLM es el vector (1 , . . . , N ) donde
X
i = j xij , con i = 1, . . . , N, (8.2)
j
donde xij esP el valor del j-esimo predictor en el i-esimo individuo. La combina-
cion lineal j j xij es el predictor lineal. Notemos que, como es habitual, se suele
considerar que uno de los predictores xij vale uno para todos los i de modo que
consideramos el termino independiente (que denotaremos a menudo por ).
La tercera componente es la funcion link g. Mediante esta funcion relacionamos
las componentes aleatoria y sistematica. Sea i = E(Yi ) con i = 1, . . . , N . Vamos a
suponer que
i = g(i ) (8.3)
donde la funcion link g la suponemos monotona y diferenciable. En consecuencia
tenemos X
g(i ) = j xij , con i = 1, . . . , N. (8.4)
j
f (y | ) = y (1 )1y =
y
(1 )[/(1 )] = (1 ) exp y log (8.5)
1
= , (8.6)
a() = 1 , (8.7)
b(y) = 1, (8.8)
Q() = log . (8.9)
1
Vemos que el parametro natural log 1 es el logit de . Es pues el link canonico.
Los GLM que utilizan un link logit reciben el nombre de modelos logit.
2
de probabilidad de la distribucion de Poisson la podemos expresar como
e y 1
f (y | ) = = exp() exp(y log ), con y = 0, 1, . . . (8.10)
y! y!
Esta familia de distribuciones pertenece a la familia exponencial natural con
= , (8.11)
a() = exp(), (8.12)
1
b(y) = (8.13)
y!
Q() = log . (8.14)
El parametro natural es log y en consecuencia la funcion link canonica es el loga-
ritmo. El modelo que utiliza este link es
X
log = j xij , con i = 1, . . . , N. (8.15)
j
8.1.3. Desviacion
Sean y = (y1 , . . . , yN ) los valores observados y L(; y) la verosimilitud expresada
en terminos del vector de medias = (1 , . . . , N ). Sea L(; y) el maximo de la log-
verosimilitud como funcion de . Si no nos restringimos a un modelo determinado
entonces
L(; y) = L(y; y). (8.16)
En este modelo perfecto se tiene un parametro distinto por observacion. Este modelo
lo llamamos modelo saturado. Este modelo no tiene ninguna utilidad pues no supone
ninguna reduccion de los datos, ningun tipo de modelizacion con lo que esto supone
de simplificacion. Sin embargo, es un modelo base con el que compararse.
Definimos la desviacion como
2 L(; y) L(y; y) . (8.17)
3
Cuadro 8.1: Relacion entre el ronquido (filas) y la enfermedad cardIaca (columnas)
Si No
Nunca 24 1355
Ocasionalmente 35 603
Casi cada noche 21 192
Cada noche 30 224
(x) = + x,
si consideramos un solo predictor. El problema que se nos plantea es que no tenemos
asegurada que dicha probabilidad este entre cero y uno. Obviamente, es el cambio
en la probabilidad por un cambio unitario de x.
Notemos que Y depende de x a traves de (x) . La varianza de la varianza tiende
a cero cuando (x) se aproxima bien a cero bien a uno.
4
##tabla 4.3 table.4.3 <-
read.table('../data/crab.txt',col.names=c("C","S","W","Sa","Wt"))
##Pasamos los pesos a kilogramos table.4.3[,5] <- table.4.3[,5]/1000
log.fit<-glm(Sa~W, family=poisson(link=log),data=table.4.3)
summary(log.fit)
summary(log.fit)
Deviance Residuals:
Min 1Q Median 3Q Max
-2.8526 -1.9884 -0.4933 1.0970 4.9221
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -3.30476 0.54224 -6.095 1.10e-09 *** W 0.16405
0.01997 8.216 < 2e-16 ***
5
Residual deviance: 567.88 on 171 degrees of freedom AIC: 927.18
6
attributes(log.fit)
Que nos devuelve
$names
[1] "coefficients" "residuals" "fitted.values"
[4] "effects" "R" "rank"
[7] "qr" "family" "linear.predictors"
[10] "deviance" "aic" "null.deviance" [13]
"iter" "weights" "prior.weights" [16]
"df.residual" "df.null" "y" [19] "converged"
"boundary" "model" [22] "call" "formula"
"terms" [25] "data" "offset" "control" [28]
"method" "contrasts" "xlevels"
id.fit<-glm(Sa~W, family=poisson(link=identity),data=table.4.3,
start=coef(log.fit))
summary(id.fit)
Deviance Residuals:
Min 1Q Median 3Q Max
-2.9113 -1.9598 -0.5405 1.0406 4.7988
Coefficients:
Estimate Std. Error z value Pr(>|z|)
(Intercept) -11.52547 0.67767 -17.01 <2e-16 *** W 0.54925
0.02968 18.50 <2e-16 ***
7
(Dispersion parameter for poisson family taken to be 1)
= 11,41 + 0,55x
Vemos pues ahora que la anchura del caparazon tiene un efecto aditivo en lugar de
ser multiplicativo. Vamos a comparar los dos modelos que se han ajustado.
Es importante darse cuenta de que cada variable independiente tiene un solo coe-
ficiente asociado y que no depende del valor j. La dependencia de j aparece en las
intersecciones j .
8
Teniendo en cuenta que si j < j entonces logit(P (Y j|x)) logit(P (Y
j |x)) se ha de verificar que j j . En definitiva los distintos j han de crecer
con j.
Notemos tambien que si consideramos dos vectores de variables independientes
x1 = (x11 , . . . , x1d ) y x2 = (x21 , . . . , x2d ) entonces
d
X
logit(P (Y j|x1 )) logit(P (Y j|x2 )) = j + i (x1i xi2 ), (8.20)
i=1
pero
veces los odds para x = x2 . Ademas vemos que esta constante de proporcionalidad
no depende del valor de j. Por ello al modelo que estamos asumiendo se le suele
llamar el modelo de odds proporcionales ([? ]).
Intentemos expresar el significado de la ecuacion 8.22 de un modo simple. Su-
pongamos que los vectores x1 y x2 son iguales salvo en la componente i-esima. En
definitiva, ambos individuos coinciden salvo en dicha componente y supongamos,
ademas, que difieren en una unidad ambos vectores para la i-esima componente.
Tenemos, bajo estas hipotesis, la siguiente ecuacion:
d
P (Y j|x1 )/P (Y > j|x1 ) X
= i (x1i x2i ) = ei (x1i x2i ) = ei . (8.23)
P (Y j|x2 )/P (Y > j|x2 ) i=1
Mantenidas todas las demas variables constantes tenemos que el cambio de los odds
de la funcion de distribucion de la variable Y condicionada a x1 y a x2 se modifica
de un modo constante e igual a ei .
La funcion de verosimilitud de estos modelos viene dada por la siguiente ecua-
cion. Notemos que para el individuo i tenemos asociado el vector (yi1 , . . . , yiJ )
donde yij sera uno si el individuo esta en la categora j, es decir, si la variable Y
toma el valor j.
n Y
Y J n Y
Y J
yij
j (xi ) = (P (Y j|xi ) P (Y j 1|xi ))yij =
i=1 j=1 i=1 j=1
Yn Y J Pd Pd y
exp(j + i=1 i (x1i xi2 )) exp(j1 + i=1 i (x1i xi2 )) ij
P P
i=1 j=1 1 + j + di=1 i (x1i xi2 ) 1 + j1 + di=1 i (x1i xi2 )
(8.24)
9
8.5. Sobre la interpretacion de los coeficientes
De alguna manera la variable ordinal Y que analizamos puede considerarse co-
mo la version discreta de una variable continua en la que discretizamos su ran-
go. Denotamos esa variable por Y y suponemos que tiene funcion de distribu-
cion G(y ) donde los valores y varan alrededor de la media que depen-
Pd
de de x a traves de (x) = i=1 i (x1i xi2 ). Tomemos los puntos de corte
= 0 < 1 < . . . < J = + de modo que
Y = j si j1 < Y j .
En definitiva estamos asumiendo que cuando la variable continua Y esta entre los
valores j1 y j entonces la variable Y vale j. Tendremos que
d
X
P (Y j|x) = P (Y j |x) = G(j i xi ),
i=1
o que
d
X
G1 (P (Y j|x)) = j i xi .
i=1
Pd
Si por ejemplo suponemos que Y = i=1 i xi + donde tiene una distribucion
1
logstica entonces G sera la funcion link logstica y tendramos el modelo de odds
proporcionales. Notemos que con esta formulacion los mismos parametros ocurren
independientemente de los puntos de corte j que utilicemos. En definitiva que los
parametros que cuantifican el efecto de las variables no dependen de la eleccion que
hacemos de las categoras de la variable a explicar Y . Esto nos permite comparar
los estimadores cuando se utilizan distintas escalas de respuesta.
Si es positivo entonces cuando la variable asociada x crece entonces el logit
acumulado decrece y tambien lo hace las probabilidades acumuladas. Tenemos que
los valores pequenos de Y tienen menos probabilidad. La variable Y tiende a tomar
valores mayores cuando x crece.
10
Captulo 9
Miscelanea
11
12
Captulo 10
De como usar R en un
tiempo razonable (no facil,
no)
En este captulo se incluyen algunos consejos practicos para trabajar con R. Las
posibilidades son enormes. Sin embargo, de tantas que tiene lo mas probable es que el
usuario ocasional no llegue a conocer ninguna de ellas. Antes lo habra abandonado.
Y con razon. Si llevas anos utilizandolo con unas pocas lneas de codigo haces lo
que con programas basados en menu te cuesta horas (y cuando lo vuelves a repetir
te vuelve a costar horas porque tu aprendizaje no te ahorra tiempo futuro lo que
en R no as). Pero lo de anos usando algo es una utopa que solo se pueden permitir
unos cuantos profesores universitarios sin nada mejor que hacer y muchos horas que
llenar de su importante tiempo.
Cuando usamos un programa informatico hay dos problemas fundamentales que,
dependiendo de la persona, uno puede ser mucho mayor que el otro. Un problema
es el manejo del dichoso programa. Como se ha disenado el interfaz? Donde han
puesto tal o cual opcion de la tecnica? En fin, no vale la pena seguir. Se asume
que un buen menu es la clave de un buen programa (sobre todo, para un usuario
inexperto). En definitiva, se trata de eliminar cualquier tipo de aprendizaje (inicial
o posterior) para que sea de uso inmediato. Algunas personas (entre las que me
encuentro) piensan que eso no esta tan claro. Se acaba pagando el pato. Lo que
no pierdes (no me atreve a hablar de ganar) al principio lo pierdes mas tarde.
Programas como R basados en el uso de un lenguaje sencillo permiten un aprendizaje
rapido y profundo. Aprendes Estadstica al mismo tiempo que aprendes a manejar
el programa. Y, desde un punto de vista docente, es una razon importante para
utilizarlo.
En este captulo he ido incluyendo distintas cuestiones basicas para el uso del
programa. Desde el como conseguirlo o instalarlo hasta como trabajar con el. Mucho
de lo que sigue se basa en mi propia experiencia. De hecho, muchos estudiantes a
los que sugieres formas de trabajo, utilizan otros trucos que les resultan mas utiles.
Mi edad (y cerrazon mental) me impiden cada vez mas adaptarme a nuevas ideas.
Es importante darse cuenta de que es un programa abierto y que, facilmente, lo
puedes integrar con otras herramientas informaticas. La idea es: elige el editor que
quieras. Genera las figuras en formatos distintos y utiliza el procesador de textos
que se quiera. En fin, de esto vamos a tratar.
13
10.1. Instalacion y como trabajar con R
La direccion basica es http://cran.r-project.org. All se tienen tanto las
fuentes como versiones compiladas para Windows, Mac y Linux.
10.1.1. R y Windows
Los puntos a seguir para una instalacion son los siguientes:
3. Una segunda opcion es utilizar RWinEdt. Para poder usarlo hay que tener
instalado Winedt. Es un programa shareware muy util para escribir en LATEX.
Una vez instalado WinEdt cargamos el paquete RWinEdt [? ].
10.1.2. R y Linux
Es mi opcion personal de trabajo. La recomiendo definitivamente. Por Linux y
porque el trabajo con R es muy comodo. 1
Instalacion 1. Para Linux hay distintas versiones compiladas que puedes encon-
trar en cran.
2. No es complicado compilar R a partir de las fuentes. Hay que tener la
precaucion de tener gfortran.
3. Cuando instalamos R en Linux hemos de instalar previamente la librera
BLAS.
Edicion con Emacs y ESS En Linux sin duda la mejor opcion de trabajo
es utilizar Emacs con el paquete Emacs Speaks Statistics (ESS) 2 .
Como trabajamos con Emacs y ESS?
1. Abrimos el fichero R con emacs.
2. Abrimos una nueva ventana (mejor separada) con C x 5 2.
3. En la nueva ventana marcamos el icono de R.
4. Utilizamos la ventana donde esta el codigo para editar y podemos
usar los distintos controles que nos da el menu ESS de emacs pode-
mos trabajar muy comodamente.
1 Imagino a un usuario de Windows tpico sonreir ante la afirmacion anterior. Me alegro de que
pueda sonreir despues de los lloros continuos usando esa cosa llamada Windows (que no sistema
operativo).
2 La mejor opcion es acudir a la pagina de los paquetes binarios y buscar en la distribucion
14
10.2. Como fijar el directorio de trabajo?
Empezamos una sesion de R y todo nuestro trabajo (datos, codigo R) lo tenemos
en un directorio. Hemos de tener un acceso comodo a estos ficheros. Como hacerlo?
En Linux no hay problema. Simplemente con la consola nos vamos al directorio
correspondiente y ejecutamos R. Automaticamente hemos fijado el directorio de
trabajo como aquel en que iniciamos el programa.
En Windows lo recomendable es utilizar el menu y cambiar el directorio al de
trabajo. Yo recomiendo una vez hecho esto ejecutar:
getwd()
Nos devuelve todo el camino hasta dicho directorio. Lo que nos devuelve esta funcion
(por ejemplo C: Mis documentos ad prog) lo ponemos entre comillas dobles y
ejecutamos
library(Hmisc}
label(datos$x) = "Ejemplo de etiqueta"
10.4.1. Sweave
Es conveniente consultar esta pagina. Un documento de gran utilidad donde ver
la utilizacion de Sweave es este tutorial.
10.5. R y Octave/Matlab
Es frecuente que un usuario de Octave/Matlab utilice R. En este enlace y en este
teneis tablas de equivalencia entre los comandos en ambos programas.
15
16
Captulo 11
Matrices
4.
Ax = i x. (11.3)
17
Si un vector x verifica la ecuacion 11.3 decimos que es un vector propio de la
matriz A asociado al valor propio i . Si el valor propio es complejo tambien puede
tener componentes complejas el vector propio. Un vector propio x con todas las
componentes reales diremos que esta estandarizado si tiene modulo unitario x x = 1.
Teniendo en cuenta que el coeficiente que acompana a p en el polinomio q() es
(1)p entonces podemos expresar q() en funcion de sus races del siguiente modo
p
Y
q() = (i ). (11.4)
i=1
En particular tenemos
p
Y
q(0) = i . (11.5)
i=1
Teorema 4 Todos los valores propios de una matriz simetrica A(d d) son reales.
18
Captulo 12
Datos
En este captulo damos una breve explicacion de los datos que utilizamos en el
texto. Si los datos han sido obtenidos de algun paquete de R lo mejor es consultar
la ayuda del paquete correspondiente.
12.1. scoremaster
Los datos scoremaster son unos datos relativos a ciruga mayor ambulatoria en
el hospital Dr. Peset de Valencia. Han sido proporcionados por el Dr. Juan Vinoles
[? ].
Este fichero fue creado con la funcion save de R y se tiene que leer (como parece
esperable) con la funcion load de R. El fichero contiene datos relativos a una serie de
intervenciones quirurgicas realizadas con ciruga sin ingreso. En estas intervenciones
el enfermo acude al centro hospitalario por la manana y se va el mismo da de la
intervencion (si no hay complicaciones obviamente). Las variables del banco de datos
son las siguientes:
score Una puntuacion del estado general del enfermo en la primera llamada.
eg1 Estado general en primera llamada: Excelente, euforico, sueno normal (2); buen
estado pero algo preocupado, ha dormido poco (1); regular, ansiedad mode-
rada, algo mareado, ha dormido mal o nada (0).
d1 Nivel de dolor en primera llamada: Ausencia (2); dolor leve (1); dolor importante
pero soportable (0).
intensidad Es una variable ordinal que cuantifica la intensidad (de menos a mas)
de la intervencion realizada.
19
T.TOTALP Tiempo total postquirurgico.
T.QUIRUR Tiempo total quirurgico.
edad Edad del paciente.
Las variables score2, eg2, d2, t2, s2 son las mismas variables (con las mismas cate-
goras) observadas en la segunda llamada. De un modo similar tenemos las variables
para la tercera, cuarta y quinta llamadas.
12.2. Avispa
Los datos avispa tienen la siguiente descripcion obtenida de la pagina web indi-
cada. Scientists studying social insects such as wasps and ants have noted that queen
and worker castes can have very different sizes and shapes. For some species, the
queens are simply larger, suggesting that they continue to grow with the same basic
plan as workers. They are just fed for longer. Jeanne, Graf and Yandell (1995)
examined a wasp species which does not follow this pattern. They measured 13 res-
ponses on 50 workers and 50 queens. The measurements were coded based on body
part head (H), thorax (T), wing (W) or gonadium (G) and kind of measure-
ment width (W), height (H) and length (L). The gonadium (also known as gastral
tergite) has two length and three width measurements.
20