Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Visualizando datos multivariados

Este ejemplo muestra cómo visualizar datos multivariados utilizando varias gráficas estadísticas. Muchos análisis estadísticos implican sólo dos variables: una variable predictora y una variable de respuesta. Estos datos son fáciles de visualizar utilizando diagramas de dispersión 2D, histogramas bivariados, diagramas de caja, etc. También es posible visualizar datos trivariados con gráficos de dispersión 3D, o trazados de dispersión 2D con una tercera variable codificada con, por ejemplo, color. Sin embargo, muchos conjuntos de datos implican un mayor número de variables, lo que dificulta la visualización directa. En este ejemplo se exploran algunas de las formas de visualizar datos de alta cota en MATLAB®, utilizando estadísticas y machine learning Toolbox™.

En este ejemplo, usaremos el conjunto de datos, un conjunto de datos que contiene varias variables medidas para alrededor de 400 automóviles de los 1970 y 1980.carbig Ilustraremos la visualización multivariada usando los valores para la eficiencia del combustible (en millas por galón, MPG), la aceleración (tiempo de 0-60MPH en sec), el desplazamiento del motor (en pulgadas cúbicas), el peso y la potencia. Usaremos el número de cilindros para agrupar las observaciones.

load carbig X = [MPG,Acceleration,Displacement,Weight,Horsepower]; varNames = {'MPG'; 'Acceleration'; 'Displacement'; 'Weight'; 'Horsepower'}; 

Matrices de diagrama de dispersión

La visualización de sectores a través de subespacios dimensionales inferiores es una forma de trabajar parcialmente alrededor de la limitación de dos o tres dimensiones. Por ejemplo, podemos utilizar la función para mostrar una matriz de todas las parcelas de dispersión bivariada entre nuestras cinco variables, junto con un histograma univariado para cada variable.gplotmatrix

figure gplotmatrix(X,[],Cylinders,['c' 'b' 'm' 'g' 'r'],[],[],false); text([.08 .24 .43 .66 .83], repmat(-.1,1,5), varNames, 'FontSize',8); text(repmat(-.12,1,5), [.86 .62 .41 .25 .02], varNames, 'FontSize',8, 'Rotation',90); 

Los puntos de cada gráfica de dispersión están codificados por colores por el número de cilindros: azul para 4 cilindros, verde para 6 y rojo para 8. También hay un puñado de coches de 5 cilindros, y los coches con motor rotativo se enumeran como que tienen 3 cilindros. Esta matriz de trazados facilita la selección de patrones en las relaciones entre pares de variables. Sin embargo, puede haber patrones importantes en las dimensiones superiores, y ésos no son fáciles de reconocer en esta trama.

Parcelas de coordenadas paralelas

La matriz de trazado de dispersión solo muestra relaciones bivariadas. Sin embargo, hay otras alternativas que muestran todas las variables juntas, lo que le permite investigar las relaciones de mayor dimensión entre las variables. La gráfica multivariada más directa es la gráfica de coordenadas paralelas. En esta gráfica, los ejes de coordenadas se colocan horizontalmente, en lugar de utilizar ejes ortogonales como en el gráfico cartesiano habitual. Cada observación se representa en la trama como una serie de segmentos de línea conectados. Por ejemplo, podemos hacer una parcela de todos los coches con 4, 6 u 8 cilindros, y observaciones de color por grupo.

Cyl468 = ismember(Cylinders,[4 6 8]); parallelcoords(X(Cyl468,:), 'group',Cylinders(Cyl468), ...                'standardize','on', 'labels',varNames) 

La dirección horizontal de esta gráfica representa los ejes de coordenadas y la dirección vertical representa los datos. Cada observación consiste en mediciones en cinco variables, y cada medida se representa como la altura a la que la línea correspondiente cruza cada eje de coordenadas. Debido a que las cinco variables tienen rangos muy diferentes, esta trama se hizo con valores estandarizados, donde cada variable ha sido estandarizada para tener cero media y varianza de unidad. Con la codificación de color, el gráfico muestra, por ejemplo, que los coches de 8 cilindros suelen tener valores bajos para MPG y aceleración, y altos valores de desplazamiento, peso y potencia.

Incluso con la codificación de color por grupo, una gráfica de coordenadas paralelas con un gran número de observaciones puede ser difícil de leer. También podemos hacer una gráfica de coordenadas paralelas donde sólo se muestran la mediana y los cuarles (25% y 75% puntos) para cada grupo. Esto hace que las diferencias y similitudes típicas entre los grupos sean más fáciles de distinguir. Por otro lado, pueden ser los valores atípicos para cada grupo que son más interesantes, y esta trama no los muestra en absoluto.

parallelcoords(X(Cyl468,:), 'group',Cylinders(Cyl468), ...                'standardize','on', 'labels',varNames, 'quantile',.25) 

Andrews parcelas

Otro tipo similar de visualización multivariada es la trama Andrews. Esta gráfica representa cada observación como una función suave sobre el intervalo [0,1].

andrewsplot(X(Cyl468,:), 'group',Cylinders(Cyl468), 'standardize','on') 

Cada función es una serie de Fourier, con coeficientes iguales a los valores de la observación correspondiente. En este ejemplo, la serie tiene cinco términos: una constante, dos términos sinusoidales con periodos 1 y 1/2, y dos términos de coseno similares. Los efectos sobre las formas de las funciones debido a los tres términos principales son los más evidentes en una trama de Andrews, por lo que los patrones en las tres primeras variables tienden a ser los más fácilmente reconocidos.

Hay una diferencia distintiva entre los grupos en t = 0, indicando que la primera variable, MPG, es una de las características distintivas entre 4, 6 y 8 coches de cilindro. Más interesante es la diferencia entre los tres grupos alrededor de t = 1/3. Al conectar este valor a la fórmula de las funciones de trazado de Andrews, se obtiene un conjunto de coeficientes que definen una combinación lineal de las variables que distingue entre grupos.

t1 = 1/3; [1/sqrt(2) sin(2*pi*t1) cos(2*pi*t1) sin(4*pi*t1) cos(4*pi*t1)] 
 ans =      0.7071    0.8660   -0.5000   -0.8660   -0.5000  

A partir de estos coeficientes, podemos ver que una manera de distinguir los coches de 4 cilindros de los coches de 8 cilindros es que los primeros tienen valores más altos de MPG y aceleración, y valores más bajos de desplazamiento, caballos de fuerza, y particularmente peso, mientras que los últimos tienen la Opuesto. Esa es la misma conclusión que dibujamos de la gráfica de coordenadas paralelas.

Parcelas de glifo

Otra forma de visualizar datos multivariados es utilizar "glifos" para representar las dimensiones. La función admite dos tipos de glifos: las estrellas y las caras de Chernoff.glyphplot Por ejemplo, aquí hay una gráfica de estrellas de los primeros 9 modelos en los datos del coche. Cada spoke en una estrella representa una variable, y la longitud del spoke es proporcional al valor de esa variable para esa observación.

h = glyphplot(X(1:9,:), 'glyph','star', 'varLabels',varNames, 'obslabels',Model(1:9,:)); set(h(:,3),'FontSize',8); 

En una ventana de figura de MATLAB en vivo, esta gráfica permitiría la exploración interactiva de los valores de datos, utilizando cursores de datos. Por ejemplo, al hacer clic en el punto derecho de la estrella para el Ford Torino demostraría que tiene un valor de MPG de 17.

Parcelas de glifo y escalado multidimensional

Trazar estrellas en una cuadrícula, sin un orden particular, puede conducir a una figura que es confusa, porque las estrellas adyacentes pueden terminar muy diferente de aspecto. Por lo tanto, puede que no haya un patrón liso para que el ojo lo atrape. A menudo es útil combinar el escalado multidimensional (MDS) con una gráfica de pictogramas. Para ilustrar, primero seleccionaremos todos los coches de 1977, y usaremos la función para estandarizar cada una de las cinco variables para tener media cero y varianza de unidad.zscore Luego calcularemos las distancias euclidiana entre esas observaciones estandarizadas como una medida de dessimilitud. Esta elección podría ser demasiado simplista en una aplicación real, pero sirve aquí para fines ilustrativos.

models77 = find((Model_Year==77)); dissimilarity = pdist(zscore(X(models77,:))); 

Por último, se utiliza para crear un conjunto de ubicaciones en dos dimensiones cuyas distancias entre puntos aproximan las disimilaridades entre los datos de alta dimensión originales y trazar los glifos utilizando esas ubicaciones.mdscale Las distancias en esta gráfica 2D sólo pueden reproducir los datos de manera aproximada, pero para este tipo de trama, eso es lo suficientemente bueno.

Y = mdscale(dissimilarity,2); glyphplot(X(models77,:), 'glyph','star', 'centers',Y, ...           'varLabels',varNames, 'obslabels',Model(models77,:), 'radius',.5); title('1977 Model Year'); 

En esta gráfica, hemos utilizado MDS como método de reducción de dimensiones, para crear un trazado 2D. Normalmente eso significaría una pérdida de información, pero al trazar los glifos, hemos incorporado toda la información de alta dimensión en los datos. El propósito de usar MDS es imponer cierta regularidad a la variación en los datos, por lo que los patrones entre los glifos son más fáciles de ver.

Al igual que con la trama anterior, la exploración interactiva sería posible en una ventana de figura en vivo.

Otro tipo de glifo es la cara de Chernoff. Este glifo codifica los valores de datos para cada observación en rasgos faciales, como el tamaño de la cara, la forma de la cara, la posición de los ojos, etc.

glyphplot(X(models77,:), 'glyph','face', 'centers',Y, ...           'varLabels',varNames, 'obslabels',Model(models77,:)); title('1977 Model Year'); 

Aquí, las dos características más evidentes, tamaño de la cara y la frente/tamaño de la mandíbula relativa, codificar MPG y aceleración, mientras que la frente y la forma de la mandíbula codificar el desplazamiento y el peso. La anchura entre los ojos codifica la potencia. Es notable que hay pocas caras con frentes anchos y mandíbulas estrechas, o viceversa, que indican una correlación lineal positiva entre el desplazamiento y el peso de las variables. Eso es también lo que vimos en la matriz de la trama de dispersión.

La correspondencia de las entidades con las variables determina qué relaciones son más fáciles de ver y permite cambiar fácilmente la opción.glyphplot

close