¡Descarga Soluciones Ejercicios Análisis Multivariante y más Ejercicios en PDF de Análisis Matemático solo en Docsity!
Soluciones Ejercicios Análisis Multivariante Aurea Grané Chávez
Tema 7: Análisis de Conglomerados (Cluster analysis)
Solución: a) Con los datos del Ejercicio 20 (conjunto de animales {león, girafa, vaca, oveja, gato
doméstico, hombre}, calculamos la matriz de similaridades de Sokal y Michener, la matriz de
cuadrados de distancias (usando la transformación general para pasar de una matriz de
similaridades a una matriz de cuadrados de distancias) y, finalmente, la matriz de distancias D.
Calculamos la matriz de similaridades mediante el coeficiente de similaridad de Sokal y Michener, así
como la matriz de cuadrados de distancias, haciendo:
X=[1 1 0 0 1 1
0 0 0 0 1 0];
[n,p] = size(X); J = ones(n); S = sokal(X); D2 = 2*(J-S); D = sqrt(D2) D = 0 0.8165 1.0000 1.0000 0.5774 1. 0.8165 0 1.0000 1.0000 1.0000 1. 1.0000 1.0000 0 0 0.8165 1. 1.0000 1.0000 0 0 0.8165 1. 0.5774 1.0000 0.8165 0.8165 0 0. 1.0000 1.2910 1.1547 1.1547 0.8165 0
La matriz D no cumple la propiedad ultramétrica puesto que, por ejemplo, 𝛿1,3 = 1 > max(𝛿1,5, 𝛿5,3) =
max(0.5774, 0.8165).
b) Para obtener los dendrogramas usaremos las funciones internas de Matlab linkage y dendrogram.
La función linkage calcula la matriz de distancias ultramétrica a partir de la parte triangular superior
de la matriz de distancias, por lo que hay que ir con cuidado al utilizarla.
Y = squareform(D); Z_min = linkage(Y,'single'); Z_max = linkage(Y,'complete'); Z_UPGMA = linkage(Y,'average');
Podemos representar los dendrogramas en la misma figura mediante la opción subplot:
figure
Soluciones Ejercicios Análisis Multivariante Aurea Grané Chávez
subplot(1,3,1) dendrogram(Z_min) title('Método del mínimo') subplot(1,3,2) dendrogram(Z_max) title('Método del máximo') subplot(1,3,3) dendrogram(Z_UPGMA) title('Método UPGMA')
En los tres casos los individuos más cercanos son 3 y 4 (vaca y oveja), la siguiente agrupación
que se forma es la de los individuos 1 y 5 (león y gato), y a partir de aquí los tres métodos difieren
en las agrupaciones que se siguen formado y en el individuo más alejado.
Puede observarse que el método del mínimo contrae el espacio, mientras que el método del
máximo lo dilata.
Otra posible representación, incluyendo las etiquetas de los individuos:
% Añadimos las etiquetas de los individuos label={'leon', 'girafa', 'vaca', 'oveja', 'gato', 'hombre'}; figure subplot(3,1,1) dendrogram(Z_min,'Labels',label,'orientation','left') title('Método del mínimo') subplot(3,1,2) dendrogram(Z_max,'Labels',label,'orientation','left') title('Método del máximo') subplot(3,1,3) dendrogram(Z_UPGMA,'Labels',label,'orientation','left') title('Método UPGMA')
Soluciones Ejercicios Análisis Multivariante Aurea Grané Chávez
Solución: Partimos de la matriz X que contiene los datos de la Tabla 11, donde la variables
observadas son: X1 = Tasa anual de crecimiento de la población, X2 = Tasa de mortalidad infantil
por cada 1000 nacidos vivos, X3 = Porcentaje de mujeres en la población activa, X4 = PNB en
1995 (en millones de dólares), X5 = Producción de electricidad (en millones kW=h), X6 = Líneas
telefónicas por cada 1000 habitantes, X7 = Consumo de agua per cápita, X8 = Proporción de la
superficie del país cubierta por bosques, X9 = Proporción de deforestación anual, X10 = Consumo
de energía per cápita, X11 = Emisión de CO2 per cápita.
Empezamos calculando las componentes principales y nos quedamos con las tres primeras
componentes calculadas a partir de la matriz de correlaciones, que consiguen explicar el 66.64%
de la variabilidad total de los datos. Es decir, nos quedamos con las tres primeras columnas de
Y2.
La función interna de Matlab pdist permite calcular distintas funciones de distancia a partir de
matrices de datos. Para calcular la distancia euclídea haremos, pdist(Y2,'euclidean') o,
simplemente pdist(Y2), puesto que ésta es la distancia que la función pdist calcula por
defecto. Si, en cambio, quisiéramos calcular la distancia de Mahalanobis, haríamos
pdist(Y2,'mahalanobis').
El siguiente código resuelve el ejercicio:
X=load('paises.txt'); [T1,Y1,acum1,T2,Y2,acum2] = comp2(X); Y2 = Y2(:,1:3); Y = pdist(Y2,'euclidean'); Z = linkage(Y,'average'); figure dendrogram(Z,0,'colorthreshold',2.5) c = cophenet(Z,Y) c = 0.
Soluciones Ejercicios Análisis Multivariante Aurea Grané Chávez
Por defecto, la función dendrogram(Z,p,'colorthreshold',t) genera dendrogramas a
partir de los últimos p = 30 conglomerados formados y asigna colores distintos a los
conglomerados que se forman a un nivel (o threshold ) menor que el valor de t. Si inicialmente
tenemos más de 30 individuos, como en este ejercicio, hay que indicarle que los dibuje todos
mediante la opción p = 0. Además, hemos puesto t = 2.5 para que asigne colores distintos a los
conglomerados que se han formado a una distancia menor de 2.5. Observad las distintas
agrupaciones que se forman según el nivel que se considere.
El coeficiente de correlación cofenética es muy elevado, c = 0.8735, indicando que las distancias
originales han sufrido una baja distorsión hasta llegar a la ultramétrica resultante.
Solución: El fichero cocodrilos.txt que contiene los 11 medidas sobre 4 especies de cocodrilos,
Alligator mississippiensis, Crocodylus niloticus, Crocodylus porosus, Osteolaemus tetraspis. Las
variables medidas sobre cada individuo son: X1 =longitud del cráneo, X2 =ancho del cráneo, X
=ancho del hocico, X4 =longitud del hocico, X5 =longitud dorsal del cráneo, X6 =ancho máximo
orbital, X7 =ancho mínimo inter-orbital, X8 =longitud máxima orbital, X9 =longitud del paladar
post-orbital, X10 =ancho posterior del paladar, X11 =ancho máximo entre orificios nasales. Los
tamaños muestrales para cada especie son 11, 9, 8 y 16, respectivamente.
Empezamos cargando los datos y calculando la representación canónica de las cuatro especies.
Nos interesan solo las filas de la matriz mY, que contiene los centroides de cada grupo:
data=load('cocodrilos.txt'); X=data(:,2:12); n =[11 9 8 16]; [mY,V,B,W,percent,Test1,texto1,Test2,texto2]=canp(X,n); mY = 5.2342 0.3893 -0. -0.5270 -2.1787 -0. -1.0138 -0.1066 0. 4.2779 -2.7562 0.
La salida gráfica muestra la representación canónica de los cocodrilos en dos dimensiones con
un 97.5% de la variabilidad explicada. Los centroides están representados por triángulos de color
rojo.
Soluciones Ejercicios Análisis Multivariante Aurea Grané Chávez
En los tres casos se obtiene la misma clasificación: Primero se forma el cluster {C. porosus y C.
niloticus}, luego se forma el cluster {O. tetraspis, A. mississipiensis} y finalmente ambos grupos
se juntan en uno solo. Los tres métodos difieren en el nivel al que se forma el segundo grupo y
en el nivel en que se juntan ambos grupos. Como anteriormente, puede observarse que el
método del mínimo contrae el espacio, mientras que el método del máximo lo dilata.
Estas agrupaciones ya se observaban en la representación canónica, donde las especies 2 y 3
eran las más cercanas, seguidas de las especies 1 y 4.
La causa principal por la que los tres métodos coinciden es que las distancias iniciales no son
muy distintas de las distancias ultramétrcas resultantes. Esto se verá a través de la correlación
cofenética que, muy posiblemente, tome valores muy altos en los tres casos. Si calculamos las
correlaciones cofenéticas, obtenemos:
cophenet(Z_min,Y) = 0. cophenet(Z_max,Y) = 0. cophenet(Z_UPGMA,Y) = 0.
Soluciones Ejercicios Análisis Multivariante Aurea Grané Chávez
Solución: Partimos de la matriz X que contiene los datos de la Tabla 11, donde la variables
observadas son: X1 = Tasa anual de crecimiento de la población, X2 = Tasa de mortalidad infantil
por cada 1000 nacidos vivos, X3 = Porcentaje de mujeres en la población activa, X4 = PNB en
1995 (en millones de dólares), X5 = Producción de electricidad (en millones kW=h), X6 = Líneas
telefónicas por cada 1000 habitantes, X7 = Consumo de agua per cápita, X8 = Proporción de la
superficie del país cubierta por bosques, X9 = Proporción de deforestación anual, X10 = Consumo
de energía per cápita, X11 = Emisión de CO2 per cápita.
Cargamos el fichero de datos y obtenemos el gráfico de dispersión matricial entre las variables:
X=load('paises.txt'); plotmatrix(X)
Observad que las variables X2, X4, X5, X6, X7, X10, X11 tienen una fuerte asimetría hacia la
derecha. Se observan varios atípicos en estas variables. Para evitar la influencia de estos atípicos
en cualquiera de las técnicas que apliquemos, es mejor transformar las variables originales y
trabajar con las variables transformadas. Por tanto, aplicamos la transformación logarítmica a
X2, X4, X5, X6, X7, X10, X11 y obtenemos:
Xtrans=[X(:,1) log(X(:,2)) X(:,3) log(X(:,4:7)) X(:,8:9) log(X(:,10:11))]; plotmatrix(Xtrans)
Soluciones Ejercicios Análisis Multivariante Aurea Grané Chávez
Para obtener la representación en 3 componentes principales, podemos hacer:
[n,p]=size(Y2); for i=1:n lab(i,:)=sprintf('%3g',i); end figure plot3(Y2(:,1),Y2(:,2),Y2(:,3),'.b','MarkerSize',12) grid xlabel('PC1','FontSize',12) ylabel('PC2','FontSize',12) zlabel('PC3','Fontsize',12) title(['Explained variability ',num2str(acum2(3)),'%'],'FontSize',12) for i=1:n text(Y2(i,1),Y2(i,2),Y2(i,3),lab(i,:)); end
Soluciones Ejercicios Análisis Multivariante Aurea Grané Chávez
Ahora ya podemos aplicar k-medias sobre las componentes principales. Para ello, usaremos la
función kmedias2.m, que utiliza dos funciones internas de Matlab, kmedias.m, silhouette.m.
[C,s]=kmedias2(Y2(:,1:3),6); C = -2.0575 0.1649 -0. 1.9736 -0.1582 0. s = 0.
La mejor clasificación se obtiene para dos grupos, con una silueta media de 0.5919.
Para averiguar las características que tienen en común los individuos de cada grupo,
necesitamos guardar la clase a la que han sido asignados. El vector IDX contiene esta
información. Por tanto, modificamos brevemente la función kmedias2.m, pidiendo que
devuelva también el vector IDX.
[C,s,IDX]=kmedias2(Y2(:,1:3),6);
La función splitapply nos permite calcular estadísticos descriptivos por subgrupos. En este
caso, dado que todas las variables originales son cuantitativas, podemos calcular la media y la
mediana de todas las variables para cada uno de los grupos:
medias=splitapply(@mean,Xtrans,IDX) medias = 2.5638 4.0079 35.7234 9.2320 8.3876 2.7535 5.2166 27.5319 1.1787 5.3223 -0. 1.2061 2.5114 38.7755 11.4688 11.0506 5.3871 6.2406 27.1429 -0.0469 7.8450 1. medianas=splitapply(@median,Xtrans,IDX) medianas = 2.5000 4.0254 36.0000 9.0613 8.3864 2.6391 5.3033 26.0000 1.0000 5.5373 -0. 0.9000 2.3979 40.0000 11.4807 11.0905 5.4381 6.2634 25.0000 0 7.8236 1.
Vemos que las diferencias entre ambos grupos se encuentran en que para el primer grupo las
variables transformadas X1 (tasa anual de crecimiento), X2 (tasa de mortalidad infantil), X
(proporción de la superficie del país cubierta por bosques) y X9 (proporción de deforestación
anual) toman valores mayores que para el segundo grupo. Ocurre lo contrario para el resto de
variables. Por tanto, parece que los países clasificados en el grupo 1 tienen un índice de
desarrollo menor que los clasificados en el grupo 2.
Soluciones Ejercicios Análisis Multivariante Aurea Grané Chávez
entre los jugadores). Sabemos que para este tipo de datos, la función de distancia más adecuada
es la distancia de Gower.
Por tanto, empezaremos cargando los datos y calculando la matriz de distancias de Gower.
Posteriormente, obtendremos la representación MDS de los jugadores llegando así una
representación en ejes ortogonales, donde ya sí tiene sentido calcular la distancia euclidea.
Finalmente, aplicaremos el procedimiento de K-medias sobre las coordenadas principales de los
jugadores, escogiendo suficientes coordenadas para obtener un alto porcentaje de variabilidad
explicada.
X=load('jugadores_futbol.txt'); [n,p]=size(X); p1=4; p2=1; p3=2; S=gower2(X,p1,p2,p3); D2=ones(n)-S; [Y,vaps,percent,acum] = coorp(D2); acum(1:11) 20.0026 33.5165 44.1630 53.4795 59.7822 65.5707 70.6250 73.8932 76.5812 79.0157 81.
Para alcanzar un porcentaje de variabilidad explicado superior al 80% necesitamos 11
coordenadas. Nos quedamos con las primeras 11 columnas de Y y aplicamos k-medias:
Y=Y(:,1:11);
[C,s,IDX]=kmedias2(Y,6); C = 0.0218 -0.2073 0.1426 -0.1645 -0.0740 -0.0166 0.0610 0.0341 0.0386 0.0056 0. -0.2580 0.0247 0.0156 0.0172 0.0235 0.0198 -0.0254 -0.0189 -0.0286 -0.0094 -0. 0.1521 0.0486 -0.0534 0.0400 0.0083 -0.0071 -0.0031 0.0011 0.0058 0.0040 -0. s = 0.
La mejor clasificación se obtiene para tres grupos, con una silueta media de 0.3576.
Soluciones Ejercicios Análisis Multivariante Aurea Grané Chávez
Igual que antes, podemos aplicar la función splitapply para averiguar las características que
tienen en común los jugadores de cada grupo. En este caso, dado que tenemos variables de tipo
mixto, podemos calcular la media y la mediana para las variables cuantitativas y la moda para
las cualitativas:
Medias_cuantis=splitapply(@mean,X(:,1:p1),IDX) Medias_cuantis = 5.8750 26.5000 1.8250 75. 7.5625 28.1875 1.7844 73. 6.8846 25.7308 1.7865 72. Medianas_cuantis=splitapply(@median,X(:,1:p1),IDX) Medianas_cuantis = 3.5000 25.5000 1.8300 77. 6.0000 28.5000 1.7900 74. 7.0000 25.0000 1.8000 73. Modas_cualis= splitapply(@mode,X(:,p1+1:p),IDX) Modas_cualis = 0 5 4 0 1 2 0 5 3
Con esta información podemos describir el perfil de cada grupo:
Grupo 1: Jugadores con los valores más bajos de goles marcados (3.5 de mediana), con
una media de 26.5 años, con valores altos de talla y peso; de nacionalidad mayormente
española, con estudios superiores.
Grupo 2: Jugadores con valores altos de goles marcados (7.56 de media, 6 de mediana),
con una media de 28.2 años (grupo más mayor), con valores bajos de talla y valores
medios de peso; de nacionalidad mayormente argentina, con estudios básicos.
Grupo 3: Jugadores con los valores medios de goles marcados (6.88 de media y 7 de
mediana), con una media de 25.7 años (grupo más joven), con bajos de talla y peso; de
nacionalidad mayormente española, con estudios medios.
Soluciones Ejercicios Análisis Multivariante Aurea Grané Chávez
C = 0.1942 -0.1431 0.1562 -0.0027 -0.0347 -0.0542 0. 0.1373 0.2336 0.0170 -0.0834 0.0799 0.0282 -0. 0.0090 -0.1332 -0.1304 0.0245 0.0063 0.0191 -0. -0.4392 0.0039 0.0617 -0.1515 0.0324 -0.0320 0. -0.1927 0.2278 0.0525 0.1754 -0.1093 0.0106 -0. s = 0.
La mejor clasificación se obtiene para cinco grupos, con una silueta media de 0.5028.
Igual que antes, podemos aplicar la función splitapply para averiguar las características que
tienen en común los vehículos de cada grupo. Calcularemos la media y la mediana para las
variables cuantitativas y la moda para las cualitativas:
Medias_cuantis=splitapply(@mean,X(:,1:p1),IDX) Medias_cuantis = 122.8333 122.8333 108.6667 156.0000 164.0000 143. 109.0000 99.5000 91.1667 149.0000 162.6667 137. 106.3636 98.3636 95.8182 113.4545 115.3636 113. 87.6667 72.0000 93.0000 87.0000 91.3333 75. 94.2500 92.7500 87.5000 120.0000 130.7500 107. Medianas_cuantis=splitapply(@median,X(:,1:p1),IDX) Medianas_cuantis = 115.5000 120.5000 103.5000 159.5000 162.0000 141. 109.0000 100.5000 91.5000 149.0000 154.5000 136. 108.0000 96.0000 93.0000 120.0000 123.0000 105. 91.0000 71.0000 91.0000 81.0000 93.0000 77. 97.5000 95.0000 86.5000 118.5000 133.0000 107. Modas_cualis= splitapply(@mode,X(:,p1+1:p),IDX) Modas_cualis = 1 1 0 2 1 2 0 1 0 3
Como antes, usaremos esta información para describir los perfiles de cada grupo. Por ejemplo:
Grupo 1: Vehículos con valores más altos de siniestralidad y de gravedad en cuanto a
daños materiales y personales. Formado por vehículos mini y de dos puertas. Grupo de
vehículos menos seguro.
Grupo 4: Vehículos con valores más bajos de siniestralidad y de gravedad en cuanto a
daños materiales y personales. Formado por vehículos small y de dos puertas. Grupo de
vehículos más seguro.
etc.