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.

Analice la calidad de vida en las ciudades de Estados Unidos utilizando PCA

En este ejemplo se muestra cómo realizar un análisis de componentes principales ponderados e interpretar los resultados.

Cargue datos de muestra.

Cargue los datos de ejemplo. Los datos incluyen clasificaciones para 9 indicadores diferentes de la calidad de vida en 329 ciudades de Estados Unidos. Estos son el clima, la vivienda, la salud, el crimen, el transporte, la educación, las artes, la recreación y la economía. Para cada categoría, una calificación más alta es mejor. Por ejemplo, una calificación más alta para la delincuencia significa una tasa de criminalidad más baja.

Visualice la variable.categories

load cities categories
categories =    climate           housing           health            crime             transportation    education         arts              recreation        economics   

En total, el conjunto de datos contiene tres variables:cities

  • , una matriz de caracteres que contiene los nombres de los índicescategories

  • , una matriz de caracteres que contiene los nombres de ciudad de 329names

  • , la matriz de datos con 329 filas y 9 columnasratings

Trazar datos.

Haga una gráfica de caja para ver la distribución de los datos.ratings

figure() boxplot(ratings,'Orientation','horizontal','Labels',categories)

Hay más variabilidad en las calificaciones de las artes y la vivienda que en las calificaciones del crimen y el clima.

Compruebe la correlación en parejas.

Compruebe la correlación de pares entre las variables.

C = corr(ratings,ratings); 

La correlación entre algunas variables es tan alta como 0,85. El análisis de componentes principales construye nuevas variables independientes que son combinaciones lineales de las variables originales.

Calcular componentes principales.

Cuando todas las variables están en la misma unidad, es adecuado calcular los componentes principales para los datos sin procesar. Cuando las variables están en unidades diferentes o la diferencia en la varianza de diferentes columnas es sustancial (como en este caso), la escala de los datos o el uso de pesos es a menudo preferible.

Realice el análisis del componente principal utilizando las desviaciones inversas de las clasificaciones como pesos.

w = 1./var(ratings); [wcoeff,score,latent,tsquared,explained] = pca(ratings,... 'VariableWeights',w);

O equivalentemente:

[wcoeff,score,latent,tsquared,explained] = pca(ratings,... 'VariableWeights','variance');

Las siguientes secciones explican las cinco salidas de.pca

Coeficientes de componente.

La primera salida, contiene los coeficientes de los componentes principales.wcoeff

Los tres primeros vectores de coeficiente de componentes principales son:

c3 = wcoeff(:,1:3) 
c3 = wcoeff(:,1:3) c3 =     1.0e+03 *      0.0249   -0.0263   -0.0834     0.8504   -0.5978   -0.4965     0.4616    0.3004   -0.0073     0.1005   -0.1269    0.0661     0.5096    0.2606    0.2124     0.0883    0.1551    0.0737     2.1496    0.9043   -0.1229     0.2649   -0.3106   -0.0411     0.1469   -0.5111    0.6586

Estos coeficientes son ponderados, por lo tanto la matriz de coeficiente no es ortoonormal.

Transforme los coeficientes.

Transforme los coeficientes para que sean ortoonormales.

 coefforth = inv(diag(std(ratings)))*wcoeff; 

Tenga en cuenta que si utiliza un vector de ponderaciones, al realizar lawpca

 coefforth = diag(sqrt(w))*wcoeff;

Los coeficientes de verificación son ortoonormales.

Los coeficientes transformados son ahora ortoonormal.

I = coefforth'*coefforth; I(1:3,1:3)
ans =     1.0000   -0.0000   -0.0000    -0.0000    1.0000   -0.0000    -0.0000   -0.0000    1.0000

Puntuaciones de componentes.

La segunda salida, contiene las coordenadas de los datos originales en el nuevo sistema de coordenadas definido por los componentes principales.score La matriz tiene el mismo tamaño que la matriz de datos de entrada.score También puede obtener las puntuaciones de los componentes utilizando los coeficientes ortoonormales y las clasificaciones estandarizadas de la siguiente manera.

cscores = zscore(ratings)*coefforth;

y son matrices idénticas.cscoresscore

Puntuaciones de componentes de trazado.

Cree una gráfica de las dos primeras columnas de.score

figure() plot(score(:,1),score(:,2),'+') xlabel('1st Principal Component') ylabel('2nd Principal Component')

Esta gráfica muestra los datos de calificaciones centrados y escalados proyectados en los dos primeros componentes principales. calcula las puntuaciones para que tengan un cero medio.pca

Explore la trama de forma interactiva.

Anote los puntos extremos en la mitad derecha de la trama. Puede identificar gráficamente estos puntos de la siguiente manera.

gname

Mueva el cursor sobre la gráfica y haga clic una vez cerca de los siete puntos más a la derecha. Esto etiqueta los puntos por sus números de fila como en la figura siguiente.

Después de etiquetar puntos, pulse.devolución

Extrae nombres de observación.

Cree una variable de índice que contenga los números de fila de todas las ciudades que eligió y obtenga los nombres de las ciudades.

metro = [43 65 179 213 234 270 314]; names(metro,:) 
ans =    Boston, MA                      Chicago, IL                     Los Angeles, Long Beach, CA     New York, NY                    Philadelphia, PA-NJ             San Francisco, CA               Washington, DC-MD-VA

Estas ciudades etiquetadas son algunos de los centros de población más grandes de los Estados Unidos y parecen más extremas que el resto de los datos.

Varianzas de componentes.

La tercera salida, es un vector que contiene la varianza explicada por el componente principal correspondiente.latent Cada columna tiene una varianza de muestra igual a la fila correspondiente de.scorelatent

latent 
latent =      3.4083     1.2140     1.1415     0.9209     0.7533     0.6306     0.4930     0.3180     0.1204

Variación porcentual explicada.

La quinta salida, es un vector que contiene la varianza porcentual explicada por el componente principal correspondiente.explained

explained 
explained =     37.8699    13.4886    12.6831    10.2324     8.3698     7.0062     5.4783     3.5338     1.3378

Crear trama de Pedregal.

Haga una gráfica de Pedregal de la variabilidad porcentual explicada por cada componente principal.

figure() pareto(explained) xlabel('Principal Component') ylabel('Variance Explained (%)')

Esta trama de Pedregal sólo muestra los primeros siete componentes (en lugar de los nueve totales) que explican el 95% de la varianza total. La única ruptura clara en la cantidad de varianza contabilizada por cada componente es entre el primer y el segundo componentes. Sin embargo, el primer componente por sí mismo explica menos del 40% de la varianza, por lo que podrían necesitarse más componentes. Puede ver que los tres primeros componentes principales explican aproximadamente dos tercios de la variabilidad total en las calificaciones estandarizadas, por lo que podría ser una manera razonable de reducir las dimensiones.

Estadística T cuadrado de Hotelling.

La última salida de es, que es T de Hotellingpcatsquared2, una medida estadística de la distancia multivariada de cada observación desde el centro del conjunto de datos. Esta es una forma analítica de encontrar los puntos más extremos en los datos.

[st2,index] = sort(tsquared,'descend'); % sort in descending order extreme = index(1); names(extreme,:)
ans =  New York, NY

Las calificaciones de Nueva York son las más alejadas de la ciudad promedio de los Estados Unidos.

Visualiza los resultados.

Visualice los coeficientes del componente principal ortoonormal para cada variable y las puntuaciones de los componentes principales para cada observación en un único trazado.

biplot(coefforth(:,1:2),'Scores',score(:,1:2),'Varlabels',categories); axis([-.26 0.6 -.51 .51]);

Las nueve variables se representan en este gráfico bi por un vector, y la dirección y la longitud del vector indican cómo cada variable contribuye a los dos componentes principales de la gráfica. Por ejemplo, el primer componente principal, en el eje horizontal, tiene coeficientes positivos para las nueve variables. Es por eso que los nueve vectores se dirigen a la mitad derecha de la trama. Los coeficientes más grandes del primer componente principal son los elementos tercero y séptimo, correspondientes a las variables y.healtharts

El segundo componente principal, en el eje vertical, tiene coeficientes positivos para las variables, y, y los coeficientes negativos para las cinco variables restantes.educationhealthartstransportation Esto indica que el segundo componente distingue entre las ciudades que tienen valores altos para el primer conjunto de variables y baja para el segundo, y las ciudades que tienen lo opuesto.

Las etiquetas variables en esta figura están algo abarrotadas. Puede excluir el argumento de par nombre-valor al realizar el trazado, o bien seleccionar y arrastrar algunas de las etiquetas a posiciones mejores mediante la herramienta editar trazado de la barra de herramientas de la ventana de la figura.VarLabels

Esta gráfica BI 2-D también incluye un punto para cada una de las 329 observaciones, con coordenadas que indican la puntuación de cada observación para los dos componentes principales en la trama. Por ejemplo, los puntos cercanos al borde izquierdo de esta gráfica tienen las puntuaciones más bajas para el primer componente principal. Los puntos se escalan con respecto al valor máximo de la puntuación y la longitud máxima del coeficiente, por lo que solo se pueden determinar sus ubicaciones relativas a partir de la gráfica.

Puede identificar elementos en el trazado seleccionando > en la ventana de la figura.ToolsData Cursor Al hacer clic en una variable (vector), puede leer la etiqueta de variable y los coeficientes para cada componente principal. Al hacer clic en una observación (punto), puede leer el nombre de la observación y las puntuaciones de cada componente principal. Puede especificar que se muestren los nombres de observación en lugar de los números de observación en la visualización del cursor de datos.'Obslabels',names

Cree una trama BI tridimensional.

También puede hacer una gráfica BI en tres dimensiones.

figure() biplot(coefforth(:,1:3),'Scores',score(:,1:3),'Obslabels',names); axis([-.26 0.8 -.51 .51 -.61 .81]); view([30 40]);

Este gráfico es útil si las dos primeras coordenadas principales no explican suficientemente la varianza en los datos. También puede rotar la figura para verla desde diferentes ángulos seleccionando la >Tools Rotate 3D.

Consulte también

| | | | |

Temas relacionados