Alternativas ao gráfico de dispersão tridimensional


7

Para uma apresentação, tenho que visualizar dados tridimensionais. Eu deveria visualizá-los no "estilo de um gráfico de dispersão".

As primeiras idéias de maio foram

  • Um gráfico de dispersão tridimensional
  • Uma matriz de dispersão
  • Redução de dimensionalidade (PCA) e, posteriormente, um gráfico de dispersão bidimensional

Quais são as alternativas para esses conceitos? Se possível, inclua o código R na sua resposta.

Edit: Eu tenho 40 objetos com 3 dimensões. Cada observação pode assumir um valor inteiro de 1 a 6.


3
As respostas dependerão da estrutura e da semântica dos seus dados. Dependendo do que você possui, você pode usar gráficos de dispersão em painéis ou gráficos de dispersão com uma terceira dimensão indicada por cores. Você pode nos contar um pouco mais sobre seus dados e talvez postar uma amostra?
precisa saber é o seguinte

11
No meu campo, o maior exemplo é o gráfico PCA. Você perdeu apenas uma dimensão se usar o PCA.
HelloWorld

11
Os gráficos de coordenadas paralelas podem ser bons nessa escala (3 dimensões, 40 pontos), pois estão disponíveis através da parcoordfunção no MASSpacote. Observe que, às vezes, alterar a ordem das dimensões pode tornar esses gráficos mais reveladores.
G5W

11
A principal dificuldade que vejo é ter apenas valores inteiros de 1 a 6. Isso torna muito mais difícil ver o que os dados estão fazendo, pois os pontos se sobrepõem. Você provavelmente vai querer ficar tremida seus pontos plotados como plot(jitter(y2) ~ jitter(x2), pch = 15)referência: thomasleeper.com/Rcourse/Tutorials/jitter.html
Tavrock

Respostas:


3

Eu acho que o que precisa ser adicionado principalmente à sua lista são coplots , mas vamos trabalhar até isso. O ponto de partida para visualizar duas variáveis ​​contínuas deve sempre ser um gráfico de dispersão. Com mais de duas variáveis, que generalizam naturalmente para uma matriz de gráficos de dispersão (embora se você tiver muitas variáveis, talvez seja necessário dividi-las em várias matrizes, consulte: Como extrair informações de uma matriz de gráficos de dispersão quando você tem N grande, discreto dados e muitas variáveis? ). O que devemos reconhecer é que uma matriz de gráficos de dispersão é um conjunto de projeções marginais 2D de um espaço de maior dimensão. Mas essas margens podem não ser as mais interessantes ou informativas. Exatamente qualas margens que você pode querer examinar são uma questão complicada (cf. busca de projeção ), mas o próximo conjunto mais simples possível de examinar é o conjunto que torna as variáveis ​​ortogonais, ou seja, gráficos de dispersão das variáveis ​​resultantes de uma análise de componentes principais . Você mencionou usar isso para redução de dados e examinar o gráfico de dispersão dos dois primeiros componentes principais. O pensamento por trás disso é razoável, mas você não precisa apenas olhar para as duas primeiras; vale a pena explorar outras (cf. Exemplos de PCA em que PCs com baixa variação são "úteis" ), portanto, você pode / deve fazer uma matriz de dispersão desses também. Outra possibilidade com a saída de um PCA é fazer um biplot, que sobrepõe a maneira como as variáveis ​​originais estão relacionadas aos componentes principais (como setas) na parte superior do gráfico de dispersão. Você também pode combinar uma matriz de dispersão dos principais componentes com biplots.

Todos os itens acima são marginais, como mencionei. Um coplote é condicional (a parte superior da minha resposta aqui contrasta condicional x marginal). Literalmente, 'coplot' é uma palavra combinada de 'plot condicional'. Em um coplot, você está pegando fatias (ou subconjuntos) dos dados nas outras dimensões e plotando os dados nesses subconjuntos em uma série de gráficos de dispersão. Depois de aprender a lê-los, eles são uma boa adição ao seu conjunto de opções para explorar padrões em dados de dimensões mais altas.

Para ilustrar essas idéias, aqui está um exemplo com o conjunto de dados RandU (dados pseudo-aleatórios gerados por um algoritmo popular nos anos 70):

data(randu)
windows()
  pairs(randu)

insira a descrição da imagem aqui

pca = princomp(randu)
attr(pca$scores, "dimnames")[[1]][1:400] = "o"
windows()
  par(mfrow=c(3,3), mar=rep(.5,4), oma=rep(2,4))
  for(i in 1:3){
    for(j in 1:3){
      if(i<j){
        plot(y=pca$scores[,i], x=pca$scores[,j], axes=FALSE); box()
      } else if(i==j){
        plot(density(pca$scores[,i]), axes=FALSE, main=""); box()
        text(0, .5, labels=colnames(pca$scores)[i])
      } else {
        biplot(pca, choices=c(j,i), main="", xaxp=c(-10,10,1), yaxp=c(-10,10,1))
      }
    }
  }

insira a descrição da imagem aqui

windows()
  coplot(y~x|z, randu)

insira a descrição da imagem aqui

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.