Estou lendo o artigo "Coordenadas em estrela: uma técnica de visualização multidimensional com tratamento uniforme de dimensões" e tentando plotar meus dados.
Digamos que eu tenha , um ponto de dados em cinco dimensões, e os pontos são calculados pela fórmula explicada no artigo.
A idéia básica das coordenadas estrela é organizar os eixos de coordenadas em um círculo em um plano bidimensional com ângulos iguais (inicialmente) entre os eixos com uma origem no centro do círculo (Figura 1). Inicialmente, todos os eixos têm o mesmo comprimento. Os pontos de dados são dimensionados para o comprimento do eixo, com o mapeamento mínimo para a origem e o máximo para a outra extremidade do eixo. Os vetores unitários são calculados de acordo. ...
Isso é simplesmente uma extensão de gráficos de dispersão 2D e 3D típicos para dimensões mais altas com normalização.
Tenho dificuldade em entender a ideia. Como eu traço isso? O principal problema é que eu não conseguia entender a fórmula no artigo.
Respostas:
As "coordenadas em estrela" devem ser modificadas interativamente, começando com um padrão. Esta resposta mostra como criar o padrão; as modificações interativas são um detalhe de programação.
Os dados são considerados uma coleção de vetores em . Estes são normalizados primeiro separadamente em cada coordenada, transformando linearmente os dados no intervalo . Isso é feito, é claro, primeiro subtraindo o mínimo de cada elemento e dividindo pelo intervalo. Chame os dados normalizados .R d { x j i , j = 1 , 2 , … } [ 0 , 1 ] z jxj=(xj1,xj2,…,xjd) Rd {xji,j=1,2,…} [0,1] zj
A base usual de é o conjunto de vetores com um único no lugar. Em termos dessa base, . Um "coordenadas estrela projecção" escolhe um conjunto de vectores de unidades distintas em e mapeia para . Isso define uma transformação linear de para . Este mapa é aplicado aoRd ei=(0,0,…,0,1,0,0,…,0) 1 ith zj=zj1e1+zj2e2+⋯+zjded R 2 e i u i R d R 2 Z j u i{ui,i=1,2,…,d} R2 ei ui Rd R2 zj --é apenas uma multiplicação de matrizes - para criar uma nuvem de pontos bidimensional, representada como um gráfico de dispersão. Os vetores unitários são desenhados e rotulados para referência.ui
(Uma versão interativa permitirá que o usuário gire cada um dos individualmente.)ui
Para ilustrar isso, aqui está uma
R
implementação aplicada a um conjunto de dados de características de desempenho de automóveis. Primeiro vamos obter os dados:O passo inicial é normalizar os dados:
Como padrão, vamos criar vetores de unidade igualmente espaçados para o . Eles determinam a projeção aplicada a :u i zd ui z
prj
É isso aí - estamos todos prontos para tramar. É inicializado para fornecer espaço para os pontos de dados, os eixos de coordenadas e seus rótulos:
Aqui está o próprio gráfico, com uma linha para cada elemento: eixos, rótulos e pontos:
Para entender esse gráfico, pode ser útil compará-lo a um método tradicional, a matriz de gráficos de dispersão:
Uma análise de componentes principais (PCA) baseada em correlação cria quase o mesmo resultado.
A saída para o primeiro comando é
A maior parte da variação é explicada pelo primeiro componente (1,9 versus 0,83 e menos). As cargas neste componente são quase iguais em tamanho, como mostra a saída para o segundo comando:
Isso sugere - nesse caso - que o gráfico de coordenadas em estrela padrão está projetando-se ao longo do primeiro componente principal e, portanto, está mostrando, essencialmente, alguma combinação bidimensional do segundo ao quinto PCs. Seu valor comparado aos resultados do PCA (ou uma análise fatorial relacionada) é, portanto, questionável; o principal mérito pode estar na interatividade proposta.
R
fonte
Além da boa resposta de @whuber, gostaria de adicionar outras opções para exibir dados multidimensionais (multivariados) em "coordenadas em estrela", para obter uma cobertura mais abrangente. Minha resposta se concentra em realizar essa visualização de dados multivariados no
R
.Começarei dizendo que as plotagens em estrela (nas variantes spider e radar ) são suportadas pelo pacote
R
base dagraphics
via funçãostars()
: http://stat.ethz.ch/R-manual/R-devel/library/graphics/html/ stars.html . Em seguida, naR
"cadeia alimentar" está, obviamente, oggplot2
pacote, que o AFAIK atualmente não possui funções específicas para esse tipo de parcela (por favor, corrija-me, se não estiver atualizado sobre isso). No entanto, uma implementação básica de Hadley Wickham, usandocoord_polar()
, pode ser encontrada aqui . Além disso, umggsubplot
pacote baseado em ggplot2 oferece a função relevantegeom_star()
: http://www.inside-r.org/packages/cran/ggsubplot/docs/geom_star .Outros pacotes que contêm a funcionalidade de plotagem em estrela incluem:
psych
- funçõesspider()
eradar()
- http://personality-project.org/r/html/spider.html ,plotrix
- funçãoradial.plot()
- http://onertipaday.blogspot.com/2009/01/radar -chart.html ) e, possivelmente, alguns outros.Além do acima, observe-se que é possível criar gráficos em estrela em software habilitado para Web , com o qual é fácil interagir
R
. Por exemplo, aqui está uma variação de um gráfico em estrelaplotly
, onde é chamado de gráfico de área polar: https://plot.ly/r/polar-chart/#Polar-Area-Chart . Falando sobreR
e visualização de dados ativada pela Web, é impossível não mencionar a excelente biblioteca D3.js., que também pode ser acessada a partirR
. Aqui está como criar um enredo bonito, usando D3.js.: http://www.visualcinnamon.com/2013/09/making-d3-radar-chart-look-bit-better.html .fonte