Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Soluciones Ejercicios Análisis Multivariante, Ejercicios de Análisis Matemático

Soluciones a ejercicios de análisis multivariante en el Grado en Estadística y Empresa. Se aborda el tema de Análisis de Conglomerados (Cluster analysis) y se resuelve un ejercicio con datos de animales. También se presenta un fichero con medidas de cocodrilos y se calcula la representación canónica de las cuatro especies. Se utilizan funciones internas de Matlab como linkage y dendrogram. Se muestran dendrogramas y se analizan las agrupaciones formadas. Se explica la transformación de distancias de Mahalanobis a distancias euclídeas.

Tipo: Ejercicios

2020/2021

A la venta desde 07/06/2022

alvaro-ruiz-26
alvaro-ruiz-26 🇪🇸

25 documentos

1 / 16

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
Soluciones Ejercicios Análisis Multivariante
Aurea Grané Chávez
Grado en Estadística y Empresa
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
1 1 1 0 0 1
1 0 0 1 0 1
1 0 0 1 0 1
1 0 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.0000
0.8165 0 1.0000 1.0000 1.0000 1.2910
1.0000 1.0000 0 0 0.8165 1.1547
1.0000 1.0000 0 0 0.8165 1.1547
0.5774 1.0000 0.8165 0.8165 0 0.8165
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
pf3
pf4
pf5
pf8
pf9
pfa
pfd
pfe
pff

Vista previa parcial del texto

¡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.