1 Organização básica

Apagamos os gráficos, se houver algum, limpamos a memória e o console.

dev.off()
rm(list=ls(all=TRUE))
cat("\014")
#getwd()
#dir <- getwd()
#shell.exec(getwd())
#apaga os graficos, se houver algum, limpa a memória e o console

1.1 Pacotes do módulo

Instalando os pacotes necessários para esse módulo. Nos computadores do Laboratório de Ecologia não instale esses pacotes, eles já estão instalados.

install.packages("openxlsx")
install.packages("vegan")
install.packages("gplots")
install.packages("tidyverse")
install.packages("gt")
install.packages("rgl")

1.2 Organizando as matrizes de dados

library(readxl)
dados_quest <- read_excel("D:/Elvio/OneDrive/Paralelos/Scarlet_lic/dados.quest.xlsx", 
    sheet = "matriz")
Questões <- dados_quest$Questões
dados_quest <- cbind(Questões, dados_quest)

#adicionando prefixos
dados_quest$Questões[1:17] <- paste("pre", dados_quest$Questões[1:17], sep = "-")
dados_quest$Questões[18:34] <- paste("pos", dados_quest$Questões[18:34], sep = "-")
dados_quest$Grupo2[1:17] <- paste("pre", dados_quest$Grupo2[1:17], sep = "-")
dados_quest$Grupo2[18:34] <- paste("pos", dados_quest$Grupo2[18:34], sep = "-")

#primeira coluna para nomes das linhas 
dados_quest <- as.data.frame(dados_quest)
class(dados_quest)
## [1] "data.frame"
rownames(dados_quest) <- dados_quest[,1]
dados_quest[,1] <- NULL
dados_quest [1:6,1:6]
##           Questões Grupo1 Grupo2 A1 A2 A3
## pre-1            1    pre  pre-a  1  0  1
## pre-2a          2a    pre  pre-a  1  1  1
## pre-2bi        2bi    pre  pre-a  1  0  1
## pre-2bii      2bii    pre  pre-a  0  1  1
## pre-2biii    2biii    pre  pre-a  0  0  1
## pre-2biv      2biv    pre  pre-a  1  1  1
dados_quest
##           Questões Grupo1 Grupo2 A1 A2 A3 A4 A5 A6 A7 A8 A9 A10 A11 A12 A13 A14 A15 A16 A17 A18 A19 A20 A21 A22 A23 A24 A25 A26 A27
## pre-1            1    pre  pre-a  1  0  1  1  1  1  1  1  0   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1
## pre-2a          2a    pre  pre-a  1  1  1  1  1  1  1  1  1   1   1   1   1   1   1   1   1   0   1   1   1   1   0   1   1   1   1
## pre-2bi        2bi    pre  pre-a  1  0  1  1  1  1  1  1  0   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1
## pre-2bii      2bii    pre  pre-a  0  1  1  0  1  1  1  1  1   0   1   1   0   0   0   1   0   1   0   0   0   0   1   1   1   0   1
## pre-2biii    2biii    pre  pre-a  0  0  1  0  0  0  0  0  0   1   0   1   1   1   1   1   1   0   1   1   1   1   0   0   1   1   1
## pre-2biv      2biv    pre  pre-a  1  1  1  1  1  1  1  1  0   0   1   1   0   1   0   1   0   1   1   1   0   1   1   1   1   1   1
## pre-2c          2c    pre  pre-a  0  0  0  0  0  0  0  0  1   0   1   0   0   0   0   0   0   1   1   0   0   0   0   1   0   1   1
## pre-3            3    pre  pre-b  0  0  1  0  1  1  1  0  1   0   0   1   0   0   0   0   0   1   0   0   0   0   1   1   1   1   1
## pre-4            4    pre  pre-b  0  1  1  0  1  1  1  1  0   1   0   0   1   1   1   0   1   0   0   0   1   0   1   0   0   0   1
## pre-5            5    pre  pre-b  1  0  0  0  0  0  0  0  0   0   1   1   0   0   0   0   0   0   0   0   0   0   0   0   0   0   0
## pre-6            6    pre  pre-b  1  1  1  0  1  1  1  1  1   0   0   1   0   1   1   1   1   1   1   1   0   1   1   1   1   1   1
## pre-7i          7i    pre  pre-c  1  1  1  1  1  0  1  1  1   1   1   1   1   1   1   1   1   1   1   0   0   1   1   0   1   1   1
## pre-7ii        7ii    pre  pre-c  0  1  1  1  0  0  0  1  1   0   1   0   0   0   0   0   0   1   0   0   0   0   0   0   1   0   0
## pre-7iii      7iii    pre  pre-c  1  1  0  1  1  0  1  1  0   1   0   1   1   1   1   1   1   0   1   0   1   0   1   1   1   1   1
## pre-7iv        7iv    pre  pre-c  0  1  0  1  0  0  0  1  0   1   0   1   0   0   0   0   0   0   0   1   1   0   0   0   0   0   1
## pre-7v          7v    pre  pre-c  1  1  1  1  1  1  1  1  1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1
## pre-7vi        7vi    pre  pre-c  0  1  1  0  1  1  1  1  0   1   1   1   1   1   1   1   1   1   1   0   1   1   0   1   1   1   1
## pos-1            1    pos  pos-a  1  1  1  1  1  1  1  1  1   1   0   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1
## pos-2a          2a    pos  pos-a  1  1  1  1  1  1  1  1  1   1   0   1   1   1   1   1   1   1   1   1   1   1   1   1   1   0   1
## pos-2bi        2bi    pos  pos-a  1  1  0  1  1  1  1  1  1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   0   0   1
##           A28 A29 A30 A31 A32 A33 A34 A35 A36 A37 A38 A39 A40 A41 A42 A43 A44 A45 A46 A47
## pre-1       1   1   0   1   1   1   1   1   1   0   1   1   1   0   1   1   1   1   1   0
## pre-2a      1   0   1   1   1   0   1   1   1   1   1   1   0   0   0   0   1   0   1   1
## pre-2bi     1   0   1   1   1   1   1   1   1   1   1   1   0   1   1   1   1   0   1   1
## pre-2bii    1   1   0   1   1   0   1   0   1   1   1   1   0   0   0   0   0   1   0   0
## pre-2biii   0   0   1   0   1   0   1   1   1   0   1   1   1   0   1   0   0   1   0   0
## pre-2biv    1   1   0   1   1   1   1   1   1   1   1   1   0   1   1   0   0   1   0   0
## pre-2c      0   0   1   1   0   0   0   1   1   0   0   0   0   0   0   0   1   1   1   1
## pre-3       0   0   1   1   1   0   0   1   0   1   0   0   0   0   0   1   0   0   0   0
## pre-4       1   0   1   1   0   1   0   1   0   1   1   1   1   0   0   1   0   1   0   0
## pre-5       0   0   1   0   0   1   0   0   0   0   0   1   0   0   0   0   0   0   0   0
## pre-6       1   1   0   0   1   1   0   0   0   1   0   0   1   0   0   0   1   0   1   1
## pre-7i      0   0   0   1   1   1   0   1   0   0   1   0   1   1   0   1   1   1   1   1
## pre-7ii     0   0   0   0   1   0   0   1   0   0   1   1   0   0   0   0   0   0   0   0
## pre-7iii    1   1   1   0   0   1   1   1   0   0   1   1   1   1   1   1   1   1   1   1
## pre-7iv     0   1   1   0   1   0   0   0   0   1   1   1   0   0   0   1   1   1   1   1
## pre-7v      1   0   1   1   0   1   1   1   1   1   1   1   1   0   1   1   1   1   1   1
## pre-7vi     1   1   1   1   1   1   1   1   1   0   0   1   1   1   1   0   0   1   0   0
## pos-1       1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1   1
## pos-2a      1   1   1   0   1   0   1   1   1   0   1   1   1   1   0   0   1   1   1   1
## pos-2bi     1   1   1   1   0   0   1   1   1   1   1   1   0   1   1   1   1   1   1   1
##  [ reached 'max' / getOption("max.print") -- omitted 14 rows ]
#removendo colunas pelo nome
colnames(dados_quest)
##  [1] "Questões" "Grupo1"   "Grupo2"   "A1"       "A2"       "A3"       "A4"       "A5"       "A6"       "A7"       "A8"      
## [12] "A9"       "A10"      "A11"      "A12"      "A13"      "A14"      "A15"      "A16"      "A17"      "A18"      "A19"     
## [23] "A20"      "A21"      "A22"      "A23"      "A24"      "A25"      "A26"      "A27"      "A28"      "A29"      "A30"     
## [34] "A31"      "A32"      "A33"      "A34"      "A35"      "A36"      "A37"      "A38"      "A39"      "A40"      "A41"     
## [45] "A42"      "A43"      "A44"      "A45"      "A46"      "A47"
m_bruta <- dados_quest[, -which(names(dados_quest) %in% c("Questões", "Grupo1", "Grupo2"))]
#ou
m_part <- dados_quest[,-1:-2]
#ou
dados_quest_part <- dados_quest[,-1:-3]

# Criando uma matriz de somas ##ALTERADO PARA MÉDIAS##
library(dplyr)
#m_avg_part <- aggregate(m_bruta_g[, 2:3], list(m_bruta_g$Grupos), mean)
#m_sum <- m_bruta_g %>%
#  group_by(Grupos) %>%
#  summarise(across(.cols = everything(), ~ sum(.x, na.rm = TRUE)))# %>%
#  arrange(match(Grupos, agrup))mantem a mesma ordem de agrup

m_sum <- m_part %>%
  group_by(Grupo2) %>%
  summarise(across(.cols = everything(), ~ mean(.x, na.rm = TRUE))) %>%
  arrange(match(Grupo2, unique(m_part$Grupo2)))

#m_avg <- m_part %>% 
#  group_by(Grupo2) %>%
#  summarise(across(.cols = everything(), list(mean = mean, sd = sd)))
#?across

#Primeira coluna para nomes das linhas 
m_sum <- as.data.frame(m_sum)
class(m_sum)
## [1] "data.frame"
rownames(m_sum) <- m_sum[,1]
m_sum[,1] <- NULL

#Salvando a matriz
write.table(m_sum,
            "m_sumcsv.csv",
            append = F,
            quote = TRUE,
            sep = ";", dec = ",",
            row.names = T)
m_sum_csv <- read.csv("m_sumcsv.csv",
                    sep = ";", dec = ",",
                    header = T,
                    row.names = 1,
                    na.strings = NA)

#removendo colunas zeradas
sum <- colSums(m_sum)
sum
##       A1       A2       A3       A4       A5       A6       A7       A8       A9      A10      A11      A12      A13      A14 
## 4.285714 3.976190 3.595238 3.476190 4.285714 4.095238 4.428571 4.678571 3.595238 4.095238 3.535714 4.571429 3.119048 4.178571 
##      A15      A16      A17      A18      A19      A20      A21      A22      A23      A24      A25      A26      A27      A28 
## 4.202381 4.214286 3.785714 4.095238 3.738095 3.178571 4.202381 3.761905 3.809524 4.011905 3.535714 3.369048 5.023810 3.428571 
##      A29      A30      A31      A32      A33      A34      A35      A36      A37      A38      A39      A40      A41      A42 
## 2.392857 4.845238 3.452381 3.678571 3.940476 3.130952 4.714286 3.547619 3.369048 3.714286 4.630952 3.750000 2.250000 2.892857 
##      A43      A44      A45      A46      A47 
## 2.988095 2.833333 3.988095 2.892857 3.761905
zero_sum_cols <- names(which(colSums(m_sum) == 0))
zero_sum_cols #nomes das colunas zeradas
## character(0)
m_part <- m_sum[(colSums(m_sum) != 0)] #em != a exclamação inverte o sentido
zero_sum_cols2 <- names(which(colSums(m_part) == 0))
zero_sum_cols2 #nomes das colunas zeradas
## character(0)
sum <- colSums(m_part)
sum
##       A1       A2       A3       A4       A5       A6       A7       A8       A9      A10      A11      A12      A13      A14 
## 4.285714 3.976190 3.595238 3.476190 4.285714 4.095238 4.428571 4.678571 3.595238 4.095238 3.535714 4.571429 3.119048 4.178571 
##      A15      A16      A17      A18      A19      A20      A21      A22      A23      A24      A25      A26      A27      A28 
## 4.202381 4.214286 3.785714 4.095238 3.738095 3.178571 4.202381 3.761905 3.809524 4.011905 3.535714 3.369048 5.023810 3.428571 
##      A29      A30      A31      A32      A33      A34      A35      A36      A37      A38      A39      A40      A41      A42 
## 2.392857 4.845238 3.452381 3.678571 3.940476 3.130952 4.714286 3.547619 3.369048 3.714286 4.630952 3.750000 2.250000 2.892857 
##      A43      A44      A45      A46      A47 
## 2.988095 2.833333 3.988095 2.892857 3.761905
#removendo linhas zeradas
zero_sum_rows <- names(which(rowSums(m_part) == 0))
zero_sum_rows #nomes das linhas zeradas
## character(0)
m_part <- m_part[rowSums(m_part[]) > 0,] #atentar para a virgula
zero_sum_rows2 <- names(which(rowSums(m_part) == 0))
zero_sum_rows2 #nomes das linhas zeradas
## character(0)
sum<-rowSums(m_part)
sum
##    pre-a    pre-b    pre-c    pos-a    pos-b    pos-c 
## 31.57143 20.00000 30.33333 32.14286 28.00000 35.00000
m_part[1:6,1:6]
##              A1        A2        A3        A4        A5        A6
## pre-a 0.5714286 0.4285714 0.8571429 0.5714286 0.7142857 0.7142857
## pre-b 0.5000000 0.5000000 0.7500000 0.0000000 0.7500000 0.7500000
## pre-c 0.5000000 1.0000000 0.6666667 0.8333333 0.6666667 0.3333333
## pos-a 0.7142857 0.7142857 0.5714286 0.5714286 0.5714286 0.7142857
## pos-b 1.0000000 0.5000000 0.2500000 1.0000000 0.7500000 0.7500000
## pos-c 1.0000000 0.8333333 0.5000000 0.5000000 0.8333333 0.8333333
m_part <- m_part

1.3 Reset point

ATENÇÃO Aqui substitui-se uma nova matriz de dados, caso seja necessário refazer a análise com uma matriz gerada nesse código.

m_trab <- (m_sum)   # <1>
  1. Substitua a nova matriz aqui. Caso seja necessário.

1.4 Classificação

Para conhecermos os dados, vamos criar uma classificação baseada na distância Bray-Curtis e UPGMA como método de fusão, a partir das matrizes de dados de interesse ppbio** com suas devidas relativizações e transformações (Veja Figura 1.1).

1.4.1 Dendrograma e Heatmap

Daqui pra frente não foi feita nenhuma relativização ou transformação.

#Dendrograma
library(vegan)
#m_trns <- 2/pi*asin(sqrt(decostand(m_trab,
#                               method="total", MARGIN = 2)))
#m_trns <- decostand(m_trab, method="total", MARGIN = 2)
#m_trns <- sqrt(m_trab)
m_trns <- m_trab
vegdist <- vegdist(m_trns, method = "bray",
                   diag = TRUE,
                   upper = FALSE)
cluster_uas <- hclust(vegdist, method = "average")
plot (cluster_uas, main = "Cluster Dendrogram - Bray-Curtis da Matriz Comunitária",
      hang = 0.1) #testar com -.01
#rect.hclust(cluster_uas, k = 3, h = NULL) 
#h = 0.8 fornece os grupos formados na altura h
as.matrix(vegdist)[1:6, 1:6]

library(dendextend)
groupCodes <- c(rep("a", 1), rep("b", 1), rep("c", 1), rep("a", 1), rep("b", 1), rep("c", 1))
rownames(m_trns) <- make.unique(groupCodes)## aqui o problema, criar um novo vetor so pra isso
colorCodes <- c(a="red", b="green", c="blue")
dend <- as.dendrogram(cluster_uas)
labels_colors(dend) <- colorCodes[groupCodes][order.dendrogram(dend)]
col_labels <- colorCodes[groupCodes]
plot(dend)
#rownames(m_trns) <- original_row_names #não lembro o porque desse linha

#Heatmap
library("gplots")
heatdist <- as.matrix(vegdist)
col <- rev(heat.colors(999)) #rev() reverte as cores do heatmap
heatmap.2(x=(as.matrix(vegdist)), #objetos x objetos
          Rowv = as.dendrogram(cluster_uas),
          Colv = as.dendrogram(cluster_uas),
          key = T, tracecol = NA, revC = T,
          col = heat.colors,  #dissimilaridade = 1 - similaridade
          colRow = col_labels, # to add colored labels
          colCol = col_labels, # to add colored labels
          density.info = "none",
          xlab = "UA´s", ylab = "UA´s",
          mar = c(6, 6) + 0.2)
cluster_spp <- hclust((vegdist(t(m_trns), method = "bray",
                            diag = TRUE,
                            upper = FALSE)), method = "average")
plot (cluster_spp, main = "Dendrograma dos atributos")
heatmap.2(t(as.matrix(m_trns)), #objetos x atributos
          Colv = as.dendrogram(cluster_uas),
          Rowv = as.dendrogram(cluster_spp),
          key = T, tracecol = NA, revC = T,
          col = col,
          colCol = col_labels, # to add colored labels
          density.info = "none",
          xlab = "Unidades amostrais", ylab = "Espécies",
          mar = c(6, 6) + 0.1)  # adjust margin size
h <- heatmap.2(t(as.matrix(m_trns)), #objetos x atributos
          Colv = as.dendrogram(cluster_uas),
          Rowv = as.dendrogram(cluster_spp),
          key = T, tracecol = NA, revC = T,
          col = col,
          colCol = col_labels, # to add colored labels
          density.info = "none",
          xlab = "Unidades amostrais", ylab = "Espécies",
          mar = c(6, 6) + 0.1)  # adjust margin size
##           pre-a     pre-b     pre-c     pos-a     pos-b     pos-c
## pre-a 0.0000000 0.2839335 0.1415385 0.1210762 0.2194245 0.1359084
## pre-b 0.2839335 0.0000000 0.2649007 0.2876712 0.2500000 0.3000000
## pre-c 0.1415385 0.2649007 0.0000000 0.1295732 0.1942857 0.1224490
## pos-a 0.1210762 0.2876712 0.1295732 0.0000000 0.1852732 0.1255319
## pos-b 0.2194245 0.2500000 0.1942857 0.1852732 0.0000000 0.1798942
## pos-c 0.1359084 0.3000000 0.1224490 0.1255319 0.1798942 0.0000000
Análise de classificação da matriz binária (0/1), baseada na dissimilaridade de Bray-Curtis e método de fusão UPGMA.Análise de classificação da matriz binária (0/1), baseada na dissimilaridade de Bray-Curtis e método de fusão UPGMA.Análise de classificação da matriz binária (0/1), baseada na dissimilaridade de Bray-Curtis e método de fusão UPGMA.Análise de classificação da matriz binária (0/1), baseada na dissimilaridade de Bray-Curtis e método de fusão UPGMA.Análise de classificação da matriz binária (0/1), baseada na dissimilaridade de Bray-Curtis e método de fusão UPGMA.

Figure 1.1: Análise de classificação da matriz binária (0/1), baseada na dissimilaridade de Bray-Curtis e método de fusão UPGMA.

Os valores individuais usados para criar a escala de cores do heatmap pode ser vistos a seguir.

h$carpet
##           A18       A17       A15       A14        A8       A40        A2       A21        A1       A30        A7        A5        A6
## b   0.5000000 0.5000000 0.5000000 0.5000000 0.5000000 0.5000000 0.5000000 0.2500000 0.5000000 0.7500000 0.7500000 0.7500000 0.7500000
## b.1 0.5000000 0.5000000 0.7500000 0.7500000 0.7500000 0.7500000 0.5000000 1.0000000 1.0000000 1.0000000 0.7500000 0.7500000 0.7500000
## a   0.7142857 0.5714286 0.5714286 0.7142857 0.7142857 0.2857143 0.4285714 0.5714286 0.5714286 0.5714286 0.7142857 0.7142857 0.7142857
## a.1 0.7142857 0.7142857 0.7142857 0.7142857 0.7142857 0.7142857 0.7142857 0.7142857 0.7142857 0.8571429 0.7142857 0.5714286 0.7142857
## c   0.6666667 0.6666667 0.6666667 0.6666667 1.0000000 0.6666667 1.0000000 0.6666667 0.5000000 0.6666667 0.6666667 0.6666667 0.3333333
## c.1 1.0000000 0.8333333 1.0000000 0.8333333 1.0000000 0.8333333 0.8333333 1.0000000 1.0000000 1.0000000 0.8333333 0.8333333 0.8333333
##           A23       A39       A27       A12       A35       A22       A16       A19       A45       A10       A47        A9       A37
## b   0.7500000 0.5000000 0.7500000 0.7500000 0.5000000 0.2500000 0.2500000 0.2500000 0.2500000 0.2500000 0.2500000 0.5000000 0.7500000
## b.1 0.7500000 0.7500000 0.7500000 0.7500000 1.0000000 0.7500000 0.7500000 0.7500000 0.5000000 0.7500000 0.7500000 0.5000000 0.5000000
## a   0.5714286 0.8571429 1.0000000 0.8571429 0.8571429 0.7142857 0.8571429 0.8571429 0.7142857 0.5714286 0.4285714 0.4285714 0.5714286
## a.1 0.5714286 0.8571429 0.8571429 0.7142857 0.8571429 0.7142857 0.8571429 0.7142857 0.8571429 0.8571429 1.0000000 1.0000000 0.7142857
## c   0.5000000 0.8333333 0.8333333 0.8333333 0.8333333 0.5000000 0.6666667 0.6666667 0.8333333 0.8333333 0.6666667 0.5000000 0.3333333
## c.1 0.6666667 0.8333333 0.8333333 0.6666667 0.6666667 0.8333333 0.8333333 0.5000000 0.8333333 0.8333333 0.6666667 0.6666667 0.5000000
##           A28       A20       A44       A13       A46       A38       A34       A31       A24       A11       A26       A25       A32
## b   0.5000000 0.2500000 0.2500000 0.2500000 0.2500000 0.2500000 0.0000000 0.5000000 0.5000000 0.2500000 0.5000000 0.5000000 0.5000000
## b.1 0.5000000 0.5000000 0.2500000 0.2500000 0.0000000 0.2500000 0.2500000 0.5000000 0.7500000 0.5000000 0.2500000 0.2500000 0.2500000
## a   0.7142857 0.7142857 0.5714286 0.5714286 0.5714286 0.8571429 0.8571429 0.8571429 0.8571429 0.8571429 0.8571429 0.8571429 0.8571429
## a.1 0.7142857 0.7142857 0.4285714 0.7142857 0.5714286 0.8571429 0.8571429 0.4285714 0.5714286 0.4285714 0.4285714 0.4285714 0.5714286
## c   0.5000000 0.3333333 0.6666667 0.6666667 0.6666667 0.8333333 0.5000000 0.5000000 0.5000000 0.6666667 0.6666667 0.8333333 0.6666667
## c.1 0.5000000 0.6666667 0.6666667 0.6666667 0.8333333 0.6666667 0.6666667 0.6666667 0.8333333 0.8333333 0.6666667 0.6666667 0.8333333
##            A3       A43       A33       A42        A4       A36       A41       A29
## b   0.7500000 0.5000000 0.7500000 0.0000000 0.0000000 0.0000000 0.0000000 0.2500000
## b.1 0.2500000 0.7500000 1.0000000 0.7500000 1.0000000 0.5000000 0.2500000 0.0000000
## a   0.8571429 0.2857143 0.4285714 0.5714286 0.5714286 1.0000000 0.2857143 0.4285714
## a.1 0.5714286 0.2857143 0.4285714 0.5714286 0.5714286 0.7142857 0.7142857 0.7142857
## c   0.6666667 0.6666667 0.6666667 0.5000000 0.8333333 0.3333333 0.5000000 0.5000000
## c.1 0.5000000 0.5000000 0.6666667 0.5000000 0.5000000 1.0000000 0.5000000 0.5000000

1.4.2 Histórico das fusões

Criamos agora o histórico das fusões dos objetos. Na tabela gerada, as duas primeiras colunas (No. e UA) representam o número (No.) atribuido a cada unidade amostral (UA). As duas colunas subsequentes (Cluster1 e Cluster2) representam o par de objetos (indicado pelo sinal de “-”) ou grupo de objetos (indicado pela ausência do sinall de “-”) que foram agrupadas. A coluna Height, indica o valor de similaridade na qual um dado par de objetos (ou grupo de objetos) foi agrupado. O valor aproximado de Height também pode ser visualizado no eixo do dendrograma. Por último, na coluna Histórico, é mostrada a sequência das fusões da primeira até a m-1 última fusão entre os dois últimos grupos. Nesse caso, 5.

library(tidyverse)
library(gt)
merge <- as.data.frame(cluster_uas$merge)
merge[nrow(merge)+1,] = c("0","0")
height <- as.data.frame(round(cluster_uas$height, 2))
height[nrow(height)+1,] = c("1.0")
fusoes <- data.frame(Cluster_uas = merge, Height = height)
colnames(fusoes) <- c("Cluster1", "Cluster2", "Height")
UA <- rownames_to_column(as.data.frame(m_trns[, 0]))
colnames(UA) <- c("UAs")
No.UA <- 1:nrow(fusoes)
fusoes <- cbind(No.UA, UA, fusoes)
fusoes$Histórico <- 1:nrow(fusoes)
#fusoes
gt(fusoes)
No.UA UAs Cluster1 Cluster2 Height Histórico
1 a -1 -4 0.12 1
2 b -3 -6 0.12 2
3 c 1 2 0.13 3
4 a.1 -5 3 0.19 4
5 b.1 -2 4 0.28 5
6 c.1 0 0 1.0 6

1.5 Ordenação

Para executar a NMDS, usa-se a função metaMDS do pacote vegan. metaMDS requer uma matriz de comunidade-por-espécies (CBE, “community-by-species”). De momento, cria-se essa matrizcom dados amostradoes aleatóriamente de um cojunto arbitrário de valores.

A função metaMDS vai calcular as distâncias, executar o algorítimo iterativo, determna o stress ou fitting entre os conjuntos de dados e etc. Precisa-se apenas definir a matriz de comunidade-por-espécies. Nesse caso:

nmds <- metaMDS(m_trns, #matriz CBS, definida anteriormente
                k=2) #no. de redução de dimensões
## Run 0 stress 9.311704e-05 
## Run 1 stress 9.944616e-05 
## ... Procrustes: rmse 0.1410868  max resid 0.296662 
## Run 2 stress 9.874401e-05 
## ... Procrustes: rmse 0.1328543  max resid 0.277647 
## Run 3 stress 0.0001712478 
## ... Procrustes: rmse 0.2082635  max resid 0.4535774 
## Run 4 stress 9.939538e-05 
## ... Procrustes: rmse 0.2168179  max resid 0.4791394 
## Run 5 stress 9.671211e-05 
## ... Procrustes: rmse 0.2188019  max resid 0.4673052 
## Run 6 stress 0.001297489 
## Run 7 stress 9.228076e-05 
## ... New best solution
## ... Procrustes: rmse 0.145048  max resid 0.3170604 
## Run 8 stress 8.533403e-05 
## ... New best solution
## ... Procrustes: rmse 0.1855214  max resid 0.2791046 
## Run 9 stress 9.117144e-05 
## ... Procrustes: rmse 0.2034008  max resid 0.3293988 
## Run 10 stress 9.982277e-05 
## ... Procrustes: rmse 0.1479962  max resid 0.1929705 
## Run 11 stress 8.772639e-05 
## ... Procrustes: rmse 0.2016556  max resid 0.3265401 
## Run 12 stress 9.893318e-05 
## ... Procrustes: rmse 0.1068436  max resid 0.1325268 
## Run 13 stress 9.670302e-05 
## ... Procrustes: rmse 0.2092099  max resid 0.3219924 
## Run 14 stress 0.2761341 
## Run 15 stress 9.908792e-05 
## ... Procrustes: rmse 0.04467971  max resid 0.07217964 
## Run 16 stress 9.904583e-05 
## ... Procrustes: rmse 0.1588856  max resid 0.2088955 
## Run 17 stress 9.362614e-05 
## ... Procrustes: rmse 0.219916  max resid 0.3529928 
## Run 18 stress 9.395063e-05 
## ... Procrustes: rmse 0.2016549  max resid 0.3265504 
## Run 19 stress 9.026707e-05 
## ... Procrustes: rmse 0.2404277  max resid 0.3762589 
## Run 20 stress 9.25043e-05 
## ... Procrustes: rmse 0.196192  max resid 0.3029711 
## *** Best solution was not repeated -- monoMDS stopping criteria:
##      2: no. of iterations >= maxit
##     17: stress < smin
##      1: stress ratio > sratmax
## Warning in metaMDS(m_trns, k = 2): stress is (nearly) zero: you may have insufficient data

Deve-se observar cada iteração do NMDS até que uma solução seja alcançada (ou seja, o stress foi minimizado após algum número de reconfigurações dos pontos em 2 dimensões). Pode-se aumentar o número padrão de iterações usando o argumento trymax =.

set.seed(321)
nmds <- metaMDS(m_trns, distance = "jaccard", k = 2, trymax = 100)
## Run 0 stress 9.425452e-05 
## Run 1 stress 8.781078e-05 
## ... New best solution
## ... Procrustes: rmse 0.2349999  max resid 0.5148395 
## Run 2 stress 9.693113e-05 
## ... Procrustes: rmse 0.1544044  max resid 0.3188099 
## Run 3 stress 8.848992e-05 
## ... Procrustes: rmse 0.2079894  max resid 0.4292714 
## Run 4 stress 8.887392e-05 
## ... Procrustes: rmse 0.125458  max resid 0.2714775 
## Run 5 stress 4.727747e-05 
## ... New best solution
## ... Procrustes: rmse 0.1835943  max resid 0.3681728 
## Run 6 stress 9.922223e-05 
## ... Procrustes: rmse 0.09030631  max resid 0.1804974 
## Run 7 stress 8.292605e-05 
## ... Procrustes: rmse 0.03215968  max resid 0.06314339 
## Run 8 stress 9.449854e-05 
## ... Procrustes: rmse 0.09688667  max resid 0.2113948 
## Run 9 stress 9.72678e-05 
## ... Procrustes: rmse 0.1367779  max resid 0.3036944 
## Run 10 stress 9.17269e-05 
## ... Procrustes: rmse 0.08555735  max resid 0.1799803 
## Run 11 stress 9.307569e-05 
## ... Procrustes: rmse 0.05441802  max resid 0.1037469 
## Run 12 stress 8.362839e-05 
## ... Procrustes: rmse 0.05018326  max resid 0.1053773 
## Run 13 stress 6.161683e-05 
## ... Procrustes: rmse 0.05009225  max resid 0.09915562 
## Run 14 stress 9.404491e-05 
## ... Procrustes: rmse 0.1166651  max resid 0.23779 
## Run 15 stress 9.352886e-05 
## ... Procrustes: rmse 0.06116016  max resid 0.1234948 
## Run 16 stress 0 
## ... New best solution
## ... Procrustes: rmse 0.1843064  max resid 0.386586 
## Run 17 stress 9.82054e-05 
## ... Procrustes: rmse 0.0286991  max resid 0.05796021 
## Run 18 stress 9.957051e-05 
## ... Procrustes: rmse 0.2010144  max resid 0.3677948 
## Run 19 stress 9.956569e-05 
## ... Procrustes: rmse 0.227673  max resid 0.4025594 
## Run 20 stress 9.97674e-05 
## ... Procrustes: rmse 0.1508072  max resid 0.2786163 
## Run 21 stress 9.053041e-05 
## ... Procrustes: rmse 0.2036396  max resid 0.3715685 
## Run 22 stress 9.52083e-05 
## ... Procrustes: rmse 0.1669981  max resid 0.3104135 
## Run 23 stress 9.852246e-05 
## ... Procrustes: rmse 0.1195972  max resid 0.2080692 
## Run 24 stress 9.818024e-05 
## ... Procrustes: rmse 0.119631  max resid 0.2078864 
## Run 25 stress 9.725923e-05 
## ... Procrustes: rmse 0.1785929  max resid 0.3313246 
## Run 26 stress 8.303543e-05 
## ... Procrustes: rmse 0.2207651  max resid 0.3952592 
## Run 27 stress 9.166811e-05 
## ... Procrustes: rmse 0.09967883  max resid 0.1537257 
## Run 28 stress 9.918581e-05 
## ... Procrustes: rmse 0.2123457  max resid 0.3835809 
## Run 29 stress 0.0001987387 
## ... Procrustes: rmse 0.1463649  max resid 0.2724457 
## Run 30 stress 9.753631e-05 
## ... Procrustes: rmse 0.1375497  max resid 0.2500761 
## Run 31 stress 9.90595e-05 
## ... Procrustes: rmse 0.1046825  max resid 0.1681626 
## Run 32 stress 9.424148e-05 
## ... Procrustes: rmse 0.1035481  max resid 0.1649229 
## Run 33 stress 9.91956e-05 
## ... Procrustes: rmse 0.09403137  max resid 0.1360649 
## Run 34 stress 9.107423e-05 
## ... Procrustes: rmse 0.2028709  max resid 0.3717096 
## Run 35 stress 8.329535e-05 
## ... Procrustes: rmse 0.1817681  max resid 0.3373377 
## Run 36 stress 9.688603e-05 
## ... Procrustes: rmse 0.1735861  max resid 0.3227587 
## Run 37 stress 9.013155e-05 
## ... Procrustes: rmse 0.1866558  max resid 0.3454849 
## Run 38 stress 9.927639e-05 
## ... Procrustes: rmse 0.1487767  max resid 0.2742657 
## Run 39 stress 9.841357e-05 
## ... Procrustes: rmse 0.1364814  max resid 0.2481196 
## Run 40 stress 9.16001e-05 
## ... Procrustes: rmse 0.09834861  max resid 0.1606334 
## Run 41 stress 9.601891e-05 
## ... Procrustes: rmse 0.09985951  max resid 0.1814755 
## Run 42 stress 9.220372e-05 
## ... Procrustes: rmse 0.07380707  max resid 0.1259701 
## Run 43 stress 9.806561e-05 
## ... Procrustes: rmse 0.1922502  max resid 0.3544563 
## Run 44 stress 6.808228e-05 
## ... Procrustes: rmse 0.09860899  max resid 0.1503934 
## Run 45 stress 9.95228e-05 
## ... Procrustes: rmse 0.1440247  max resid 0.2662957 
## Run 46 stress 7.840068e-05 
## ... Procrustes: rmse 0.1799619  max resid 0.3345704 
## Run 47 stress 8.332932e-05 
## ... Procrustes: rmse 0.1312306  max resid 0.235599 
## Run 48 stress 9.439007e-05 
## ... Procrustes: rmse 0.21662  max resid 0.3892211 
## Run 49 stress 9.644948e-05 
## ... Procrustes: rmse 0.1484485  max resid 0.2737668 
## Run 50 stress 0.2761339 
## Run 51 stress 9.721369e-05 
## ... Procrustes: rmse 0.1576157  max resid 0.2938218 
## Run 52 stress 9.565696e-05 
## ... Procrustes: rmse 0.2213706  max resid 0.3955766 
## Run 53 stress 9.788806e-05 
## ... Procrustes: rmse 0.1445504  max resid 0.2654681 
## Run 54 stress 6.619934e-05 
## ... Procrustes: rmse 0.09626658  max resid 0.1427525 
## Run 55 stress 9.351892e-05 
## ... Procrustes: rmse 0.1423239  max resid 0.2606811 
## Run 56 stress 9.553928e-05 
## ... Procrustes: rmse 0.1258959  max resid 0.2233541 
## Run 57 stress 9.84378e-05 
## ... Procrustes: rmse 0.1777481  max resid 0.329856 
## Run 58 stress 9.957213e-05 
## ... Procrustes: rmse 0.1031025  max resid 0.1640471 
## Run 59 stress 9.65274e-05 
## ... Procrustes: rmse 0.2010714  max resid 0.3682493 
## Run 60 stress 8.81422e-05 
## ... Procrustes: rmse 0.1827694  max resid 0.3385555 
## Run 61 stress 9.723115e-05 
## ... Procrustes: rmse 0.1028121  max resid 0.1632779 
## Run 62 stress 9.847105e-05 
## ... Procrustes: rmse 0.1297601  max resid 0.2326421 
## Run 63 stress 9.464656e-05 
## ... Procrustes: rmse 0.1426345  max resid 0.2169584 
## Run 64 stress 9.699636e-05 
## ... Procrustes: rmse 0.2114991  max resid 0.3827105 
## Run 65 stress 9.219635e-05 
## ... Procrustes: rmse 0.1102357  max resid 0.1837559 
## Run 66 stress 8.448591e-05 
## ... Procrustes: rmse 0.1037332  max resid 0.1653751 
## Run 67 stress 9.96061e-05 
## ... Procrustes: rmse 0.1855684  max resid 0.344018 
## Run 68 stress 9.407356e-05 
## ... Procrustes: rmse 0.1415462  max resid 0.2591381 
## Run 69 stress 9.628319e-05 
## ... Procrustes: rmse 0.1041817  max resid 0.1666959 
## Run 70 stress 9.299769e-05 
## ... Procrustes: rmse 0.1830006  max resid 0.3388931 
## Run 71 stress 0.0002731323 
## ... Procrustes: rmse 0.09330428  max resid 0.139819 
## Run 72 stress 0.0003906689 
## ... Procrustes: rmse 0.09581774  max resid 0.2074553 
## Run 73 stress 9.163071e-05 
## ... Procrustes: rmse 0.1274364  max resid 0.2283024 
## Run 74 stress 9.951277e-05 
## ... Procrustes: rmse 0.08615905  max resid 0.1328466 
## Run 75 stress 3.615313e-05 
## ... Procrustes: rmse 0.1138812  max resid 0.171314 
## Run 76 stress 9.747144e-05 
## ... Procrustes: rmse 0.08845822  max resid 0.1918742 
## Run 77 stress 8.347279e-05 
## ... Procrustes: rmse 0.08660174  max resid 0.133015 
## Run 78 stress 9.007615e-05 
## ... Procrustes: rmse 0.1056201  max resid 0.1712743 
## Run 79 stress 9.627322e-05 
## ... Procrustes: rmse 0.2007456  max resid 0.368125 
## Run 80 stress 8.67631e-05 
## ... Procrustes: rmse 0.2018613  max resid 0.3694504 
## Run 81 stress 9.979345e-05 
## ... Procrustes: rmse 0.1055701  max resid 0.1721958 
## Run 82 stress 9.834716e-05 
## ... Procrustes: rmse 0.13463  max resid 0.2436164 
## Run 83 stress 0.0002725923 
## ... Procrustes: rmse 0.07360835  max resid 0.1081076 
## Run 84 stress 9.705453e-05 
## ... Procrustes: rmse 0.1073361  max resid 0.1760179 
## Run 85 stress 4.943965e-05 
## ... Procrustes: rmse 0.1085821  max resid 0.1779772 
## Run 86 stress 9.15328e-05 
## ... Procrustes: rmse 0.1259256  max resid 0.2230461 
## Run 87 stress 9.657814e-05 
## ... Procrustes: rmse 0.08613653  max resid 0.1328186 
## Run 88 stress 9.107217e-05 
## ... Procrustes: rmse 0.1477901  max resid 0.2721957 
## Run 89 stress 0.276134 
## Run 90 stress 8.61368e-05 
## ... Procrustes: rmse 0.07908624  max resid 0.1669345 
## Run 91 stress 9.5575e-05 
## ... Procrustes: rmse 0.1663236  max resid 0.3103411 
## Run 92 stress 8.968517e-05 
## ... Procrustes: rmse 0.1084614  max resid 0.1788123 
## Run 93 stress 9.681385e-05 
## ... Procrustes: rmse 0.1389583  max resid 0.2543509 
## Run 94 stress 9.811609e-05 
## ... Procrustes: rmse 0.157758  max resid 0.2934797 
## Run 95 stress 9.670063e-05 
## ... Procrustes: rmse 0.1592336  max resid 0.2969004 
## Run 96 stress 9.737876e-05 
## ... Procrustes: rmse 0.1957646  max resid 0.3596844 
## Run 97 stress 9.07868e-05 
## ... Procrustes: rmse 0.2115996  max resid 0.3831542 
## Run 98 stress 8.442701e-05 
## ... Procrustes: rmse 0.1283176  max resid 0.2302409 
## Run 99 stress 9.214152e-05 
## ... Procrustes: rmse 0.105629  max resid 0.1712913 
## Run 100 stress 9.892155e-05 
## ... Procrustes: rmse 0.1890933  max resid 0.3494061 
## *** Best solution was not repeated -- monoMDS stopping criteria:
##      4: no. of iterations >= maxit
##     94: stress < smin
##      2: stress ratio > sratmax
## Warning in metaMDS(m_trns, distance = "jaccard", k = 2, trymax = 100): stress is (nearly) zero: you may have insufficient data
#method = "manhattan", "euclidean", "canberra", "clark", "bray", "kulczynski", "jaccard", "gower", #"altGower", "morisita", "horn", "mountford", "raup", "binomial", "chao", "cao", "mahalanobis", "chisq", #"chord", "hellinger", "aitchison", or "robust.aitchison".

Pode-se agora examinar o objeto NMDS.

nmds
## 
## Call:
## metaMDS(comm = m_trns, distance = "jaccard", k = 2, trymax = 100) 
## 
## global Multidimensional Scaling using monoMDS
## 
## Data:     m_trns 
## Distance: jaccard 
## 
## Dimensions: 2 
## Stress:     0 
## Stress type 1, weak ties
## Best solution was not repeated after 100 tries
## The best solution was from try 16 (random start)
## Scaling: centring, PC rotation, halfchange scaling 
## Species: expanded scores based on 'm_trns'
scores(nmds)
## $sites
##            NMDS1        NMDS2
## a   -0.108302795 -0.058484227
## b    0.445651011 -0.001654248
## c   -0.108153093  0.054375870
## a.1 -0.110989584 -0.027923303
## b.1 -0.003135053  0.009480364
## c.1 -0.115070485  0.024205544
## 
## $species
##            NMDS1         NMDS2
## A1   0.024440760  0.0153374066
## A2  -0.010396403  0.0796346669
## A3   0.219557279 -0.0426138241
## A4  -0.306383017  0.0479953846
## A5   0.175073117  0.0106941996
## A6   0.204488342 -0.0395022739
## A7   0.153763344  0.0019216322
## A8  -0.048907794  0.0471212064
## A9   0.038783559 -0.0142939051
## A10 -0.179840224  0.0346778436
## A11 -0.174278448 -0.0028663770
## A12  0.135693520 -0.0049429635
## A13 -0.181927674  0.0036561119
## A14  0.002977133  0.0029226213
## A15 -0.001227725  0.0305682718
## A16 -0.188078320 -0.0236548782
## A17  0.012667536  0.0179835037
## A18 -0.025397632  0.0067800105
## A19 -0.148120844 -0.0369971067
## A20 -0.140465647 -0.0675604575
## A21 -0.152771471  0.0367826458
## A22 -0.153601278 -0.0184018408
## A23  0.257385615  0.0002641491
## A24  0.023145383 -0.0283872556
## A25  0.007690040  0.0030897712
## A26  0.031293126 -0.0220288079
## A27  0.079419175 -0.0199516427
## A28  0.066667920 -0.0499548091
## A29 -0.154169273 -0.0233341489
## A30  0.129128485  0.0226713107
## A31  0.062372467 -0.0396665042
## A32 -0.013243089 -0.0200001705
## A33  0.271665077  0.0568872611
## A34 -0.434833032 -0.0842934431
## A35 -0.018219669 -0.0071704259
## A36 -0.399964569 -0.0822164776
## A37  0.309437155 -0.0539724290
## A38 -0.228686291 -0.0262068560
## A39 -0.043693439 -0.0039408872
## A40  0.057063573  0.0658813514
## A41 -0.417140824  0.0215825678
## A42 -0.325020013 -0.0089368650
## A43  0.197998096  0.0947390058
## A44 -0.151312329  0.0303698768
## A45 -0.209458016  0.0103609012
## A46 -0.212429842  0.0222199569
## A47 -0.153020001  0.0159137006

É necessário examinar o Gráfico de Shepard (Figura 1.2), que mostra a dispersão em torno da regressão entre as distâncias entre pontos da configuração final (distâncias entre cada par de comunidades) versus as dissimilaridades originais.

stressplot(nmds)
gof <- goodness(nmds)
gof
plot(nmds, display = "sites", type = "n")
points(nmds, display = "sites", cex = 2*gof/mean(gof))
## [1] 0 0 0 0 0 0
Stress da análise de ordenação da matriz binária (0/1), baseada na dissimilaridade de Bray-Curtis e método de fusão UPGMA.Stress da análise de ordenação da matriz binária (0/1), baseada na dissimilaridade de Bray-Curtis e método de fusão UPGMA.

Figure 1.2: Stress da análise de ordenação da matriz binária (0/1), baseada na dissimilaridade de Bray-Curtis e método de fusão UPGMA.

Uma dispersão grande ao redor da linha sugere que as dissimilaridades originais não são bem preservadas no número reduzido de dimensões.

1.5.1 Gráficos de ordenação

Agora podemos plotar a NMDS

plot(nmds)
Gráfico de ordenação da matriz binária (0/1), baseada na dissimilaridade de Bray-Curtis e método de fusão UPGMA.

Figure 1.3: Gráfico de ordenação da matriz binária (0/1), baseada na dissimilaridade de Bray-Curtis e método de fusão UPGMA.

A ordenação mostra tanto as comunidades (“locais”, círculos abertos) quanto as espécies (cruzes vermelhas).

Aqui, pode-se usar as funções ordiplot e orditorp para adicionar texto ao gráfico no lugar dos pontos.

ordiplot(nmds, choices = c(1,2), type = "n")
orditorp(nmds, display = "species", col="red", air=0.01)
orditorp(nmds, display = "sites", cex=1.25, air=0.01)

Existem algumas funções adicionais que podem ser de interesse. Pode-se desenhar polígonos convexos conectando os vértices dos pontos feitos por certos grupos de comunidades no gráfico.

Para isso, cria-se um vetor de valores de tratamento.

treat <- c(rep("antes",3), rep("depois",3))
treat
## [1] "antes"  "antes"  "antes"  "depois" "depois" "depois"
colors <- c(rep("green",3), rep("blue",3))
ordiplot(nmds, type = "n")
ordihull(nmds, groups = treat, draw = "polygon", col= "grey90", label = TRUE)
orditorp(nmds, display = "species", col = "red", air = 0.01)
orditorp(nmds, display = "sites", col = colors, air = 0.01, cex = 1.25)

Essa é uma maneira intuitiva de entender como as linhas e colunas se agrupam com base nos tratamentos possveis. Nesse caso, um grupo em verde e e o outro em azul. Também é possível plotar elipses e “gráficos de aranha” usando as funções ordiellipse e orderspider, que enfatizam o centróide das comunidades em cada tratamento.

par(mfrow=c(2,2))
ordiplot(nmds, type = "n")
orditorp(nmds, display = "species", col = "red", air = 0.01)
orditorp(nmds, display = "sites", col = colors, air = 0.01, cex = 1.25)
ordihull(nmds, groups = treat, draw = "polygon", col = "grey90", label = TRUE)

ordiplot(nmds, type = "n")
orditorp(nmds, display = "species", col = "red", air = 0.01)
orditorp(nmds, display = "sites", col = colors, air = 0.01, cex = 1.25)
ordiellipse(nmds, groups = treat, display = "sites", draw = "polygon", col = "grey90", label = T)
ordibar(nmds, treat, display = "sites")

ordiplot(nmds, type = "n")
orditorp(nmds, display = "species", col = "red", air = 0.01)
orditorp(nmds, display = "sites", col = colors, air = 0.01, cex = 1.25)
ordispider(nmds, treat, display="sites")

ordiplot(nmds, type = "n")
orditorp(nmds, display = "species", col = "red", air = 0.01)
orditorp(nmds, display = "sites", col = colors, air = 0.01, cex = 1.25)
ordicluster(nmds, cluster_uas, prune = 0, display = "sites")
par(mfrow=c(1,1))

Outra alternativa é plotar uma “árvore de abrangência mínima” (da função hclust), que agrupa as comunidades com base em suas dissimilaridades originais e projeta o dendrograma no gráfico 2D.

ordiplot(nmds, type = "n")
orditorp(nmds, display = "species", col = "red", air = 0.01)
orditorp(nmds, display = "sites", col = colors, air = 0.01, cex = 1.25)
ordicluster(nmds, hclust(vegdist(m_trns, "bray")))

#?ordicluster

Observe que o agrupamento é baseado em distâncias de Bray-Curtis. Este é um método sugerido para verificar a precisão do gráfico 2D.

Pode-se ainda plotar os polígonos convexos, elipses, gráficos de aranha, etc., coloridos com base nos tratamentos. Mas primeiro, cria-se um vetor de valores de cor com a mesma extensão do vetor de valores de tratamento.

ordiplot(nmds, type = "n")
#Plot convex hulls with colors baesd on treatment
for(i in unique(treat)) {
  ordihull(nmds$point[grep(i,treat),],draw="polygon",groups=treat[treat==i],col=colors[grep(i,treat)],label=F) } 
orditorp(nmds, display = "species", col= "red", air = 0.01)
orditorp(nmds, display = "sites", col = colors, air = 0.01, cex = 1.25)

Esse agrupamento é baseado em distâncias de Bray-Curtis. Este é um método sugerido para verificar a precisão do gráfico 2D.

Pode-se plotar os polígonos convexos, elipses, gráficos de aranha, etc., coloridos com base nos tratamentos. Primeiro, cria-se um vetor de valores de cor com a mesma extensão do vetor de valores de tratamento.

Se o tratamento for uma variável contínua, deve-se considerar linhas de mapeamento de contorno sobrepostas no gráfico. Para este exemplo, considera-se que os tratamentos foram aplicados ao longo de um gradiente de elevação. Podemos definir elevações aleatórias para o mesmo exemplo.

#Variable to be plotted / modelled as a function of the ordination scores
surf <- seq(1, 19)
surf <- c(cluster_uas$height, 1)
knots <- nrow(m_trns)

Agora usa-se a função ordisurf para plotar as linhas de contorno. A quantidade de linhas de contorno é definida pelo comando knots =. Se knots = 0 ou knots = 1 a função ordisurf ajustará uma tendencia linear a superfície, e se knots = 2 a função ajustará uma tendência quadrática, ao inves de linhas retas.

ordisurf(nmds, surf, main = "", col = "forestgreen", knots = knots)
## 
## Family: gaussian 
## Link function: identity 
## 
## Formula:
## y ~ s(x1, x2, k = 6, bs = "tp", fx = FALSE)
## 
## Estimated degrees of freedom:
## 0  total = 1 
## 
## REML score: 2.658828
orditorp(nmds, display = "sites", col = "grey30", air = 0.1, cex = 1)
orditorp(nmds, display = "species", col = "grey30", air = 0.1, cex = 1)

1.6 MRPP

AQUI

Primeiro criamos uma tabela de grupos a priori.

Valores médios:

library(tibble)
library (dplyr)
m_sum
m_sum_g <- rownames_to_column(m_sum, "Grupo1")
m_sum_g$Grupo2 <- substr(m_sum_g$Grupo1, 1,3)
m_sum_g$Grupo3 <- substr(m_sum_g$Grupo1, 5,5)
m_sum_g <- m_sum_g %>% relocate(Grupo2, Grupo3, .after=Grupo1)
m_sum_g <- m_sum_g[,1:3]# <- NULL
m_sum_g
##              A1        A2        A3        A4        A5        A6        A7        A8        A9       A10       A11       A12
## pre-a 0.5714286 0.4285714 0.8571429 0.5714286 0.7142857 0.7142857 0.7142857 0.7142857 0.4285714 0.5714286 0.8571429 0.8571429
## pre-b 0.5000000 0.5000000 0.7500000 0.0000000 0.7500000 0.7500000 0.7500000 0.5000000 0.5000000 0.2500000 0.2500000 0.7500000
## pre-c 0.5000000 1.0000000 0.6666667 0.8333333 0.6666667 0.3333333 0.6666667 1.0000000 0.5000000 0.8333333 0.6666667 0.8333333
## pos-a 0.7142857 0.7142857 0.5714286 0.5714286 0.5714286 0.7142857 0.7142857 0.7142857 1.0000000 0.8571429 0.4285714 0.7142857
## pos-b 1.0000000 0.5000000 0.2500000 1.0000000 0.7500000 0.7500000 0.7500000 0.7500000 0.5000000 0.7500000 0.5000000 0.7500000
## pos-c 1.0000000 0.8333333 0.5000000 0.5000000 0.8333333 0.8333333 0.8333333 1.0000000 0.6666667 0.8333333 0.8333333 0.6666667
##             A13       A14       A15       A16       A17       A18       A19       A20       A21       A22       A23       A24
## pre-a 0.5714286 0.7142857 0.5714286 0.8571429 0.5714286 0.7142857 0.8571429 0.7142857 0.5714286 0.7142857 0.5714286 0.8571429
## pre-b 0.2500000 0.5000000 0.5000000 0.2500000 0.5000000 0.5000000 0.2500000 0.2500000 0.2500000 0.2500000 0.7500000 0.5000000
## pre-c 0.6666667 0.6666667 0.6666667 0.6666667 0.6666667 0.6666667 0.6666667 0.3333333 0.6666667 0.5000000 0.5000000 0.5000000
## pos-a 0.7142857 0.7142857 0.7142857 0.8571429 0.7142857 0.7142857 0.7142857 0.7142857 0.7142857 0.7142857 0.5714286 0.5714286
## pos-b 0.2500000 0.7500000 0.7500000 0.7500000 0.5000000 0.5000000 0.7500000 0.5000000 1.0000000 0.7500000 0.7500000 0.7500000
## pos-c 0.6666667 0.8333333 1.0000000 0.8333333 0.8333333 1.0000000 0.5000000 0.6666667 1.0000000 0.8333333 0.6666667 0.8333333
##             A25       A26       A27       A28       A29       A30       A31       A32       A33       A34       A35       A36
## pre-a 0.8571429 0.8571429 1.0000000 0.7142857 0.4285714 0.5714286 0.8571429 0.8571429 0.4285714 0.8571429 0.8571429 1.0000000
## pre-b 0.5000000 0.5000000 0.7500000 0.5000000 0.2500000 0.7500000 0.5000000 0.5000000 0.7500000 0.0000000 0.5000000 0.0000000
## pre-c 0.8333333 0.6666667 0.8333333 0.5000000 0.5000000 0.6666667 0.5000000 0.6666667 0.6666667 0.5000000 0.8333333 0.3333333
## pos-a 0.4285714 0.4285714 0.8571429 0.7142857 0.7142857 0.8571429 0.4285714 0.5714286 0.4285714 0.8571429 0.8571429 0.7142857
## pos-b 0.2500000 0.2500000 0.7500000 0.5000000 0.0000000 1.0000000 0.5000000 0.2500000 1.0000000 0.2500000 1.0000000 0.5000000
## pos-c 0.6666667 0.6666667 0.8333333 0.5000000 0.5000000 1.0000000 0.6666667 0.8333333 0.6666667 0.6666667 0.6666667 1.0000000
##             A37       A38       A39       A40       A41       A42       A43       A44       A45       A46       A47
## pre-a 0.5714286 0.8571429 0.8571429 0.2857143 0.2857143 0.5714286 0.2857143 0.5714286 0.7142857 0.5714286 0.4285714
## pre-b 0.7500000 0.2500000 0.5000000 0.5000000 0.0000000 0.0000000 0.5000000 0.2500000 0.2500000 0.2500000 0.2500000
## pre-c 0.3333333 0.8333333 0.8333333 0.6666667 0.5000000 0.5000000 0.6666667 0.6666667 0.8333333 0.6666667 0.6666667
## pos-a 0.7142857 0.8571429 0.8571429 0.7142857 0.7142857 0.5714286 0.2857143 0.4285714 0.8571429 0.5714286 1.0000000
## pos-b 0.5000000 0.2500000 0.7500000 0.7500000 0.2500000 0.7500000 0.7500000 0.2500000 0.5000000 0.0000000 0.7500000
## pos-c 0.5000000 0.6666667 0.8333333 0.8333333 0.5000000 0.5000000 0.5000000 0.6666667 0.8333333 0.8333333 0.6666667
##   Grupo1 Grupo2 Grupo3
## 1  pre-a    pre      a
## 2  pre-b    pre      b
## 3  pre-c    pre      c
## 4  pos-a    pos      a
## 5  pos-b    pos      b
## 6  pos-c    pos      c

Valores brutos p/a:

library(tibble)
library (dplyr)
m_sum <- m_bruta
m_sum_g <- dados_quest[,1:3]# <- NULL

1.6.1 Testes entre combinações possiveis (valores médios)

library(vegan)
mrpp2 <- with(m_sum_g, mrpp(m_sum, Grupo2))
## 'nperm' >= set of all permutations: complete enumeration.
## Set of permutations < 'minperm'. Generating entire set.
mrpp2
mrpp3 <- with(m_sum_g, mrpp(m_sum, Grupo3))
## 'nperm' >= set of all permutations: complete enumeration.
## Set of permutations < 'minperm'. Generating entire set.
mrpp3
## 
## Call:
## mrpp(dat = m_sum, grouping = Grupo2) 
## 
## Dissimilarity index: euclidean 
## Weights for groups:  n 
## 
## Class means and counts:
## 
##       pos   pre  
## delta 1.847 2.189
## n     3     3    
## 
## Chance corrected within-group agreement A: 0.01164 
## Based on observed delta 2.018 and expected delta 2.042 
## 
## Significance of delta: 0.5 
## Permutation: free
## Number of permutations: 719
## 
## 
## Call:
## mrpp(dat = m_sum, grouping = Grupo3) 
## 
## Dissimilarity index: euclidean 
## Weights for groups:  n 
## 
## Class means and counts:
## 
##       a     b     c    
## delta 1.629 2.372 1.563
## n     2     2     2    
## 
## Chance corrected within-group agreement A: 0.0916 
## Based on observed delta 1.855 and expected delta 2.042 
## 
## Significance of delta: 0.2 
## Permutation: free
## Number of permutations: 719

1.6.2 Alguns gráficos

1.6.2.1 Agrupamento 2 (pré vs. pós)

# Save and change plotting parameters
def.par <- par(no.readonly = TRUE)
layout(matrix(1:2,nr=1))

set.seed(1234567890)
plot(ord <- metaMDS(m_sum), type="text", display="sites" )
## Warning in metaMDS(m_sum): stress is (nearly) zero: you may have insufficient data
with(m_sum_g, ordihull(ord, Grupo2))

with(mrpp2, {
  fig.dist <- hist(boot.deltas, xlim=range(c(delta,boot.deltas)), 
                 main="Test of Differences Among Groups")
  abline(v=delta); 
  text(delta, 2*mean(fig.dist$counts), adj = -0.5,
     expression(bold(delta)), cex=1.5 )  }
)

par(def.par)
## meandist
md <- with(m_sum_g, meandist(vegdist(m_sum), Grupo2))
md
summary(md)
par(mfrow=c(1,2))
plot(md)
plot(md, kind="histogram")

par(mfrow=c(1,1))
## Run 0 stress 9.311704e-05 
## Run 1 stress 9.820546e-05 
## ... Procrustes: rmse 0.2195502  max resid 0.4717649 
## Run 2 stress 9.270664e-05 
## ... New best solution
## ... Procrustes: rmse 0.1192348  max resid 0.2540646 
## Run 3 stress 9.644797e-05 
## ... Procrustes: rmse 0.04713524  max resid 0.09837457 
## Run 4 stress 9.482334e-05 
## ... Procrustes: rmse 0.1053716  max resid 0.2052275 
## Run 5 stress 0 
## ... New best solution
## ... Procrustes: rmse 0.2023096  max resid 0.3676651 
## Run 6 stress 9.338633e-05 
## ... Procrustes: rmse 0.1767205  max resid 0.2955057 
## Run 7 stress 9.992732e-05 
## ... Procrustes: rmse 0.2071515  max resid 0.3618989 
## Run 8 stress 9.335132e-05 
## ... Procrustes: rmse 0.2052038  max resid 0.3644835 
## Run 9 stress 8.60454e-05 
## ... Procrustes: rmse 0.1959248  max resid 0.3480806 
## Run 10 stress 9.863959e-05 
## ... Procrustes: rmse 0.1722982  max resid 0.2764716 
## Run 11 stress 0.2761339 
## Run 12 stress 7.618627e-05 
## ... Procrustes: rmse 0.2003099  max resid 0.3605007 
## Run 13 stress 9.304316e-05 
## ... Procrustes: rmse 0.2023431  max resid 0.3376117 
## Run 14 stress 9.979587e-05 
## ... Procrustes: rmse 0.2312067  max resid 0.3842376 
## Run 15 stress 9.440624e-05 
## ... Procrustes: rmse 0.1673061  max resid 0.2528073 
## Run 16 stress 9.794881e-05 
## ... Procrustes: rmse 0.1957551  max resid 0.3078016 
## Run 17 stress 9.524688e-05 
## ... Procrustes: rmse 0.1922521  max resid 0.3011212 
## Run 18 stress 9.775345e-05 
## ... Procrustes: rmse 0.01656673  max resid 0.02082075 
## Run 19 stress 8.867651e-05 
## ... Procrustes: rmse 0.2192341  max resid 0.3556718 
## Run 20 stress 0.0009129862 
## *** Best solution was not repeated -- monoMDS stopping criteria:
##      1: no. of iterations >= maxit
##     18: stress < smin
##      1: stress ratio > sratmax
##           pos       pre
## pos 0.1635664 0.1955987
## pre 0.1955987 0.2301242
## attr(,"class")
## [1] "meandist" "matrix"  
## attr(,"n")
## grouping
## pos pre 
##   3   3 
## 
## Mean distances:
##                  Average
## within groups  0.1968453
## between groups 0.1955987
## overall        0.1960973
## 
## Summary statistics:
##                            Statistic
## MRPP A weights n        -0.003814300
## MRPP A weights n-1      -0.003814300
## MRPP A weights n(n-1)   -0.003814300
## Classification strength -0.001246624

1.6.2.2 Agrupamento 3 (tipos de questões: a, b, c)

# Save and change plotting parameters
def.par <- par(no.readonly = TRUE)
layout(matrix(1:2,nr=1))

plot(ord <- metaMDS(m_sum), type="text", display="sites" )
## Warning in metaMDS(m_sum): stress is (nearly) zero: you may have insufficient data
with(m_sum_g, ordihull(ord, Grupo3))

with(mrpp3, {
  fig.dist <- hist(boot.deltas, xlim=range(c(delta,boot.deltas)), 
                 main="Test of Differences Among Groups")
  abline(v=delta); 
  text(delta, 2*mean(fig.dist$counts), adj = -0.5,
     expression(bold(delta)), cex=1.5 )  }
)

par(def.par)
## meandist
md <- with(m_sum_g, meandist(vegdist(m_sum), Grupo3))
md
summary(md)
par(mfrow=c(1,2))
plot(md)
plot(md, kind="histogram")

par(mfrow=c(1,1))
## Run 0 stress 9.311704e-05 
## Run 1 stress 9.840807e-05 
## ... Procrustes: rmse 0.2173075  max resid 0.4763775 
## Run 2 stress 9.36998e-05 
## ... Procrustes: rmse 0.04268029  max resid 0.08562625 
## Run 3 stress 9.798095e-05 
## ... Procrustes: rmse 0.2085336  max resid 0.4509336 
## Run 4 stress 9.349498e-05 
## ... Procrustes: rmse 0.08651651  max resid 0.1774617 
## Run 5 stress 9.375588e-05 
## ... Procrustes: rmse 0.04741791  max resid 0.09535291 
## Run 6 stress 8.881324e-05 
## ... New best solution
## ... Procrustes: rmse 0.2103929  max resid 0.4582658 
## Run 7 stress 8.82048e-05 
## ... New best solution
## ... Procrustes: rmse 0.1543852  max resid 0.3002862 
## Run 8 stress 9.530164e-05 
## ... Procrustes: rmse 0.0619499  max resid 0.1221387 
## Run 9 stress 9.809757e-05 
## ... Procrustes: rmse 0.06122082  max resid 0.1235523 
## Run 10 stress 9.527997e-05 
## ... Procrustes: rmse 0.1842917  max resid 0.2927686 
## Run 11 stress 8.973627e-05 
## ... Procrustes: rmse 0.02792691  max resid 0.05880551 
## Run 12 stress 9.918426e-05 
## ... Procrustes: rmse 0.03627951  max resid 0.073204 
## Run 13 stress 9.35232e-05 
## ... Procrustes: rmse 0.06110527  max resid 0.1236719 
## Run 14 stress 9.092553e-05 
## ... Procrustes: rmse 0.1456777  max resid 0.3223942 
## Run 15 stress 9.153478e-05 
## ... Procrustes: rmse 0.08645711  max resid 0.1616875 
## Run 16 stress 9.841064e-05 
## ... Procrustes: rmse 0.1372143  max resid 0.304374 
## Run 17 stress 9.688563e-05 
## ... Procrustes: rmse 0.0483556  max resid 0.09536452 
## Run 18 stress 9.714472e-05 
## ... Procrustes: rmse 0.06728394  max resid 0.1410453 
## Run 19 stress 9.640421e-05 
## ... Procrustes: rmse 0.0208168  max resid 0.04382272 
## Run 20 stress 8.762346e-05 
## ... New best solution
## ... Procrustes: rmse 0.2157787  max resid 0.2964775 
## *** Best solution was not repeated -- monoMDS stopping criteria:
##     20: stress < smin
##           a         b         c
## a 0.1210762 0.2440756 0.1331380
## b 0.2440756 0.2500000 0.2347701
## c 0.1331380 0.2347701 0.1224490
## attr(,"class")
## [1] "meandist" "matrix"  
## attr(,"n")
## grouping
## a b c 
## 2 2 2 
## 
## Mean distances:
##                  Average
## within groups  0.1645084
## between groups 0.2039946
## overall        0.1960973
## 
## Summary statistics:
##                          Statistic
## MRPP A weights n        0.16108805
## MRPP A weights n-1      0.16108805
## MRPP A weights n(n-1)   0.16108805
## Classification strength 0.03948617

1.7 ISA

Uma vez quen não houveram diferenças significativas entre nenhuma das combinações testadas não foi feita análise de “questões” indicadoras.

1.8 Referências