Je lis le document "Coordonnées en étoile: une technique de visualisation multidimensionnelle avec un traitement uniforme des dimensions" et j'essaie de tracer mes données.
Disons que j'ai , un point de données à cinq dimensions, et les points sont calculés par la formule expliquée dans l'article.
L'idée de base des coordonnées stellaires est d'organiser les axes de coordonnées sur un cercle sur un plan bidimensionnel avec des angles égaux (initialement) entre les axes avec une origine au centre du cercle (figure 1). Initialement, tous les axes ont la même longueur. Les points de données sont mis à l'échelle à la longueur de l'axe, avec le mappage minimum à l'origine et le maximum à l'autre extrémité de l'axe. Les vecteurs unitaires sont calculés en conséquence. ...
Il s'agit simplement d'une extension des diagrammes de dispersion 2d et 3d typiques à des dimensions plus élevées avec normalisation.
J'ai du mal à saisir l'idée. Comment puis-je le tracer? Le principal problème est que je ne pouvais pas comprendre la formule du document.
Réponses:
Les "coordonnées étoiles" sont destinées à être modifiées de manière interactive, en commençant par une valeur par défaut. Cette réponse montre comment créer la valeur par défaut; les modifications interactives sont un détail de programmation.
Les données sont considérées comme une collection de vecteurs dans . Celles-ci sont d'abord normalisées séparément à l'intérieur de chaque coordonnée, transformant linéairement les données en l'intervalle . Cela se fait, bien sûr, en soustrayant d'abord leur minimum de chaque élément et en divisant par la plage. Appelez les données normalisées .xj=(xj1,xj2,…,xjd) Rd {xji,j=1,2,…} [0,1] zj
La base habituelle de est l'ensemble des vecteurs ayant un seul dans le lieu. En termes de cette base, . Une "projection de coordonnées d'étoiles" choisit un ensemble de vecteurs unitaires distincts dans et mappe à . Ceci définit une transformation linéaire de à . Cette carte est appliquée auRd ei=(0,0,…,0,1,0,0,…,0) 1 ith zj=zj1e1+zj2e2+⋯+zjded {ui,i=1,2,…,d} R2 ei ui Rd R2 zj - ce n'est qu'une multiplication matricielle - pour créer un nuage de points bidimensionnel, représenté comme un nuage de points. Les vecteurs unitaires sont dessinés et étiquetés pour référence.ui
(Une version interactive permettra à l'utilisateur de faire pivoter chacun des individuellement.)ui
Pour illustrer cela, voici une
R
implémentation appliquée à un ensemble de données de caractéristiques de performances automobiles. Obtenons d'abord les données:La première étape consiste à normaliser les données:
Par défaut, créons vecteurs unitaires également espacés pour . Ceux-ci déterminent la projection qui est appliquée à :d ui z
prj
C'est tout - nous sommes tous prêts à comploter. Il est initialisé pour laisser de la place aux points de données, aux axes de coordonnées et à leurs étiquettes:
Voici l'intrigue elle-même, avec une ligne pour chaque élément: axes, étiquettes et points:
Pour comprendre ce graphique, il pourrait être utile de le comparer à une méthode traditionnelle, la matrice de nuage de points:
Une analyse en composantes principales (ACP) basée sur la corrélation crée presque le même résultat.
La sortie de la première commande est
La majeure partie de la variance est attribuable à la première composante (1,9 contre 0,83 et moins). Les chargements sur ce composant sont de taille presque égale, comme le montre la sortie de la deuxième commande:
Cela suggère - dans ce cas - que le tracé des coordonnées étoiles par défaut se projette le long de la première composante principale et montre donc, essentiellement, une combinaison bidimensionnelle des deuxième à cinquième PC. Sa valeur par rapport aux résultats de l'ACP (ou à une analyse factorielle connexe) est donc discutable; le principal mérite peut être dans l'interactivité proposée.
Bien queui
R
le biplot par défaut soit horrible, le voici à titre de comparaison. Pour qu'il corresponde mieux au tracé des coordonnées des étoiles, vous devez permuter pour qu'il corresponde à la séquence des axes indiquée dans ce biplot.la source
En plus de la belle réponse de @whuber, je voudrais ajouter quelques autres options pour afficher des données multidimensionnelles (multivariées) en "coordonnées d'étoiles", pour une couverture plus complète. Ma réponse se concentre sur la réalisation d'une telle visualisation de données multivariées dans
R
.Je commencerai par dire que les graphiques en étoile (dans les variantes araignée et radar ) sont pris en charge par
R
legraphics
package de base de via la fonctionstars()
: http://stat.ethz.ch/R-manual/R-devel/library/graphics/html/ stars.html . Ensuite, dans laR
"chaîne alimentaire", il y a évidemment leggplot2
paquet, qui AFAIK n'a actuellement pas de fonctions spécifiques pour ce type de parcelles (veuillez me corriger, si je ne suis pas à jour à ce sujet). Cependant, une implémentation de base par Hadley Wickham, utilisantcoord_polar()
, peut être trouvée ici . De plus, un package basé sur ggplot2ggsubplot
offre la fonction appropriéegeom_star()
: http://www.inside-r.org/packages/cran/ggsubplot/docs/geom_star .D'autres packages qui contiennent la fonctionnalité de traçage en étoile incluent:
psych
- les fonctionsspider()
etradar()
- http://personality-project.org/r/html/spider.html ,plotrix
- la fonctionradial.plot()
- http://onertipaday.blogspot.com/2009/01/radar -chart.html ) et, éventuellement, d'autres.En plus de ce qui précède, il convient de noter qu'il est possible de créer des graphiques en étoile dans un logiciel Web , qui s'interface facilement avec
R
. Par exemple, voici une variation d'un graphique en étoiles dansplotly
, où il est appelé graphique de zone polaire: https://plot.ly/r/polar-chart/#Polar-Area-Chart . En parlant deR
visualisation de données sur le Web, il est impossible de ne pas mentionner la grande bibliothèque D3.js, qui est également accessible à partir deR
. Voici comment créer une intrigue d'étoiles magnifique, en utilisant D3.js: http://www.visualcinnamon.com/2013/09/making-d3-radar-chart-look-bit-better.html .la source