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)
<- read_excel("D:/Elvio/OneDrive/Paralelos/Scarlet_lic/dados.quest.xlsx",
dados_quest sheet = "matriz")
<- dados_quest$Questões
Questões <- cbind(Questões, dados_quest)
dados_quest
#adicionando prefixos
$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 = "-")
dados_quest
#primeira coluna para nomes das linhas
<- as.data.frame(dados_quest)
dados_quest class(dados_quest)
## [1] "data.frame"
rownames(dados_quest) <- dados_quest[,1]
1] <- NULL
dados_quest[,1:6,1:6] dados_quest [
## 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"
<- dados_quest[, -which(names(dados_quest) %in% c("Questões", "Grupo1", "Grupo2"))]
m_bruta #ou
<- dados_quest[,-1:-2]
m_part #ou
<- dados_quest[,-1:-3]
dados_quest_part
# 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_part %>%
m_sum 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
<- as.data.frame(m_sum)
m_sum class(m_sum)
## [1] "data.frame"
rownames(m_sum) <- m_sum[,1]
1] <- NULL
m_sum[,
#Salvando a matriz
write.table(m_sum,
"m_sumcsv.csv",
append = F,
quote = TRUE,
sep = ";", dec = ",",
row.names = T)
<- read.csv("m_sumcsv.csv",
m_sum_csv sep = ";", dec = ",",
header = T,
row.names = 1,
na.strings = NA)
#removendo colunas zeradas
<- colSums(m_sum)
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
<- names(which(colSums(m_sum) == 0))
zero_sum_cols #nomes das colunas zeradas zero_sum_cols
## character(0)
<- m_sum[(colSums(m_sum) != 0)] #em != a exclamação inverte o sentido
m_part <- names(which(colSums(m_part) == 0))
zero_sum_cols2 #nomes das colunas zeradas zero_sum_cols2
## character(0)
<- colSums(m_part)
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
#removendo linhas zeradas
<- names(which(rowSums(m_part) == 0))
zero_sum_rows #nomes das linhas zeradas zero_sum_rows
## character(0)
<- m_part[rowSums(m_part[]) > 0,] #atentar para a virgula
m_part <- names(which(rowSums(m_part) == 0))
zero_sum_rows2 #nomes das linhas zeradas zero_sum_rows2
## character(0)
<-rowSums(m_part)
sum 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
1:6,1:6] m_part[
## 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.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_trab
m_trns <- vegdist(m_trns, method = "bray",
vegdist diag = TRUE,
upper = FALSE)
<- hclust(vegdist, method = "average")
cluster_uas 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)
<- c(rep("a", 1), rep("b", 1), rep("c", 1), rep("a", 1), rep("b", 1), rep("c", 1))
groupCodes rownames(m_trns) <- make.unique(groupCodes)## aqui o problema, criar um novo vetor so pra isso
<- c(a="red", b="green", c="blue")
colorCodes <- as.dendrogram(cluster_uas)
dend labels_colors(dend) <- colorCodes[groupCodes][order.dendrogram(dend)]
<- colorCodes[groupCodes]
col_labels plot(dend)
#rownames(m_trns) <- original_row_names #não lembro o porque desse linha
#Heatmap
library("gplots")
<- as.matrix(vegdist)
heatdist <- rev(heat.colors(999)) #rev() reverte as cores do heatmap
col 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)
<- hclust((vegdist(t(m_trns), method = "bray",
cluster_spp 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
<- heatmap.2(t(as.matrix(m_trns)), #objetos x atributos
h 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
Os valores individuais usados para criar a escala de cores do heatmap pode ser vistos a seguir.
$carpet h
## 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)
<- as.data.frame(cluster_uas$merge)
merge nrow(merge)+1,] = c("0","0")
merge[<- as.data.frame(round(cluster_uas$height, 2))
height nrow(height)+1,] = c("1.0")
height[<- data.frame(Cluster_uas = merge, Height = height)
fusoes colnames(fusoes) <- c("Cluster1", "Cluster2", "Height")
<- rownames_to_column(as.data.frame(m_trns[, 0]))
UA colnames(UA) <- c("UAs")
<- 1:nrow(fusoes)
No.UA <- cbind(No.UA, UA, fusoes)
fusoes $Histórico <- 1:nrow(fusoes)
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:
<- metaMDS(m_trns, #matriz CBS, definida anteriormente
nmds 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)
<- metaMDS(m_trns, distance = "jaccard", k = 2, trymax = 100) nmds
## 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)
<- goodness(nmds)
gof
gofplot(nmds, display = "sites", type = "n")
points(nmds, display = "sites", cex = 2*gof/mean(gof))
## [1] 0 0 0 0 0 0
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)
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.
<- c(rep("antes",3), rep("depois",3))
treat treat
## [1] "antes" "antes" "antes" "depois" "depois" "depois"
<- c(rep("green",3), rep("blue",3))
colors 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
<- seq(1, 19)
surf <- c(cluster_uas$height, 1)
surf <- nrow(m_trns) knots
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
Primeiro criamos uma tabela de grupos a priori.
Valores médios:
library(tibble)
library (dplyr)
m_sum<- 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 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_bruta
m_sum <- dados_quest[,1:3]# <- NULL m_sum_g
1.6.1 Testes entre combinações possiveis (valores médios)
library(vegan)
<- with(m_sum_g, mrpp(m_sum, Grupo2)) mrpp2
## 'nperm' >= set of all permutations: complete enumeration.
## Set of permutations < 'minperm'. Generating entire set.
mrpp2<- with(m_sum_g, mrpp(m_sum, Grupo3)) mrpp3
## '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
<- par(no.readonly = TRUE)
def.par 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, {
<- hist(boot.deltas, xlim=range(c(delta,boot.deltas)),
fig.dist 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
<- with(m_sum_g, meandist(vegdist(m_sum), Grupo2))
md
mdsummary(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
<- par(no.readonly = TRUE)
def.par 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, {
<- hist(boot.deltas, xlim=range(c(delta,boot.deltas)),
fig.dist 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
<- with(m_sum_g, meandist(vegdist(m_sum), Grupo3))
md
mdsummary(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