Objetivo: Criar uma matriz de distâncias no método Euclidiano para entender qual o grau de semelhança das unidades amostrais de acordo com os dados das variáveis ambientais através da visualização por um Cluster.
Este material está disponível em: http://rpubs.com/leonardoreffatti.
Cluster da Matriz de Distâncias através do método Euclidiano com os dados das variáveis ambientais. Definição das variáveis ambientais, padronização das unidades, criação da matriz de distâncias pelo método Euclidiano, definição de novos nomes para as unidades amostrais, plotagem do cluster com as novas unidades amostrais, verificação de o quanto o Cluster representa a Matriz de Distâncias através do coeficiente cofenético (matriz cofenética).
library(permute)
library(lattice)
library(vegan)
## This is vegan 2.5-2
setwd("C:/R/Curso do R/MODULO_5.1")
#inserindo os nomes das UAs no Cluster, argumento row.names
dados<-read.table("insetos.txt", h=T, row.names = 1)
attach(dados)
str(dados)
## 'data.frame': 30 obs. of 40 variables:
## $ Ambiente : Factor w/ 2 levels "Mata_Primária",..: 1 1 1 1 1 1 1 1 1 1 ...
## $ Gado : Factor w/ 2 levels "Ausente","Presente": 2 1 2 2 2 1 1 1 2 2 ...
## $ Temperatura: num 21.8 21.3 23.8 23.2 21.5 21.7 20.3 19.7 24.7 20.2 ...
## $ Cobertura : int 73 62 57 49 59 78 64 74 48 75 ...
## $ Luz : num 53.5 61 71.5 69.5 61.5 53 58 56 71 60.5 ...
## $ Flores : int 14 28 17 29 15 24 21 29 20 5 ...
## $ sp.1 : int 4 5 1 3 5 1 1 0 6 3 ...
## $ sp.2 : int 0 0 0 0 0 0 3 1 4 0 ...
## $ sp.3 : int 7 3 2 6 7 2 2 1 8 3 ...
## $ sp.4 : int 2 7 0 4 2 4 5 3 3 1 ...
## $ sp.5 : int 0 2 2 1 1 0 3 4 0 0 ...
## $ sp.6 : int 0 5 2 14 4 3 3 9 8 0 ...
## $ sp.7 : int 3 2 3 2 1 4 3 2 1 3 ...
## $ sp.8 : int 2 4 3 5 2 3 0 0 1 0 ...
## $ sp.9 : int 1 2 0 0 0 0 2 0 1 0 ...
## $ sp.10 : int 1 3 5 2 1 1 0 0 1 1 ...
## $ sp.11 : int 0 0 0 4 0 2 0 2 0 0 ...
## $ sp.12 : int 1 5 0 2 0 2 4 5 0 0 ...
## $ sp.13 : int 3 6 0 3 3 2 3 1 4 2 ...
## $ sp.14 : int 3 4 2 10 5 2 2 5 8 0 ...
## $ sp.15 : int 0 0 0 0 1 0 0 0 1 0 ...
## $ sp.16 : int 3 3 0 2 0 0 3 0 1 0 ...
## $ sp.17 : int 0 0 0 1 0 0 0 0 0 0 ...
## $ sp.18 : int 0 1 2 3 1 3 0 0 2 0 ...
## $ sp.19 : int 0 0 2 2 3 0 0 2 0 1 ...
## $ sp.20 : int 0 3 0 0 0 4 0 2 0 0 ...
## $ sp.21 : int 0 1 3 4 2 1 3 3 3 2 ...
## $ sp.22 : int 1 2 1 2 2 2 1 2 2 2 ...
## $ sp.23 : int 1 0 1 2 1 1 2 1 2 1 ...
## $ sp.24 : int 1 1 0 2 1 2 0 1 1 1 ...
## $ sp.25 : int 0 1 0 2 0 1 1 0 0 1 ...
## $ sp.26 : int 2 2 1 0 1 1 2 1 1 1 ...
## $ sp.27 : int 0 0 0 0 0 0 3 0 0 0 ...
## $ sp.28 : int 1 0 0 0 0 0 0 0 0 2 ...
## $ sp.29 : int 0 0 0 0 1 0 0 0 0 0 ...
## $ sp.30 : int 0 0 0 0 0 0 0 0 0 0 ...
## $ sp.31 : int 0 5 0 0 0 0 1 0 0 0 ...
## $ sp.32 : int 1 1 1 0 1 1 1 0 1 1 ...
## $ sp.33 : int 0 0 0 0 1 0 0 0 1 0 ...
## $ sp.34 : int 0 0 0 0 1 0 0 0 0 0 ...
var.amb <- dados[ ,3:6]
#padronização = (cada valor - média) / desvio padrão
#todas as variáveis variam na mesma magnitude, média = 0 e sd = 1
#as diferenças serão mantidas após a padronização
var.amb.pad <- decostand(var.amb, method = "standardize")
dist.amb <- dist(var.amb.pad, method = "euclid")
#method = "average" = UPGMA
cluster.amb <- hclust(dist.amb, method = "average")
#a função as.dendrogram() permite colocar o cluster na horizontal
plot(as.dendrogram(cluster.amb), horiz = TRUE)
labels(cluster.amb)
## [1] "merge" "height" "order" "labels" "method"
## [6] "call" "dist.method"
#adicionando informações nas Unidades Amostrais, customizando os nomes das UAs.
codigos <- ifelse(Ambiente=="Mata_Primária", "MP", "MS")
codigos
## [1] "MP" "MP" "MP" "MP" "MP" "MP" "MP" "MP" "MP" "MP" "MP" "MP" "MP" "MP"
## [15] "MP" "MP" "MP" "MS" "MS" "MS" "MS" "MS" "MS" "MS" "MS" "MS" "MS" "MS"
## [29] "MS" "MS"
novos.nomes <- paste(row.names(dados), codigos, sep = "-")
novos.nomes
## [1] "área1-MP" "área2-MP" "área3-MP" "área4-MP" "área5-MP"
## [6] "área6-MP" "área7-MP" "área8-MP" "área9-MP" "área10-MP"
## [11] "área11-MP" "área12-MP" "área13-MP" "área14-MP" "área15-MP"
## [16] "área16-MP" "área17-MP" "área18-MS" "área19-MS" "área20-MS"
## [21] "área21-MS" "área22-MS" "área23-MS" "área24-MS" "área25-MS"
## [26] "área26-MS" "área27-MS" "área28-MS" "área29-MS" "área30-MS"
cluster.amb$labels <- novos.nomes
cluster2.amb <- as.dendrogram(cluster.amb)
par(mar=c(2,2,2,5))
plot(cluster2.amb, horiz = TRUE)
#criação da matriz cofenética
matriz.cof <- cophenetic(cluster.amb)
#correlacionando matriz cofenética com matriz de distâncias, coef. cofenético
cor(matriz.cof, dist.amb)
## [1] 0.7388642
#geralmente > 0.70 o cluster representa bem a matriz de distâncias