Professional Documents
Culture Documents
30 de mayo de 2008
1
Departamento de Estadstica e Investigacion Operativa. Universidad de Valencia. Gui-
llermo.Ayala@uv.es http://www.uv.es/ ayala
2
Indice general
1. Probabilidad: lo bueno si . . . 1
1.1. Experimento y probabilidad . . . . . . . . . . . . . . . . . . . . . . . 1
1.2. Variable aleatoria . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
1.2.1. Teorema de Bayes . . . . . . . . . . . . . . . . . . . . . . . . 3
1.3. Vectores aleatorios . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3
1.4. Distribucion normal multivariante . . . . . . . . . . . . . . . . . . . 6
3
4. Regresion 1
4.1. Regresion lineal simple . . . . . . . . . . . . . . . . . . . . . . . . . . 2
4.2. Regresion lineal multiple . . . . . . . . . . . . . . . . . . . . . . . . . 5
4.3. Estimacion de . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
4.4. Algunos casos particulares . . . . . . . . . . . . . . . . . . . . . . . . 9
4.5. Verosimilitud . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
4.6. Distribucion muestral de . . . . . . . . . . . . . . . . . . . . . . . 10
4.7. Bondad de ajuste . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
4.8. Valoracion de las hipotesis del modelo . . . . . . . . . . . . . . . . . 13
4.9. Inferencia sobre el modelo . . . . . . . . . . . . . . . . . . . . . . . . 26
4.10. Seleccion de variables . . . . . . . . . . . . . . . . . . . . . . . . . . 30
4.10.1. Procedimientos que comparan modelos . . . . . . . . . . . . . 30
4.10.2. Procedimientos basados en criterios . . . . . . . . . . . . . . 31
4.11. Algunos ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
5. Analisis cluster 1
5.1. Disimilaridades . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2
5.2. Cluster jerarquico . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
5.3. Metodos de particionamiento . . . . . . . . . . . . . . . . . . . . . . 8
5.3.1. Metodo de las k-medias . . . . . . . . . . . . . . . . . . . . . 9
5.3.2. Particionamiento alrededor de los mediodes . . . . . . . . . . 9
5.4. Silueta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
5.5. Algunos ejemplos . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
8. Componentes principales 1
4
9. De como usar R en un tiempo razonable (no facil, no) 9
9.1. Instalacion y como trabajar con R . . . . . . . . . . . . . . . . . . . 9
9.1.1. R y Windows . . . . . . . . . . . . . . . . . . . . . . . . . . 10
9.1.2. R y Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
9.2. Como fijar el directorio de trabajo? . . . . . . . . . . . . . . . . . . 10
9.3. Etiquetas de valor y de variable . . . . . . . . . . . . . . . . . . . . . 11
9.3.1. Como etiquetar una variable? . . . . . . . . . . . . . . . . . 11
9.4. Elaboracion de un informe a partir del codigo R . . . . . . . . . . . 11
9.4.1. Sweave . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
9.5. R y Octave/Matlab . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
10.Datos 13
10.1. scoremaster . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
11.Matrices 15
11.1. Determinante de una matriz . . . . . . . . . . . . . . . . . . . . . . . 15
11.2. Determinante . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
11.3. Valores y vectores propios . . . . . . . . . . . . . . . . . . . . . . . . 15
5
6
Prologo
Cada vez hay mas datos. Tenemos mas datos introducidos en ficheros. Y esto
es lo peor. Si los datos estuvieran en hojas sueltas y perdidas pues no pasa nada.
Se archivan los papeles y los datos no molestan. No, ahora los propios ordenadores
o bien muchas personas accediendo desde distintos lugares, tienen el mal gusto de
crear unas bancos de datos cada vez mayores. Cada vez con mas casos y con mas
variables. El problema no es conseguir datos. Los tienes a precio de saldo. Te los dan
sin que los pidas. Si tienes conocidos biologos, medicos, qumicos, psicologos seguro
que tienen datos para analizar. Si trabajais en un hospital, tendreis una legion de
medicos (y cada vez mas enfermeros) con datos. Todo el mundo tiene datos. A los
que tienen carino. Que creen que tienen mucho valor. Pero que no saben que hacer
con ellos. En el mejor de los casos algun dibujo estilo pastel (bueno, se le llama
diagrama de sectores pero es un pastel) o histograma. Que Dios nos libre de tanto
dibujo que solo sirve para gastar papel y tinta!
En estas notas se pretende (solo se pretende) partiendo de unos conocimientos
informaticos que no sean basicos y de unos conocimientos probabilsticos y estads-
ticos mas bien basicos, llegar a poder hacer algo decente con un banco de datos.
La parte de analisis descriptivo de datos se obvia. Simplemente a lo largo del
curso se va utilizando y recordando. Ya esta bien de perder el tiempo explicando
como hacer un histograma si luego lo hace un programa.
El tono de estas notas pretende ser ameno pues bastante toston es lo que se
cuenta. No inutil. Pero s toston. Hay que asumirlo desde un principio. Esto no es
Sexo en Nueva York. 1 Son unas notas de Estadstica con R [14]. 2
Este documento contiene unas notas de clase para la asignatura de Analisis de
Datos de Ingeniera Informatica de la Universidad de Valencia. Pretende en cada
tema empezar desde un nivel basico de contenidos para llegar al uso de la tecnica
correspondiente. Es una realidad que el informatico acaba realizando analisis de
datos. Entre otras cosas porque suele ser la persona mas a mano o bien porque ya ha
programado el resto de la aplicacion que tambien incorporar algun tipo de analisis
mas o menos sencillo. Y es una pena ver como se desaprovecha la informacion.
Por ello en estas notas pretendo tratar rapidamente muchos temas y, ademas, que
podamos utilizarlas. Por ello se recurre a R. Por su potencia y por su disponibilidad.
Incluso en su propia casa y con una conexion a Internet no demasiado rapida puede
el estudiante instalarse R y cualquier paquete que se necesite. Esto ya es bastante
desde el punto de vista docente. Ademas, cualquier procedimiento estadstico esta
en R. Casi se puede decir, que si no lo esta, no merece la pena de utilizarse.
Se proponen distintos apendices como apoyo a conceptos anteriores necesarios.
Se hace un repaso rapido de los conceptos basicos de la Probabilidad en el tema
1. Las ideas basicas de la Estadstica que utilizamos en el resto del curso aparecen
1 Sin duda, la mejor serie de television de la historia. Hay que verla.
2 Un anuncio de la radio (Cadena Ser para mas senas) hablaba de una persona que no entenda
porque su profesor de Estadstica lo haba suspendido. Es de suponer que la persona que escribio el
anuncio estudiara Periodismo. All hay una asignatura de Estadstica. Claramente le ha servido.
Ha hecho un anuncio y le habran pagado por ello.
7
en el tema 2. Ambos captulos con meros resumenes que no sustituyen el repaso
de muchos de los conceptos en algunos de los textos que se citan en los captulos
correspondientes.
Estas notas estan orientadas para estudiantes de Ingeniera Informatica y por
ello en muchas ocasiones se incluyen definiciones y conceptos basicos que dicho
estudiante no tiene. Una introduccion generica a la Probabilidad y la Estadstica
que es adecuado hojear pues cubre los conceptos previos es el libro de texto de [4].
El interes fundamental de estas notas es dar una vision muy amplia sin perder
demasiado tiempo en detalles de cada tecnica. En este sentido se intenta ir directo
al grano con lo que eso supone de dificultad anadida. Sin embargo, tiene la com-
pensacion de ver como muchos de los conceptos que se estudian son reescritura uno
de otro.
Por fin, un signo de edad es tener que escribir las cosas para que no se nos
olviden. Quizas para que uno mismo lo aprenda y para no olvidarlo despues. En el
fondo, todos vamos aprendiendo segun lo explicamos y lo escuchamos.
Sin duda, unas notas como las que siguen solo se pueden hacer utilizando LATEX
para escribir y el programa R [14] 3 para realizar el analisis de los datos. Son dos
herramientas imprescindibles que se complementan perfectamente. Un tratamiento
estadstico no acaba con un codigo o con unos dibujos aislados. Acaba con un
informe. Con frecuencia, se dedica mas tiempo a explicar lo que se ha hecho, a
escribir el informe, que a la preparacion y tratamiento de los datos, al analisis de
los datos. En este sentido, creo que una herramienta como LATEX es fundamental
utilizada con R. En este texto hablamos de analisis de datos. No de LATEX. Sin
embargo, uno aprende a veces cosas importantes mientras estudia otras que cree
que lo son mas. En este sentido, habra referencias a LATEX.
Finalmente veamos una gua de lectura del documento. Es muy habitual que
si uno empieza a leer un texto por el principio nunca pase mas alla del primer o
segundo captulo, y eso con suerte. Las notas estan escritas de manera que se lean
cada tema por separado sin mas conexiones entre ellos. De modo que si quieres un
pequeno repaso de Probabilidad consulta el tema 1. Si patinas un poco en lo basico
de la Estadstica pues entonces hay que leer el tema 2. Son los unicos temas de
caracter basico. Los demas van al grano. En particular si te interesa como reducir
la dimension del banco de datos lee el tema 8. Si el problema que te quita el sueno
es como dadas unas variables sobre un individuo clasificarlo en uno de g posibles
grupos conocidos a priori y de los cuales tienes ejemplos entonces no lo dudes y
lee el tema 6. Si tienes datos y no saben si se disponen formando grupos y ni tan
siquiera del numero de grupos que tienes entonces has de acudir sin remision al
tema 5. Finalmente en los temas ??, 7 y ?? viene la artillera pesada. Como todos
sabemos los modelos lineales son el corazon de la Estadstica, sin ellos, otras tecnicas
de analisis de datos se la hubieran ventilado. Los modelos lineales es un esfuerzo
colectivo que ha construido una teora redonda, util, facil de aprender y aplicar.
Parece que casi todo esta previsto y bien resuelto. Los modelos lineales generalizados
surgen de la envidia que todo lo corroe. Cuando la variable respuesta, en lugar de
ser continua, como en los modelos lineales, es una respuesta binaria, o multinomial,
o bien un conteo. Que hacer? La teora de modelos lineales no se puede aplicar
ni con calzadores. Sin embargo, con unos cuantos cambios tecnicamente simples
surgen unos modelos probabilsticos para analizar estos datos que son absolutamente
preciosos.
Un detalle practico de enorme interes. Para programar con R en el sistema opera-
tiva Windows lo mas comodo es utilizar RWinEdt ([11]) mientras que si trabajamos
3 La primera leccion sobre R es como citar el programa. En la lnea de comandos escribimos
citation y nos devuelve la referencia bibliografica. Del mismo modo lo podemos hacer si utilizamos
otro paquete. Por ejemplo tecleando citation(cluster) nos indica como citar el paquete cluster
que utilizamos en el tema 5.
8
en Linux la opcion mas comoda es utilizar emacs con el paquete ESS. Se pueden
encontrar detalles adicionales cran.r-project.org.
9
10
Captulo 1
Probabilidad: lo bueno si . . .
Empezamos por donde hay que empezar. Con la Probabilidad. Temida, odiada.
Despreciada porque habla de juegos. Por encima de todo, util, de una utilidad
extrana. Da verguenza hablar de Estadstica sin citar algo de Probabilidad. 1 Y
no lo vamos a hacer. Vamos a cumplir con la papeleta. En cualquier caso, si no
te manejas bien con los conceptos basicos probabilsticos (variable aleatoria, vector
aleatorio, distribucion conjunta y marginal, . . .) hay que leer algun texto. Uno muy
bueno, pero no facil de encontrar, es [13].
1 De hecho, hay una teora muy extendida que dice que podemos saber Estadstica sin ningun
1
1.2. Variable aleatoria
Supongamos el experimento consistente en elegir a una individuo al azar de la
Comunidad Valenciana. Obviamente el espacio muestral esta formado por los dis-
tintos individuos. Si los numeramos tendramos = {i }N i=i donde N es el numero
total de personas de la Comunidad. Eleccion al azar supone que cada individuo
tiene la misma probabilidad de ser elegido y viene dada por P ({i }) = N1 . Obvia-
mente cuando se elige una muestra de personas pensamos en alguna caracterstica
numerica de la misma por ejemplo su edad. Denotemos por X R la aplicacion
tal que X() es la edad de la persona . Puesto que el individuo es seleccionado
de un modo aleatorio, tambien sera aleatoria la cantidad X(). La aplicacion X
recibe el nombre de variable aleatoria. Si B es un subconjunto arbitrario de nu-
meros reales entonces cualquier afirmacion de interes sobre la variable aleatoria X
suele poderse expresar como P ({ : X() B}). Por ejemplo, si nos interesa la
proporcion de personas que tienen 37 o mas anos esto supone plantearse el valor de
P ({ : X() [37, +)}).
Dos son los tipos de variables de mayor interes practico, las variables aleatorias
discretas y las continuas. Una variable aleatoria se dice discreta si toma un conjunto
de valores discreto, esto es, finito o si infinito numerable. Si el conjunto de valores
que puede tomar lo denotamos por D entonces se define la funcion de probabilidad
de X como P (X = x). En estas variables se tiene que
X
P (a X b) = P (X = x), (1.1)
axb
2
En variables continuas las definiciones de media y varianza son las analogas susti-
tuyendo
R + sumatorios por integrales, de modo que la media se define
R + como EX ==
2 2
xf (x)dx mientras que la varianza sera var(X) = = (x ) f (x)dx.
En tablas 1.1 y 1.2 presentamos un breve resumen de las distribuciones que
vamos a utilizar en este curso.
1
X = ...
d
3
Cuadro 1.1: Distribuciones discretas
Distribucion Funcion de probabilidad Media Varianza
Bernoulli f (x|p) = px (1
p)
1x
si x = 0, 1 p p(1 p)
n
Binomial f (x|n, p) = p (1 p)nx si x = 0, 1, . . . , n
x
np np(1 p)
x0 10 1
@
A A@ B A
x nx
4
nA nAB(A+Bn)
Hipergeometrica f (x|A, B, n) = 0 1 si x = 0, . . . , n. A+B (A+B)2 (A+B1)
@
A+B A
n
x 1p 1p
Geometrica f (x|p) = p(1 p) si x = 0, 1, 2, . . . p2
p
r+x1 r(1p) r(1p)
Binomial Negativa f (x|r, p) = pr (1 p)x si x = 0, 1, 2, . . . p p2
x
x
Poisson f (x|) = e x! si x = 0, 1, . . .
Cuadro 1.2: Distribuciones continuas
Distribucion Funcion de densidad Media Varianza
1 + ()2
Uniforme f (x|, ) = si < x < 2 12
1 x 2
Normal, N (, 2 ) f (x|, 2 ) = 12 e 2 ( ) x R 2
1 x
Gamma Ga(, ) f (x|, ) = () x e si x > 0 a 2
1 x 2
Exponencial Expo() f (x | ) = exp si x 0
Ji-Cuadrado 2 () X 2 () si X Ga( 2 , 12 ) 2
5
(+) 1
Beta Be(, ) f (x|, ) = ()() x (1 x)1 si 0 < x < 1 + (+)2 (++1)
+1
( +12 ) x2 2
t-Student t() f (x) = ( 1 + x R 0 si > 1 2 si > 2
2)
( m+n ) m/2 n/2 x m/21
n 2n2 (m+n2)
F-Snedecor F (m, n) f (x) = ( m )( 2
n m n (mx+n) (m+n)/2 si x > 0 (n2) si n>2 m(n2)2 (n4) si n > 4
2 2)
1 x 1 2 2 1 2 1
Weibull(, ) f (x | , ) = x exp ( ) si x > 0 ( ) (2( ) ( ))
2 X 2
Lognormal X N (, ) e LN (, )
R +
a La funcion gamma se define como () = 0
x1 exp{x}dx, que existe y es finita > 0
En general si consideramos dos vectores aleatorios X = (X1 , . . . , Xd ) e Y =
(Y1 , . . . , Yp ) denotaremos
cov(X1 , Y1 ) . . . cov(X1 , Yp )
.. .. ..
cov(X, Y ) = . . .
cov(Xd , Y1 ) . . . cov(Xd , Yp )
1 1
P = D 2 D 2 . (1.7)
Y Nd (, ). (1.11)
6
Teorema 1 Supongamos Y Nd (, ) y sea
(1) (1)
Y 11 12
Y = , = , = ,
Y (2) (2) 21 22
> library(mvtnorm)
> npuntos = 50
> x = seq(mu[1] - 3 * sqrt(Sigma[1, 1]), mu[1] + 3 * sqrt(Sigma[1,
+ 1]), len = npuntos)
> y = seq(mu[2] - 3 * sqrt(Sigma[2, 2]), mu[2] + 3 * sqrt(Sigma[2,
+ 2]), len = npuntos)
y la evaluamos.
> z = NULL
> for (i in 1:npuntos) {
+ for (j in 1:npuntos) {
+ z = rbind(z, c(x[i], y[j], dmvnorm(c(x[i], y[j]), mean = mu,
+ sigma = Sigma)))
+ }
+ }
> persp(z)
> contour(z)
7
Como generamos datos de una normal multivariante? Consideremos un vector de
medias generado al azar con valores entre 0 y 1. La matriz de covarianzas la ge-
neramos tambien aleatoriamente. Para ello, generamos en primer lugar una matriz
cuyos elementos son uniformes en el intervalo unitario. El producto de esta matriz
por su traspuesta es definida positiva y la podemos utilizar como matriz de cova-
rianzas.
> mu = runif(5)
> A = matrix(runif(5 * 5), ncol = 5, nrow = 5)
> Sigma = t(A) %*% A
Generamos datos con el vector de medias y matriz de covarianzas .
> (x = rmvnorm(10, mean = mu, sigma = Sigma))
NA
8
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.
Una version extendida de la nota se puede ver en
http: // www. uv. es/ ayala/ DOCENCIA/ ad/ PDF/ notaR150. pdf y el codigo utili-
zado aparece en
http: // www. uv. es/ ayala/ DOCENCIA/ ad/ Rcode/ notaR150_ wc. R
2.2. Verosimilitud
Sea y = (y1 , . . . , yn ) una realizacion del vector aleatorio Y = (Y1 , . . . , Yn ). Es
habitual asumir que Y tiene una funcion de densidad conjunta f en una cierta familia
F. Para una funcion dada f , el valor f (y) nos muestra como vara la densidad dentro
del espacio muestral de valores posibles de y. Y viceversa, si consideramos unos datos
y y lo que hacemos variar es la funcion de densidad entonces estamos viendo como
de verosmil es cada una de las funciones dados los datos y. Esta funcion recibe el
nombre de verosimilitud de f dados los datos y y se suele denotar como
V erosimilitud[f ; y] = L(f ; y) = f (y). (2.1)
Con frecuenica, es conveniente trabajar con el logaritmo natural de la funcion an-
terior y hablaremos de la log-verosimilitud.
l[f ; y] = log f (y). (2.2)
Una simplificacion adicional (que es habitual en las aplicaciones) supone que la
funcion de densidad f pertenece a una familia parametrica F, esto es, cada elemento
de la familia es conocido completamente salvo un numero finito de parametros
= (1 , . . . , p ) de modo que denotaremos f (y; ) o fY (y; ). Al conjunto de valores
posibles de se le llama espacio parametrico y lo denotaremos por . En este
caso, la logverosimilitud es una funcion de y denotaremos
V erosimilitud[; y] = l(; y) = log f (y; ). (2.3)
8
Supongamos una transformacion 1-1 de Y a Z, Z = g(Y ). Las densidades de
ambos vectores se relacionan segun la siguiente relacion
y
fZ (z) = fY (y) ,
z
donde y
z es el jacobiano de la transformacion de z a y. Se tiene la siguiente relacion
entre las verosimilitudes
y
LZ (; z) = LY (; y).
z
Esto sugiere que es mejor trabajar con el cociente de las verosimilitudes para dos
vectores de parametros 1 y 2 en lugar de los valores aislados.
Si asumimos que los distintos Y1 , . . . , Yn son independientes entonces
n
Y
LY (; y) = fY (y) = fYi (yi ),
i=1
y
n
X n
X
ly (; y) = log fYi (yi ) = LYi (; yi ).
i=1 i=1
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
1 X
S2 = (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
mientras que los datos observados, la matriz de datos, vendra dada por
y1 y11 . . . y1d
..
y = ... = ... ..
. .
yn yn1 . . . ynd
de modo que
S11 ... S1d n
.. .. .. = 1 X 1
S= . . . (Yi Y )(Yi Y ) = Q.
n 1 i=1 n1
Sd1 . . . Sdd
11
Es inmediato que E Y = porque componente a componente hemos visto que se
verifica la igualdad. A partir de los vectores Yi consideramos Xi = Yi de modo
que se verifica X = X . Se sigue que
n
X n
X n
X
(Yi Y )(Yi Y ) = (Xi X)(Xi X) = Xi Xi nX X .
i=1 i=1 i=1
o tambien
= argmax L(), (2.12)
Pn
xi
Ejemplo 4 (Bernoulli) Se puede comprobar sin dificultad que p = i=1
n .
12
Notemos que el error estandar de j sera el elemento que ocupa la posicion (j, j)
en la inversa de la matriz de informacion. Cuanto mayor es la curvatura de la
logverosimilitud menores seran los errores estandar. La racionalidad que hay detras
de esto es que si la curvatura es mayor entonces la logverosimilitud cae rapidamente
cuando el vector se aleja de . En resumen, es de esperar que este mas proximo
a .
H0 : 0 (2.19)
H1 : 1 (2.20)
H0 H1
Rechazamos H0 Error tipo I
No rechazamos H0 Error tipo II
13
funcion de la muestra que denotamos (X1 , . . . , Xn ) de modo que si (X1 , . . . , Xn )
C entonces rechazamos la hipotesis nula mientras que si (X1 , . . . , Xn )
/ C entonces
no rechazamos la hipotesis nula. Notemos que simplemente estamos particionando
el espacio muestral (que suponemos) Rn en dos partes, C y C c , de modo que to-
mamos una decision basandonos en si el estadstico esta en C o bien esta en el
complementario de C. Al conjunto C se le suele llamar la region crtica. La funcion
potencia se define como
() = P ( C|). (2.21)
max0 L()
= (2.22)
max L()
Es razonable pensar que en la medida en que tome valores menores entonces la hi-
potesis alternativa sea mas plausible que la hipotesis nula y por lo tanto rechacemos
la hipotesis nula. Realmente se suele trabajar con 2 log pues bajo la hipotesis
nula tiene una distribucion asintotica ji-cuadrado donde el numero de grados de li-
bertad es la diferencia de las dimensiones de los espacios parametricos = 0 1
y 0 . Si denotamos L0 = max0 L() y L1 = max L() entonces = L L1 y
0
L0
2 log = 2 log = 2(l0 l1 ) (2.23)
L1
H0 : = 0 , (2.24)
6 0 .
H1 : = (2.25)
14
2.5.3. Intervalos de confianza
Empezamos recordando el concepto de intervalo de confianza con un ejemplo
muy conocido como es la estimacion de la media en poblaciones normales.
Ejemplo 7 (Intervalo de confianza para la media de una normal) Veamoslo
con un ejemplo y luego planteamos la situacion mas general. Tenemos una muestra
aleatoria X1 , . . . , Xn i.i.d. tales que Xi N (, 2). Entonces es conocido que
Xn
tn1 . (2.28)
S/ n
Vemos como X
n
S/ n
depende tanto de la muestra que conocemos como de un pa-
rametro (la media ) que desconocemos. Fijamos un valor de (habitualmente
tomaremos = 0,05) y elegimos un valor tn1,1/2 tal que
Xn
P (tn1,1/2 tn1,1/2 ) = 1 . (2.29)
S/ n
| 0 |
{0 : < Z1/2 } (2.32)
SE()
15
16
Captulo 3
E(Y ) = n,
y
var(Y ) = n(1 ).
Si en lugar de dos resultados en cada prueba suponemos que tenemos c resultados
posibles con c > 2 y denotamos por para la prueba i como yij = 1 si la prueba i
tiene el resultado en la categora j y cero en otro caso entonces el resultado de la
1
i-esima prueba la podemos expresar como yi = (yi1 , . . . , yic ) y el numero de pruebas
que han dado el resultado j viene dada por
n
X
nj = yij
i=1
(n1 , . . . , nc ) M ultinomial(n; 1, . . . , c ).
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
2
> rbinom(100, size = 10, prob = 0.23)
[1] 1 2 2 2 2 1 1 4 5 2 3 1 5 0 0 3 2 1 4 1 2 0 2 2 3 4 1 4 0 4 5 3 3 3 2 0 3
[38] 0 2 4 3 4 1 4 2 0 4 5 4 2 5 4 1 4 2 1 4 4 3 3 4 4 2 0 2 3 3 1 3 6 2 1 3 3
[75] 1 1 4 2 1 2 3 2 1 3 1 4 3 5 3 4 2 1 2 3 4 1 4 0 2 3
[1] 2.067297e-05
[1] 0.1164302
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 0 2 2 1 0 0 1 1 3 0
[2,] 0 1 1 1 2 3 6 1 1 2
[3,] 12 9 9 10 10 9 5 10 8 10
[1] 8 9 10 11 12 13 14 15 17
[1] 12 15 15 9 15 13 12 10 9 21 13 10 18 7 18 11 13 19 7 11 10 12 21 8 12
[26] 7 18 16 15 12 8 10 13 11 14 16 11 7 14 14 13 14 13 10 17 17 14 11 4 12
3
Teorema 2 Si Y1 , . . . , Yc son variables Poisson independientes con medias 1 , . . . c
entonces
c
X n!
P (Y1 = n1 . . . , Yn = yn | Yi = b) = n1 . . . cnc
i=1
n1 ! . . . nc ! 1
con
i
i = Pc .
i=1 j
En otras palabras, la distribucion conjunta de variables independientes y con dis-
tribucion Poisson condicionada a la suma total es una multinomial.
i=1
Estas funciones son nuestro instrumento basico para el analisis estadstico de este
tipo de datos.
4
Es preferible el estadstico score pues su distribucion se aproxima mas a la normal.
El tercero de la terna, el test del cociente de verosimilitudes, adopta la siguiente
expresion
y ny
2(L0 L1 ) = 2 y log + (n y) log .
n0 n n0
Bajo H0 , el numero esperado de exitos y fracasos son n0 y n(1 0 ) respectiva-
mente. Esto es lo que esperamos pero lo que realmente observamos son y exitos y
n y fracasos. Por ello, la expresion anterior puede expresarse de un modo resumido
como
X Observado
2 Observado log .
Esperado
donde la suma se hace sobre las dos categoras que tenemos, exitos y fracasos. La
distribucion asintotica bajo la hipotesis nula de este estadistico o distribucion nula,
es una ji-cuadrado con un grado de libertad, 2 (1).
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)
5
sexo
0 1
329 590
1
590
> sum(tsexo)
[1] 919
> library(Hmisc, T)
> library(Hmisc, T)
6
3.3. Inferencia para la multinomial
En una distribucion multinomial los parametros a estimar son las probabilidades
de cada una de las categoras, (1 , . . . , c ). Sin embargo, hemos de tener en cuenta
P
que c = 1 c1i=1 i por lo que realmente tenemos c 1 parametros a estimar.
Notemos que la verosimilitud es proporcional a
c
Y X
n
j j donde j 0, j = 1.
j=1 j
Facilmente se comprueba que los estimadores maximo verosmiles vienen dados por
nj
j = ,
n
esto es, son las correspondientes frecuencias observadas de cada una de las catego-
ras. No poda (ni deba) ser de otra manera.
de modo que X nj
G2 = 2 log = 2 nj log .
j
nj0
7
Nota de R 5 (notaR503) Todo el mundo utilizada estos datos para ilustrar es-
te test. Pues vamos a usarlos tambien nosotros. Son unos datos de Mendel. Es un
experimento realizado por Mendel. Cruzamos guisantes amarillos con guisantes ver-
des. El caracter dominante es amarillo. De acuerdo con la teora de la herencia de
Mendel 3/4 de los guisantes que obtenemos por cruce deberan de ser amarillos y
el cuarto restante debera de ser verde. Se realizaron n = 8023 cruces de los cuales
n1 = 6022 son amarillos y n2 = 2001 son verdes. Son consistentes los datos con
la teora?
Empezamos con el test ji-cuadrado de Pearson.
> library(stats)
> chisq.test(x = c(6022, 2001), p = c(0.75, 0.25))
[1] 0.9025024
Hay que reconocer que le fue muy (demasiado) bien la experimentacion a Mendel.
Una version extendida de la nota se puede ver en
http: // www. uv. es/ ayala/ DOCENCIA/ ad/ PDF/ notaR503. pdf y el codigo utili-
zado aparece en
http: // www. uv. es/ ayala/ DOCENCIA/ ad/ Rcode/ notaR503_ wc. R
ij = P (X = i, Y = j),
8
Cuadro 3.1: Tablade conteos cruzando el estado del paciente y el resultado del test.
I
X I
X
+j = P (Y = j) = P (X = i, Y = j) = ij
i=1 i=1
ij = i+ +j .
j|i = +j con j = 1, . . . , J.
9
Cuadro 3.2: Tabla de proporciones sobre el total cruzando el estado del paciente y
el resultado del test.
ij Test positivo Test negativo Total
Enfermo n11 /n n11 /n n1+ /n
No enfermo n21 /n n22 /n n2+ /n
Total n+1 /n n+2 /n 1
Cuadro 3.3: Tabla de proporciones sobre el total cruzando el estado del paciente y
el resultado del test.
j|i Test positivo Test negativo Total
Enfermo n11 /n1+ n11 /n1+ 1
No enfermo n21 /n2+ n22 /n2+ 1
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)
10
eg1
intensidad 0 1 2
1 0.005422993 0.105206074 0.071583514
2 0.006507592 0.262472885 0.193058568
3 0.007592191 0.223427332 0.124728850
En este caso, la variable intensidad es previa y parece mas natural considerar la
distribucion de la variable que aparece en la columna condicionada a la variable que
aparece en la fila.
> prop.table(tt0, 1)
eg1
intensidad 0 1 2
1 0.02976190 0.57738095 0.39285714
2 0.01408451 0.56807512 0.41784038
3 0.02134146 0.62804878 0.35060976
Una version extendida de la nota se puede ver en
http: // www. uv. es/ ayala/ DOCENCIA/ ad/ PDF/ notaR540. pdf y el codigo utili-
zado aparece en
http: // www. uv. es/ ayala/ DOCENCIA/ ad/ Rcode/ notaR540_ wc. R
Finalmente si cada fila es una muestra de una multinomial independiente, esto es,
tenemos un muestreo multinomial independiente y su verosimilitud viene dada por
Y ni+ ! Y n
Q j|iij .
i
n
j ij ! j
11
Cuadro 3.4:
Enfermedad venerea No enfermedad
Con preservativo
Sin preservativo
Cuadro 3.5:
1 2
1 1|1 2|1
2 1|2 2|2
1|i = i
2|i = 1 1|i = 1 i
Cuadro 3.6:
Exito Fracaso
Grupo 1 1|1 2|1
Grupo 2 1|2 2|2
12
Cuadro 3.7:
Exito Fracaso
Grupo 1 1 1 1
Grupo 2 2 1 2
o el riesgo relativo,
1
,
2
o bien el cociente de odds (odds ratio)
1 /(1 1 )
= .
2 /(1 2 )
13
2-sample test for equality of proportions with continuity correction
data: x out of n
X-squared = 24.4291, df = 1, p-value = 7.71e-07
alternative hypothesis: two.sided
95 percent confidence interval:
-0.010814914 -0.004597134
sample estimates:
prop 1 prop 2
0.00942285 0.01712887
names
[1] "statistic" "parameter" "p.value" "estimate" "null.value"
[6] "conf.int" "alternative" "method" "data.name"
class
[1] "htest"
[1] 7.709708e-07
> 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
14
Cuadro 3.8: Procesamientos por asesinatos multiple sen Florida entre 1976 y 1987
Pena de muerte
Vctima Acusado Si No % S
Cuadro 3.9: Procesamientos por asesinatos multiple sen Florida entre 1976 y 1987
x[2]*(n[1]-x[1])/(x[1]*(n[2]-x[2]))
Una version extendida de la nota se puede ver en
http: // www. uv. es/ ayala/ DOCENCIA/ ad/ PDF/ notaR504. pdf y el codigo utili-
zado aparece en
http: // www. uv. es/ ayala/ DOCENCIA/ ad/ Rcode/ notaR504_ wc. R
> library(vcd)
15
> raza.victima = c("blanco", "negro")
> raza.agresor = raza.victima
> pena.muerte = c("si", "no")
> etiquetasdatos = list(agresor = raza.agresor, muerte = pena.muerte,
+ victima = raza.victima)
> datos.florida = expand.grid(agresor = raza.agresor, muerte = pena.muerte,
+ victima = raza.victima)
> conteos = c(53, 11, 414, 37, 0, 4, 16, 139)
> datos.florida = cbind(datos.florida, count = conteos)
> xtabs(conteos ~ agresor + muerte + victima, data = datos.florida)
, , victima = blanco
muerte
agresor si no
blanco 53 414
negro 11 37
, , victima = negro
muerte
agresor si no
blanco 0 16
negro 4 139
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
16
3.6. Inferencia en tablas de contingencia
3.6.1. Intervalos de confianza para parametros de asociacion
Intervalo para los odds ratio
El estimador del odds ratio es
n11 n22
= .
n12 n21
El estimador puede ser 0, infinito o no estar definido () dependiendo de los conteos.
Por ello no existe ni la media ni la varianza de ni de log . Una posibilidad es
trabajar con
(n11 + 0,5)(n22 + 0,5)
=
(n12 + 0,5)(n21 + 0,5)
y con log .
Un estimacion del error estandar de es
1/2
1 1 1 1
(log ) = + + + .
n11 n12 n21 n22
El intervalo de confianza de Wald sera:
log z/2 (log ).
Tomando las exponenciales en los extremos tenemos el correspondiente intervalo
para log .
El test es algo conservador (la probabilidad de cubrimiento es algo mayor que el
nivel nominal).
Estudio sueco sobre el uso de la aspirina y el infarto de miocardio.
Infarto de miocardio
Si No Total
Placebo 28 656 684
Aspirina 18 658 656
17
Intervalo de confianza para el riesgo relativo
El riesgo relativo muestral viene dado por
1
r=
2
Hay una convergencia a la normalidad mas rapida trabajando en la escala logart-
mica. El error estandar asintotico de log r es
1/2
1 1 1 2
(log r) = +
n1 1 n2 2
Es algo conservador (probabilidad de cubrimiento mayor que el nivel de confianza
nominal). El intervalo de confianza de Wald para log 1 /2 es
log r z/2
H0 : ij = i+ +j i, j
H0 : ij 6= i+ +j para algun i, j
Los tests que vamos a considerar se pueden aplicar tanto para muestreo multino-
mial (con I J categoras) como para muestreo multinomial independiente (para
las distintas filas). En el primer caso contrastamos independencia y en el segundo
homogeneidad.
El primer test que vamos a considerar es el test ji-cuadrado. Es el test clasico
propuesto por K. Pearson. Bajo H0 ,
Enij = ij = ni+ +j .
18
Comparar estos residuos con los percentiles normales da una vision conservadora.
Se definen los residuos de Pearson estandarizados como
nij ij
1/2
ij (1 i+ )(1 +j )
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.
19
3.9. Test exacto de Fisher y alternativa bilateral
La definicion de p-valor depende de como ordenamos las tablas. Lo que suele ir
programado en software es (si p(t) = P (n11 = t))
p = P (p(n11 ) p(t0 ))
Sumamos la probabilidad de todas aquellas tablas que son tan probables o menos
que la tabla observada.
Otra opcion es
p = P |n11 E(n11 )| |t0 E(n11 )|
p = P (X 2 X02 )
20
Captulo 4
Regresion
El problema que se trata en este tema es basico. Estudiar relaciones entre una
variable que llamaremos variable respuesta y una (o mas de una) variable que lla-
maremos variables predictoras. Tambien se utilizan las denominaciones de variable
dependiente para la variable respuesta y variables independientes en lugar en pre-
dictoras.
Si denotamos a la variable respuesta por Y (al valor observado lo denotaremos
por y) y a la variable predictora por X nuestro problema es intentar conocer el valor
de Y cuando conocemos el valor de la variable X.
> library(MASS)
> attach(cats)
> names(cats)
Empezamos representando el peso del corazon frente al peso del cuerpo para las
hembras.
Nuestro problema es intentar predecir el peso del corazon a partir del peso del
cuerpo. Ademas parece razonable plantearse si esta relacion es similar para machos
y hembras.
Una version extendida de la nota se puede ver en
http: // www. uv. es/ ayala/ DOCENCIA/ ad/ PDF/ notaR100. pdf y el codigo utili-
zado aparece en
http: // www. uv. es/ ayala/ DOCENCIA/ ad/ Rcode/ notaR100_ wc. R
> require(stats)
1
> plot(cars, xlab = "Speed (mph)", ylab = "Stopping distance (ft)",
+ las = 1)
Podemos predecir de algun modo el tiempo de parada a partir de la velocidad
del vehculo?
Una version extendida de la nota se puede ver en
http: // www. uv. es/ ayala/ DOCENCIA/ ad/ PDF/ notaR101. pdf y el codigo utili-
zado aparece en
http: // www. uv. es/ ayala/ DOCENCIA/ ad/ Rcode/ notaR101_ wc. R
En este tema utilizamos de un modo importante el paquete faraway [5].
2
donde
N (0, 2 ). (4.4)
En la formulacion de 4.3 expresamos el valor aleatorio de Y como suma de una
parte que sistematicamente depende de x (la componente sistematica del modelo)
y un termino aleatorio con distribucion normal, un termino de error o desajuste del
modelo. En esta variable normal con media cero y varianza constante 2 estamos
incluyendo todas las posibles causas que influyen el valor de Y y que no vienen
dadas por la variable predictora.
No consideramos un solo valor aleatorio de Y dado un valor fijo de x. Realmente,
tenemos n valores observados cuyos valores son independientes entre s pero no
tienen la misma distribucion. Hemos de pensar que cad a Yi tiene una variable
predictora distinta que influye en la distribucion de Yi . Tenemos pares (xi , Yi ) donde
la xi viene dada y consideramos la distribucion de Yi condicionada a xi , es decir,
Yi | xi .
Resumiendo, estamos asumiendo que Yi N (0 +1 xi , 2 ) y que los distintos Yi
son independientes entre si. Utilizando propiedades de la distribucion normal multi-
variante tenemos que estas hipotesis las podemos expresar conjuntamente diciendo
que
Y Nn (X, 2 Inn ), (4.5)
donde
Y1 1 x1
.. ..
Y = ... X = . . = 0
1
Yn 1 xn
Si consideramos que
1
..
=.
n
donde los i N (0, 2 ) e independientes entre si. Entonces el modelo dado en 4.5
lo podemos reescribir como
Y = X + , (4.6)
con Nn (0, 2 Inn ).
Este modelo probabilstico es conocido como el modelo de regresion lineal
simple. No lo estudiaremos en mas detalle porque nos vamos a ocupar de la situa-
cion mas general en que tenemos mas de una variable predictora. No es mas que
un caso particular y sin mucha dificultad adicional se puede estudiar el situacion
general de regresion lineal multiple.
3
data(Orange)
attach(Orange)
plot(age,circumference) #fig118a.ps
lm(circumference ~ age,data=Orange)
Call:
lm(formula = circumference ~ age, data = Orange)
Coefficients:
(Intercept) age
17.3997 0.1068
> attributes(orange.lm)
$names
[1] "coefficients" "residuals" "effects" "rank"
[5] "fitted.values" "assign" "qr" "df.residual"
[9] "xlevels" "call" "terms" "model"
$class
[1] "lm"
#Valores ajustados
orange.lm$fitted.values
> orange.lm$fitted.values
1 2 3 4 5 6 7 8
29.99855 69.07649 88.29515 124.59706 148.83392 163.88854 186.31030 29.99855
9 10 11 12 13 14 15 16
69.07649 88.29515 124.59706 148.83392 163.88854 186.31030 29.99855 69.07649
17 18 19 20 21 22 23 24
88.29515 124.59706 148.83392 163.88854 186.31030 29.99855 69.07649 88.29515
25 26 27 28 29 30 31 32
124.59706 148.83392 163.88854 186.31030 29.99855 69.07649 88.29515 124.59706
33 34 35
148.83392 163.88854 186.31030
#Residuos observados
orange.lm$residuals
> orange.lm$residuals
4
1 2 3 4 5
0.001451402 -11.076487573 -1.295146086 -9.597056609 -28.833920400
6 7 8 9 10
-21.888536235 -41.310304499 3.001451402 -0.076487573 22.704853914
11 12 13 14 15
31.402943391 23.166079600 39.111463765 16.689695501 0.001451402
16 17 18 19 20
-18.076487573 -13.295146086 -16.597056609 -33.833920400 -24.888536235
21 22 23 24 25
-46.310304499 2.001451402 -7.076487573 23.704853914 42.402943391
26 27 28 29 30
30.166079600 45.111463765 27.689695501 0.001451402 -20.076487573
31 32 33 34 35
-7.295146086 0.402943391 -6.833920400 10.111463765 -9.310304499
plot(orange.lm$fitted.values, orange.lm$residuals)
200
150
circumference
100
50
age
Figura 4.1:
Y = f (x1 , . . . , xn ) + , (4.7)
5
200
150
circumference
100
50
age
Figura 4.2:
40
20
orange.lm$residuals
0
20
40
50 100 150
orange.lm$fitted.values
Figura 4.3:
6
Vamos a formular conjuntamente estas hipotesis. Denotaremos
0
Y1 1 x11 . . . x1,p1 1 1
.. .. .
.. .
.. .
Y = . X = . = .. = ..
.
Yn 1 xn1 . . . xn,p1 n
p1
Y = X + . (4.8)
Espacio
engendrado
por X
Valor ajustado
Figura 4.4: Expresamos la observacion y como suma ortogonal de una parte siste-
matica mas un residuo.
4.3. Estimacion de
Como estimamos los parametros ? Nuestros datos son (yi , xi1 , . . . , xi,p1 ) con
i = 1, . . . , n. Nuestro objetivo es estimar los coeficientes de modo que X este
proximo a y. En concreto vamos a minimizar
n
X
2i = = (y X) (y X). (4.9)
i=1
(y X) (y X) = y y 2 X y + + X X.
X X = X y. (4.10)
= (X X)1 X y, (4.11)
7
y en consecuencia se sigue que
y = Hy = X . (4.13)
Tambien tenemos los residuos, esto es, las diferencias entre los valores observados
originalmente y las predicciones que de ellos hacemos. Los residuos en terminos de
la matriz H vienen dados por
= y Hy = (I H)y. (4.14)
Veamos una interpretacion geometrica que nos ayude a entender que son los
estimadores mnimo cuadraticos que utilizamos. Estamos minimizando (yX) (y
X). Si vemos la figura 4.4 el valor de que nos da el mnimo coincide con el punto
que nos da la proyeccion ortogonal de y sobre el plano que viene engendrado por
las columnas de la matriz X. De este modo es claro que
8
4.4. Algunos casos particulares
Supongamos en primer lugar la situacion en que no tenemos ningun predictor.
Esto es, nuestro modelo es Y = + . En este caso se tiene que la matriz de diseno
X = 1n = (1, . . . , 1) , X X = n y, finalmente, = (X X)1 X y = n1 1n y = y.
El segundo ejemplo que podemos considerar sera con una sola variable pre-
dictora o lo que es lo mismo, el modelo de regresion lineal simple. En este caso,
tendremos
Y1 1 x1 1
.. .. .
. 0 ..
. = . . 1 + .
Yn 1 xn n
1 x1 x
..
X = ... .
1 xn x
con
n 0
X X = Pn 2
0 i=1 i x)
(x
4.5. Verosimilitud
Dados los datos (xi , yi ) con i = 1, . . . , n la verosimilitud de y = (y1 , . . . , yn )
vendra dada por
1 1
L(, ) = n
n
exp{ 2 (y X) (y X)} (4.23)
(2) 2 2
y la logverosimilitud sera
n 1
l(, ) = log(2) n log 2 (y X) (y X). (4.24)
2 2
El estimador maximo verosmil de se obtiene maximizando cualquiera de las dos
funciones anteriores. Es obvio que el maximo respecto de se obtiene como el
valor que minimiza (y X) (y X), en definitiva, que los estimadores maximo
verosmiles no son mas que los estimadores mnimo cuadraticos.
Veamos un primer analisis de regresion utilizando la funcion base lm.
9
VALTOT Valor de tasacion total.
PRECIO Precio de venta.
TASA Razon del precio de venta sobre el valor de tasacion total.
BARRIO Barrio en el que se encuentra la vivienda.
Nos planteamos predecir el precio de venta de la vivienda utilizando como variables
predictoras el valor de tasacion del terreno y de las mejoras. Notemos que el valor
total no es mas que la suma de la tasacion del terreno mas el valor de las mejoras.
library(foreign)
x = read.spss(file='../data/venta_casas.sav',to.data.frame=T)
attach(x)
casas.lm = lm(PRECIO ~ VALTERR + VALMEJOR)
casas.lm
> casas.lm
Call:
lm(formula = PRECIO ~ VALTERR + VALMEJOR)
Coefficients:
(Intercept) VALTERR VALMEJOR
767.4080 3.1916 0.4779
E[SS(Error)] = (n p) 2 (4.27)
de donde, un estimador insesgado para la varianza 2 viene dado por
2 = . (4.28)
np
ar() = (X X)1 2 .
vd (4.29)
10
Si (X X)1 = [aij ]i,j=1,...,p entonces el estimador de la varianza de i , var(i ), sera
aii 2 . Recordemos que i es un estimador insesgado de i y por lo tanto su varianza
coincide con su error cuadratico medio. Finalmente el error estandar de i , es decir,
su desviacion tpica (raz cuadrada de su varianza) sera
SE(i ) = aii . (4.30)
Realmente de sabemos mas cosas: = (X X)1 X Y y puesto que Y
Nn (X, 2 Inn ) entonces, por propiedades basicas de la distribucion normal mul-
tivariante (ver apartado 1.4) se tiene que
Np (, (X X)1 2 ). (4.31)
Nota de R 13 (Fichero notaR121) Utilizamos los datos de 12. Una vez reali-
zado el ajuste con la funcion summary podemos observar los valores estimados de
(etiquetado como Residual standard error y los errores estandar de i .
summary(casas.lm)
> summary(casas.lm)
Call:
lm(formula = PRECIO ~ VALTERR + VALMEJOR)
Residuals:
Min 1Q Median 3Q Max
-153634.1 -10451.5 -575.7 8689.8 356418.3
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 7.674e+02 1.290e+03 0.595 0.552
VALTERR 3.192e+00 5.339e-02 59.777 <2e-16 ***
VALMEJOR 4.779e-01 2.552e-02 18.728 <2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
11
Pn
Es habitual denominar a Pi=1 (yi yi )2 , suma de cuadrados del error mientras
que a SS(Regresion) = ni=1 (yi y)2 se le llama suma de cuadrados de la
regresion. Tenemos pues que
Pn
2 (yi y)2 SS(Regresion)
R = Pni=1 2
= . (4.33)
(y
i=1 i y i ) SS(T otal)
El ajuste que estamos realizando se supone que sera tanto mejor cuanto mas pe-
quena sea SS(Error). Tampoco sera natural que SS(Error) fuera nula pues sera
tanto como asumir que los distintos valores aleatorios son iguales a su media. No-
temos que SS(T otal) es una cuantificacion de la variabilidad de los distintos yi sin
tener en cuenta las variables predictoras mientras que SS(Error) nos cuantifica la
variacion residual despues de utilizar las variables predictoras. Es de esperar que un
mejor ajuste vaya acompanado de un valor de SS(Error) pequeno en relacion con
SS(T otal). Esa es la idea del coeficiente de determinacion. Toma valores entre 0 y
1 y cuanto mas cerca de 1 mejor es el ajuste.
Tiene un pequeno inconveniente y es que no tiene en cuenta el numero de va-
riables predictoras que estamos utilizando para predecir la variable respuesta. Una
pequena modificacion de R2 para incorporar esta informacion es el coeficiente de
determinacion ajustado que podemos denotar R2 -ajustado y se define como
Pn
(yi yi )2 /(n p)
R2 ajustado = 1 Pi=1 n 2
, (4.34)
i=1 (yi y) /(n 1)
summary(casas.lm)
> summary(casas.lm)
Call:
lm(formula = PRECIO ~ VALTERR + VALMEJOR)
Residuals:
Min 1Q Median 3Q Max
-153634.1 -10451.5 -575.7 8689.8 356418.3
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 7.674e+02 1.290e+03 0.595 0.552
VALTERR 3.192e+00 5.339e-02 59.777 <2e-16 ***
VALMEJOR 4.779e-01 2.552e-02 18.728 <2e-16 ***
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
12
4.8. Valoracion de las hipotesis del modelo
Un modelo de regresion lineal multiple supone, como hemos visto, varias hipo-
tesis. Es necesario valorar lo razonables, lo asumibles que son estas hipotesis. Las
hipotesis del modelo que vamos a valorar son las siguientes:
1. Tenemos errores independientes, con la misma varianza y con distribucion
normal? Esto es, nos preguntamos si es asumible la hipotesis Nn (0, 2 Inn ).
2. Asumimos que E[Yi | xi ] = 0 + 1 xi1 + . . . + p1 xi,p1 .
Los errores no son directamente observables. Observamos los residuos = y y
que no es lo mismo. Las propiedades de ambos vectores son distintas. En particular,
estamos asumiendo que var() = 2 Inn . Sin embargo, esta afirmacion no es cierta
para los residuos observados . Notemos que
De modo que
Nota de R 15 (Fichero notaR122) Los datos que vamos a utilizar para valorar
las hipotesis del modelo son los datos savings contenido en la librera faraway ([?
]). En la figura 4.5 tenemos un diagrama de puntos donde en abscisas tenemos las
predicciones y en ordenadas tenemos los residuos. No parece en principio que no
podamos asumir una varianza constante. Observemos la figura 4.5 nos indica los
tres pases con los residuos mas extremos: Chile, Filipinas y Zambia.
library(faraway)
data(savings)
attach(savings)
13
Residuals vs Fitted
10
Zambia
5 Philippines
Residuals
0
5
Chile
10
6 8 10 12 14 16
Fitted values
lm(sr ~ pop15 + pop75 + dpi + ddpi)
Figura 4.5:
Cuando no tenemos una varianza constante una opcion es transformar las varia-
bles. Si y es la variable original y h(y) la transformada queremos determinar h de
modo que la transformada tenga varianza constante. Transformaciones habituales
que podemos valorar son la raz cuadrada o el logaritmo de la variable respuesta.
Que tipo de representacion cabe esperar cuando la varianza no es constante?
Veamos distintas representaciones de los residuos frente a los valores ajustados co-
rrespondiendo a varianza constante, varianzas no constantes y situaciones en que
no hay linealidad.
14
par(mfrow=c(3,3))
##Varianza constante
for(i in 1:9)
plot(1:50,rnorm(50)) #fig123a
##Varianza no constante
for(i in 1:9)
plot(1:50,(1:50)*rnorm(50)) #fig123b
##No linealidad
for(i in 1:9)
plot(1:50,cos((1:50)*pi/25)+rnorm(50)) #fig123d
Veamos como se modifica la forma del dibujo q-q con otras distribuciones que
no son normales. Es decir, vamos a valorar la forma de esta representacion grafica
cambiando el modelo.
15
0.0 1.0 2.0
2
1.0
rnorm(50)
rnorm(50)
rnorm(50)
1
0.0
0
1
1.5
1.5
0 10 20 30 40 50 0 10 20 30 40 50 0 10 20 30 40 50
1.0
2
rnorm(50)
rnorm(50)
rnorm(50)
1
1
0.0
0
0
1
1.0
2
0 10 20 30 40 50 0 10 20 30 40 50 0 10 20 30 40 50
2
2
3
2
1
1
rnorm(50)
rnorm(50)
rnorm(50)
1
0
0
1 0
2 1
0 10 20 30 40 50 0 10 20 30 40 50 0 10 20 30 40 50
Figura 4.6:
una distribucion con las colas mas largas que la normal y finalmente la uniforme
como ejemplo de distribucion con las colas mas cortas.
En la figura 4.13 tenemos nueve dibujos q-q realizados con datos simulados con
una distribucion normal. Las figuras 4.14, 4.15 y 4.16 tambien dibujos q-q con datos
simulados correspondientes a la distribucion lognormal (figura 4.14), distribucion de
Cauchy (figura 4.15) y uniforme (figura 4.16).
par(mfrow=c(2,2)) #fig125a
##Con una normal
curve(dnorm)
##Con una lognormal como ejemplo de distribucion asimetrica
curve(dlnorm)
16
40
(1:50) * rnorm(50)
(1:50) * rnorm(50)
(1:50) * rnorm(50)
50
50
0
0
80 40
100
100
0 10 20 30 40 50 0 10 20 30 40 50 0 10 20 30 40 50
100
50
(1:50) * rnorm(50)
(1:50) * rnorm(50)
(1:50) * rnorm(50)
50
0
50
0
50 0
100
50
0 10 20 30 40 50 0 10 20 30 40 50 0 10 20 30 40 50
50 100
80
(1:50) * rnorm(50)
(1:50) * rnorm(50)
(1:50) * rnorm(50)
50
40
0
0
0
100
50
40
0 10 20 30 40 50 0 10 20 30 40 50 0 10 20 30 40 50
Figura 4.7:
##Con una Cauchy como ejemplo de distribucion con colas mas largas
curve(dcauchy)
##con una uniforme como ejemplo de distribucion con colas mas cortas
curve(dunif)
17
sqrt((1:50)) * rnorm(50)
sqrt((1:50)) * rnorm(50)
sqrt((1:50)) * rnorm(50)
10
15
5
5
0
5
15 5
10
10
0 10 20 30 40 50 0 10 20 30 40 50 0 10 20 30 40 50
sqrt((1:50)) * rnorm(50)
sqrt((1:50)) * rnorm(50)
10
5
5
0
5
5
10
15
15
0 10 20 30 40 50 0 10 20 30 40 50 0 10 20 30 40 50
sqrt((1:50)) * rnorm(50)
sqrt((1:50)) * rnorm(50)
5 10
5 10
5 10
0
0
0
10
10
10
0 10 20 30 40 50 0 10 20 30 40 50 0 10 20 30 40 50
Figura 4.8:
residuals(savings.lm)
18
cos((1:50) * pi/25) + rnorm(50)
1 2
1
1
2
3
3
0 10 20 30 40 50 0 10 20 30 40 50 0 10 20 30 40 50
1 2 3
2
1 2
1
0
1
1
2
3
3
0 10 20 30 40 50 0 10 20 30 40 50 0 10 20 30 40 50
2
1
1
0
0
0
2
0 10 20 30 40 50 0 10 20 30 40 50 0 10 20 30 40 50
Figura 4.9:
shapiro.test(residuals(savings.lm))
> shapiro.test(residuals(savings.lm))
data: residuals(savings.lm)
W = 0.987, p-value = 0.8524
19
Normal QQ
3
Zambia
2
Philippines
Standardized residuals
1
0
1
2
Chile
2 1 0 1 2
Theoretical Quantiles
lm(sr ~ pop15 + pop75 + dpi + ddpi)
Figura 4.10:
Normal QQ Plot
10
5
Residuos
0
5
2 1 0 1 2
Theoretical Quantiles
Figura 4.11:
> dwtest(savings.lm)
Durbin-Watson test
20
0.4
0.6
0.3
dlnorm (x)
dnorm (x)
0.4
0.2
0.2
0.1
0.0
2 1 0 1 2 2 1 0 1 2
x x
dunif (x)
0.15
0.05
3 2 1 0 1 2 3 3 2 1 0 1 2 3
x x
Figura 4.12:
data: savings.lm
DW = 1.9341, p-value = 0.3897
alternative hypothesis: true autocorrelation is greater than 0
21
Normal QQ Plot Normal QQ Plot Normal QQ Plot
2
Sample Quantiles
Sample Quantiles
Sample Quantiles
2
1
1
0
0
0
2 1
2
2
2 1 0 1 2 2 1 0 1 2 2 1 0 1 2
2
2
Sample Quantiles
Sample Quantiles
Sample Quantiles
2
1
1
0
0
0
1
2
2
2 1 0 1 2 2 1 0 1 2 2 1 0 1 2
Sample Quantiles
Sample Quantiles
2
2
1
0
0
1.5
2
2 1 0 1 2 2 1 0 1 2 2 1 0 1 2
Figura 4.13:
library(faraway)
data(savings)
savings.lm = lm(sr ~ pop15 + pop75 + dpi + ddpi, savings)
#Calculamos las influencias
savings.inf = influence(savings.lm)
savings.inf$hat
plot(savings.lm,which=5) #fig128a
22
Normal QQ Plot Normal QQ Plot Normal QQ Plot
8 10
12
Sample Quantiles
Sample Quantiles
Sample Quantiles
6
8
4
4
4
2
2
0
0
0
2 1 0 1 2 2 1 0 1 2 2 1 0 1 2
8
Sample Quantiles
Sample Quantiles
Sample Quantiles
6
6
6
4
4
4
2
2
2
0
0
0
2 1 0 1 2 2 1 0 1 2 2 1 0 1 2
5
6
Sample Quantiles
Sample Quantiles
Sample Quantiles
6
4
4
3
4
2
2
2
1
0
0
0
2 1 0 1 2 2 1 0 1 2 2 1 0 1 2
Figura 4.14:
las varianzas de los errores son iguales entre si. En otro caso esto no es cierto. Si
las varianzas de los errores no son iguales (tenemos heterocedasticidad) entonces la
estudentizacion no hace homogeneas las varianzas de los residuos.
Algunos autores (y programas) tienden a usar en lugar de los residuos originales,
los residuos estudentizados.
Una observacion anomala es una observacion que no se ajusta a nuestro mo-
delo. Hemos de protegernos frente a este tipo de puntos. Un test para observaciones
anomalas es util si nos permite distinguir entre observaciones que son realmente
anomala y aquellas que simplemente tienen un residuo grande aunque no excepcio-
nalmente grande.
Para detectar este tipo de puntos, lo que hacemos es excluir el punto i-esimo y
2
ajustamos el modelo sin ese punto obteniendo los estimadores (i) y (i) . Tendremos
para el punto i-esimo la siguiente estimacion
23
Normal QQ Plot Normal QQ Plot Normal QQ Plot
40
80
Sample Quantiles
Sample Quantiles
Sample Quantiles
10
20
40
10
0
0
30
20
40
2 1 0 1 2 2 1 0 1 2 2 1 0 1 2
50
Sample Quantiles
Sample Quantiles
Sample Quantiles
20 0
30
0 10
10
60
20
10
2 1 0 1 2 2 1 0 1 2 2 1 0 1 2
Sample Quantiles
Sample Quantiles
5
100
50
0
10 5
300
50
2 1 0 1 2 2 1 0 1 2 2 1 0 1 2
Figura 4.15:
Puesto que cada uno de los ti sigue una distribucion conocida podemos contrastar si
tenemos una observacion anomala. En principio el procedimiento sera simplemente
fijar un nivel de significacion y determinar el percentil 1 2 de una distribucion
t de Student con n p 1 grados de libertad. Si denotamos el percentil como
tnp1,1 2 entonces residuos que no esten en el intervalo [tnp1,1 2 , tnp1,1 2 ]
seran sospechosos. Esto no es adecuado. Porque estamos analizando n residuos
estudentizados. Con uno solo s que sera aplicable el razonamiento. Tenemos un
problema de muchos tests simultaneamente considerados. Si aplicamos la correccion
de Bonferroni tendramos que corregir el nivel de significacion y trabajar con
/n. Por tanto, consideramos como sospechosos aquellos residuos estandarizados
,t
que esten fuera del intervalo [tnp1,1 2n ].
np1,1 2n
24
Normal QQ Plot Normal QQ Plot Normal QQ Plot
1.0
1.0
Sample Quantiles
Sample Quantiles
Sample Quantiles
0.8
0.6
0.6
0.4
0.2
0.2
0.0
2 1 0 1 2 2 1 0 1 2 2 1 0 1 2
Sample Quantiles
Sample Quantiles
0.8
0.8
0.8
0.4
0.4
0.4
0.0
0.0
0.0
2 1 0 1 2 2 1 0 1 2 2 1 0 1 2
Sample Quantiles
Sample Quantiles
0.8
0.8
0.8
0.4
0.4
0.4
0.0
0.0
0.0
2 1 0 1 2 2 1 0 1 2 2 1 0 1 2
Figura 4.16:
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)
Figura 4.17:
25
Nota de R 22 (Fichero notaR130) Calculamos para los datos savings los resi-
duos estudentizados con la funcion rstudent. La pregunta que nos hacemos es si
alguno de estos residuos es muy grande o muy pequeno. Comparamos el modulo de
los residuos estandarizados con tnp1,1 2n
.
#Residuos estudentizados
savings.rs = rstudent(savings.lm)
#Distancia de Cook
plot(savings.lm,which=4) #fig129a
26
Cooks distance
Libya
0.25
0.20
Cooks distance
0.15
Japan
0.10
Zambia
0.05
0.00
0 10 20 30 40 50
Obs. number
lm(sr ~ pop15 + pop75 + dpi + ddpi)
Figura 4.18:
1
siendo L(, ) = n exp{ 21 2 (y X) (y X)}, 0 = {(, ) Rp
(2) 2 n
(0, +) : i1 = . . . = ir = 0} y = Rp (0, +). Como es habitual en un test del
cociente de verosimilitudes rechazaramos la hipotesis nula si es pequeno (menor
que una cierta constante) que se prueba es equivalente a que
SS(Error)0 SS(Error)
SS(Error)
sea grande (mayor que una cierta constante). Denotamos por SS(Error)0 la suma
de cuadrados del error bajo la hipotesis nula y SS(Error) la suma de cuadrados
sobre todo el espacio parametrico. Bajo la hipotesis nula se verifica que
SS(Error)0 SS(Error)
2r
2 r
y
SS(Error)
2np
2 (n p)
ademas ambas cantidades son independientes. Por ello se verifica que
(SS(Error)0 SS(Error) )/r
F = Fr,np .
(SS(Error) )/(n p)
De modo que rechazaremos la hipotesis nula de que H0 : i1 = . . . = ir = 0 si
F > Fr,np,1
((y 1n y) (y 1n y) (y X ) (y X ))/(p 1)
F = Fp1,np .
(y X ) (y X )/(n p)
27
Como segundo caso tendramos la situacion en que contrastamos que un solo coe-
ficiente vale cero, es decir, la hipotesis nula H0 : i = 0 frente a la alternativa
H1 : i 6= 0. Tenemos que bajo la hipotesis nula indicada
i
ti = tnp
SE(i )
o bien si
F = t2i > F1,np,1 2 .
Ambos procedimientos son equivalentes como se puede ver facilmente.
library(faraway)
data(savings)
attach(savings)
summary(savings.lm)
> summary(savings.lm)
Call:
lm(formula = sr ~ pop15 + pop75 + dpi + ddpi, data = savings)
Residuals:
Min 1Q Median 3Q Max
-8.2422 -2.6857 -0.2488 2.4280 9.7509
Coefficients:
Estimate Std. Error t value Pr(>|t|)
(Intercept) 28.5660865 7.3545161 3.884 0.000334 ***
pop15 -0.4611931 0.1446422 -3.189 0.002603 **
pop75 -1.6914977 1.0835989 -1.561 0.125530
dpi -0.0003369 0.0009311 -0.362 0.719173
ddpi 0.4096949 0.1961971 2.088 0.042471 *
---
Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
28
Residual standard error: 3.803 on 45 degrees of freedom
Multiple R-Squared: 0.3385, Adjusted R-squared: 0.2797
F-statistic: 5.756 on 4 and 45 DF, p-value: 0.0007904
i tnp,1 2 SE(i ).
confint(savings.lm)
> confint(savings.lm)
2.5 % 97.5 %
(Intercept) 13.753330728 43.378842354
pop15 -0.752517542 -0.169868752
pop75 -3.873977955 0.490982602
dpi -0.002212248 0.001538444
ddpi 0.014533628 0.804856227
E[Y |x0 ] = x0 .
ar(x0 ) = x0 (X X)1 x0 2 .
vd
Y = x0 + .
x0
29
pero hay que considerar la varianza anadida por el error de modo que la varianza
al predecir Y dado x0 sera
var(x0 ) + 2
que estimaramos como
30
le falta la variable considerada) es mayor. Si este p-valor es mayor que un valor
previamente especificado entonces eliminamos la variable del modelo. Y as conti-
nuamos hasta que al eliminar una variable el p-valor correspondiente sea menor que
el elegido.
El procedimiento seleccion forward (o hacia adelante) empezamos con un
modelo en el cual solamente tenemos la constante. Elegimos para entrar la variable
tal que cuando se incorpora el modelo cambia lo mas posible. Esto es, el p-valor es
el mas significativo. Si el p-valor de la comparacion de los modelos es menor que
(siempre elegido antes de iniciar el proceso de seleccion y no reajustado a lo largo del
mismo) entonces la variable entra en el modelo. Continuamos hasta que el modelo
no cambia significativamente.
El procedimiento mas usado es el seleccion stepwise (hacia adelante y hacia
atras). Vistos los anteriores es de esperar como funciona este metodo. Despues de la
inclusion de una variable consideramos la posible exclusion de las variables que estan
en el modelo. Si es posible eliminar una lo hacemos y nos planteamos la inclusion
de la variable que produzca un cambio mas significativo.
Nota de R 27 (Fichero notaR146) Utilizamos los datos state y aplicamos un
procedimiento de seleccion backward.
data(state)
statedata = data.frame(state.x77,row.names=state.abb,check.names=T)
g = lm(Life.Exp~.,data=statedata)
summary(g)
g=update(g,.~.-Area)
summary(g)
g=update(g,.~.-Illiteracy)
summary(g)
g=update(g,.~.-Income)
summary(g)
g=update(g,.~.-Population)
summary(g)
31
data(state)
statedata = data.frame(state.x77,row.names=state.abb,check.names=T)
g = lm(Life.Exp ~ ., data=statedata)
step(g)
> step(g)
Start: AIC= -22.18
Life.Exp ~ Population + Income + Illiteracy + Murder + HS.Grad +
Frost + Area
32
- Murder 1 34.816 58.124 15.528
Call:
lm(formula = Life.Exp ~ Population + Murder + HS.Grad + Frost, data = statedata)
Coefficients:
(Intercept) Population Murder HS.Grad Frost
7.103e+01 5.014e-05 -3.001e-01 4.658e-02 -5.943e-03
library(MASS)
data(state)
statedata = data.frame(state.x77,row.names=state.abb,check.names=T)
g = lm(Life.Exp ~ ., data=statedata)
stepAIC(g)
#Regresion multiple
x= read.table(file="../data/abalone.dat",sep=",")
attach(x)
y.fit = lm (fmla,data=x)
summary(y.fit)
plot(y.fit)
x=x[-2052,]
attach(x)
33
xnam <- paste("V", 1:8, sep="")
(fmla <- as.formula(paste("y ~ ", paste(xnam, collapse= "+"))))
y = log(x[,9])
y.fit = lm (fmla,data=x)
summary(y.fit)
plot(y.fit)
x=x[-1418,]
attach(x)
y.fit = lm (fmla,data=x)
summary(y.fit)
plot(y.fit)
x=read.table(file="../data/agua.txt",header=T)
attach(x)
34
Nota de R 31 (Fichero notaR141) Las variables son las siguientes:
Variable Description
M percentage of males aged 14-24
So indicator variable for a southern state
Ed mean years of schooling
Po1 police expenditure in 1960
Po2 police expenditure in 1959
LF labour force participation rate
M.F number of males per 1000 females
Pop state population
NW number of nonwhites per 1000 people
U1 unemployment rate of urban males 14-24
U2 unemployment rate of urban males 35-39
GDP gross domestic product per head
Ineq income inequality
Prob probability of imprisonment
Time average time served in state prisons
Crime rate of crimes in a particular category per head of population
x= read.table(file="../data/uscrime.txt",header=T)
attach(x)
summary(crime.lm)
summary(crime.lm2)
plot(crime.lm2)
35
36
Captulo 5
Analisis cluster
1
pues no existe la palabra) son metodos de particionamiento y los tratamos en la
seccion 5.3.
Empezamos viendo un conjunto de datos que nos sugieran el problema y como
tratarlo.
library(mvtnorm)
limite.x = c(-1,8)
limite.y = limite.x
x1= rmvnorm(n=100, mean=c(1,1))
x2= rmvnorm(n=100, mean=c(3.3,4.1))
x3= rmvnorm(n=100, mean=c(6,5.5))
if(dib) postscript(file="fig109a.ps",horizontal=F)
plot(x1,xlim=limite.x,ylim=limite.y)
points(x2,pch=2)
points(x3,pch=3)
if(dib) dev.off()
Una referencia muy adecuada que se puede consultar es el texto de [10]. Cualquier
texto de reconocimiento de patrones es adecuado.
En lo que sigue vamos a basarnos fundamentalmente en la librera cluster [12].
5.1. Disimilaridades
Empezamos tratando el problema de cuantificar el grado de proximidad, de
similaridad entre dos puntos en el espacio de dimension d. Tradicionalmente este
tema en Matematicas se ha formalizado a traves del concepto de distancia o metrica.
Una metrica es una funcion que a cada par de puntos x, y Rd le asocia un valor
positivo de modo que cuando mayor es mas distantes son, mas alejados estan. Como
siempre la formalizacion matematica de un concepto intuitivo ha de ser prudente
y pedir que se verifiquen ciertos axiomas que resulten razonables y generalmente
admisibles. En concreto la funcion d definida en el espacio producto Rd Rd se dice
que es una metrica si verifica:
No negativa d(x, y) 0.
Un punto dista 0 de s mismo d(x, x) = 0.
Simetra d(x, y) = d(y, x).
2
8
6
4
x1[,2]
2
0
0 2 4 6 8
x1[,1]
Figura 5.1:
3
library(mvtnorm)
#Distancia eucldea
dist(x,method = "euclidean")
#Distancia de Manhattan
dist(x,method = "manhattan")
data(agriculture)
daisy(agriculture, metric = "euclidean", stand = FALSE)
data(pluton)
daisy(pluton, metric = "euclidean", stand = FALSE)
Con mucha frecuencia nos encontramos trabajando con variables que aun siendo
continuas estan medidas en escalas muy diversas o bien tenemos variables que son
continuas, otras que son binarias, otras categoricas con mas de dos categoras o bien
variable ordinales. En resumen, todos los posibles tipos de variables simultaneamen-
te considerados. Es lo habitual. Una variable binaria la codificamos habitualmente
como 1 y 0 indicando presencia o ausencia del atributo que estemos considerando.
En una variable categorica la codificacion es completamente arbitraria y por lo tanto
no tiene sentido la aplicacion de una de estas distancias.
Todo esto plantea el hecho de que no es recomendable, ni tampoco facil, en un
banco de datos con distintos tipos de variables considerar una metrica o distancia,
esto es, algo que verifique las propiedades anteriores. Son demasiado exigentes estas
propiedades. Lo que se hace es proponer medidas entre los vectores de caracters-
ticas que tienen algunas de las propiedades y son, ademas, razonables. Por ello no
hablaremos, en general, de una distancia o una metrica, sino de una medida de
disimilaridad. Finalmente, valores grandes estaran asociados con vectores de carac-
tersticas que tienen una mayor diferencia. Se han propuesto distintas medidas de
disimilaridad entre variables cualitativas (binarias simetricas o asimetricas, cuali-
tativas, ordinales) y cuantitativas. En lo que sigue comentamos con algun detalle
la que lleva la funcion daisy de la librera cluster. Es una opcion muy generica y
razonable.
Vamos a ir viendo como se plantea el problema cuando solo tenemos un tipo de
variable no cuantitativa y finalmente veremos como combinarlo todo en una sola
medida de disimilaridad.
Supongamos descrita al individuo o caso mediante d variables binarias. Es na-
tural construir la tabla de contingencia 2 2 que aparece en la tabla 5.1
donde las filas corresponden con el individuo i y las columnas con el individuo j.
Estamos denotando por A el numero de variables en que coinciden los dos indivi-
duos con un valor uno de la variable correspondiente, con B lo mismo pero valiendo
4
Cuadro 5.1: Conteos asociados a dos casos descritos por variables binarias
1 0
1 A B A+B
0 C D C+D
A+C B+D d=A+B+C+D
5
Hemos visto como tratar cada tipo de variable aisladamente. El problema es
combinar todas ellas en una sola medida de disimilaridad. La funcion daisy de
cluster utiliza la siguiente medida.
Pd (k) (k)
k=1 ij dij
d(i, j) = Pd (k)
, (5.3)
k=1 ij
(k)
donde ij vale uno cuando las medidas xik y xjk no son valores faltantes y cero
(k)
en otro caso. ij vale 0 cuando la variable k es binaria asimetrica y tenemos entre
(k)
los individuos i y j un acoplamiento 0-0. El valor dij es lo que contribuye a la
disimilaridad entre i y j la variable f . Si la variable k es binaria o categorica entonces
(k)
dij es definida como
(k)
dij = 1 si xik 6= xjk y 0 en otro caso.
Si todas las variables son categoricas entonces 5.3 nos da el numero de acoplamientos
del total de pares disponibles, en definitiva, el coeficiente de acoplamiento simple. Si
todas son variables binarias simetricas entonces obtenemos otra vez el coeficiente de
acoplamiento simple. Si las variables son binarias asimetricas entonces obtenemos
el coeficiente de Jaccard. Si una variable es numerica entonces
donde h vara entre todos los individuos con valor no faltante de la variable k.
Cuando todas las variables con las que trabajamos son numericas la medida de
disimilaridad es la distancia de Manhattan.
library(cluster)
help(flower)
daisy(flower, type = list(asymm = 3))
6
Enlace simple La disimilaridad entre los dos grupos es el mnimo de las disimi-
laridades entre las observaciones de uno y de otro. Tomamos la disimilaridad
de los objetos que mas se parecen en uno y otro grupo.
d(A, B) = mn d(a, b)
aA,bB
Enlace completo Ahora tomamos como disimilaridad entre los grupos como el
maximo de las disimilaridades, en definitiva, la disimilaridad entre los objetos
mas alejados o mas distintos.
7
Paso 4 Volvemos al paso 1.
Hay una representacion grafica muy utilizada para describir los resultados de
un cluster jerarquico aglomerativo como el que acabamos de describir. Esta repre-
sentacion tiene el nombre de dendograma. En el dendograma se va mostrando
a que valor de la medida de disimilaridad se produce la union de los grupos y si-
multaneamente que grupos se estan uniendo para esa disimilaridad. Tambien nos
permite una valoracion rapida de cuantos grupos puede haber en el banco de datos.
Simplemente trazando una linea horizontal a la altura en que tengamos el numero
de grupos que pensamos que puede haber.
Nota de R 35 (Fichero notaR113) Aplicamos un procedimiento de particiona-
miento de las k-medias con el algoritmo de Hartigan-Wong [8]. Vemos que como
resultado tenemos la clasificacion final de cada individuo en un grupo, el vector de
medias de cada grupo que son los centros de los grupos. Como medida de lo compac-
tos que son los grupos encontrados tenemos tambien la suma de cuadrados de cada
grupos. Notemos que la suma de todos estos cuadrados es la que hemos minimizado
imponiendo simplemente el numero total de grupos.
x=read.table("..//data//descriptores.txt")
y = x[,2:ncol(x)]
#Tama~
no de los clusters
y.km$size
8
5.3.1. Metodo de las k-medias
El primer procedimiento que vamos a ver es el metodo de las k-medias (que por
alguna extrana razon en la literatura de Inteligencia Artificial se le llama de las
c-medias lo que demuestra que cada persona copia a sus amigos o, simplemente,
conocidos). Supongamos que tenemos C1 , . . . , Ck una particion de {1, . . . , n}. Un
modo bastante natural de valorar la calidad de del agrupamiento que la particion
nos indica sera simplemente considerar la siguiente funcion.
k X
X
d(xj , xCi )2 , (5.4)
i=1 jCi
1 X
xCi = xj , (5.5)
|Ci |
jCi
es el vector de medias del grupo cuyos ndices estan en Ci . Una particion sera tanto
mejor cuanto menor sea el valor de la funcion dada en 5.4. El procedimiento de
agrupamiento de las k-medias simplemente se basa en elegir como particion de los
datos aquella que nos da el mnimo de la funcion objetivo considerada en ecuacion
5.4. Notemos que en muchos textos se hablan del algoritmo de las k-medias y se
identifica con un procedimiento concreto para encontrar el mnimo de la funcion.
Aqu entendemos el procedimiento como la minimizacion de la funcion objetivo.
De hecho, R ofrece hasta cuatro posibles procedimientos de los muchos que cabe
proponer. Hay que diferenciar claramente el procedimiento del metodo de aplicacion
del mismo, del metodo de obtencion de dicho mnimo.
Es importante darnos cuenta de que el procedimiento que acabamos de ver esta
basado en la utilizacion de la distancia eucldea y en que, dado un grupo, podemos
calcular el vector de medias y esto solo lo podemos hacer si todas las variables son
cuantitativas. Es un procedimiento que funciona muy bien con grandes volumenes
de datos.
9
En el metodo de particionamiento alrededor de los mediodes nos planteamos en-
contrar las observaciones m1 , . . . , mk que minimizan el valor dado en la ecuacion
5.6.
x=read.table("..//data//descriptores.txt")
y = x[,2:ncol(x)]
y.med = pam(y,5)
y.med$medoids
5.4. Silueta
Veamos como se construye la silueta. Para cada objeto i, sea A el cluster al cual
lo ha asignado el procedimiento cluster que empleamos y calculamos a(i) la disimi-
laridad media de i con todos los demas individuos del grupo A. Obviamente estamos
asumiendo que A contiene al menos otro objeto. Consideremos ahora un cluster C
diferente de A y definamos d(i, C) como la disimilaridad media de i con los objetos
de C. Despues de calcular d(i, C) para todos los clusters C 6= A, seleccionamos el
que tiene el mnimo valor:
b(i) = mn d(i, C).
C6=A
El cluster B donde se alcanza este mnimo, es decir, d(i, B) = b(i) se le llama vecino
del objeto i. Definimos s(i) como
a(i)
s(i) = 1 si a(i) < b(i), (5.7)
b(i)
= 0 si a(i) = b(i), (5.8)
b(i)
= 1 si a(i) > b(i). (5.9)
a(i)
b(i) a(i)
s(i) = .
max{a(i), b(i)}
En el caso en que el cluster A contenga un unico objeto no esta muy claro como
definir a(i). Tomaremos s(i) = 0 que es una eleccion arbitraria. Se comprueba con
facilidad que 1 s(i) 1 para cualquier objeto i.
Para interpretar el significado de s(i) es bueno ver los valores extremos. Si s(i)
es proximo a uno significa que a(i) es mucho menor que b(i) o lo que es lo mismo,
que el objeto i esta bien clasificado pues la disimilaridad con los de su propio grupo
es mucho menor que la disimilaridad con los del grupo mas proximo que no es el
suyo. Un valor proximo a cero significa que a(i) y b(i) son similares y no tenemos
muy claro si clasificarlo en A o en B. Finalmente un valor de s(i) proximo a 1
significa que a(i) es claramente mayor que b(i). Su disimilaridad media con B es
menor que la que tiene con A. Estara mejor clasificado en B que en A. No esta
bien clasificado.
10
Cuadro 5.2: Silueta media y estructura en un conjunto de datos
SC Interpretacion
0,71 1,00 Fuerte estructura
0,51 0,70 Estructura razonable
0,26 0,50 Estructura debil. Probar otros metodos
0,25 No se encuentra estructura
Los valores de s(i) apareceran representados para cada cluster en orden decre-
ciente. Para cada objeto se representa una barra horizontal con longitud propor-
cional al valor s(i). Una buena separacion entre grupos o cluster viene indicada
por unos valores positivos grandes de s(i). Ademas de la representacion grafica se
proporciona un analisis descriptivo. En concreto la media de los valores de la silueta
dentro de cada cluster y la media de la silueta para todo el conjunto de datos. La
clasificacion sera tanto mejor cuanto mayor sean estos valores medios. De hecho, se
puede decidir el numero de grupos en funcion del valor medio de las silueta sobre
toda la muestra. Vamos probando distintos numeros de grupos y nos quedamos con
el numero que nos da el maximo dado por
Cuando podemos decir que hay estructura de grupos en los datos que estamos
analizando? Experiencias con datos sugieren la tabla 5.2.
x=read.table("..//data//descriptores.txt")
y = x[,2:ncol(x)]
y.med = pam(y,5)
#Hacemos la silueta
y.si = silhouette(y.med)
summary(y.si)
> summary(y.si)
Silhouette of 5773 units in 5 clusters from pam(x = y, k = 5) :
Cluster sizes and average silhouette widths:
1130 385 1694 1444 1120
0.29803506 0.36812793 0.14175502 0.29011448 0.09241103
Individual silhouette widths:
Min. 1st Qu. Median Mean 3rd Qu. Max.
-0.3259 0.1022 0.2019 0.2150 0.3231 0.5523
11
#y la representamos graficamente
plot(y.si) #fig115a
Figura 5.2:
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)
12
plot(si4, nmax = 80, cex.names = 0.5)
Figura 5.3:
Figura 5.4:
13
Silhouette plot of (x = cutree(ar, k = 2), dist = daisy(ruspini))
n = 75 2 clusters Cj
1
j : nj | aveiCj si
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 1 : 35 | 0.58
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
2 : 40 | 0.59
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
Figura 5.5:
Tenemos cuatro variables que nos dan las puntuaciones obtenidas en 25 escuelas
de New Haven en aritmetica y lectura al principio del cuarto curso y al principio
del sexto curso.
Hacemos un analisis cluster jerarquico. Observando el dendograma parece razo-
nable considerar tres grupos. Aplicamos un particionamiento alrededor de los me-
diodes con tres grupos y valoramos el resultado.
Si probamos con dos o cuatro vemos que no mejora el resultado global del analisis
cluster.
#Datos achieve
library(cluster)
x= read.table('../data/achieve.txt')
names(x) = c("centro","lec4","aritme4","lec6","aritme6")
attach(x)
y = x[,2:ncol(x)]
y.ag = agnes(y)
plot(y.ag)
y.pam = pam(y,3)
summary(y.pam)
y.si = silhouette(y.pam)
plot(y.si)
14
#Vamos a probar con distintos numero de grupos.
y.pam = pam(y,2)
summary(y.pam)
y.si = silhouette(y.pam)
plot(y.si)
y.pam = pam(y,4)
summary(y.pam)
y.si = silhouette(y.pam)
plot(y.si)
y.pam = pam(y,3)
y.km = kmeans(y,3)
table(y.pam$cluster,y.km$cluster)
#Datos achieve
library(cluster)
library(foreign)
x= read.spss('../data/birth.sav',to.data.frame=T)
names(x) = c("country","birth","death")
attach(x)
y = x[,2:ncol(x)]
y.ag = agnes(y)
plot(y.ag)
15
#Parece que hay tres grupos
y.pam = pam(y,3)
summary(y.pam)
y.si = silhouette(y.pam)
plot(y.si)
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)
16
Captulo 6
Analisis discriminante o de
como clasificar con muestra
de entrenamiento
Discriminar es clasificar. Es una palabra mal vista. Cuando una persona le dice a
otra: Usted me discrimina esta indicando algo negativo en la medida en que piensa
que lo esta separando para perjudicarle. Se asume la discriminacion como algo que
se realiza en un sentido negativo. Pues no. El analisis discriminante simplemente se
refiere al problema de clasificar en distintos grupos un conjunto de observaciones
vectoriales. Clasificar y discriminar se usan como sinonimos.
Tenemos distintos conjuntos de datos multivariantes. Que quiere que tenemos
grupos y que pretendemos hacer con ellos? Una biologa ha recogido una serie de
animales y ha observado en cada uno unas caractersticas numericas. Esta biologa
ha podido clasificar a los animales en distintas especies utilizando las variables x
de las que dispone y, posiblemente, algunas otras cuya consecucion ya no es tan
simple y, en ocasiones, ni posible. Esta interesada en disenar un procedimiento que,
partiendo de las variables de las que siempre dispone x, le permita decidir la especie
a la que pertenece un animal futuro del cual solamente tiene las caractersticas x.
Tiene esta persona un problema de clasificacion que pretende hacer bien y clasificar
a cada animal en su especie con un esfuerzo pequeno.
Otro ejemplo puede ser el siguiente. Una persona ha pasado una enfermedad
(como la hidatidosis) y por lo tanto guarda en su organismo anticuerpos frente al
virus que lo infecto y le causo la enfermedad. A este individuo se le controla a lo
largo de los anos. Cuando se le aplica un procedimiento diagnostico el resultado
puede ser positivo debido a dos razones: el individuo ha recado en la enfermedad y
por lo tanto ha de ser tratado. Sin embargo, si el procedimiento es muy sensible el
resultado positivo del test puede ser simplemente producidos por los anticuerpos que
la persona conserva. Diferenciar una situacion de la otra supone otra exploracion
(placas del torax) y, por ello, una complicacion adicional. En la realizacion del test
se han recogido la presencia o ausencia de una serie de aminoacidos. Tenemos que
nuestro vector de caractersticas son variables binarias o dicotomicas y pretendemos
poder decidir a partir de ellas si la persona esta sana sin anticuerpos, sana con
anticuerpos o finalmente enferma utilizando la presencia o ausencia de los distintos
anticuerpos. Este es un segundo problema de interes a tratar aqu.
Pretendemos clasificar a un individuo dado utilizando algunas caractersticas
del mismo. Pero para poder hacerlo tenemos que conocer para una muestra, que
podemos llamar muestra de entrenamiento (training sample), en que grupo esta
cada individuo con los que trabajamos. Esto hace bastante natural el nombre mas
1
utilizado en el contexto de la Informatica de clasificacion supervisada.
library(foreign)
> x
IND GRUPO GRAV PH OSMO CONDUC UREA CALCIO
2 2 ausencia de cristales 1.017 5.74 577 20.0 296 4.49
3 3 ausencia de cristales 1.008 7.20 321 14.9 101 2.36
4 4 ausencia de cristales 1.011 5.51 408 12.6 224 2.15
5 5 ausencia de cristales 1.005 6.52 187 7.5 91 1.16
6 6 ausencia de cristales 1.020 5.27 668 25.3 252 3.34
7 7 ausencia de cristales 1.012 5.62 461 17.4 195 1.40
> summary(x)
IND GRUPO GRAV PH
Min. : 2.00 ausencia de cristales :44 Min. :1.005 Min. :4.760
1st Qu.:21.00 presencia de cristales:33 1st Qu.:1.012 1st Qu.:5.530
Median :40.00 Median :1.018 Median :5.940
Mean :40.31 Mean :1.018 Mean :6.041
3rd Qu.:60.00 3rd Qu.:1.024 3rd Qu.:6.400
Max. :79.00 Max. :1.040 Max. :7.940
OSMO CONDUC UREA CALCIO
Min. : 187.0 Min. : 5.10 Min. : 10.0 Min. : 0.17
1st Qu.: 410.0 1st Qu.:14.30 1st Qu.:159.0 1st Qu.: 1.45
Median : 594.0 Median :21.40 Median :255.0 Median : 3.16
Mean : 613.6 Mean :20.91 Mean :262.4 Mean : 4.16
2
3rd Qu.: 803.0 3rd Qu.:27.00 3rd Qu.:362.0 3rd Qu.: 6.19
Max. :1236.0 Max. :38.00 Max. :620.0 Max. :14.34
library(foreign)
x= read.spss(file='../data/diabetes.sav',to.data.frame=T)
> x
IND PESO GPB GAREA IAREA SSPG TIPO LIAREA
1 1 0.81 80 356 124 55 control 4.820282
2 2 0.95 97 289 117 76 control 4.762174
136 136 1.01 120 636 314 220 diabetes manifiesta 5.749393
137 137 1.19 138 741 219 209 diabetes manifiesta 5.389072
summary(x)
> summary(x)
IND PESO GPB GAREA
Min. : 1 Min. :0.7100 Min. : 70.0 Min. : 269.0
1st Qu.: 37 1st Qu.:0.8800 1st Qu.: 90.0 1st Qu.: 352.0
Median : 73 Median :0.9800 Median : 97.0 Median : 413.0
Mean : 73 Mean :0.9773 Mean :122.0 Mean : 543.6
3rd Qu.:109 3rd Qu.:1.0800 3rd Qu.:112.0 3rd Qu.: 558.0
Max. :145 Max. :1.2000 Max. :353.0 Max. :1568.0
IAREA SSPG TIPO LIAREA
Min. : 10.0 Min. : 29.0 diabetes manifiesta:33 Min. :2.303
1st Qu.:118.0 1st Qu.:100.0 diabetes quimica :36 1st Qu.:4.771
Median :156.0 Median :159.0 control :76 Median :5.050
Mean :186.1 Mean :184.2 Mean :5.019
3rd Qu.:221.0 3rd Qu.:257.0 3rd Qu.:5.398
Max. :748.0 Max. :480.0 Max. :6.617
3
este modo vemos la idea basica del metodo de clasificacion basado en probabilida-
des a posteriori. Consideramos en la seccion 6.2 la situacion con dos poblaciones
normales univariantes con la misma varianza y con los parametros conocidos. En
la seccion 6.3 abordamos la situacion con dos poblaciones normales multivariantes.
All consideramos tanto el caso en que las matrices de covarianzas son la misma
como cuando son distintas. En la seccion 6.4 nos planteamos la estimacion de los
vectores de medias y las matrices de covarianzas y vemos la implementacion prac-
tica del metodo. El problema de la reduccion de la dimension dentro del problema
de la clasificacion es considerado en la seccion 6.7
4
p2 = 2/3. Cada urna es una poblacion distinta donde el comportamiento aleatorio
de la misma cantidad es distinto. X en la i-esima poblacion tiene una funcion de
probabilidad
fi (x) = pxi (1 pi )1x con x = 0, 1.
Tenamos unas probabilidades a priori de que X estuviera siendo observada en la
poblacion i-esima que denotamos por (i) donde (1) + (2) = 1 y (1), (2) 0.
Las probabilidades a posteriori obtenidas por la aplicacion del teorema de Bayes
vienen dadas por
fi (x)(i)
(i | x) = .
f1 (x)(1) + f2 (x)(2)
Finalmente nos hemos quedado con la poblacion i tal que tena un valor de (i | x)
mayor, aquella que, una vez observado el valor de X = x, haca mas probable la
poblacion.
5
0.4
0.3
0.2
0.1
0.0
0 2 4 6
Figura 6.1: Dos densidades normales con la misma varianza y distinta media.
pero,
f (x | 1 , )
=
f (x | 2 , )
1 1
exp (x 1 ) 1 (x 1 ) + (x 2 ) 1 (x 2 ) =
2 2
1
exp (1 2 ) 1 x (1 2 ) 1 (1 + 2 ) . (6.1)
2
f (x | 1 , 1 )
Q(x) = log =
f (x | 2 , 2 )
1 |2 | 1 1
log (x 1 ) 1 1
1 (x 1 ) + (x 2 ) 2 (x 2 ) =
2 |1 | 2 2
1 |2 | 1 1 1 1 1
log x (1 2 )x 2x (1 1 2 2 ) . (6.3)
2 |1 | 2
6
Como en el caso anterior asignamos la observacion x a la primera poblacion si
(2)
Q(x) > log .
(1)
(2)
Notemos que ahora Q(x) = log (1) no es un hiperplano sino que tenemos una
superficie no plana.
(2)
Ds (x) > log , (6.6)
(1)
donde
1
Ds (x) = (x (x1 + x2 ) (6.7)
2
y
= S1
p (x1 x2 ). (6.8)
La funcion Ds recibe el nombre de funcion discriminante lineal. La razon es obvia:
clasificamos en uno o en otro grupo utilizando una funcion lineal de las distintas
variables.
7
En el caso particular en que (1) = (2), esto es, consideramos a priori igual-
mente probables ambos grupos entonces la regla de clasificacion propuesta sera:
clasificamos en la poblacion o clase 1 si,
1
x > ( x1 + x2 ).
2
Es es el procedimiento que propuso R.A. Fisher en 1936.
Notemos que las probabilidades de pertenencia a posteriori a cada una de las
poblaciones pueden ser estimadas mediante
(i)f (x|xi , Sp )
(i|x) = . (6.9)
(1)f (x|x1 , Sp ) + (2)f (x|x2 , Sp )
Una vez tenemos las probabilidades a posteriori estimadas el individuo es clasificado
en el grupo que tiene una mayor probabilidad a posteriori.
> z
Call:
lda(GRUPO ~ CALCIO + CONDUC + GRAV + OSMO + PH + UREA, prior = c(1,
1)/2)
Group means:
CALCIO CONDUC GRAV OSMO PH UREA
ausencia de cristales 2.628864 20.55000 1.015364 561.6591 6.125682 232.4318
presencia de cristales 6.202424 21.37879 1.021576 682.8788 5.927273 302.3636
8
CONDUC -0.117156709
GRAV 140.610784925
OSMO 0.003408930
PH -0.125723350
UREA -0.008383726
> attributes(z)
$names
[1] "prior" "counts" "means" "scaling" "lev" "svd" "N"
[8] "call" "terms" "xlevels"
$class
[1] "lda"
##Probabilidades a priori
z$prior
> z$prior
ausencia de cristales presencia de cristales
0.5 0.5
> z$counts
ausencia de cristales presencia de cristales
44 33
z$means
> z$means
CALCIO CONDUC GRAV OSMO PH UREA
ausencia de cristales 2.628864 20.55000 1.015364 561.6591 6.125682 232.4318
presencia de cristales 6.202424 21.37879 1.021576 682.8788 5.927273 302.3636
attributes(z)
> attributes(z)
$names
[1] "class" "posterior" "terms" "call" "xlevels"
##Probabilidades a posteriori
9
z$posterior
> z$class
[1] ausencia de cristales ausencia de cristales ausencia de cristales
[4] ausencia de cristales ausencia de cristales ausencia de cristales
z1$posterior
> z1$posterior
ausencia de cristales presencia de cristales
1 0.7042676259 0.29573237
2 0.8992456041 0.10075440
3 0.8818036171 0.11819638
4 0.9272842171 0.07271578
5 0.6444698875 0.35553011
6 0.9205435042 0.07945650
7 0.3264031028 0.67359690
10
x = read.spss(file='../data/cristal.sav',to.data.frame=T)
x[x==-1] = NA
cc = complete.cases(x)
attach(x[cc,])
z$posterior
> z$posterior
ausencia de cristales presencia de cristales
1 7.658585e-01 0.234141505
2 9.465173e-01 0.053482670
3 9.718836e-01 0.028116449
4 9.811643e-01 0.018835694
5 5.413410e-01 0.458659042
6 9.434295e-01 0.056570538
7 2.934976e-01 0.706502353
z1$posterior
> z1$posterior
ausencia de cristales presencia de cristales
1 8.134756e-01 0.186524405
2 9.593444e-01 0.040655595
3 9.787634e-01 0.021236612
4 9.858064e-01 0.014193607
5 6.114531e-01 0.388546921
6 9.569634e-01 0.043036553
7 3.564571e-01 0.643542909
1
f (x | i , i ) = (2)d/2 | i |1/2 exp{ (x i ) 1
i (x i )}. (6.11)
2
Utilizando el teorema de Bayes tenemos que las probabilidades a posteriori vienen
dadas por
(i)f (x | i , i )
(i | x) = Pk . (6.12)
j=1 (j)f (x | j , j )
11
Un metodo de clasificacion consiste en clasificar al individuo con caractersticas
x en la clase o grupo tal que la probabilidad a posteriori (i | x) es maxima o lo
que es lo mismo: clasificamos en el grupo tal que
Nota de R 45 Consideremos los datos iris tratados originalmente por Fisher. Ve-
mos como se utiliza una muestra para estimar las matrices de covarianzas y los
vectores de medias mientras que clasificamos a los individuos no utilizados en la
estimacion de los parametros.
12
Sp = rep(c("s","c","v"), rep(50,3)))
library(foreign)
x= read.spss(file='../data/diabetes.sav',to.data.frame=T)
attach(x)
summary(x)
library(MASS)
##Discriminante lineal
z = lda(TIPO ~ PESO + GPB + GAREA + IAREA + SSPG, CV=TRUE)
z$class
z$posterior
table(TIPO,z$class)
> table(TIPO,z$class)
#Discriminante cuadratico
13
z = qda(TIPO ~ PESO + GPB + GAREA + IAREA + SSPG, CV=TRUE)
z$class
z$posterior
table(TIPO,z$class)
> table(TIPO,z$class)
14
medias y las matrices de covarianzas y, finalmente, las probabilidades a posteriori
del individuo j en cada clase. Lo clasificamos del modo habitual. Repetimos el
procedimiento para cada j y construimos la tabla correspondiente. En ingles es la
tecnica conocida como leaving one out. Realmente el metodo de clasificacion que
valoramos en cada ocasion no es exactamente el mismo pero no es muy diferente. En
cada ocasion solamente estamos prescindiendo de un caso y los vectores de medias
y matrices de covarianzas no se modifican mucho. Estamos valorando esencialmente
el mismo metodo.
Una segunda opcion; mejor en su validez peor en sus necesidades. Si tenemos una
muestra de tamano n elegimos una muestra sin reemplazamiento de tamano m. Los
m datos seleccionados son utilizadas para estimar las probabilidades a posteriori y
los n m restantes son clasificados y podemos valorar las distintas proporciones de
error. Es una estimacion del error basada en un metodo de aleatorizacion. Si elegimos
las sucesivas muestras con reemplazamiento tendramos un metodo bootstrap.
library(MASS)
table(GRUPO,z1$class)
> table(GRUPO,z1$class)
15
#Analisis discriminante
library(MASS)
x= read.table(file="../data/spambase_data",sep=",")
attach(x)
table(V58,z$class)
> table(V58,z$class)
V58 0 1
0 2622 166
1 263 1550
> table(V58,z$class)
V58 0 1
0 2086 695
1 86 1723
16
z = lda(fmla, data=x, prior = c(1,1)/2,subset=entrenamiento)
y
g X
X ni g
X
B= (xi x )(xi x ) = ni (xi x )(xi x ) (6.18)
i=1 j=1 i=1
Notemos que
W
Sp = (6.19)
ng
Estas matrices reciben el nombre de matrices intra grupos y entre grupos respectiva-
mente. Son las versiones matriciales de las sumas de cuadrados intra y entre grupos
habituales en analisis de la varianza.
Es claro que cuando mas agrupados esten los datos dentro de los grupos y mas
separados esten para grupos distintos tendremos que la magnitud de W ha de ser
menor que la de B. Supongamos que reducimos las observaciones multivariantes xij
a datos univariantes mediante tomando zij = c xij . Las sumas de cuadrados intra
y entre vendran dadas por c W c y c Bc. El cociente Fc = c Bc/c W c nos compara
la variabilidad intra con la variabilidad entre. Fisher (1936) introdujo el analisis
discriminante lineal buscando el vector c tal que el cociente Fc sea el mayor posible.
Ese fue su objetivo inicial.
La matriz W es suma de matrices semidefinidas positivas por lo que es defi-
nida positiva y consideramos su descomposicion de Cholesky dada por W = T T .
Tomamos b = T c. Se tiene
c Bc b (T )1 BT 1 b b Ab
Fc =
=
= = a Aa, (6.20)
c Wc bb bb
donde a = b/ k b k, esto es, a tiene modulo unitario y A = (T )1 BT 1 . Se nos
plantea el problema de maximizar a Aa con la restriccion de k a a k= 1. Por resulta-
dos estandar del algebra lineal se tiene que a1 es el vector propio de A con el mayor
propio 1 verificando que 1 = a1 Aai . Hemos encontrado una combinacion lineal
que, en el sentido que hemos indicado, es optima a la hora de separar los grupos.
Parece logico buscar la siguiente combinacion lineal que verifique el mismo criterio
17
de optimalidad pero que el vector correspondiente sea ortogonal al ya calculado. Nos
planteamos pues maximizar a Aa con la restriccion de k a k= 1 y que sea ortogonal
con el anterior. La solucion viene dada por el vector propio de A asociado a su se-
gundo valor propio por orden de magnitud, 2 (Aa2 = 2 a2 por lo que 2 = a2 Aa2 ).
Procedemos del mismo modo obteniendo k direcciones ortogonales que nos dan las
combinaciones optimas que separan a los grupos. El valor de k es el mnimo entre
el numero de grupos menos uno, g 1 y el numero de datos n, k = mn g 1, n.
Notemos que los sucesivos ar constituyen una base ortonormal tales que
(T )1 BT 1 ar = Aar = r ar ,
cr Sp cs = (n g)1 cr T T cs = ar as = rs , (6.22)
library(foreign)
18
z <- lda( GRUPO ~ CALCIO + CONDUC + GRAV + OSMO + PH + UREA,
prior = c(1,1)/2)
if(dib) postscript(file='fig108a.ps',horizontal=F)
plot(z) #Figura a
if(dib) dev.off()
library(foreign)
x= read.spss(file='../data/diabetes.sav',to.data.frame=T)
attach(x)
if(dib) postscript(file='fig108b.ps',horizontal=F)
plot(z) #Figura b
if(dib) dev.off()
if(dib) postscript(file='fig108c.ps',horizontal=F)
pairs(z) #Figura c
if(dib) dev.off()
1.0
0.8
0.6
0.4
0.2
0.0
2 1 0 1 2 3 4
2 1 0 1 2 3 4
Figura 6.2:
19
6
4
diabetes manifiesta
diabetes manifiesta
diabetes manifiesta
diabetes manifiesta
diabetes manifiesta
diabetes manifiesta
control
2
control
diabetes manifiesta
diabetes
diabetes manifiesta
manifiesta control
control
control
diabetes
diabetesmanifiesta
manifiesta control control
control
control
diabetes manifiesta control
control
control
controlcontrol
control
control control
diabetes manifiesta diabetesdiabetes
manifiesta diabetes manifiestacontrol control control
control
manifiesta control control
control
control
control
controlcontrol
control
control
control control
control
control
control
control
control control
control
control
control
diabetes manifiesta
diabetesdiabetes diabetes
manifiesta quimica control
control control
control
control
diabetes manifiesta diabetes
manifiesta quimica control
control
control control
diabetes control
control
control control
quimica
diabetes manifiesta
diabetes manifiesta control
control
control control
0
diabetes manifiesta
LD2
quimicaquimica control
diabetesdiabetes control
controlcontrol
diabetes manifiesta
diabetes manifiesta control
controlcontrol
diabetes quimica
diabetes quimica
diabetes quimica
control control
controlcontrol
control
diabetes manifiesta
diabetes manifiesta diabetes
diabetes quimica
quimica
diabetes control
quimicaquimica
diabetes manifiestadiabetes quimica diabetes
diabetes manifiesta diabetes quimica
diabetes quimica
diabetes
diabetes quimica
quimica
diabetes manifiesta diabetes quimica
diabetes quimica
control
control
diabetes quimica
diabetes quimica
diabetes quimica
diabetes quimicadiabetes
diabetesquimica
quimica
diabetes manifiesta
diabetes quimica
diabetes manifiesta diabetes
diabetes manifiesta
quimica
diabetes quimica
2
diabetes quimica
diabetes quimica
diabetes quimica
4
6
6 4 2 0 2
LD1
Figura 6.3:
x=read.table(file="../data/wasp.dat",header=T)
attach(x)
z = lda(caste ~TL+WL+HH+HW+TH+TW+G1L+G2Wa,prior=c(1,1)/2)
plot(z)
z = lda(caste ~TL+WL+HH+HW+TH+TW+G1L+G2Wa,prior=c(1,1)/2,CV=TRUE)
20
4 2 0 2
4
control
control
controlcontrol
control
control
control
control
control
control
control
control
control
control
control
control
control
control
control
control control
control
control
control
control control
control
control
control
control
control
control control
control
control
control
control control
control
control
control
control
control
control
control
control
control
control
control
control
control control
control
control
control control
control control
control
control
control
2
control
control
controlcontrol
control
control control
control
diabetes
control quimica
control
control
diabetes
controlquimica
control diabetes
diabetes quimica quimica
diabetes
quimica
diabetes quimica
control
diabetes
diabetes
control quimica
quimica
diabetes manifiesta
diabetes quimica
diabetes
diabetes quimica
quimica
diabetes diabetes
quimica
diabetes
diabetesdiabetesquimica
quimica quimica
diabetes
quimica quimica
diabetes quimica
diabetes quimicadiabetes
diabetes diabetes quimica
quimica
quimica
diabetes
diabetes quimica
diabetes quimica
diabetes
manifiesta quimica
diabetes
diabetes quimica
quimica diabetes manifiesta
0
diabetes quimica
diabetes diabetes
quimica quimica
diabetes quimica
diabetes quimica
diabetes quimicamanifiesta
diabetes
diabetes
diabetes quimica
manifiesta
diabetes quimica
diabetes quimica
LD1 diabetes diabetes
manifiestamanifiesta
diabetes manifiesta
2
diabetes manifiesta
diabetes manifiesta
diabetes manifiesta
diabetes manifiestadiabetes manifiesta
diabetes manifiesta
diabetesmanifiesta
diabetes manifiesta
diabetes manifiesta
diabetes manifiesta
diabetes manifiesta
diabetes manifiesta
diabetes manifiesta
diabetes manifiesta
4
diabetes manifiesta diabetes manifiesta
diabetes manifiesta
diabetes manifiesta
6
diabetes manifiesta
diabetes manifiesta
diabetes manifiesta
diabetes manifiesta
diabetes manifiesta
diabetes manifiesta
diabetes manifiesta
diabetes manifiesta
control
2
control
diabetes manifiesta
diabetes manifiesta control
diabetes manifiesta
control
diabetes control
control
diabetesmanifiesta
diabetes manifiesta manifiesta control
control
control
control
control
control control
control
control
control
control
diabetes manifiesta control
control
diabetes
diabetes manifiesta manifiesta
diabetes manifiesta control control
control
control
control
control
controlcontrol
control
control
control
control
control
control
control
control
control
control
control
control
control
control
control
diabetes diabetes
manifiesta diabetes
manifiesta control
quimica
control control
control
control
diabetes manifiestadiabetes diabetes
manifiestaquimica control
control
control
control
control
control
control
diabetes control
quimica
control
control
diabetes
diabetesmanifiesta
manifiesta control
control
0
diabetes
diabetesquimica
quimica
diabetes quimica
diabetes quimica
diabetes quimica
diabetes quimica
diabetes quimica
4
6 4 2 0 2 4
Figura 6.4:
table(caste,z$class)
cbind(caste,z$posterior)
table(z$class,z.q$class)
library(faraway)
library(MASS)
attach(wbca)
21
names(wbca)
plot(wbca.lda) #fig144a
table(Class,wbca.lda$class)
wbca.lda0$class[train]
table(wbca.lda0$class[train],Class[train])
table(wbca.lda$class,Class)
0.8
0.6
0.4
0.2
0.0
6 4 2 0 2
group 0
0.8
0.6
0.4
0.2
0.0
6 4 2 0 2
group 1
Figura 6.5:
22
Captulo 7
Modelos lineales
generalizados
1
La componente sistematica de un GLM es el vector (1 , . . . , N ) donde
X
i = j xij , con i = 1, . . . , N, (7.2)
j
donde xij esP el valor del j-esimo predictor en el i-esimo individuo. La combina-
cion lineal j j xij es el predictor lineal. Notemos que, como es habitual, se suele
considerar que uno de los predictores xij vale uno para todos los i de modo que
consideramos el termino independiente (que denotaremos a menudo por ).
La tercera componente es la funcion link g. Mediante esta funcion relacionamos
las componentes aleatoria y sistematica. Sea i = E(Yi ) con i = 1, . . . , N . Vamos a
suponer que
i = g(i ) (7.3)
donde la funcion link g la suponemos monotona y diferenciable. En consecuencia
tenemos X
g(i ) = j xij , con i = 1, . . . , N. (7.4)
j
f (y | ) = y (1 )1y =
(1 )[/(1 )]y = (1 ) exp y log (7.5)
1
= , (7.6)
a() = 1 , (7.7)
b(y) = 1, (7.8)
Q() = log . (7.9)
1
Vemos que el parametro natural log 1 es el logit de . Es pues el link canonico.
Los GLM que utilizan un link logit reciben el nombre de modelos logit.
2
de probabilidad de la distribucion de Poisson la podemos expresar como
e y 1
f (y | ) = = exp() exp(y log ), con y = 0, 1, . . . (7.10)
y! y!
Esta familia de distribuciones pertenece a la familia exponencial natural con
= , (7.11)
a() = exp(), (7.12)
1
b(y) = (7.13)
y!
Q() = log . (7.14)
El parametro natural es log y en consecuencia la funcion link canonica es el loga-
ritmo. El modelo que utiliza este link es
X
log = j xij , con i = 1, . . . , N. (7.15)
j
7.1.3. Desviacion
Sean y = (y1 , . . . , yN ) los valores observados y L(; y) la verosimilitud expresada
en terminos del vector de medias = (1 , . . . , N ). Sea L(; y) el maximo de la log-
verosimilitud como funcion de . Si no nos restringimos a un modelo determinado
entonces
L(; y) = L(y; y). (7.16)
En este modelo perfecto se tiene un parametro distinto por observacion. Este modelo
lo llamamos modelo saturado. Este modelo no tiene ninguna utilidad pues no supone
ninguna reduccion de los datos, ningun tipo de modelizacion con lo que esto supone
de simplificacion. Sin embargo, es un modelo base con el que compararse.
Definimos la desviacion como
2 L(; y) L(y; y) . (7.17)
3
Cuadro 7.1: Relacion entre el ronquido (filas) y la enfermedad cardIaca (columnas)
Si No
Nunca 24 1355
Ocasionalmente 35 603
Casi cada noche 21 192
Cada noche 30 224
(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 ), (7.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 7.22 de un modo simple. Su-
pongamos que los vectores x1 y x2 son iguales salvo en la componente i-esima. En
definitiva, ambos individuos coinciden salvo en dicha componente y supongamos,
ademas, que difieren en una unidad ambos vectores para la i-esima componente.
Tenemos, bajo estas hipotesis, la siguiente ecuacion:
d
P (Y j|x1 )/P (Y > j|x1 ) X
= i (x1i x2i ) = ei (x1i x2i ) = ei . (7.23)
P (Y j|x2 )/P (Y > j|x2 ) i=1
Mantenidas todas las demas variables constantes tenemos que el cambio de los odds
de la funcion de distribucion de la variable Y condicionada a x1 y a x2 se modifica
de un modo constante e igual a ei .
La funcion de verosimilitud de estos modelos viene dada por la siguiente ecua-
cion. Notemos que para el individuo i tenemos asociado el vector (yi1 , . . . , yiJ )
donde yij sera uno si el individuo esta en la categora j, es decir, si la variable Y
toma el valor j.
n Y
Y J n Y
Y J
j (xi )yij = (P (Y j|xi ) P (Y j 1|xi ))yij =
i=1 j=1 i=1 j=1
n Y
Y J Pd Pd yij
exp(j + i=1 i (x1i xi2 )) exp(j1 + i=1 i (x1i xi2 ))
Pd Pd
i=1 j=1 1 + j + i=1 i (x1i xi2 ) 1 + j1 + i=1 i (x1i xi2 )
(7.24)
9
7.5. Sobre la interpretacion de los coeficientes
De alguna manera la variable ordinal Y que analizamos puede considerarse co-
mo la version discreta de una variable continua en la que discretizamos su ran-
go. Denotamos esa variable por Y y suponemos que tiene funcion de distribu-
cion G(y ) donde los valores y varan alrededor de la media que depen-
Pd
de de x a traves de (x) = i=1 i (x1i xi2 ). Tomemos los puntos de corte
= 0 < 1 < . . . < J = + de modo que
Y = j si j1 < Y j .
En definitiva estamos asumiendo que cuando la variable continua Y esta entre los
valores j1 y j entonces la variable Y vale j. Tendremos que
d
X
P (Y j|x) = P (Y j |x) = G(j i xi ),
i=1
o que
d
X
1
G (P (Y j|x)) = j i xi .
i=1
Pd
Si por ejemplo suponemos que Y = i=1 i xi + donde tiene una distribucion
logstica entonces G1 sera la funcion link logstica y tendramos el modelo de odds
proporcionales. Notemos que con esta formulacion los mismos parametros ocurren
independientemente de los puntos de corte j que utilicemos. En definitiva que los
parametros que cuantifican el efecto de las variables no dependen de la eleccion que
hacemos de las categoras de la variable a explicar Y . Esto nos permite comparar
los estimadores cuando se utilizan distintas escalas de respuesta.
Si es positivo entonces cuando la variable asociada x crece entonces el logit
acumulado decrece y tambien lo hace las probabilidades acumuladas. Tenemos que
los valores pequenos de Y tienen menos probabilidad. La variable Y tiende a tomar
valores mayores cuando x crece.
10
Captulo 8
Componentes principales
library(mvtnorm)
x = rmvnorm(n=100, mean=c(1,1),sigma=sigma0)
plot(x)
x.pc = princomp(x)
x.pc$loadings
x.pc$loadings[,1]
plot(x)
abline(h=0)
abline(v=0)
abline(a=0,b=x.pc$loadings[2,1]/x.pc$loadings[1,1],lty=2) #fig143a
1
summary(x.pc)
10
5
x[,2]
0
5
4 2 0 2 4
x[,1]
Figura 8.1:
T T = = diag(1 , . . . , d ), (8.1)
Y = T (X ). (8.2)
Demostracion.
En cuanto al apartado primero tenemos que
2
Se verifica el siguiente resultado.
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.
3
library(MASS)
data(iris)
iris
ir = iris[,1:4]
ir.species = c(rep("s",50),rep("c",50),rep("v",50))
ir.pca = princomp(log(ir),cor=F)
ir.pca
> ir.pca
Call:
princomp(x = log(ir), cor = F)
Standard deviations:
Comp.1 Comp.2 Comp.3 Comp.4
1.14273113 0.13789069 0.13480585 0.05362974
summary(ir.pca)
> summary(ir.pca)
Importance of components:
Comp.1 Comp.2 Comp.3 Comp.4
Standard deviation 1.1427311 0.13789069 0.13480585 0.053629741
Proportion of Variance 0.9702335 0.01412726 0.01350223 0.002136976
Cumulative Proportion 0.9702335 0.98436079 0.99786302 1.000000000
if(dib) postscript(file='fig301a.ps',horizontal=F)
plot(ir.pca) #Figura a
if(dib) dev.off()
loadings(ir.pca)
ir.pc = predict(ir.pca)
ir.pc[1:6,]
> ir.pc[1:6,]
Comp.1 Comp.2 Comp.3 Comp.4
1 -1.6736850 0.02055683 -0.06042345 0.015217731
2 -1.6688436 -0.06797029 0.06921821 0.041588345
3 -1.7142099 0.02006252 0.07515646 0.002209602
4 -1.6422467 -0.09648282 0.04725452 -0.046865053
5 -1.6773055 0.03675822 -0.07085250 -0.013090995
6 -0.9833353 0.25757951 -0.06701669 -0.002697639
4
ir.pca = princomp(log(ir),cor=T)
summary(ir.pca)
if(dib) postscript(file='fig301c.ps',horizontal=F)
plot(ir.pca) #Figura c
if(dib) dev.off()
ir.pc = predict(ir.pca)
if(dib) postscript(file='fig301d.ps',horizontal=F)
eqscplot(ir.pc[,1:2],type="n",xlab="Primera componente principal",
ylab="Segunda componente principal")
text(ir.pc[,1:2],ir.species)
if(dib) dev.off()
ir.pca
1.2
1.0
0.8
Variances
0.6
0.4
0.2
0.0
Figura 8.2:
5
2
1
Segunda componente principal
ss s
s ss
s ss s
s ss s
s c vvv v vv
sss s s
c c
cc cc ccc c cvv vvv vvvvvvvvvvv
sssss s c vv v
cccccccccccccccccv cv vvvv vv v
0
sss ccc
ssss c c v
ss cccc cccc ccv v vvv v v
s cc v
ss
ss
1
2
Figura 8.3:
library(mvtnorm)
x = rmvnorm(n=100, mean=c(1,1),sigma=sigma0)
plot(x)
x.pc = princomp(x)
x.pc$loadings
x.pc$loadings[,1]
plot(x)
abline(h=0)
abline(v=0)
abline(a=0,b=x.pc$loadings[2,1]/x.pc$loadings[1,1],lty=2) #fig143a
summary(x.pc)
6
ir.pca
2.5
2.0
Variances
1.5
1.0
0.5
0.0
Figura 8.4:
7
4
c
c
c
2 c c v
v c
c cc
c
cc
Segunda componente principal
s v
s
s cc c
c c v
s c
s s s ss cc v v v
ss s cc v c
s s s c c cc v v v
s c vv
ss cc c cc c vv
c c vvc
0
s s s v v
s ss s c vc c
s
s s s s s ss c c v v v
s s v c vv v v
s c c cvvc vv v v
s
s sss s c c v v vv
v vc v v v
v
s ss
s
s
s
v
2
s
vv
4
3 2 1 0 1 2
Figura 8.5:
10
5
x[,2]
0
5
4 2 0 2 4
x[,1]
Figura 8.6:
8
Captulo 9
De como usar R en un
tiempo razonable (no facil,
no)
En este captulo se incluyen algunos consejos practicos para trabajar con R. Las
posibilidades son enormes. Sin embargo, de tantas que tiene lo mas probable es que el
usuario ocasional no llegue a conocer ninguna de ellas. Antes lo habra abandonado.
Y con razon. Si llevas anos utilizandolo con unas pocas lneas de codigo haces lo
que con programas basados en menu te cuesta horas. Pero lo de anos usando algo
es una utopa que solo se pueden permitir unos cuantos profesores universitarios sin
nada mejor que hacer y muchos horas que llenar de su importante tiempo.
Cuando usamos un programa informatico hay dos problemas fundamentales que,
dependiendo de la persona, uno puede ser mucho mayor que el otro. Un problema
es el manejo del dichoso programa. Como se ha disenado el interface? Donde han
puesto tal o cual opcion de la tecnica? En fin, no vale la pena seguir. Se asume
que un buen menu es la clave de un buen programa (sobre todo, para un usuario
inexperto). En definitiva, se trata de eliminar cualquier tipo de aprendizaje (inicial o
posterior) para que sea de uso inmediato. Algunas personas piensan que eso no esta
tan claro. Se acaba pagando el pato. Lo que no pierdes (no me atreve a hablar de
ganar) al principio lo pierdes mas tarde. Programas como R basados en el uso de un
lenguaje sencillo permiten un aprendizaje rapido y profundo. Aprendes Estadstica
al mismo tiempo que aprendes a manejar el programa. Y, desde un punto de vista
docente, es su mayor interes para ser utilizado.
En este captulo he ido incluyendo distintas cuestiones basicas para el uso del
programa. Desde el como conseguirlo o instalarlo hasta como trabajar con el. Mucho
de lo que sigue se basa en mi propia experiencia. De hecho, muchos estudiantes a
los que sugieres formas de trabajo, utilizan otros trucos que les resultan mas utiles.
Mi edad y cerrazon mental me impiden cada vez mas adaptarme a nuevas ideas. Lo
procuro pero . . . Es importante darse cuenta de que es un programa abierto y que,
facilmente, lo puedes integrar con otras herramientas informaticas. La idea es: elige
el editor que quieras. Genera las figuras en formatos distintos y utiliza el procesador
de textos que se quiera. En fin, de esto vamos a tratar.
9
9.1.1. R y Windows
Los puntos a seguir para una instalacion son los siguientes:
3. Una vez instalado en el menu principal teneis una herramienta que permite
seleccionar el espejo desde traer los paquetes adicionales comodamente.
> library(RWinEdt)
9.1.2. R y Linux
Instalacion 1. Para Linux hay distintas versiones compiladas. En http://cran.
r-project.org/bin/linux/ se encuentran estas distribuciones.
2. No es complicado compilar R a partir de las fuentes. Hay que tener la
precaucion de tener gfortran.
3. Cuando instalamos R en Linux hemos de instalar previamente la librera
BLAS. La podeis encontrar para openSUSE 10.3 en
http://download.opensuse.org/distribution/10.3/repo/oss/suse/
i586/blas-3.1.1-29.i586.rpm.
Edicion con Emacs y ESS En Linux sin duda la mejor opcion de trabajo es uti-
lizar Emacs http://www.gnu.org/software/emacs/ con el paquete Emacs
Speaks Statistics (ESS) 1 . http://ess.r-project.org/ Como trabaja-
mos con Emacs y ESS?
10
En Linux no hay problema. Simplemente con la consola nos vamos al directorio
correspondiente y ejecutamos R. Automaticamente hemos fijado el directorio de
trabajo como aquel en que iniciamos el programa.
En Windows lo recomendable es utilizar el menu y cambiar el directorio al de
trabajo. Yo recomiendo una vez hecho esto ejecutar:
getwd()
Nos devuelve todo el camino hasta dicho directorio. Lo que nos devuelve esta funcion
(por ejemplo C: Mis documentos ad prog) lo ponemos entre comillas dobles y
ejecutamos
library(Hmisc}
label(datos$x) = "Ejemplo de etiqueta"
9.4.1. Sweave
Un documento de gran utilidad donde ver la utilizacion de Sweave es http:
//cran.r-project.org/doc/contrib/Rivera-Tutorial_Sweave.pdf.
9.5. R y Octave/Matlab
Es frecuente que un usuario de Octave/Matlab utilice R. En http://cran.
r-project.org/doc/contrib/R-and-octave.txt y http://mathesaurus.sourceforge.
net/octave-r.html teneis tablas de equivalencia entre los comandos en ambos pro-
gramas.
11
12
Captulo 10
Datos
En este captulo damos una breve explicacion de los datos que utilizamos en el
texto. Si los datos han sido obtenidos de algun paquete de R lo mejor es consultar
la ayuda del paquete correspondiente. Aqu nos centramos en los datos propios.
10.1. scoremaster
Los datos scoremaster son unos datos relativos a ciruga mayor ambulatoria en
el hospital Dr. Peset de Valencia. Han sido proporcionados por el Dr. Juan Vinoles
[? ].
Este fichero fue creado con la funcion save de R y se tiene que leer (como parece
esperable) con la funcion load de R. El fichero contiene datos relativos a una serie de
intervenciones quirurgicas realizadas con ciruga sin ingreso. En estas intervenciones
el enfermo acude al centro hospitalario por la manana y se va el mismo da de la
intervencion (si no hay complicaciones obviamente). Las variables del banco de datos
son las siguientes:
score Una puntuacion del estado general del enfermo en la primera llamada.
eg1 Estado general en primera llamada: Excelente, euforico, sueno normal (2); buen
estado pero algo preocupado, ha dormido poco (1); regular, ansiedad mode-
rada, algo mareado, ha dormido mal o nada (0).
d1 Nivel de dolor en primera llamada: Ausencia (2); dolor leve (1); dolor importante
pero soportable (0).
intensidad Es una variable ordinal que cuantifica la intensidad (de menos a mas)
de la intervencion realizada.
13
T.TOTALP Tiempo total postquirurgico.
T.QUIRUR Tiempo total quirurgico.
edad Edad del paciente.
Las variables score2, eg2, d2, t2, s2 son las mismas variables (con las mismas cate-
goras) observadas en la segunda llamada. De un modo similar tenemos las variables
para la tercera, cuarta y quinta llamadas.
14
Captulo 11
Matrices
4.
Ax = i x. (11.3)
15
Si un vector x verifica la ecuacion 11.3 decimos que es un vector propio de la
matriz A asociado al valor propio i . Si el valor propio es complejo tambien puede
tener componentes complejas el vector propio. Un vector propio x con todas las
componentes reales diremos que esta estandarizado si tiene modulo unitario x x = 1.
Teniendo en cuenta que el coeficiente que acompana a p en el polinomio q() es
(1)p entonces podemos expresar q() en funcion de sus races del siguiente modo
p
Y
q() = (i ). (11.4)
i=1
En particular tenemos
p
Y
q(0) = i . (11.5)
i=1
Teorema 4 Todos los valores propios de una matriz simetrica A(d d) son reales.
16
Bibliografa
[1] A. Agresti. Cualitative Data Analysis. Wiley, 2nd edition edition, 2002.
[2] R core members, Saikat DebRoy, Roger Bivand, and others: see COPYRIGHTS
file in the sources. foreign: Read Data Stored by Minitab, S, SAS, SPSS, Stata,
Systat, dBase, ..., 2006. R package version 0.8-18.
[3] C.L. Blake D.J.Newman, S. Hettich and C.J. Merz. UCI repository of machine
learning databases, 1998.
[4] E.R. Dougherty. Probability and Statistics for the Engineering, Computing and
Physical Sciences. Prentice Hall International Editions, 1990.
[5] Julian Faraway. faraway: Functions and datasets for books by Julian Faraway.,
2006. R package version 1.0.0.
[6] R.A. Fisher. The analysis of covariance method for the relation between a part
and the whole. Biometrics, 3:6568, 1947.
[7] Alan Genz, Frank Bretz, and R port by Torsten Hothorn. mvtnorm: Multiva-
riate Normal and T Distribution, 2006. R package version 0.7-5.
[8] J.A. Hartigan and M.A. Wong. A k-means clustering algorithm. Applied Sta-
tistics, 28:100108, 1979.
[9] Frank E Harrell Jr and with contributions from many other users. Hmisc:
Harrell Miscellaneous, 2007. R package version 3.3-2.
[10] L. Kaufman and P.J. Rousseeuw. Finding Groups in Data. An Introduction to
Cluster Analysis. Wiley, 1990.
[11] Uwe Ligges. R-winedt. In Kurt Hornik, editor, Proceedings of the 3rd Interna-
tional Workshop on Distributed Statistical Computing (DSC 2003), TU Wien,
Vienna, Austria, 2003. ISSN 1609-395X.
[12] Martin Maechler, Peter Rousseeuw, Anja Struyf, and Mia Hubert. Cluster
analysis basics and extensions. Rousseeuw et al provided the S original which
has been ported to R by Kurt Hornik and has since been enhanced by Martin
Maechler: speed improvements, silhouette() functionality, bug fixes, etc. See
the Changelog file (in the package source), 2005.
[13] J. Pitman. Probability. Springer-Verlag, 1999.
[14] R Development Core Team. R: A Language and Environment for Statistical
Computing. R Foundation for Statistical Computing, Vienna, Austria, 2006.
ISBN 3-900051-07-0.
[15] W.N. Venables and B. D. Ripley. Modern Applied Statistics with S. Springer,
New York, fourth edition, 2002. ISBN 0-387-95457-0.
[16] J. Verzani. Using R for Introductory Statistics. Chapman & Hall / CRC, 2005.
17