Estoy leyendo el documento "Coordenadas de estrellas: una técnica de visualización multidimensional con tratamiento uniforme de dimensiones" y estoy tratando de trazar mis datos.
Digamos que tengo , un punto de datos de cinco dimensiones, y los puntos se calculan mediante la fórmula explicada en el documento.
La idea básica de las coordenadas de estrella es organizar los ejes de coordenadas en un círculo en un plano bidimensional con ángulos iguales (inicialmente) entre los ejes con un origen en el centro del círculo (Figura 1). Inicialmente, todos los ejes tienen la misma longitud. Los puntos de datos se escalan a la longitud del eje, con el mapeo mínimo al origen y el máximo al otro extremo del eje. Los vectores unitarios se calculan en consecuencia. ...
Esto es simplemente una extensión de los gráficos de dispersión 2d y 3d típicos a dimensiones superiores con normalización.
Me cuesta entender la idea. ¿Cómo lo trazo? El principal problema es que no podía entender la fórmula en el documento.
Respuestas:
Las "coordenadas de estrella" están destinadas a ser modificadas interactivamente, comenzando con un valor predeterminado. Esta respuesta muestra cómo crear el valor predeterminado; Las modificaciones interactivas son un detalle de programación.
Los datos se consideran una colección de vectores.Xj= (Xj 1,Xj 2, ... ,Xj d) en Rd . Primero se normalizan por separado dentro de cada coordenada, transformando linealmente los datos.{xji,j=1,2,…} en el intervalo [0,1] . Esto se hace, por supuesto, primero restando su mínimo de cada elemento y dividiendo por el rango. Llamar a los datos normalizadoszj .
La base habitual deRd es el conjunto de vectores ei=(0,0,…,0,1,0,0,…,0) teniendo un solo 1 en el ith sitio. En términos de esta base,zj=zj1e1+zj2e2+⋯+zjded . Una "proyección de coordenadas de estrella" elige un conjunto de vectores unitarios distintos{ui,i=1,2,…,d} en R2 y mapas ei a ui . Esto define una transformación lineal deRd a R2 . Este mapa se aplica a lazj --es solo una multiplicación matricial-- para crear una nube de puntos bidimensional, representada como un diagrama de dispersión. Los vectores unitariosui están dibujados y etiquetados para referencia.
(Una versión interactiva permitirá al usuario rotar cada una de lasui individualmente.)
Para ilustrar esto, aquí hay una
R
implementación aplicada a un conjunto de datos de características de rendimiento del automóvil. Primero obtengamos los datos:El paso inicial es normalizar los datos:
Por defecto, creemosd vectores unitarios igualmente espaciados para el ui . Estos determinan la proyección z :
prj
que se aplica aEso es todo, todos estamos listos para tramar. Se inicializa para proporcionar espacio para los puntos de datos, los ejes de coordenadas y sus etiquetas:
Aquí está el gráfico en sí, con una línea para cada elemento: ejes, etiquetas y puntos:
Para comprender este gráfico, podría ser útil compararlo con un método tradicional, la matriz de diagrama de dispersión:
Un análisis de componentes principales (PCA) basado en correlación crea casi el mismo resultado.
La salida para el primer comando es
La mayor parte de la varianza se explica por el primer componente (1.9 versus 0.83 y menos). Las cargas en este componente son casi iguales en tamaño, como se muestra en la salida del segundo comando:
Esto sugiere, en este caso, que la gráfica de coordenadas de estrella predeterminada se está proyectando largo del primer componente principal y, por lo tanto, muestra, esencialmente, una combinación bidimensional de las PC segunda a quinta. Su valor en comparación con los resultados de PCA (o un análisis factorial relacionado) es, por lo tanto, cuestionable; El mérito principal puede estar en la interactividad propuesta.
Aunqueui para estar de acuerdo con la secuencia de ejes que se muestra en este biplot.
R
el biplot predeterminado se ve horrible, aquí es para comparar. Para que coincida mejor con el diagrama de coordenadas de la estrella, deberá permutar elfuente
Además de la buena respuesta de @whuber, me gustaría agregar algunas otras opciones para mostrar datos multidimensionales (multivariados) en "coordenadas de estrella", en aras de una cobertura más completa. Mi respuesta se centra en realizar tal visualización de datos multivariados en
R
.Comenzaré diciendo que las gráficas de estrellas (en las variantes de araña y radar ) son compatibles con
R
elgraphics
paquete base de la funciónstars()
: http://stat.ethz.ch/R-manual/R-devel/library/graphics/html/ estrellas.html . El siguiente en laR
"cadena alimentaria" va, obviamente, elggplot2
paquete, que AFAIK actualmente no tiene funciones específicas para este tipo de parcelas (corríjame, si no estoy actualizado sobre esto). Sin embargo, una implementación básica de Hadley Wickham, usandocoord_polar()
, se puede encontrar aquí . Además, unggsubplot
paquete basado en ggplot2 ofrece la función relevantegeom_star()
: http://www.inside-r.org/packages/cran/ggsubplot/docs/geom_star .Otros paquetes que contienen la funcionalidad de trazado de estrellas incluyen:
psych
- funcionesspider()
yradar()
- http://personality-project.org/r/html/spider.html ,plotrix
- funciónradial.plot()
- http://onertipaday.blogspot.com/2009/01/radar -chart.html ) y, posiblemente, algunos otros.Además de lo anterior, debe tenerse en cuenta que es posible crear diagramas de estrellas en un software habilitado para la Web , que interactúa fácilmente con ellos
R
. Por ejemplo, aquí hay una variación de un diagrama de estrellas enplotly
, donde se llama gráfico de área polar: https://plot.ly/r/polar-chart/#Polar-Area-Chart . Hablando deR
visualización de datos habilitada para la web, es imposible no mencionar la gran biblioteca D3.js, a la que también se puede accederR
. Aquí es cómo hacer una trama estelar de gran apariencia, usando D3.js: http://www.visualcinnamon.com/2013/09/making-d3-radar-chart-look-bit-better.html .fuente