Vamos ver agora como podemos agrupar as folhas conforme as medidas através de técnicas de classificação multivariada, ou seja, agrupar os indíviduos em função das similaridades entre as medidas de sépalas e pétalas vistas acima
Primeiro vamos separar as medidas da variável que classifica em grupos (no caso as espécies). Como Species é a coluna 5 do meu data frame, eu vou chamar de iris.medidas todas as colunas, menos a 5, e de espécies, apenas a respectiva coluna.
iris.medidas <- iris[,-5]
especies <- iris[,5]
Para fazer a análise é preciso primeiro construir uma matriz de similaridade ou distância. Existem dezenas de métodos, aqueles implementados no comando hclust são: “euclidean”, “maximum”, “manhattan”, “canberra”, “binary” ou “minkowski”. Veja em um livro de ecologia numéria qual a utilidade de cada um dos métodos. Neste exemplo vamos fazer com a distância de manhattan, primeiro criando uma matriz de distância e depois submetendo-a ao agrupamento:
d_iris <- dist(iris.medidas, method="man")
cluster.iris <- hclust(d_iris)
plot(cluster.iris)
Note que no plot do resultado temos a formação de três grupos principais. No comando hclust existem diferentes métodos de agrupamento, no caso utilizamos o default (“complete”) e que, portanto, não precisa ser fornecido. Entretanto, não sabemos se os três grupos principais formados correspondem aos indivíduos das diferentes espécies. Para isso vamos criar um objeto do tipo dendogram para ser trabalhado com outro pacote, o denextend
dendro<-as.dendrogram(cluster.iris)
library(dendextend)
dendro<-as.dendrogram(cluster.iris)
Para colorir as espécies, vamos agora transformar os nomes das espécies em números e colocar elas na ordem que aparecem no dendrograma
especies<-as.numeric(especies)
especies.ord <- especies[order.dendrogram(dendro)]
Agora vamos solicitar que as cores no dendrograma sejam representações das espécies
labels_colors(dendro)<-especies.ord
E, finalmente, plotando novamente o objeto dendro com os terminais coloridos
plot(dendro)
Como podemos observar os grupos representam as espécies, com algumas excessões para alguns indivíduos da espécie Iris virginica, que corresponde a cor verde. Estes estão mesclados com Iris versicolor (vermelha), de forma semelhante ao que vimos na análise de ordenação.
O método K-means particiona, isto é, separa as amostras em um número de grupos pré-definidos. Por exemplo eu posso usar os dados acima e solicitar que ele os separe por similaridade em 2, 3, 4 ou 5 grupos. Para isso, vou chamar a função cascadeKM do pacote vegan especificando que eu quero particionar os dados entre 2 a 5 grupos (ver como abaixo). Será que a divisão em três grupos vai coincidir com as três espécies? Vamos ver:
library("vegan")
medidas.cascade <- cascadeKM(iris.medidas, inf.gr=2, sup.gr=5, iter=100)
plot(medidas.cascade, sortg=TRUE)
Note que Iris versicolor (os valores de 51-100) e Iris virginica(101-150) ficam juntas quando separamos em dois grupos. Quando a separação é em três grupos, alguns indivíduos destas espécies se misturam, sendo mais similares aos da outra espécie, da mesma forma que vimos na análise de cluster acima. A figura à direita indica qual o número de grupos que fornece resultados mais adequados. No caso, é justamente a separação em três grupos (maior valor do critério).