Uma boa maneira de mostrar muitos dados graficamente

15

Estou trabalhando em um projeto que envolve 14 variáveis ​​e 345.000 observações para dados de habitação (itens como ano construído, metragem quadrada, preço vendido, município de residência, etc.). Estou preocupado em tentar encontrar boas técnicas gráficas e bibliotecas R que contenham boas técnicas de plotagem.

Já estou vendo o que no ggplot e no reticulado funcionará bem, e estou pensando em fazer gráficos de violino para algumas das minhas variáveis ​​numéricas.

Que outros pacotes as pessoas recomendariam para exibir uma grande quantidade de variáveis ​​numéricas ou do tipo fatorial de maneira clara, polida e, o mais importante, sucinta?

Christopher Aden
fonte
"maneira clara, polida e, mais importante, sucinta" Parece-me ggplot2.
Brandon Bertelsen
1
Não estou procurando apenas bibliotecas R, mas também quaisquer tipos específicos de gráficos. Meu conhecimento de gráficos é limitado a dispersão, caixa, qq, histogramas, violinos, estimativas de densidade de kernel, etc. Quaisquer gráficos um pouco mais obscuros que possam revelar mais sobre os dados do que seriam fantásticos.
Christopher Aden
2
coordenadas paralelas soa como outra para mencionar. Também métodos de redução de dimensionalidade podem ser úteis.
Tal Galili

Respostas:

13

O melhor "gráfico" é tão óbvio que ninguém o mencionou ainda: faça mapas. Os dados da moradia dependem fundamentalmente da localização espacial (de acordo com a antiga serra sobre imóveis), portanto, a primeira coisa a ser feita é fazer um mapa detalhado e claro de cada variável. Para fazer isso bem com um terço de um milhão de pontos, é realmente necessário um SIG de força industrial, que pode reduzir o trabalho do processo. Depois disso, faz sentido continuar e fazer gráficos de probabilidade e gráficos de caixas para explorar distribuições univariadas, e traçar matrizes de gráficos de dispersão e gráficos de caixas esquemáticos errantes, etc., para explorar dependências - mas os mapas sugerem imediatamente o que explorar, como modelar o relacionamentos de dados e como dividir os dados geograficamente em subconjuntos significativos.

whuber
fonte
Boa ideia! Já tenho latitudes e longitudes de todos os pontos de dados, portanto essa tarefa seria relativamente elementar. Eu estava pensando que a biblioteca de mapas seria um bom caminho, a menos que haja algo melhor.
Christopher Aden
2
@ Christopher Você também pode fazer isso com ggplot2(especialmente se você não precisar traçar limites do país), had.co.nz/ggplot2/coord_map.html . Caso contrário, maps, gmapssão melhores. Há também GeoXpuma interface R para GRASS. BTW, Mondrian tem um plugin para dados geográfica :)
chl
Atribuir uma melhor resposta pode ser difícil quando há várias ótimas sugestões, mas acho que essa é a direção certa, tendo em mente "sucinto". Vou tentar o ggplot2 e dar uma olhada nos mapas, GeoXp e Mondrian. Obrigado pela ideia de representar graficamente espacialmente!
Christopher Aden
Alguns posts interessantes sobre mapeia blog.revolutionanalytics.com/2012/07/... stevendkay.wordpress.com/2010/04/21/...
Chris Beeley
Eu tive um bom sucesso com lattice's levelplote contourplot. O pacote fieldspossui alguns recursos interessantes, incluindo o quiltplotque é bom se seus dados não estiverem estritamente em uma grade. Ele também possui uma boa função de spline de chapa fina Tpspara suavizar dados sem grade para uma grade. Quanto ao software GIS dedicado, o GRASS de alguma forma nunca faz sentido para mim, prefiro o QGIS.
Wayne
6

Eu recomendo dar uma olhada no GGobi , que também possui uma interface R, pelo menos para fins exploratórios. Ele possui várias exibições gráficas especialmente úteis para lidar com um grande número de observações e variáveis ​​e para vinculá-las. Você pode começar assistindo a alguns vídeos na seção "Assista a uma demonstração" na página Aprenda GGobi .

Atualizar

Links para as ferramentas de Hadley Wickham para o GGobi, conforme sugerido por chl nos comentários:

  • DescribeDisplay "Pacote R que fornece uma maneira de recriar gráficos ggobi em R"
  • clusterfly "Explore os resultados do clustering em altas dimensões"
  • rggobi "Pacote R que fornece uma interface fácil com o GGobi"
ars
fonte
1
@ars Vamos adicionar as ferramentas R de Hadley para aprimorar a experiência GGobi, por exemplo, DescribeDisplaye clusterfly.
chl
Oi pessoal, como escrevi na minha resposta - minha experiência com o ggobi é que ele não lida bem com grandes conjuntos de dados. Você tem outra experiência com isso?
Tal Galili
@Tal O problema vem de não depender do glifo para exibição / renderização na tela, o que é comum nos gráficos de base R. Isso foi discutido na última conferência DSC ( j.mp/bpOhBH ). Na verdade, há um projeto em andamento com o Qt como back-end e uma nova porta do GGobi, para aprimorar a exibição interativa de grandes conjuntos de dados.
chl
1
@ Tal: Minha experiência é que é bastante lento ao atualizar / repintar as visualizações, por exemplo, ao adicionar uma variável ou ao arrastar para reorganizar as exibições no PCP. Ainda assim, é utilizável, embora não tão interativo quanto anunciado com grandes dados. @chl: É muito bom saber disso, obrigado!
ars
1
@ars @Tal Aqui estão os links na interface Qt para R ( j.mp/d1AJp7 ) e GGobi ( j.mp/cUOvfp ). Veja também o repositório Github de Hadley!
chl
6

Eu sinto que você está realmente fazendo duas perguntas: 1) que tipos de visualizações usar e 2) que pacote R pode produzi-las.

No caso de que tipo de gráfico usar, existem muitos e isso depende de suas necessidades (por exemplo: tipos de variáveis ​​- numéricos, fatores, geográficos, etc., e o tipo de conexão que você deseja exibir):

  • Se você tiver muitas variáveis ​​numéricas, convém usar uma matriz de gráficos de dispersão (veja aqui )
  • Se você tiver muitas variáveis ​​de fator, convém usar uma matriz de gráfico de dispersão para fatores (veja aqui )
  • Você também pode fazer algumas coordenadas paralelas são várias maneiras de fazê-lo em R.
  • Para uma gama mais ampla de instalações gráficas em R, dê uma olhada na exibição de tarefas gráficas .

Agora sobre como fazê-lo. Um problema com muitos pontos de dados é o tempo até a plotagem ser criada. ggplot2, iplots, ggobi não são muito bons para muitos pontos de dados (pelo menos na minha experiência). Nesse caso, você pode querer se concentrar nas instalações gráficas da base R ou experimentar seus dados e usar essas outras ferramentas. Ou você pode esperar que as pessoas que desenvolvem iplots extreme (ou Acinonyx ) cheguem a um estágio avançado de lançamento.

Tal Galili
fonte
Obrigado pelos links sobre rflowcyte Acinonyx.
chl
BTW, rflowcytfoi descontinuado com os lançamentos recentes do Bioconductor, agora é recomendado o uso flowViz. Enfim, ambos confiam lattice.
chl
Resposta muito completa, Tal! O tempo de geração de plotagem não deve ser um grande problema. Venho fazendo a maioria dos meus gráficos com o pacote base, e a questão de ter os gráficos mais agradáveis ​​foi para quando decidi usar um gráfico para o artigo. Eu tinha pensado em usar uma matriz de dispersão para as variáveis ​​numéricas, mas como muitas delas são de unidades diferentes (algumas são em dólares, outras em pés quadrados), a única informação valiosa que eu receberia seria tendências gerais, mas com ~ 8 valores numéricos variáveis, um SPM 8x8 está um pouco confuso.
Christopher Aden
3

O Mondrian fornece recursos interativos e lida com conjuntos de dados bastante grandes (embora seja em Java).

Paraview inclui viz 2D / 3D. características.

chl
fonte
Obrigado pelas duas novas bibliotecas. Meu principal conflito com esses dois é que estou enviando meu relatório por meio de cópia em papel, para que gráficos interativos não sejam totalmente utilizados. Os gráficos de Mondrian parecem bastante complexos. Vou dar uma olhada.
Christopher Aden
@Christopher Para Mondrian, você tem a versão R "equivalente" iplotscitada por @Tal. Sobre o Paraview, você tem a opção de salvar uma captura de tela do seu viz. DescribeDisplayé o caminho a percorrer para exportar a visualização dinâmica do GGobi, cran.r-project.org/web/packages/DescribeDisplay/index.html .
chl
-3

Gostaria de chamar sua atenção, Coordenadas Paralelas: Geometria Multidimensional Visual e Suas Aplicações , que contém os mais recentes avanços e aplicações no campo.

O livro foi elogiado por Stephen Hawking, entre outros. As superfícies são descritas (usando a dualidade) por seus vetores normais em seus pontos. Ele contém aplicativos para controle de tráfego aéreo (prevenção automática de colisões - 3 patentes nos EUA), mineração de dados multivariada (em conjuntos de dados reais, alguns com centenas de variáveis), otimização multiobjetivo, controle de processos, displays inteligentes para cuidados intensivos, segurança, visualização de rede e recentemente grandes Dados.

Alfred Inselberg
fonte
5
Olá Alfred, obrigado por ingressar no site, mas isso parece um pouco promocional. Talvez você tenha um exemplo semelhante ao conjunto de dados do OP (14 variáveis ​​e 345.000 observações) que possa fornecer uma imagem e descrever / demonstrar como as coordenadas paralelas podem ser úteis? Muitos dos gráficos de coordenadas paralelas estáticas que eu já vi com tantas observações tendem a parecer espaguete em um prato, mas eu suspeito que você tenha uma idéia melhor de como entender esses dados N tão grandes.
Andy W
Oi Andy, eu não tenho um exemplo com tantas observações. In
Alfred Inselberg
Oi Andy, eu não tenho um exemplo com tantas observações. A interatividade é essencial para a exploração de dados. Trabalhei em um conjunto de dados com cerca de 800 variáveis ​​e 10.000 observações em uma rede telefônica celular para descobrir falhas "misteriosas". Utilizando os classificadores de forma independente e com interativo, foram encontradas as 11 variáveis ​​responsáveis ​​e rastreando-as para trás no tempo em que foram detectadas atividades não comuns na rede 3-4 antes de perceber a falha.
Alfred Inselberg