O R é um programa livre multiplataforma para análises estatísticas que pode ser baixado em seu site ou adicionado na lista de repositórios de máquinas linux. Suas possibilidades de aplicação em diversas áreas são praticamente ilimitadas.
Neste blog postarei o resultado de minha experiência em sua utilização nas áreas de dinâmica de populações de peixes, ciência pesqueira e ecologia.
As postagens deste blog se destina, além de mim mesmo, a iniciantes no R e alunos da minha área de atuação.
Aprendi muito em livros e nas listas de discussão R-help e a R_STAT, mas ainda tenho muito pela frente. Agradeço desde já qualquer contribuição.

sábado, 3 de março de 2012

Identificando grupos em um dendrograma

As técnicas de agrupamento (cluster analysis) são muito úteis para organizar, ou classificar, dados observados em estruturas de fácil interpretação. Uma ótima referência é o livro Numerical Ecology with R (Boccard et al. 2011). O tuturial do pacote vegan (clique aqui) também trás explicações e exemplos interessantes.
Os dendrogramas são como mobiles, seus grupos são sempre os mesmos, mas podem mudar de posição. O grupo 1 não é necessariamente o primeiro à esquerda, nem o grupo 2 vem a seguir. Isto pode complicar na hora de interpretar os fatores relacionados na formação dos grupos. Um bom exemplo está na página 38 do tutorial do vegan. Temos a figura de um dendrograma seguida de um boxplot. Se não prestarmos atenção poderemos ser levados a crer, por exemplo, que o grupo 2, onde encontramos a maior mediada é formado pelos objetos 1, 2, 10, 5, 6 e 7. No entanto, este conjunto de objetos forma o grupo 1, como veremos a seguir, que tem a menor mediana. A interpretação do dendrograma poder ser facilitada se o número do grupo puder ser visualizado em conjunto. Vamos ao exemplo do tutorial

# carrega a biblioteca e os dados
library(vegan)
data(dune)

# calcula a matriz de distância, as ligações, plota o dendrograma e identifica os grupos
dis <- vegdist(dune)
cluc <- hclust(dis, "complete")
plot(cluc)
rect.hclust(cluc, 3)

# verifica que objetos foram classificados em cada grupo
grp<-cutree(cluc, 3)
grp

# substitui no dendrograma o nome do objeto pelo número do grupo
plot(cluc, labels = as.character(grp))

# desenha no dendrograma os retângulos de cada grupo e os numera
# agradeço a dica de Elias T. Krainski (lista R-Br)
plot(cluc)
r <- rect.hclust(cluc, 3)
text(cumsum(sapply(r,length)),
     rep(mean(tail(unique(cluc$hei),2)), length(r)),
     paste(unique(grp[cluc$ord])))

Agora fica mais fácil relacionar o dendrograma ao boxplot no tutorial do vegan.

3 comentários:

  1. Olá Antônio Olinto, parabéns pelo excelente material disponibilizado, são pessoas como você que fazem o conhecimento científico crescer.
    Tenho uma dúvida, como faço para substituir os números 1 2 3 4 5 etc do dendrograma pelos nomes das respectivas amostras ?

    Desde já agradeço.

    ResponderExcluir
    Respostas
    1. Olá Leonardo, para mudar o nome das amostras você deve alterar na sua matriz o nome das linhas. Ou seja o nome de cada linha deve ser o nome da amostra. Procure no help do R por row.names
      Abraços

      Excluir
  2. Olá Antonio. Sei que há complementos no comando para construção do gráfico que modificam suas características como tamanho de letra, por exemplo.Você sabe como faço para alinhar todos os objetos na base do dendrograma. Já vi isso uma vez e não consigo me lembrar.
    Muito obrigado.

    ResponderExcluir