14 R Módulo 6 - Regressão múltipla

RESUMO

A estatística descritiva tem um papel importante a desempenhar na ciência. Quando problemas específicos são tratados na ciência, os dados precisam ser coletados, analisados e apresentados de forma concisa para que outros possam se beneficiar do que foi encontrado.

Apresentação

A regressão múltipla é uma extensão da correlação bivariada e tem como objetivo predizer uma variável dependente a partir de duas ou mais variáveis independentes. Esse método é amplamente utilizado quando as variáveis preditoras apresentam associação entre si e também com a variável resposta. As variáveis independentes podem ser contínuas ou categóricas, embora variáveis categóricas devam ser previamente convertidas em variáveis dummy para serem incluídas no modelo. Em contraste, a variável dependente deve ser medida em uma escala contínua. Se a variável dependente não for contínua, então a análise discriminante é apropriada (COAKES; STEED, 2001).

O resultado da regressão é uma equação que representa a melhor previsão de uma variável dependente a partir de várias variáveis independentes.

Para isso, existem três principais modelos de regressão. Regressão múltipla simultânea ou padrão, regressão múltipla hierárquica e a regressão múltipla stepwise (“passo-a-passo”). Esses modelos diferem em dois aspectos: primeiro, na forma como tratam a variabilidade compartilhada decorrente da correlação entre as variáveis independentes; e, segundo, na ordem de entrada das variáveis independentes na equação.

No modelo padrão ou simultâneo, todas as variáveis independentes entram na equação de regressão ao mesmo tempo, porque se deseja examinar a relação entre todo o conjunto de preditores e a variável dependente. Na regressão múltipla hierárquica, a ordem de entrada das variáveis é definida previamente, pelo pesquisador, com base em conhecimento teórico ou hipóteses biológicas. Já na regressão múltipla stepwise , a inclusão ou remoção das variáveis ocorre automaticamente a partir de critérios estatísticos, buscando selecionar os melhores preditores do modelo, gerados pelo procedimento stepwise. A regressão stepwise pode ainda ser, forward (seleção progressiva), backward (seleção regressiva) ou mixed (uma combinação de ambos), dependendo da ordem na qual as variáveis são incorporadas. Veremos mais sobre isso a serguir.

Na seleção forward, os preditores são adicionados ao modelo um de cada vez. A ordem de entrada e a permanência de cada preditor no modelo são determinadas com base em dois critérios: se o teste F excede um valor crítico preestabelecido e se é atingido um nível crítico de significância.

Na seleção backward, o modelo é inicialmente ajustado com todas as variáveis independentes e, em seguida, aquelas com menor contribuição são removidas gradualmente, com base no fato de seu valor parcial de F ser inferior a um valor crítico. Além disso, deve ser atendido o critério padrão de significância para remoção.

A seleção stepwise combina os procedimentos forward e backward, permitindo que variáveis previamente incluídas no modelo sejam posteriormente removidas, caso deixem de atender aos critérios estatísticos estabelecidos.

A escolha do método depende, em grande parte, dos objetivos do pesquisador, e a aplicação da regressão múltipla exige o atendimento de alguns pressupostos estatísticos (COAKES; STEED, 2001).

14.0.0.1 Pressupostos

Uma série de pressupostos sustenta o uso da regressão:

  1. Razão entre casos e variáveis independentes: O número de casos necessários depende do tipo de modelo de regressão a ser utilizado. Para regressão padrão ou hierárquica, idealmente deve-se ter vinte vezes mais casos do que preditores, enquanto ainda mais casos são necessários para regressão stepwise. O requisito mínimo é ter pelo menos cinco vezes mais casos do que variáveis independentes (COAKES; STEED, 2001).

  2. Outliers: Casos extremos têm impacto considerável na solução de regressão e devem ser excluídos ou modificados para reduzir sua influência. Outliers univariados podem ser detectados durante a triagem de dados, conforme descrito na seção Gráficos de histograma e boxplot. Outliers multivariados podem ser detectados usando métodos estatísticos, como a distância de Mahalanobis, e métodos gráficos, como gráficos de dispersão dos resíduos (isso é abordado na PARTE V Análise de outliers baseada no desvio padrão do centróide deste livro). A decisão de remover outliers do conjunto de dados deve ser tomada com cuidado, porque sua exclusão frequentemente resulta na geração de outros casos discrepantes.

  3. Multicolinearidade e singularidade: Multicolinearidade refere-se a altas correlações entre as variáveis independentes, enquanto singularidade ocorre quando existem correlações perfeitas entre variáveis independentes. Esses problemas afetam a forma como se interpretam quaisquer relações entre os preditores (VIs) e a variável dependente, e podem ser detectados examinando-se a matriz de correlação, as correlações múltiplas ao quadrado e as tolerâncias. A maioria dos programas computacionais possui valores padrão para multicolinearidade. É importante não admitir-mos variáveis que representem esse tipo de problema.

  4. Normalidade, linearidade, homocedasticidade e independência dos resíduos: Um exame dos gráficos de dispersão dos resíduos permite testar os pressupostos acima. Assume-se que as diferenças entre os escores observados e previstos da variável dependente sejam normalmente distribuídas. Além disso, assume-se que os resíduos tenham uma relação linear com os escores previstos da variável dependente e que a variância dos resíduos seja a mesma para todos os escores previstos. Desvios leves da linearidade não são graves. Desvios moderados a extremos podem levar a uma séria subestimação de uma relação.

O pressuposto 1 relaciona-se ao delineamento da pesquisa. Os pressupostos 2, 3 e 4 são avaliados por meio da análise de regressão.

No contexto da biometria de Cichla ocellaris, a regressão múltipla pode ser utilizada para investigar quais variáveis morfométricas melhor predizem o peso corporal dos indivíduos. Nesse caso, o peso total (PT_g) pode ser utilizado como variável dependente, enquanto variáveis como comprimento total (CT_cm), comprimento padrão (CP_cm) podem atuar como variáveis independentes. Assim, o modelo busca explicar a variação do peso corporal a partir de múltiplos atributos biométricos dos indivíduos analisados.

Com esse tipo de análise, é possível responder questões como:

  1. Qual a contribuição conjunta das variáveis biométricas para a predição do peso corporal?
  2. Se determinadas hipóteses biológicas previamente propostas são sustentadas pelos dados observados.
  3. Qual variável apresenta maior poder preditivo?

14.0.0.2 Exemplo 1

14.1 Sobre os dados

Considere os dados merísticos (ou médições morfológicas) da espécie de peixe Cichla ocellaris (tucunaré amarelo) do reservatório da barragem de Gramame, PB (MEDEIROS; ROSA, 1994). Existem 434 medições do comprimemto total (CT), comprimento padrão (CP) e peso total (PT), além do sexo (MACHO, FÊMEA ou imaturo), e outros descritores da estrutura populacional da espécie, um conjunto de dados formidável.

ATENÇÃO

Os links para baixar as planilhas necessárias para repetir esse tutorial podem ser encontrados na seção Arquivos disponíveis do Capítulo Bases de dados.

Ou, baixe aqui o arquivo tucuna.xlsx

14.2 Organização básica

14.2.1 Pacotes do módulo

Instalando os pacotes necessários para esse módulo.

#install.packages("MASS")
#install.packages("car")
#install.packages("caret")
#install.packages("corrplot")
#install.packages("leaps")
#install.packages("openxlsx")
#install.packages("psych")
#install.packages("tidyverse")
#install.packages("vegan")

Limpando a memória

dev.off() #apaga os graficos, se houver algum
rm(list=ls(all=TRUE)) #limpa a memória
cat("\014") #limpa o console 
#options(scipen = 999) #sem notação científica

14.2.2 Organizando os dados

library(openxlsx)
univ <- read.xlsx("D:/Elvio/OneDrive/Disciplinas/_EcoNumerica/5.Matrizes/tucuna.xlsx",
                    rowNames = T, colNames = T,
                    sheet = "tucuna")
head(univ, 10)
head(univ[, 1:5], 10)
##       CT_cm  PT_g CP_cm Ctubo_cm  PC_g     p_PT Pest_g Cest_cm gr_est    ir_est
## TU001  32.4 468.8  27.2     39.8 458.9 2.111775    3.9     7.7      I 0.8319113
## TU002  33.4 520.0  28.8     14.3 507.4 2.423077    5.9    10.0      I 1.1346154
## TU003  27.3 301.5  23.8     13.0 283.4 6.003317   15.5    10.2    III 5.1409619
## TU004  13.2  28.2  11.0     16.5  27.7 1.773050    0.3     4.3      I 1.0638298
## TU005  14.3  38.9  11.9     15.5  37.7 3.084833    0.8     4.5    III 2.0565553
## TU006  22.7 431.7  20.5     24.2 418.7 3.011350    9.9     6.4    III 2.2932592
## TU007  23.2 544.0  19.2     25.0 520.1 4.393382    6.8     7.5     II 1.2500000
## TU008  13.5 161.6  11.5     17.5 157.0 2.846535    4.1     6.8     II 2.5371287
## TU009  24.6 200.5  20.5     25.7 195.9 2.294264    2.5     7.6     II 1.2468828
## TU010  19.4  86.7  16.0     18.3  84.5 2.537486    0.7     5.1      I 0.8073818
##       Pint_g Cint_cm gr_int    ir_int Pgon_g Cgon_cm          emg         ig
## TU001    4.8    38.3     II 1.0238908    1.2       7      IMATURO 0.25597270
## TU002    5.3    13.3     II 1.0192308    1.4     6.5       MADURO 0.26923077
## TU003    2.4    12.0     II 0.7960199    0.2     7.7 EM MATURACAO 0.06633499
## TU004    0.1    16.0     II 0.3546099    0.1       5      IMATURO 0.35460993
## TU005    0.3    15.0     II 0.7712082    0.1     3.2      IMATURO 0.25706941
## TU006    2.7    23.7     II 0.6254343    0.4     7.8 EM MATURACAO 0.09265694
## TU007    3.3    24.5     II 0.6066176   13.8     7.9       MADURO 2.53676471
## TU008    0.4    17.0      I 0.2475248    0.1     2.5      IMATURO 0.06188119
## TU009    2.0    25.3     II 0.9975062    0.1     6.5 EM MATURACAO 0.04987531
## TU010    1.4    17.7     II 1.6147636    0.1       6      IMATURO 0.11534025
##       mes periodo estação    sexo   sexo2
## TU001 ago chuvoso inverno   MACHO   FEMEA
## TU002 ago chuvoso inverno   MACHO   FEMEA
## TU003 ago chuvoso inverno   MACHO   FEMEA
## TU004 ago chuvoso inverno   MACHO   FEMEA
## TU005 ago chuvoso inverno   MACHO   FEMEA
## TU006 set chuvoso inverno   MACHO   FEMEA
## TU007 set chuvoso inverno   FEMEA   MACHO
## TU008 set chuvoso inverno imaturo imaturo
## TU009 set chuvoso inverno   MACHO   FEMEA
## TU010 set chuvoso inverno   MACHO   FEMEA
##       CT_cm  PT_g CP_cm Ctubo_cm  PC_g
## TU001  32.4 468.8  27.2     39.8 458.9
## TU002  33.4 520.0  28.8     14.3 507.4
## TU003  27.3 301.5  23.8     13.0 283.4
## TU004  13.2  28.2  11.0     16.5  27.7
## TU005  14.3  38.9  11.9     15.5  37.7
## TU006  22.7 431.7  20.5     24.2 418.7
## TU007  23.2 544.0  19.2     25.0 520.1
## TU008  13.5 161.6  11.5     17.5 157.0
## TU009  24.6 200.5  20.5     25.7 195.9
## TU010  19.4  86.7  16.0     18.3  84.5

14.2.2.1 Correlograma e redução de variáveis desnecessárias

# Correlograma e redução de variáveis desnecessárias
library(psych)
colnames(univ)

#png("fig-nome.png")
pairs.panels(univ[,1:6], #colunas de interesse
             method = "pearson", # correlation method
             scale = FALSE, lm = FALSE,
             hist.col = "#00AFBB", pch = 19,
             density = TRUE,  # show density plots
             ellipses = TRUE, # show correlation ellipses
             alpha = 0.5)
#dev.off()

cor <- cor(univ[,1:6])
cor

library(corrplot)
#png("fig-nome.png")
corrplot(cor, method = "circle")
#dev.off()

## Impressão em papel
#win.print()
#corrplot(cor, method = "circle")
#dev.off()
##  [1] "CT_cm"    "PT_g"     "CP_cm"    "Ctubo_cm" "PC_g"     "p_PT"    
##  [7] "Pest_g"   "Cest_cm"  "gr_est"   "ir_est"   "Pint_g"   "Cint_cm" 
## [13] "gr_int"   "ir_int"   "Pgon_g"   "Cgon_cm"  "emg"      "ig"      
## [19] "mes"      "periodo"  "estação"  "sexo"     "sexo2"   
##               CT_cm       PT_g      CP_cm   Ctubo_cm       PC_g       p_PT
## CT_cm     1.0000000  0.9057485  0.9990120  0.9091518  0.9039903 -0.5189589
## PT_g      0.9057485  1.0000000  0.9039503  0.8093258  0.9999423 -0.3320403
## CP_cm     0.9990120  0.9039503  1.0000000  0.9071124  0.9021382 -0.5159241
## Ctubo_cm  0.9091518  0.8093258  0.9071124  1.0000000  0.8062440 -0.4330032
## PC_g      0.9039903  0.9999423  0.9021382  0.8062440  1.0000000 -0.3321762
## p_PT     -0.5189589 -0.3320403 -0.5159241 -0.4330032 -0.3321762  1.0000000

14.2.2.2 Exemplo 2

Um pesquisador deseja determinar o efeito das variáveis ambientais de corpos aquáticos sobre a riqueza de espécies. Para isso, foram amostrados diferentes tipos de ambientes aquáticos e registradas a abundância e densidade de indivíduos, além de vários tipos de variáveis ambientais que refletem a morfologia local, qualidade da água, composição do sedimento e estruturas subaquáticas do habitat marginal. Regressão Múltipla foi utilizada nesse conjunto de dados para responder às seguintes perguntas:

  1. Qual contribuição as variáveis morfológicas oferecem para a previsão da riqueza de espécies?
  2. Estudos anteriores sugerem que a profundidade influencia a riqueza de espécies. Essa hipótese é corroborada pelos dados analisados?
  3. Qual variável morfológica é a melhor preditora da riqueza de espécies?

14.3 Sobre os dados

ATENÇÃO

Os links para baixar as planilhas necessárias para repetir esse tutorial podem ser encontrados na seção Arquivos disponíveis do Capítulo Bases de dados.

Ou, baixe aqui o arquivo ppbio06com-bentos.xlsx

Também usaremos uma matriz ambiental com seus respectivos agrupamentos.

ATENÇÃO

Os links para baixar as planilhas necessárias para repetir esse tutorial podem ser encontrados na seção Arquivos disponíveis do Capítulo Bases de dados.

Ou, baixe aqui o arquivo ppbio06amb-bentos.xlsx

14.4 Organização básica

Limpando a memória

dev.off() #apaga os graficos, se houver algum
rm(list=ls(all=TRUE)) #limpa a memória
cat("\014") #limpa o console 
#options(scipen = 999) #sem notação científica

14.5 Importando a planilha

library(openxlsx)
densidade <- read.xlsx("D:/Elvio/OneDrive/Disciplinas/_EcoNumerica/5.Matrizes/ppbio06com-bentos.xlsx",
                   rowNames = T,
                   colNames = T,
                   sheet = "densidade")
habitat <- read.xlsx("D:/Elvio/OneDrive/Disciplinas/_EcoNumerica/5.Matrizes/ppbio06amb-bentos.xlsx",
                    rowNames = T,
                    colNames = T,
                    sheet = "ambiente")
grupos <- read.xlsx("D:/Elvio/OneDrive/Disciplinas/_EcoNumerica/5.Matrizes/ppbio06amb-bentos.xlsx",
                   rowNames = T,
                   colNames = T,
                   sheet = "grupos")
densidade[1:5,1:5] #[1:5,1:5] mostra apenas as linhas e colunas de 1 a 5.
##          Hydrachnidia Ampularidae Atyidae   Baetidae Belastomatidae
## S-R-CI-1         0.00    0.000000       0   0.000000              0
## S-R-CI-2         0.00    0.000000       0   2.083333              0
## S-R-CI-3        93.75    2.083333       0 177.083333              0
## S-R-CI-4         0.00    4.166667       0   8.333333              0
## B-A-SA-1         0.00    0.000000       0   0.000000              0

14.5.1 Organizando os dados

# Removendo linhas e colunas zeradas
rownames(densidade)
rowSums(densidade)
colSums(densidade)
matriz <- densidade

# Linhas zeradas
sum <- rowSums(matriz)
sum
zero_sum <- rownames(matriz)[which(rowSums(matriz) == 0)]
zero_sum # nomes das linhas zeradas
m_part_rows <- matriz[(rowSums(matriz) != 0), ] #em != a exclamação inverte o sentido
zero_sum2 <- rownames(m_part_rows)[which(rowSums(m_part_rows) == 0)]
zero_sum2 #nomes das linhas zeradas
sum <- rowSums(m_part_rows)
sum
# Colunas zeradas
sum <- colSums(m_part_rows)
sum
zero_sum <- names(which(colSums(m_part_rows) == 0))
zero_sum #nomes das espécies zeradas
m_part_cols <- m_part_rows[, (colSums(m_part_rows) != 0)] #remove colunas zeradas
zero_sum2 <- names(which(colSums(m_part_cols) == 0))
zero_sum2 #nomes das espécies zeradas
sum <- colSums(m_part_cols)
sum

m_dens <- as.data.frame(m_part_cols)

# Particionando a matriz ambiental
rownames(habitat)
del_rows <- c("B-A-MU-1", "B-R-EP-1")
del_rows
m_hab <- habitat[!(row.names(habitat) %in% c(del_rows)),]
m_hab

# Particionando tabela de grupos
t_grps <- grupos[!(row.names(grupos) %in% del_rows),]

# Salvando as matrizes finais particionadas
write.table(m_dens, "m_dens.csv",
            sep = ";", dec = ".", #"\t",
            row.names = TRUE,
            quote = TRUE,
            append = FALSE)
write.table(t_grps, "t_grps.csv",
            sep = ";", dec = ".", #"\t",
            row.names = TRUE,
            quote = TRUE,
            append = FALSE)
write.table(m_hab, "m_hab.csv",
            sep = ";", dec = ".", #"\t",
            row.names = TRUE,
            quote = TRUE,
            append = FALSE)
t_grps <- read.csv("t_grps.csv",
                   sep = ";", dec = ".",
                   row.names = 1,
                   header = TRUE,
                   na.strings = NA)
m_dens <- read.csv("m_dens.csv",
                   sep = ";", dec = ".",
                   row.names = 1,
                   header = TRUE,
                   na.strings = NA)
m_hab <- read.csv("m_hab.csv",
                   sep = ";", dec = ".",
                   row.names = 1,
                   header = TRUE,
                   na.strings = NA)

# Particionando a matriz de contagem
contagem <- read.xlsx("D:/Elvio/OneDrive/Disciplinas/_EcoNumerica/5.Matrizes/ppbio06com-bentos.xlsx",
                       rowNames = T,
                       colNames = T,
                       sheet = "contagem")
contagem[1:5,1:5] #[1:5,1:5] mostra apenas as linhas e colunas de 1 a 5.

matriz <- contagem

# Linhas zeradas
sum <- rowSums(matriz)
sum
zero_sum <- rownames(matriz)[which(rowSums(matriz) == 0)]
zero_sum # nomes das linhas zeradas
m_part_rows <- matriz[(rowSums(matriz) != 0), ] #em != a exclamação inverte o sentido
zero_sum2 <- rownames(m_part_rows)[which(rowSums(m_part_rows) == 0)]
zero_sum2 #nomes das linhas zeradas
sum <- rowSums(m_part_rows)
sum
# Colunas zeradas
sum <- colSums(m_part_rows)
sum
zero_sum <- names(which(colSums(m_part_rows) == 0))
zero_sum #nomes das espécies zeradas
m_part_cols <- m_part_rows[, (colSums(m_part_rows) != 0)] #remove colunas zeradas
zero_sum2 <- names(which(colSums(m_part_cols) == 0))
zero_sum2 #nomes das espécies zeradas
sum <- colSums(m_part_cols)
sum

m_cont <- as.data.frame(m_part_cols)

# Salvando a matriz final
write.table(m_cont, "m_cont.csv",
            sep = ";", dec = ".", #"\t",
            row.names = TRUE,
            quote = TRUE,
            append = FALSE)
m_cont <- read.csv("m_cont.csv",
                   sep = ";", dec = ".",
                   row.names = 1,
                   header = TRUE,
                   na.strings = NA)
##  [1] "S-R-CI-1" "S-R-CI-2" "S-R-CI-3" "S-R-CI-4" "B-A-SA-1" "B-A-SA-2"
##  [7] "B-A-SA-3" "B-A-SA-4" "B-A-MU-1" "B-A-MU-2" "B-A-MU-3" "B-A-MU-4"
## [13] "B-R-EP-1" "B-R-EP-2" "B-R-EP-3" "B-R-EP-4" "S-A-RE-1" "S-A-RE-2"
## [19] "S-A-RE-3" "S-A-RE-4" "S-R-SE-1" "S-R-SE-2" "S-R-SE-3" "S-R-SE-4"
##     S-R-CI-1     S-R-CI-2     S-R-CI-3     S-R-CI-4     B-A-SA-1     B-A-SA-2 
##    62.500000  3022.916667  9010.416667  2029.166667    10.416667    29.166667 
##     B-A-SA-3     B-A-SA-4     B-A-MU-1     B-A-MU-2     B-A-MU-3     B-A-MU-4 
##    31.250000    83.333333     0.000000     6.250000     8.333333    25.000000 
##     B-R-EP-1     B-R-EP-2     B-R-EP-3     B-R-EP-4     S-A-RE-1     S-A-RE-2 
##     0.000000  2895.833333   927.083333  2791.666667  3345.833333  2252.083333 
##     S-A-RE-3     S-A-RE-4     S-R-SE-1     S-R-SE-2     S-R-SE-3     S-R-SE-4 
##  2829.166667  3629.166667    64.583333  2639.583333  8731.250000 14231.250000 
##    Hydrachnidia     Ampularidae         Atyidae        Baetidae  Belastomatidae 
##       93.750000        8.333333      122.916667      233.333333        4.166667 
##        Caenidae Ceratopogonidae  Coenagrionidae    Conchostraca       Corixidae 
##      318.750000      156.250000       37.500000      375.000000     1833.333333 
##   Curculionidae     Chaoboridae  Chironomidae_L  Chironomidae_P    Dytiscidae_L 
##       12.500000        4.166667    13839.583333      289.583333       12.500000 
##    Dytiscidae_A        Gerridae       Gomphidae Glossosomatidae Hidrophilidae_L 
##       70.833333        4.166667       83.333333       12.500000      485.416667 
##  Hidrophilide_A       Hirudinea   Leptohyphidae    Leptoceridae    Libellulidae 
##      204.166667       16.666667       72.916667        6.250000      497.916667 
##      Lymnaeidae      Naucoridae    Notonectidae     Oligochaeta       Ostracoda 
##        6.250000       27.083333      137.500000     8370.833333      270.833333 
##     Planorbidae        Physidae      Sphaeridae       Thiaridae        Veliidae 
##     1493.750000       62.500000        2.083333    29483.333333        6.250000 
##     S-R-CI-1     S-R-CI-2     S-R-CI-3     S-R-CI-4     B-A-SA-1     B-A-SA-2 
##    62.500000  3022.916667  9010.416667  2029.166667    10.416667    29.166667 
##     B-A-SA-3     B-A-SA-4     B-A-MU-1     B-A-MU-2     B-A-MU-3     B-A-MU-4 
##    31.250000    83.333333     0.000000     6.250000     8.333333    25.000000 
##     B-R-EP-1     B-R-EP-2     B-R-EP-3     B-R-EP-4     S-A-RE-1     S-A-RE-2 
##     0.000000  2895.833333   927.083333  2791.666667  3345.833333  2252.083333 
##     S-A-RE-3     S-A-RE-4     S-R-SE-1     S-R-SE-2     S-R-SE-3     S-R-SE-4 
##  2829.166667  3629.166667    64.583333  2639.583333  8731.250000 14231.250000 
## [1] "B-A-MU-1" "B-R-EP-1"
## character(0)
##     S-R-CI-1     S-R-CI-2     S-R-CI-3     S-R-CI-4     B-A-SA-1     B-A-SA-2 
##    62.500000  3022.916667  9010.416667  2029.166667    10.416667    29.166667 
##     B-A-SA-3     B-A-SA-4     B-A-MU-2     B-A-MU-3     B-A-MU-4     B-R-EP-2 
##    31.250000    83.333333     6.250000     8.333333    25.000000  2895.833333 
##     B-R-EP-3     B-R-EP-4     S-A-RE-1     S-A-RE-2     S-A-RE-3     S-A-RE-4 
##   927.083333  2791.666667  3345.833333  2252.083333  2829.166667  3629.166667 
##     S-R-SE-1     S-R-SE-2     S-R-SE-3     S-R-SE-4 
##    64.583333  2639.583333  8731.250000 14231.250000 
##    Hydrachnidia     Ampularidae         Atyidae        Baetidae  Belastomatidae 
##       93.750000        8.333333      122.916667      233.333333        4.166667 
##        Caenidae Ceratopogonidae  Coenagrionidae    Conchostraca       Corixidae 
##      318.750000      156.250000       37.500000      375.000000     1833.333333 
##   Curculionidae     Chaoboridae  Chironomidae_L  Chironomidae_P    Dytiscidae_L 
##       12.500000        4.166667    13839.583333      289.583333       12.500000 
##    Dytiscidae_A        Gerridae       Gomphidae Glossosomatidae Hidrophilidae_L 
##       70.833333        4.166667       83.333333       12.500000      485.416667 
##  Hidrophilide_A       Hirudinea   Leptohyphidae    Leptoceridae    Libellulidae 
##      204.166667       16.666667       72.916667        6.250000      497.916667 
##      Lymnaeidae      Naucoridae    Notonectidae     Oligochaeta       Ostracoda 
##        6.250000       27.083333      137.500000     8370.833333      270.833333 
##     Planorbidae        Physidae      Sphaeridae       Thiaridae        Veliidae 
##     1493.750000       62.500000        2.083333    29483.333333        6.250000 
## character(0)
## character(0)
##    Hydrachnidia     Ampularidae         Atyidae        Baetidae  Belastomatidae 
##       93.750000        8.333333      122.916667      233.333333        4.166667 
##        Caenidae Ceratopogonidae  Coenagrionidae    Conchostraca       Corixidae 
##      318.750000      156.250000       37.500000      375.000000     1833.333333 
##   Curculionidae     Chaoboridae  Chironomidae_L  Chironomidae_P    Dytiscidae_L 
##       12.500000        4.166667    13839.583333      289.583333       12.500000 
##    Dytiscidae_A        Gerridae       Gomphidae Glossosomatidae Hidrophilidae_L 
##       70.833333        4.166667       83.333333       12.500000      485.416667 
##  Hidrophilide_A       Hirudinea   Leptohyphidae    Leptoceridae    Libellulidae 
##      204.166667       16.666667       72.916667        6.250000      497.916667 
##      Lymnaeidae      Naucoridae    Notonectidae     Oligochaeta       Ostracoda 
##        6.250000       27.083333      137.500000     8370.833333      270.833333 
##     Planorbidae        Physidae      Sphaeridae       Thiaridae        Veliidae 
##     1493.750000       62.500000        2.083333    29483.333333        6.250000 
##  [1] "S-R-CI-1" "S-R-CI-2" "S-R-CI-3" "S-R-CI-4" "B-A-SA-1" "B-A-SA-2"
##  [7] "B-A-SA-3" "B-A-SA-4" "B-A-MU-1" "B-A-MU-2" "B-A-MU-3" "B-A-MU-4"
## [13] "B-R-EP-1" "B-R-EP-2" "B-R-EP-3" "B-R-EP-4" "S-A-RE-1" "S-A-RE-2"
## [19] "S-A-RE-3" "S-A-RE-4" "S-R-SE-1" "S-R-SE-2" "S-R-SE-3" "S-R-SE-4"
## [1] "B-A-MU-1" "B-R-EP-1"
##          g.river_length g.altitude m.depth_mar m.depth_max m.slope m.width
## S-R-CI-1        83.0500        169   22.666667          60      60   17.24
## S-R-CI-2        83.0500        169   32.666667          68      60   18.47
## S-R-CI-3        83.0500        169   32.666667          79      60   15.10
## S-R-CI-4        83.0500        169   45.333333          64      60   10.70
## B-A-SA-1       212.6667        713    8.166667          60      30  330.00
## B-A-SA-2       212.6667        713    7.000000          69      30  321.00
## B-A-SA-3       212.6667        713    6.833333          68      30  314.20
## B-A-SA-4       212.6667        713    4.666667          63      30  289.50
## B-A-MU-2       214.0200        725   22.000000         115      30  247.63
## B-A-MU-3       214.0200        725   25.666667         117      30  234.53
## B-A-MU-4       214.0200        725   41.333333         112      30  239.00
## B-R-EP-2       196.8333        402   49.333333         110      90   29.60
## B-R-EP-3       196.8333        402   50.000000          80      90   27.30
## B-R-EP-4       196.8333        402   52.833333          95      90   20.00
## S-A-RE-1       110.2000        270   54.666667         154      60  102.00
## S-A-RE-2       110.2000        270   37.666667         118      60  100.00
## S-A-RE-3       110.2000        270   22.333333         109      60   88.00
## S-A-RE-4       110.2000        270   30.333333          87      60   72.20
## S-R-SE-1       163.2000        226   81.333333         106      30   19.64
## S-R-SE-2       163.2000        226   67.000000         105      30   16.10
## S-R-SE-3       163.2000        226   32.333333         110      30    6.20
## S-R-SE-4       163.2000        226   32.333333          74      30    5.40
##            q.w_vel   q.temp     q.do   q.turb      s.mud    s.sand s.smlgrav
## S-R-CI-1 0.1591512 35.20000 6.863333 26.00000 16.6666667 70.000000  5.000000
## S-R-CI-2 0.0000000 29.00000 3.015000 33.00000  0.6666667 87.666667  3.333333
## S-R-CI-3 0.0000000 29.66667 5.000000 50.33333 48.7500000 22.500000 10.000000
## S-R-CI-4 0.0000000 27.60000 4.900000 60.00000  5.0000000 60.000000  0.000000
## B-A-SA-1 0.0000000 29.23333 5.136667 25.66667 96.6666667  3.333333  0.000000
## B-A-SA-2 0.0000000 29.00000 1.850000 55.00000 98.0000000  2.000000  0.000000
## B-A-SA-3 0.0000000 24.00000 8.800000 51.66667 87.7777778  6.666667  3.333333
## B-A-SA-4 0.0000000 24.70000 8.750000 36.00000 95.1666667  3.416667  1.333333
## B-A-MU-2 0.0000000 29.00000 1.815000 43.00000 20.6000000 77.000000  0.000000
## B-A-MU-3 0.0000000 26.00000 5.700000 63.00000 65.0000000 35.000000  0.000000
## B-A-MU-4 0.0000000 25.95000 7.300000 89.00000 91.7777778  3.222222  0.000000
## B-R-EP-2 0.0000000 29.00000 5.635000 50.00000 39.0000000 56.000000  3.000000
## B-R-EP-3 0.0000000 29.00000 5.000000 32.33333 33.6666667 63.000000  3.333333
## B-R-EP-4 0.0000000 28.85000 5.100000 30.00000 48.8750000 47.875000  1.875000
## S-A-RE-1 0.1000000 34.00000 4.820000 61.00000 81.6666667  8.333333  1.666667
## S-A-RE-2 0.0000000 29.00000 5.000000 90.00000  5.0000000 95.000000  0.000000
## S-A-RE-3 0.0000000 34.00000 9.000000 51.66667 46.6666667 40.000000  6.666667
## S-A-RE-4 0.0000000 29.53333 9.433333 67.00000 59.1428571 38.714286  2.142857
## S-R-SE-1 0.1666667 32.90000 6.510000 46.00000 65.0000000 30.000000  0.000000
## S-R-SE-2 0.1250000 32.00000 5.375000 44.00000 40.0000000 40.000000  0.000000
## S-R-SE-3 0.0000000 28.26667 6.000000 17.33333 65.5555556 23.111111  0.000000
## S-R-SE-4 0.0000000 32.60000 6.000000 16.00000 95.0000000  1.833333  0.000000
##            s.lrggrav  s.cobbles   s.rocks s.bedrock h.macroph    h.grass
## S-R-CI-1  5.00000000  3.3333333  0.000000  0.000000  0.000000 23.3333333
## S-R-CI-2  3.33333333  5.0000000  0.000000  0.000000  0.000000  0.0000000
## S-R-CI-3 10.00000000  8.7500000  0.000000  0.000000  0.000000  0.0000000
## S-R-CI-4  0.00000000 25.0000000 10.000000  0.000000  0.000000  0.0000000
## B-A-SA-1  0.00000000  0.0000000  0.000000  0.000000 46.666667  0.0000000
## B-A-SA-2  0.00000000  0.0000000  0.000000  0.000000  2.600000  7.5000000
## B-A-SA-3  2.22222222  0.0000000  0.000000  0.000000  0.000000 13.3333333
## B-A-SA-4  0.08333333  0.0000000  0.000000  0.000000  2.083333  0.0000000
## B-A-MU-2  0.00000000  2.4000000  0.000000  0.000000  0.000000 54.0000000
## B-A-MU-3  0.00000000  0.0000000  0.000000  0.000000  0.000000 28.3333333
## B-A-MU-4  0.00000000  0.0000000  5.000000  0.000000  0.000000  5.5555556
## B-R-EP-2  0.00000000  1.0000000  1.000000  0.000000  0.000000  2.0000000
## B-R-EP-3  0.00000000  0.0000000  0.000000  0.000000  0.000000  0.0000000
## B-R-EP-4  0.00000000  0.1250000  1.250000  0.000000  0.000000  0.0000000
## S-A-RE-1  0.00000000  0.0000000  0.000000  8.333333  5.833333  0.0000000
## S-A-RE-2  0.00000000  0.0000000  0.000000  0.000000 54.833333  0.3333333
## S-A-RE-3  6.66666667  0.0000000  0.000000  0.000000 44.629630  8.1111111
## S-A-RE-4  0.00000000  0.0000000  0.000000  0.000000 37.309524  0.0000000
## S-R-SE-1  0.00000000  1.6666667  0.000000  3.333333  8.333333 20.0000000
## S-R-SE-2  0.00000000 20.0000000  0.000000  0.000000  0.000000 20.0000000
## S-R-SE-3  0.00000000  3.0000000  8.333333  0.000000  0.000000  0.1111111
## S-R-SE-4  0.00000000  0.3333333  2.833333  0.000000  0.000000  4.1666667
##           h.subveg h.overhveg  h.litter h.filalgae h.attalgae  h.roots
## S-R-CI-1  3.000000  26.666667 2.3333333  3.3333333  0.6666667 3.333333
## S-R-CI-2  0.000000  33.333333 1.0000000  0.0000000  0.0000000 5.000000
## S-R-CI-3  0.000000   0.000000 1.5000000  6.2500000  0.5000000 1.000000
## S-R-CI-4  0.000000   8.333333 1.0000000 25.0000000 50.0000000 0.000000
## B-A-SA-1  3.333333   3.333333 0.0000000  0.0000000  0.0000000 0.000000
## B-A-SA-2 26.000000   0.400000 0.0000000  0.0000000  1.0000000 0.000000
## B-A-SA-3  0.000000   0.000000 0.0000000 25.0000000  0.0000000 0.000000
## B-A-SA-4  0.000000   0.000000 0.0000000  0.8333333 42.5000000 0.000000
## B-A-MU-2 36.600000   0.000000 5.0000000  0.0000000  0.0000000 0.000000
## B-A-MU-3  8.333333   0.000000 1.0000000  0.0000000  0.3333333 0.000000
## B-A-MU-4  0.000000   0.000000 0.4444444  0.0000000 30.0000000 0.000000
## B-R-EP-2  0.000000   0.000000 0.4000000  0.0000000  0.4000000 0.000000
## B-R-EP-3  0.000000   0.000000 0.3333333  0.0000000  0.0000000 0.000000
## B-R-EP-4  0.000000   0.000000 0.5000000  0.0000000  0.0000000 0.000000
## S-A-RE-1 16.666667  33.333333 3.6666667 25.0000000  3.3333333 0.000000
## S-A-RE-2  0.000000   8.333333 1.0000000 33.3333330  0.0000000 0.000000
## S-A-RE-3  0.000000   0.000000 0.6666667  9.0000000  0.0000000 0.000000
## S-A-RE-4  0.000000   0.000000 0.5714286  0.0000000  0.0000000 0.000000
## S-R-SE-1 10.000000   0.000000 0.6666667  0.0000000 12.0000000 0.000000
## S-R-SE-2  0.000000   0.000000 0.0000000  0.0000000  1.0000000 0.000000
## S-R-SE-3  0.000000   0.000000 0.0000000  0.0000000  0.0000000 0.000000
## S-R-SE-4  0.000000   0.000000 0.8333333  0.0000000  7.5000000 0.000000
##            h.smldeb  h.lrgdeb
## S-R-CI-1  2.0000000 1.6666667
## S-R-CI-2  7.0000000 3.3333333
## S-R-CI-3  3.0000000 0.6666667
## S-R-CI-4  1.0000000 0.0000000
## B-A-SA-1  0.0000000 0.0000000
## B-A-SA-2  0.0000000 0.0000000
## B-A-SA-3  0.0000000 0.0000000
## B-A-SA-4  3.7500000 0.0000000
## B-A-MU-2 10.0000000 0.0000000
## B-A-MU-3  5.0000000 6.6666667
## B-A-MU-4  7.2222222 3.2222222
## B-R-EP-2  0.4000000 0.0000000
## B-R-EP-3  0.4444444 0.0000000
## B-R-EP-4  2.5000000 0.0000000
## S-A-RE-1 10.0000000 0.0000000
## S-A-RE-2  5.3333333 8.3333333
## S-A-RE-3  1.6666667 0.0000000
## S-A-RE-4  3.2857143 0.0000000
## S-R-SE-1  1.6666667 1.6666667
## S-R-SE-2  0.0000000 0.0000000
## S-R-SE-3  2.2222222 0.0000000
## S-R-SE-4  5.0000000 0.0000000
##          Hydrachnidia Ampularidae Atyidae Baetidae Belastomatidae
## S-R-CI-1            0           0       0        0              0
## S-R-CI-2            0           0       0        1              0
## S-R-CI-3           45           1       0       85              0
## S-R-CI-4            0           2       0        4              0
## B-A-SA-1            0           0       0        0              0
## S-R-CI-1 S-R-CI-2 S-R-CI-3 S-R-CI-4 B-A-SA-1 B-A-SA-2 B-A-SA-3 B-A-SA-4 
##       30     1451     4325      974        5       14       15       40 
## B-A-MU-1 B-A-MU-2 B-A-MU-3 B-A-MU-4 B-R-EP-1 B-R-EP-2 B-R-EP-3 B-R-EP-4 
##        0        3        4       12        0     1390      445     1340 
## S-A-RE-1 S-A-RE-2 S-A-RE-3 S-A-RE-4 S-R-SE-1 S-R-SE-2 S-R-SE-3 S-R-SE-4 
##     1606     1081     1358     1742       31     1267     4191     6831 
## [1] "B-A-MU-1" "B-R-EP-1"
## character(0)
## S-R-CI-1 S-R-CI-2 S-R-CI-3 S-R-CI-4 B-A-SA-1 B-A-SA-2 B-A-SA-3 B-A-SA-4 
##       30     1451     4325      974        5       14       15       40 
## B-A-MU-2 B-A-MU-3 B-A-MU-4 B-R-EP-2 B-R-EP-3 B-R-EP-4 S-A-RE-1 S-A-RE-2 
##        3        4       12     1390      445     1340     1606     1081 
## S-A-RE-3 S-A-RE-4 S-R-SE-1 S-R-SE-2 S-R-SE-3 S-R-SE-4 
##     1358     1742       31     1267     4191     6831 
##    Hydrachnidia     Ampularidae         Atyidae        Baetidae  Belastomatidae 
##              45               4              59             112               2 
##        Caenidae Ceratopogonidae  Coenagrionidae    Conchostraca       Corixidae 
##             153              75              18             180             880 
##   Curculionidae     Chaoboridae  Chironomidae_L  Chironomidae_P    Dytiscidae_L 
##               6               2            6643             139               6 
##    Dytiscidae_A        Gerridae       Gomphidae Glossosomatidae Hidrophilidae_L 
##              34               2              40               6             233 
##  Hidrophilide_A       Hirudinea   Leptohyphidae    Leptoceridae    Libellulidae 
##              98               8              35               3             239 
##      Lymnaeidae      Naucoridae    Notonectidae     Oligochaeta       Ostracoda 
##               3              13              66            4018             130 
##     Planorbidae        Physidae      Sphaeridae       Thiaridae        Veliidae 
##             717              30               1           14152               3 
## character(0)
## character(0)
##    Hydrachnidia     Ampularidae         Atyidae        Baetidae  Belastomatidae 
##              45               4              59             112               2 
##        Caenidae Ceratopogonidae  Coenagrionidae    Conchostraca       Corixidae 
##             153              75              18             180             880 
##   Curculionidae     Chaoboridae  Chironomidae_L  Chironomidae_P    Dytiscidae_L 
##               6               2            6643             139               6 
##    Dytiscidae_A        Gerridae       Gomphidae Glossosomatidae Hidrophilidae_L 
##              34               2              40               6             233 
##  Hidrophilide_A       Hirudinea   Leptohyphidae    Leptoceridae    Libellulidae 
##              98               8              35               3             239 
##      Lymnaeidae      Naucoridae    Notonectidae     Oligochaeta       Ostracoda 
##               3              13              66            4018             130 
##     Planorbidae        Physidae      Sphaeridae       Thiaridae        Veliidae 
##             717              30               1           14152               3

14.5.1.1 Correlograma e redução de variáveis desnecessárias

dev.off()
rm(list=ls(all=TRUE))
cat("\014")
t_grps <- read.csv("t_grps.csv",
                   sep = ";", dec = ".",
                   row.names = 1,
                   header = TRUE,
                   na.strings = NA)
m_hab <- read.csv("m_hab.csv",
                  sep = ";", dec = ".",
                  row.names = 1,
                  header = TRUE,
                  na.strings = NA)

# Correlograma e redução de variáveis desnecessárias
library(psych)
colnames(m_hab)

#png("fig-hab_pairs.png")
pairs.panels(m_hab[,3:6], #colunas de interesse
             method = "pearson", # correlation method
             scale = FALSE, lm = FALSE,
             hist.col = "#00AFBB", pch = 19,
             density = TRUE,  # show density plots
             ellipses = TRUE, # show correlation ellipses
             alpha = 0.5)
#dev.off()

cor <- cor(m_hab)
cor

library(corrplot)
#png("fig-hab_corrplot.png")
corrplot(cor, method = "circle")
#dev.off()

## Impressão em papel
#win.print()
#corrplot(cor, method = "circle")
#dev.off()

# Deletando colineares
#sink(file = "colineares.txt", append = F, split = T)
colnames(m_hab)
del_cols <- c() #"g.river_length","g.altitude" #NÃO DELETEI VARIÁVEIS
m_hab_part <- m_hab[, !(colnames(m_hab) %in% del_cols)]

# Somando redundantes
m_hab_part$s.gravel <- m_hab_part$s.smlgrav + m_hab_part$s.lrggrav + m_hab_part$s.cobbles
m_hab_part <- m_hab_part[, !(colnames(m_hab_part)
                             %in% c("s.smlgrav", "s.lrggrav", "s.cobbles"))]
m_hab_part$s.rocks <- m_hab_part$s.rocks + m_hab_part$s.bedrock
m_hab_part <- m_hab_part[, !(colnames(m_hab_part)
                             %in% c("s.bedrock"))] #rocks novo substitui o antigo
m_hab_part$h.algae <- m_hab_part$h.filalgae + m_hab_part$h.attalgae
m_hab_part <- m_hab_part[, !(colnames(m_hab_part)
                             %in% c("h.filalgae", "h.attalgae"))]
m_hab_part$h.debris <- m_hab_part$h.smldeb + m_hab_part$h.lrgdeb
m_hab_part <- m_hab_part[, !(colnames(m_hab_part)
                             %in% c("h.smldeb", "h.lrgdeb"))]

colnames(m_hab_part)
m_hab_part
#sink()

write.table(m_hab_part, "m_hab_part.csv",
            sep = ";", dec = ".", #"\t",
            row.names = TRUE,
            quote = TRUE,
            append = FALSE)
m_hab_part <- read.csv("m_hab_part.csv",
                  sep = ";", dec = ".",
                  row.names = 1,
                  header = TRUE,
                  na.strings = NA)
## null device 
##           1 
##  [1] "g.river_length" "g.altitude"     "m.depth_mar"    "m.depth_max"   
##  [5] "m.slope"        "m.width"        "q.w_vel"        "q.temp"        
##  [9] "q.do"           "q.turb"         "s.mud"          "s.sand"        
## [13] "s.smlgrav"      "s.lrggrav"      "s.cobbles"      "s.rocks"       
## [17] "s.bedrock"      "h.macroph"      "h.grass"        "h.subveg"      
## [21] "h.overhveg"     "h.litter"       "h.filalgae"     "h.attalgae"    
## [25] "h.roots"        "h.smldeb"       "h.lrgdeb"      
##                g.river_length  g.altitude   m.depth_mar m.depth_max
## g.river_length    1.000000000  0.84502567 -0.2107788227  0.03193375
## g.altitude        0.845025674  1.00000000 -0.5456269822 -0.05715772
## m.depth_mar      -0.210778823 -0.54562698  1.0000000000  0.48741161
## m.depth_max       0.031933747 -0.05715772  0.4874116097  1.00000000
## m.slope          -0.349208370 -0.42489758  0.3283867843  0.05612196
## m.width           0.641988529  0.92424799 -0.6825592240 -0.12448305
## q.w_vel          -0.262001078 -0.38295700  0.5171356166  0.17255835
## q.temp           -0.525665151 -0.63928720  0.3911634740  0.21637312
## q.do             -0.051659274 -0.04102810 -0.0991121996 -0.07100992
## q.turb           -0.091714999  0.16898017  0.1101861220  0.43212925
## s.mud             0.572275653  0.53376284 -0.3050313798 -0.02986246
## s.sand           -0.419694387 -0.39540877  0.2504305845  0.07714330
## s.smlgrav        -0.471237455 -0.33801390 -0.1291605642 -0.18707938
## s.lrggrav        -0.544226442 -0.34645497 -0.2042006110 -0.21830987
## s.cobbles        -0.403532433 -0.42286274  0.3291265735 -0.17913390
## s.rocks          -0.117779725 -0.20066951  0.1319413256 -0.03858935
## s.bedrock        -0.192613303 -0.18845652  0.4127970495  0.56482143
## h.macroph        -0.215456970 -0.05481455 -0.1836470655  0.09117336
## h.grass           0.265200241  0.30832251 -0.0409219509  0.20663711
## h.subveg          0.279722831  0.39857061 -0.1392387004  0.27630152
## h.overhveg       -0.590722577 -0.38967693  0.0687330694  0.04945054
## h.litter         -0.242878589 -0.06083615  0.0507371439  0.39847691
## h.filalgae       -0.392485116 -0.17902428  0.0005987805  0.18844607
## h.attalgae       -0.001186444  0.10038855  0.0148526066 -0.23527738
## h.roots          -0.516543690 -0.36183451 -0.0963721795 -0.35893734
## h.smldeb         -0.124355809  0.06081352  0.0325551250  0.51395706
## h.lrgdeb         -0.117830284  0.03802733  0.0419116237  0.26995051
##                     m.slope       m.width     q.w_vel      q.temp          q.do
## g.river_length -0.349208370  0.6419885285 -0.26200108 -0.52566515 -0.0516592738
## g.altitude     -0.424897575  0.9242479855 -0.38295700 -0.63928720 -0.0410280998
## m.depth_mar     0.328386784 -0.6825592240  0.51713562  0.39116347 -0.0991121996
## m.depth_max     0.056121960 -0.1244830484  0.17255835  0.21637312 -0.0710099161
## m.slope         1.000000000 -0.5498770747 -0.10766070  0.19871727 -0.0419308349
## m.width        -0.549877075  1.0000000000 -0.31411254 -0.54204077  0.0008131425
## q.w_vel        -0.107660702 -0.3141125390  1.00000000  0.64759095  0.0629064699
## q.temp          0.198717266 -0.5420407696  0.64759095  1.00000000 -0.0722772054
## q.do           -0.041930835  0.0008131425  0.06290647 -0.07227721  1.0000000000
## q.turb          0.010259341  0.2383863495 -0.11099701 -0.24210974  0.1100032765
## s.mud          -0.528125673  0.5605422773 -0.09358538 -0.20493421  0.3008137410
## s.sand          0.526002627 -0.4515653205  0.04563133  0.16012915 -0.3159294821
## s.smlgrav       0.465564864 -0.2836142916 -0.02643266  0.23060553  0.2292491864
## s.lrggrav       0.185917468 -0.2204634853  0.03572644  0.27712369  0.1463795646
## s.cobbles      -0.005901226 -0.3824094214  0.19824905  0.05603254 -0.1890471593
## s.rocks        -0.082932175 -0.2519993118 -0.21518824 -0.22008642  0.0037875243
## s.bedrock       0.031654006 -0.0873140063  0.49907808  0.41780461 -0.0673382190
## h.macroph       0.050444099  0.1399878974 -0.14691717  0.18665422  0.2629680490
## h.grass        -0.403122259  0.2434340256  0.30883851  0.09532319 -0.2353366428
## h.subveg       -0.312667133  0.4184204319  0.10626426  0.11033997 -0.6046348220
## h.overhveg      0.226153390 -0.2288480414  0.37153753  0.39196980 -0.2374637651
## h.litter        0.046848349 -0.0329222552  0.22271660  0.34840703 -0.3956033776
## h.filalgae      0.127026094  0.0195632889 -0.01352383 -0.04474398  0.0751694004
## h.attalgae     -0.179393906  0.1059553668 -0.06926506 -0.35207241  0.2105548893
## h.roots         0.176998187 -0.2800912329  0.20229610  0.21512444 -0.2009824555
## h.smldeb       -0.116260323  0.0704089450 -0.05336000  0.04276197 -0.2490107269
## h.lrgdeb       -0.064284838  0.0620580191 -0.03594483 -0.17183100 -0.0868542185
##                     q.turb       s.mud       s.sand    s.smlgrav   s.lrggrav
## g.river_length -0.09171500  0.57227565 -0.419694387 -0.471237455 -0.54422644
## g.altitude      0.16898017  0.53376284 -0.395408774 -0.338013905 -0.34645497
## m.depth_mar     0.11018612 -0.30503138  0.250430585 -0.129160564 -0.20420061
## m.depth_max     0.43212925 -0.02986246  0.077143302 -0.187079380 -0.21830987
## m.slope         0.01025934 -0.52812567  0.526002627  0.465564864  0.18591747
## m.width         0.23838635  0.56054228 -0.451565321 -0.283614292 -0.22046349
## q.w_vel        -0.11099701 -0.09358538  0.045631331 -0.026432657  0.03572644
## q.temp         -0.24210974 -0.20493421  0.160129148  0.230605533  0.27712369
## q.do            0.11000328  0.30081374 -0.315929482  0.229249186  0.14637956
## q.turb          1.00000000 -0.07223620  0.083599381 -0.090296375 -0.07355212
## s.mud          -0.07223620  1.00000000 -0.957783005 -0.222195445 -0.22432912
## s.sand          0.08359938 -0.95778300  1.000000000  0.111089985  0.08256158
## s.smlgrav      -0.09029638 -0.22219545  0.111089985  1.000000000  0.91807630
## s.lrggrav      -0.07355212 -0.22432912  0.082561585  0.918076304  1.00000000
## s.cobbles       0.01134598 -0.44887064  0.222657542 -0.026424565  0.08842146
## s.rocks        -0.01558541 -0.06910979 -0.069654875 -0.309941518 -0.22077847
## s.bedrock       0.14116818  0.20182097 -0.224546542 -0.078999373 -0.13636908
## h.macroph       0.31158993 -0.04413777  0.126276177  0.006717696  0.04584885
## h.grass        -0.01509716 -0.16537718  0.222442150 -0.177811657 -0.04127532
## h.subveg        0.06506041  0.08033288 -0.004435688 -0.286378841 -0.20744404
## h.overhveg     -0.03986454 -0.35117567  0.318668751  0.140256840  0.16791271
## h.litter        0.06881438 -0.32562795  0.327771847  0.078055730  0.12016548
## h.filalgae      0.49077319 -0.22342824  0.158521843  0.039501763  0.06036785
## h.attalgae      0.20060451  0.08590942 -0.194244940 -0.263503810 -0.21204080
## h.roots        -0.26305709 -0.47340712  0.446429062  0.369358654  0.44783328
## h.smldeb        0.26451875 -0.08555157  0.144514486 -0.145032992 -0.07961314
## h.lrgdeb        0.53297687 -0.29308976  0.392806733 -0.175030819 -0.04309051
##                   s.cobbles      s.rocks   s.bedrock    h.macroph      h.grass
## g.river_length -0.403532433 -0.117779725 -0.19261330 -0.215456970  0.265200241
## g.altitude     -0.422862740 -0.200669512 -0.18845652 -0.054814547  0.308322511
## m.depth_mar     0.329126574  0.131941326  0.41279705 -0.183647065 -0.040921951
## m.depth_max    -0.179133903 -0.038589348  0.56482143  0.091173356  0.206637114
## m.slope        -0.005901226 -0.082932175  0.03165401  0.050444099 -0.403122259
## m.width        -0.382409421 -0.251999312 -0.08731401  0.139987897  0.243434026
## q.w_vel         0.198249045 -0.215188244  0.49907808 -0.146917169  0.308838515
## q.temp          0.056032544 -0.220086417  0.41780461  0.186654221  0.095323192
## q.do           -0.189047159  0.003787524 -0.06733822  0.262968049 -0.235336643
## q.turb          0.011345983 -0.015585412  0.14116818  0.311589934 -0.015097158
## s.mud          -0.448870644 -0.069109791  0.20182097 -0.044137771 -0.165377185
## s.sand          0.222657542 -0.069654875 -0.22454654  0.126276177  0.222442150
## s.smlgrav      -0.026424565 -0.309941518 -0.07899937  0.006717696 -0.177811657
## s.lrggrav       0.088421459 -0.220778474 -0.13636908  0.045848851 -0.041275322
## s.cobbles       1.000000000  0.469913591 -0.12127157 -0.252264472  0.023835319
## s.rocks         0.469913591  1.000000000 -0.13468574 -0.243815262 -0.247534694
## s.bedrock      -0.121271567 -0.134685736  1.00000000 -0.043359102 -0.060677870
## h.macroph      -0.252264472 -0.243815262 -0.04335910  1.000000000 -0.225166424
## h.grass         0.023835319 -0.247534694 -0.06067787 -0.225166424  1.000000000
## h.subveg       -0.160976449 -0.231842136  0.30426497 -0.149722575  0.649953984
## h.overhveg      0.064906116 -0.098085706  0.50479206 -0.057627452 -0.109199604
## h.litter       -0.013581580 -0.153337520  0.43853508 -0.125555623  0.566470585
## h.filalgae      0.188914571  0.134383965  0.33443584  0.298616900 -0.195372923
## h.attalgae      0.405309857  0.555931124 -0.01984227 -0.211808706 -0.188804421
## h.roots         0.084905231 -0.161381949 -0.09968140 -0.180448561 -0.004101108
## h.smldeb       -0.231674975 -0.054180714  0.41463548 -0.074651931  0.262978643
## h.lrgdeb       -0.158839149 -0.123236069 -0.08773874  0.270168938  0.099117063
##                    h.subveg  h.overhveg    h.litter    h.filalgae   h.attalgae
## g.river_length  0.279722831 -0.59072258 -0.24287859 -0.3924851158 -0.001186444
## g.altitude      0.398570607 -0.38967693 -0.06083615 -0.1790242790  0.100388552
## m.depth_mar    -0.139238700  0.06873307  0.05073714  0.0005987805  0.014852607
## m.depth_max     0.276301517  0.04945054  0.39847691  0.1884460741 -0.235277380
## m.slope        -0.312667133  0.22615339  0.04684835  0.1270260944 -0.179393906
## m.width         0.418420432 -0.22884804 -0.03292226  0.0195632889  0.105955367
## q.w_vel         0.106264262  0.37153753  0.22271660 -0.0135238333 -0.069265056
## q.temp          0.110339966  0.39196980  0.34840703 -0.0447439758 -0.352072407
## q.do           -0.604634822 -0.23746377 -0.39560338  0.0751694004  0.210554889
## q.turb          0.065060415 -0.03986454  0.06881438  0.4907731880  0.200604509
## s.mud           0.080332879 -0.35117567 -0.32562795 -0.2234282427  0.085909418
## s.sand         -0.004435688  0.31866875  0.32777185  0.1585218432 -0.194244940
## s.smlgrav      -0.286378841  0.14025684  0.07805573  0.0395017635 -0.263503810
## s.lrggrav      -0.207444039  0.16791271  0.12016548  0.0603678501 -0.212040802
## s.cobbles      -0.160976449  0.06490612 -0.01358158  0.1889145712  0.405309857
## s.rocks        -0.231842136 -0.09808571 -0.15333752  0.1343839650  0.555931124
## s.bedrock       0.304264973  0.50479206  0.43853508  0.3344358402 -0.019842268
## h.macroph      -0.149722575 -0.05762745 -0.12555562  0.2986168997 -0.211808706
## h.grass         0.649953984 -0.10919960  0.56647059 -0.1953729233 -0.188804421
## h.subveg        1.000000000  0.05371661  0.65370466 -0.0812920466 -0.168289149
## h.overhveg      0.053716610  1.00000000  0.44095646  0.3071336586 -0.067998523
## h.litter        0.653704655  0.44095646  1.00000000  0.1849508655 -0.129422759
## h.filalgae     -0.081292047  0.30713366  0.18495087  1.0000000000  0.156814606
## h.attalgae     -0.168289149 -0.06799852 -0.12942276  0.1568146063  1.000000000
## h.roots        -0.132672304  0.72073747  0.16368669 -0.1312445975 -0.158491818
## h.smldeb        0.407462990  0.42571768  0.72455356  0.1168191385  0.038651614
## h.lrgdeb       -0.092240200  0.17593257  0.02424289  0.2700099670 -0.075556606
##                     h.roots    h.smldeb    h.lrgdeb
## g.river_length -0.516543690 -0.12435581 -0.11783028
## g.altitude     -0.361834509  0.06081352  0.03802733
## m.depth_mar    -0.096372180  0.03255513  0.04191162
## m.depth_max    -0.358937337  0.51395706  0.26995051
## m.slope         0.176998187 -0.11626032 -0.06428484
## m.width        -0.280091233  0.07040894  0.06205802
## q.w_vel         0.202296097 -0.05336000 -0.03594483
## q.temp          0.215124441  0.04276197 -0.17183100
## q.do           -0.200982456 -0.24901073 -0.08685422
## q.turb         -0.263057089  0.26451875  0.53297687
## s.mud          -0.473407121 -0.08555157 -0.29308976
## s.sand          0.446429062  0.14451449  0.39280673
## s.smlgrav       0.369358654 -0.14503299 -0.17503082
## s.lrggrav       0.447833281 -0.07961314 -0.04309051
## s.cobbles       0.084905231 -0.23167498 -0.15883915
## s.rocks        -0.161381949 -0.05418071 -0.12323607
## s.bedrock      -0.099681402  0.41463548 -0.08773874
## h.macroph      -0.180448561 -0.07465193  0.27016894
## h.grass        -0.004101108  0.26297864  0.09911706
## h.subveg       -0.132672304  0.40746299 -0.09224020
## h.overhveg      0.720737471  0.42571768  0.17593257
## h.litter        0.163686687  0.72455356  0.02424289
## h.filalgae     -0.131244597  0.11681914  0.27000997
## h.attalgae     -0.158491818  0.03865161 -0.07555661
## h.roots         1.000000000  0.17466111  0.19797552
## h.smldeb        0.174661113  1.00000000  0.32818609
## h.lrgdeb        0.197975524  0.32818609  1.00000000
##  [1] "g.river_length" "g.altitude"     "m.depth_mar"    "m.depth_max"   
##  [5] "m.slope"        "m.width"        "q.w_vel"        "q.temp"        
##  [9] "q.do"           "q.turb"         "s.mud"          "s.sand"        
## [13] "s.smlgrav"      "s.lrggrav"      "s.cobbles"      "s.rocks"       
## [17] "s.bedrock"      "h.macroph"      "h.grass"        "h.subveg"      
## [21] "h.overhveg"     "h.litter"       "h.filalgae"     "h.attalgae"    
## [25] "h.roots"        "h.smldeb"       "h.lrgdeb"      
##  [1] "g.river_length" "g.altitude"     "m.depth_mar"    "m.depth_max"   
##  [5] "m.slope"        "m.width"        "q.w_vel"        "q.temp"        
##  [9] "q.do"           "q.turb"         "s.mud"          "s.sand"        
## [13] "s.rocks"        "h.macroph"      "h.grass"        "h.subveg"      
## [17] "h.overhveg"     "h.litter"       "h.roots"        "s.gravel"      
## [21] "h.algae"        "h.debris"      
##          g.river_length g.altitude m.depth_mar m.depth_max m.slope m.width
## S-R-CI-1        83.0500        169   22.666667          60      60   17.24
## S-R-CI-2        83.0500        169   32.666667          68      60   18.47
## S-R-CI-3        83.0500        169   32.666667          79      60   15.10
## S-R-CI-4        83.0500        169   45.333333          64      60   10.70
## B-A-SA-1       212.6667        713    8.166667          60      30  330.00
## B-A-SA-2       212.6667        713    7.000000          69      30  321.00
## B-A-SA-3       212.6667        713    6.833333          68      30  314.20
## B-A-SA-4       212.6667        713    4.666667          63      30  289.50
## B-A-MU-2       214.0200        725   22.000000         115      30  247.63
## B-A-MU-3       214.0200        725   25.666667         117      30  234.53
## B-A-MU-4       214.0200        725   41.333333         112      30  239.00
## B-R-EP-2       196.8333        402   49.333333         110      90   29.60
## B-R-EP-3       196.8333        402   50.000000          80      90   27.30
## B-R-EP-4       196.8333        402   52.833333          95      90   20.00
## S-A-RE-1       110.2000        270   54.666667         154      60  102.00
## S-A-RE-2       110.2000        270   37.666667         118      60  100.00
## S-A-RE-3       110.2000        270   22.333333         109      60   88.00
## S-A-RE-4       110.2000        270   30.333333          87      60   72.20
## S-R-SE-1       163.2000        226   81.333333         106      30   19.64
## S-R-SE-2       163.2000        226   67.000000         105      30   16.10
## S-R-SE-3       163.2000        226   32.333333         110      30    6.20
## S-R-SE-4       163.2000        226   32.333333          74      30    5.40
##            q.w_vel   q.temp     q.do   q.turb      s.mud    s.sand   s.rocks
## S-R-CI-1 0.1591512 35.20000 6.863333 26.00000 16.6666667 70.000000  0.000000
## S-R-CI-2 0.0000000 29.00000 3.015000 33.00000  0.6666667 87.666667  0.000000
## S-R-CI-3 0.0000000 29.66667 5.000000 50.33333 48.7500000 22.500000  0.000000
## S-R-CI-4 0.0000000 27.60000 4.900000 60.00000  5.0000000 60.000000 10.000000
## B-A-SA-1 0.0000000 29.23333 5.136667 25.66667 96.6666667  3.333333  0.000000
## B-A-SA-2 0.0000000 29.00000 1.850000 55.00000 98.0000000  2.000000  0.000000
## B-A-SA-3 0.0000000 24.00000 8.800000 51.66667 87.7777778  6.666667  0.000000
## B-A-SA-4 0.0000000 24.70000 8.750000 36.00000 95.1666667  3.416667  0.000000
## B-A-MU-2 0.0000000 29.00000 1.815000 43.00000 20.6000000 77.000000  0.000000
## B-A-MU-3 0.0000000 26.00000 5.700000 63.00000 65.0000000 35.000000  0.000000
## B-A-MU-4 0.0000000 25.95000 7.300000 89.00000 91.7777778  3.222222  5.000000
## B-R-EP-2 0.0000000 29.00000 5.635000 50.00000 39.0000000 56.000000  1.000000
## B-R-EP-3 0.0000000 29.00000 5.000000 32.33333 33.6666667 63.000000  0.000000
## B-R-EP-4 0.0000000 28.85000 5.100000 30.00000 48.8750000 47.875000  1.250000
## S-A-RE-1 0.1000000 34.00000 4.820000 61.00000 81.6666667  8.333333  8.333333
## S-A-RE-2 0.0000000 29.00000 5.000000 90.00000  5.0000000 95.000000  0.000000
## S-A-RE-3 0.0000000 34.00000 9.000000 51.66667 46.6666667 40.000000  0.000000
## S-A-RE-4 0.0000000 29.53333 9.433333 67.00000 59.1428571 38.714286  0.000000
## S-R-SE-1 0.1666667 32.90000 6.510000 46.00000 65.0000000 30.000000  3.333333
## S-R-SE-2 0.1250000 32.00000 5.375000 44.00000 40.0000000 40.000000  0.000000
## S-R-SE-3 0.0000000 28.26667 6.000000 17.33333 65.5555556 23.111111  8.333333
## S-R-SE-4 0.0000000 32.60000 6.000000 16.00000 95.0000000  1.833333  2.833333
##          h.macroph    h.grass  h.subveg h.overhveg  h.litter  h.roots
## S-R-CI-1  0.000000 23.3333333  3.000000  26.666667 2.3333333 3.333333
## S-R-CI-2  0.000000  0.0000000  0.000000  33.333333 1.0000000 5.000000
## S-R-CI-3  0.000000  0.0000000  0.000000   0.000000 1.5000000 1.000000
## S-R-CI-4  0.000000  0.0000000  0.000000   8.333333 1.0000000 0.000000
## B-A-SA-1 46.666667  0.0000000  3.333333   3.333333 0.0000000 0.000000
## B-A-SA-2  2.600000  7.5000000 26.000000   0.400000 0.0000000 0.000000
## B-A-SA-3  0.000000 13.3333333  0.000000   0.000000 0.0000000 0.000000
## B-A-SA-4  2.083333  0.0000000  0.000000   0.000000 0.0000000 0.000000
## B-A-MU-2  0.000000 54.0000000 36.600000   0.000000 5.0000000 0.000000
## B-A-MU-3  0.000000 28.3333333  8.333333   0.000000 1.0000000 0.000000
## B-A-MU-4  0.000000  5.5555556  0.000000   0.000000 0.4444444 0.000000
## B-R-EP-2  0.000000  2.0000000  0.000000   0.000000 0.4000000 0.000000
## B-R-EP-3  0.000000  0.0000000  0.000000   0.000000 0.3333333 0.000000
## B-R-EP-4  0.000000  0.0000000  0.000000   0.000000 0.5000000 0.000000
## S-A-RE-1  5.833333  0.0000000 16.666667  33.333333 3.6666667 0.000000
## S-A-RE-2 54.833333  0.3333333  0.000000   8.333333 1.0000000 0.000000
## S-A-RE-3 44.629630  8.1111111  0.000000   0.000000 0.6666667 0.000000
## S-A-RE-4 37.309524  0.0000000  0.000000   0.000000 0.5714286 0.000000
## S-R-SE-1  8.333333 20.0000000 10.000000   0.000000 0.6666667 0.000000
## S-R-SE-2  0.000000 20.0000000  0.000000   0.000000 0.0000000 0.000000
## S-R-SE-3  0.000000  0.1111111  0.000000   0.000000 0.0000000 0.000000
## S-R-SE-4  0.000000  4.1666667  0.000000   0.000000 0.8333333 0.000000
##            s.gravel    h.algae   h.debris
## S-R-CI-1 13.3333333  4.0000000  3.6666667
## S-R-CI-2 11.6666667  0.0000000 10.3333333
## S-R-CI-3 28.7500000  6.7500000  3.6666667
## S-R-CI-4 25.0000000 75.0000000  1.0000000
## B-A-SA-1  0.0000000  0.0000000  0.0000000
## B-A-SA-2  0.0000000  1.0000000  0.0000000
## B-A-SA-3  5.5555556 25.0000000  0.0000000
## B-A-SA-4  1.4166667 43.3333333  3.7500000
## B-A-MU-2  2.4000000  0.0000000 10.0000000
## B-A-MU-3  0.0000000  0.3333333 11.6666667
## B-A-MU-4  0.0000000 30.0000000 10.4444444
## B-R-EP-2  4.0000000  0.4000000  0.4000000
## B-R-EP-3  3.3333333  0.0000000  0.4444444
## B-R-EP-4  2.0000000  0.0000000  2.5000000
## S-A-RE-1  1.6666667 28.3333333 10.0000000
## S-A-RE-2  0.0000000 33.3333330 13.6666667
## S-A-RE-3 13.3333333  9.0000000  1.6666667
## S-A-RE-4  2.1428571  0.0000000  3.2857143
## S-R-SE-1  1.6666667 12.0000000  3.3333333
## S-R-SE-2 20.0000000  1.0000000  0.0000000
## S-R-SE-3  3.0000000  0.0000000  2.2222222
## S-R-SE-4  0.3333333  7.5000000  5.0000000

14.5.1.2 Calculando a riqueza de espécies

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

m_cont <- read.csv("m_cont.csv",
                   sep = ";", dec = ".",
                   row.names = 1,
                   header = TRUE,
                   na.strings = NA)
m_cont

##RAREFAÇÃO BASEADA EM CONTAGEM----
library(vegan)
data <- m_cont
S <- specnumber(data) #observed number of species
S
#raremax <- min(rowSums(data))
raremax <- round(mean(rowSums(data)))
#raremax <- 1000
raremax
Srare <- rarefy(data, raremax)
Srare
plot(S, Srare, xlab = "Observed No. of Species", ylab = "Rarefied No. of Species")
abline(0, 1)
#png("fig-rarecurve.png")
rarecurve(data, step = 20, sample = raremax, col = "blue", cex = 0.6,
          xlab = "Sample size", ylab = "Taxa", xlim = c()) #c(0,5000)
#dev.off()

##ANOVAS----
anovas <- cbind(Srare = Srare, m_cont)
anovas <- anovas[,1, drop = FALSE]
anovas
m_dens <- read.csv("m_dens.csv",
                   sep = ";", dec = ".",
                   row.names = 1,
                   header = TRUE,
                   na.strings = NA)
m_dens
anovas$dens <- rowMeans(m_dens, na.rm = TRUE)
anovas
S <- specnumber(m_dens)
anovas$S <- S
anovas

###CRIANDO GRUPOS----
library(tidyverse)
anovas <- cbind(Grupos = rownames(anovas), anovas)
anovas
grps <- substr(anovas[, 1], 5,6)
grps
anovas <- mutate(anovas, Grupos = c(grps))
anovas

###SALVANDO MATRIZ FINAL ANOVAS----
write.table(anovas, "t_anovas.csv",
            sep = ";", dec = ".", #"\t",
            row.names = TRUE,
            quote = TRUE,
            append = FALSE)
anovas <- read.csv("t_anovas.csv",
                   sep = ";", dec = ".",
                   row.names = 1,
                   header = TRUE,
                   na.strings = NA)
anovas
## null device 
##           1 
##          Hydrachnidia Ampularidae Atyidae Baetidae Belastomatidae Caenidae
## S-R-CI-1            0           0       0        0              0        0
## S-R-CI-2            0           0       0        1              0        0
## S-R-CI-3           45           1       0       85              0      125
## S-R-CI-4            0           2       0        4              0        0
## B-A-SA-1            0           0       0        0              0        0
## B-A-SA-2            0           0       0        0              0        0
## B-A-SA-3            0           1       0        1              0        0
## B-A-SA-4            0           0       0        0              0        0
## B-A-MU-2            0           0       0        3              0        0
## B-A-MU-3            0           0       0        0              0        0
## B-A-MU-4            0           0       0        0              0        0
## B-R-EP-2            0           0       0        0              0        0
## B-R-EP-3            0           0       3        0              0        0
## B-R-EP-4            0           0      10        0              0        0
## S-A-RE-1            0           0       0       16              0        0
## S-A-RE-2            0           0       0        0              0        0
## S-A-RE-3            0           0       0        2              2        0
## S-A-RE-4            0           0       0        0              0       27
## S-R-SE-1            0           0       0        0              0        1
## S-R-SE-2            0           0       0        0              0        0
## S-R-SE-3            0           0      27        0              0        0
## S-R-SE-4            0           0      19        0              0        0
##          Ceratopogonidae Coenagrionidae Conchostraca Corixidae Curculionidae
## S-R-CI-1               3              0            0         0             0
## S-R-CI-2               5              0            0        37             0
## S-R-CI-3               1              0            0       709             1
## S-R-CI-4              40              0            0       113             0
## B-A-SA-1               0              0            0         0             0
## B-A-SA-2               0              0            0         0             0
## B-A-SA-3               0              0            0         0             0
## B-A-SA-4               0              0            0         0             0
## B-A-MU-2               0              0            0         0             0
## B-A-MU-3               0              0            0         0             0
## B-A-MU-4               0              0            0         0             0
## B-R-EP-2               1              0            0         0             0
## B-R-EP-3               0              0            0         0             0
## B-R-EP-4               0              0            0         0             0
## S-A-RE-1               3              1          149         0             0
## S-A-RE-2               1              0           24         0             0
## S-A-RE-3              13              2            7        21             5
## S-A-RE-4               1             13            0         0             0
## S-R-SE-1               0              2            0         0             0
## S-R-SE-2               0              0            0         0             0
## S-R-SE-3               0              0            0         0             0
## S-R-SE-4               7              0            0         0             0
##          Chaoboridae Chironomidae_L Chironomidae_P Dytiscidae_L Dytiscidae_A
## S-R-CI-1           0             12              0            0            0
## S-R-CI-2           2           1291             84            0            3
## S-R-CI-3           0           2879              0            3            0
## S-R-CI-4           0            587             26            1            5
## B-A-SA-1           0              3              2            0            0
## B-A-SA-2           0              9              0            0            0
## B-A-SA-3           0              7              0            0            0
## B-A-SA-4           0             10              0            0            0
## B-A-MU-2           0              0              0            0            0
## B-A-MU-3           0              3              0            0            1
## B-A-MU-4           0              3              0            0            0
## B-R-EP-2           0              5              0            0            0
## B-R-EP-3           0              6              0            0            0
## B-R-EP-4           0              0              0            0            0
## S-A-RE-1           0            911             24            1            0
## S-A-RE-2           0             16              0            0            0
## S-A-RE-3           0             49              0            1            7
## S-A-RE-4           0              3              0            0            0
## S-R-SE-1           0             11              0            0            0
## S-R-SE-2           0              1              0            0            0
## S-R-SE-3           0              4              0            0            0
## S-R-SE-4           0            833              3            0           18
##          Gerridae Gomphidae Glossosomatidae Hidrophilidae_L Hidrophilide_A
## S-R-CI-1        0         0               0               0              7
## S-R-CI-2        2         6               0               0              0
## S-R-CI-3        0         3               3             181              2
## S-R-CI-4        0        16               3              40              1
## B-A-SA-1        0         0               0               0              0
## B-A-SA-2        0         0               0               0              0
## B-A-SA-3        0         1               0               0              0
## B-A-SA-4        0         0               0               0              0
## B-A-MU-2        0         0               0               0              0
## B-A-MU-3        0         0               0               0              0
## B-A-MU-4        0         0               0               0              0
## B-R-EP-2        0         0               0               0              0
## B-R-EP-3        0         1               0               0              0
## B-R-EP-4        0         0               0               0              0
## S-A-RE-1        0         0               0               1              7
## S-A-RE-2        0         0               0               0              0
## S-A-RE-3        0         0               0               6             51
## S-A-RE-4        0         2               0               4             15
## S-R-SE-1        0         1               0               1              0
## S-R-SE-2        0         2               0               0              0
## S-R-SE-3        0         0               0               0              0
## S-R-SE-4        0         8               0               0             15
##          Hirudinea Leptohyphidae Leptoceridae Libellulidae Lymnaeidae
## S-R-CI-1         0             0            0            0          0
## S-R-CI-2         0             0            0            0          0
## S-R-CI-3         0            35            3           11          0
## S-R-CI-4         0             0            0           80          0
## B-A-SA-1         0             0            0            0          0
## B-A-SA-2         0             0            0            0          0
## B-A-SA-3         0             0            0            0          0
## B-A-SA-4         0             0            0            0          0
## B-A-MU-2         0             0            0            0          0
## B-A-MU-3         0             0            0            0          0
## B-A-MU-4         0             0            0            0          0
## B-R-EP-2         0             0            0            0          0
## B-R-EP-3         0             0            0            0          0
## B-R-EP-4         0             0            0            0          0
## S-A-RE-1         0             0            0           26          3
## S-A-RE-2         0             0            0           16          0
## S-A-RE-3         3             0            0           52          0
## S-A-RE-4         5             0            0           54          0
## S-R-SE-1         0             0            0            0          0
## S-R-SE-2         0             0            0            0          0
## S-R-SE-3         0             0            0            0          0
## S-R-SE-4         0             0            0            0          0
##          Naucoridae Notonectidae Oligochaeta Ostracoda Planorbidae Physidae
## S-R-CI-1          0            0           3         0           5        0
## S-R-CI-2          0           14           1         0           2        0
## S-R-CI-3          0           12           2         0         222        0
## S-R-CI-4          0           17           0         0          38        0
## B-A-SA-1          0            0           0         0           0        0
## B-A-SA-2          0            0           2         0           0        0
## B-A-SA-3          0            0           1         0           4        0
## B-A-SA-4          0            0           0         0           2        0
## B-A-MU-2          0            0           0         0           0        0
## B-A-MU-3          0            0           0         0           0        0
## B-A-MU-4          0            9           0         0           0        0
## B-R-EP-2          0            0         125         0           0        0
## B-R-EP-3          0            0          13         0           0        0
## B-R-EP-4          0            0           0         0           1        0
## S-A-RE-1          1            0         443         0          20        0
## S-A-RE-2          0            0        1016         3           0        5
## S-A-RE-3         11           11         950       127          18       20
## S-A-RE-4          0            0        1462         0         151        5
## S-R-SE-1          0            0           0         0           4        0
## S-R-SE-2          0            0           0         0           0        0
## S-R-SE-3          0            0           0         0          15        0
## S-R-SE-4          1            3           0         0         235        0
##          Sphaeridae Thiaridae Veliidae
## S-R-CI-1          0         0        0
## S-R-CI-2          0         0        3
## S-R-CI-3          1         1        0
## S-R-CI-4          0         1        0
## B-A-SA-1          0         0        0
## B-A-SA-2          0         3        0
## B-A-SA-3          0         0        0
## B-A-SA-4          0        28        0
## B-A-MU-2          0         0        0
## B-A-MU-3          0         0        0
## B-A-MU-4          0         0        0
## B-R-EP-2          0      1259        0
## B-R-EP-3          0       422        0
## B-R-EP-4          0      1329        0
## S-A-RE-1          0         0        0
## S-A-RE-2          0         0        0
## S-A-RE-3          0         0        0
## S-A-RE-4          0         0        0
## S-R-SE-1          0        11        0
## S-R-SE-2          0      1264        0
## S-R-SE-3          0      4145        0
## S-R-SE-4          0      5689        0
## S-R-CI-1 S-R-CI-2 S-R-CI-3 S-R-CI-4 B-A-SA-1 B-A-SA-2 B-A-SA-3 B-A-SA-4 
##        5       13       21       16        2        3        6        3 
## B-A-MU-2 B-A-MU-3 B-A-MU-4 B-R-EP-2 B-R-EP-3 B-R-EP-4 S-A-RE-1 S-A-RE-2 
##        1        2        2        4        5        3       14        7 
## S-A-RE-3 S-A-RE-4 S-R-SE-1 S-R-SE-2 S-R-SE-3 S-R-SE-4 
##       20       12        7        3        4       11 
## [1] 1280
##  S-R-CI-1  S-R-CI-2  S-R-CI-3  S-R-CI-4  B-A-SA-1  B-A-SA-2  B-A-SA-3  B-A-SA-4 
##  5.000000 12.719603 15.057283 16.000000  2.000000  3.000000  6.000000  3.000000 
##  B-A-MU-2  B-A-MU-3  B-A-MU-4  B-R-EP-2  B-R-EP-3  B-R-EP-4  S-A-RE-1  S-A-RE-2 
##  1.000000  2.000000  2.000000  3.920860  5.000000  2.955224 13.171426  7.000000 
##  S-A-RE-3  S-A-RE-4  S-R-SE-1  S-R-SE-2  S-R-SE-3  S-R-SE-4 
## 19.932602 11.638514  7.000000  3.000000  3.763162  8.603085 
## attr(,"Subsample")
## [1] 1280
##              Srare
## S-R-CI-1  5.000000
## S-R-CI-2 12.719603
## S-R-CI-3 15.057283
## S-R-CI-4 16.000000
## B-A-SA-1  2.000000
## B-A-SA-2  3.000000
## B-A-SA-3  6.000000
## B-A-SA-4  3.000000
## B-A-MU-2  1.000000
## B-A-MU-3  2.000000
## B-A-MU-4  2.000000
## B-R-EP-2  3.920860
## B-R-EP-3  5.000000
## B-R-EP-4  2.955224
## S-A-RE-1 13.171426
## S-A-RE-2  7.000000
## S-A-RE-3 19.932602
## S-A-RE-4 11.638514
## S-R-SE-1  7.000000
## S-R-SE-2  3.000000
## S-R-SE-3  3.763162
## S-R-SE-4  8.603085
##          Hydrachnidia Ampularidae  Atyidae   Baetidae Belastomatidae   Caenidae
## S-R-CI-1         0.00    0.000000  0.00000   0.000000       0.000000   0.000000
## S-R-CI-2         0.00    0.000000  0.00000   2.083333       0.000000   0.000000
## S-R-CI-3        93.75    2.083333  0.00000 177.083333       0.000000 260.416667
## S-R-CI-4         0.00    4.166667  0.00000   8.333333       0.000000   0.000000
## B-A-SA-1         0.00    0.000000  0.00000   0.000000       0.000000   0.000000
## B-A-SA-2         0.00    0.000000  0.00000   0.000000       0.000000   0.000000
## B-A-SA-3         0.00    2.083333  0.00000   2.083333       0.000000   0.000000
## B-A-SA-4         0.00    0.000000  0.00000   0.000000       0.000000   0.000000
## B-A-MU-2         0.00    0.000000  0.00000   6.250000       0.000000   0.000000
## B-A-MU-3         0.00    0.000000  0.00000   0.000000       0.000000   0.000000
## B-A-MU-4         0.00    0.000000  0.00000   0.000000       0.000000   0.000000
## B-R-EP-2         0.00    0.000000  0.00000   0.000000       0.000000   0.000000
## B-R-EP-3         0.00    0.000000  6.25000   0.000000       0.000000   0.000000
## B-R-EP-4         0.00    0.000000 20.83333   0.000000       0.000000   0.000000
## S-A-RE-1         0.00    0.000000  0.00000  33.333333       0.000000   0.000000
## S-A-RE-2         0.00    0.000000  0.00000   0.000000       0.000000   0.000000
## S-A-RE-3         0.00    0.000000  0.00000   4.166667       4.166667   0.000000
## S-A-RE-4         0.00    0.000000  0.00000   0.000000       0.000000  56.250000
## S-R-SE-1         0.00    0.000000  0.00000   0.000000       0.000000   2.083333
## S-R-SE-2         0.00    0.000000  0.00000   0.000000       0.000000   0.000000
## S-R-SE-3         0.00    0.000000 56.25000   0.000000       0.000000   0.000000
## S-R-SE-4         0.00    0.000000 39.58333   0.000000       0.000000   0.000000
##          Ceratopogonidae Coenagrionidae Conchostraca  Corixidae Curculionidae
## S-R-CI-1        6.250000       0.000000      0.00000    0.00000      0.000000
## S-R-CI-2       10.416667       0.000000      0.00000   77.08333      0.000000
## S-R-CI-3        2.083333       0.000000      0.00000 1477.08333      2.083333
## S-R-CI-4       83.333333       0.000000      0.00000  235.41667      0.000000
## B-A-SA-1        0.000000       0.000000      0.00000    0.00000      0.000000
## B-A-SA-2        0.000000       0.000000      0.00000    0.00000      0.000000
## B-A-SA-3        0.000000       0.000000      0.00000    0.00000      0.000000
## B-A-SA-4        0.000000       0.000000      0.00000    0.00000      0.000000
## B-A-MU-2        0.000000       0.000000      0.00000    0.00000      0.000000
## B-A-MU-3        0.000000       0.000000      0.00000    0.00000      0.000000
## B-A-MU-4        0.000000       0.000000      0.00000    0.00000      0.000000
## B-R-EP-2        2.083333       0.000000      0.00000    0.00000      0.000000
## B-R-EP-3        0.000000       0.000000      0.00000    0.00000      0.000000
## B-R-EP-4        0.000000       0.000000      0.00000    0.00000      0.000000
## S-A-RE-1        6.250000       2.083333    310.41667    0.00000      0.000000
## S-A-RE-2        2.083333       0.000000     50.00000    0.00000      0.000000
## S-A-RE-3       27.083333       4.166667     14.58333   43.75000     10.416667
## S-A-RE-4        2.083333      27.083333      0.00000    0.00000      0.000000
## S-R-SE-1        0.000000       4.166667      0.00000    0.00000      0.000000
## S-R-SE-2        0.000000       0.000000      0.00000    0.00000      0.000000
## S-R-SE-3        0.000000       0.000000      0.00000    0.00000      0.000000
## S-R-SE-4       14.583333       0.000000      0.00000    0.00000      0.000000
##          Chaoboridae Chironomidae_L Chironomidae_P Dytiscidae_L Dytiscidae_A
## S-R-CI-1    0.000000      25.000000       0.000000     0.000000     0.000000
## S-R-CI-2    4.166667    2689.583333     175.000000     0.000000     6.250000
## S-R-CI-3    0.000000    5997.916667       0.000000     6.250000     0.000000
## S-R-CI-4    0.000000    1222.916667      54.166667     2.083333    10.416667
## B-A-SA-1    0.000000       6.250000       4.166667     0.000000     0.000000
## B-A-SA-2    0.000000      18.750000       0.000000     0.000000     0.000000
## B-A-SA-3    0.000000      14.583333       0.000000     0.000000     0.000000
## B-A-SA-4    0.000000      20.833333       0.000000     0.000000     0.000000
## B-A-MU-2    0.000000       0.000000       0.000000     0.000000     0.000000
## B-A-MU-3    0.000000       6.250000       0.000000     0.000000     2.083333
## B-A-MU-4    0.000000       6.250000       0.000000     0.000000     0.000000
## B-R-EP-2    0.000000      10.416667       0.000000     0.000000     0.000000
## B-R-EP-3    0.000000      12.500000       0.000000     0.000000     0.000000
## B-R-EP-4    0.000000       0.000000       0.000000     0.000000     0.000000
## S-A-RE-1    0.000000    1897.916667      50.000000     2.083333     0.000000
## S-A-RE-2    0.000000      33.333333       0.000000     0.000000     0.000000
## S-A-RE-3    0.000000     102.083333       0.000000     2.083333    14.583333
## S-A-RE-4    0.000000       6.250000       0.000000     0.000000     0.000000
## S-R-SE-1    0.000000      22.916667       0.000000     0.000000     0.000000
## S-R-SE-2    0.000000       2.083333       0.000000     0.000000     0.000000
## S-R-SE-3    0.000000       8.333333       0.000000     0.000000     0.000000
## S-R-SE-4    0.000000    1735.416667       6.250000     0.000000    37.500000
##          Gerridae Gomphidae Glossosomatidae Hidrophilidae_L Hidrophilide_A
## S-R-CI-1 0.000000  0.000000            0.00        0.000000      14.583333
## S-R-CI-2 4.166667 12.500000            0.00        0.000000       0.000000
## S-R-CI-3 0.000000  6.250000            6.25      377.083333       4.166667
## S-R-CI-4 0.000000 33.333333            6.25       83.333333       2.083333
## B-A-SA-1 0.000000  0.000000            0.00        0.000000       0.000000
## B-A-SA-2 0.000000  0.000000            0.00        0.000000       0.000000
## B-A-SA-3 0.000000  2.083333            0.00        0.000000       0.000000
## B-A-SA-4 0.000000  0.000000            0.00        0.000000       0.000000
## B-A-MU-2 0.000000  0.000000            0.00        0.000000       0.000000
## B-A-MU-3 0.000000  0.000000            0.00        0.000000       0.000000
## B-A-MU-4 0.000000  0.000000            0.00        0.000000       0.000000
## B-R-EP-2 0.000000  0.000000            0.00        0.000000       0.000000
## B-R-EP-3 0.000000  2.083333            0.00        0.000000       0.000000
## B-R-EP-4 0.000000  0.000000            0.00        0.000000       0.000000
## S-A-RE-1 0.000000  0.000000            0.00        2.083333      14.583333
## S-A-RE-2 0.000000  0.000000            0.00        0.000000       0.000000
## S-A-RE-3 0.000000  0.000000            0.00       12.500000     106.250000
## S-A-RE-4 0.000000  4.166667            0.00        8.333333      31.250000
## S-R-SE-1 0.000000  2.083333            0.00        2.083333       0.000000
## S-R-SE-2 0.000000  4.166667            0.00        0.000000       0.000000
## S-R-SE-3 0.000000  0.000000            0.00        0.000000       0.000000
## S-R-SE-4 0.000000 16.666667            0.00        0.000000      31.250000
##          Hirudinea Leptohyphidae Leptoceridae Libellulidae Lymnaeidae
## S-R-CI-1   0.00000       0.00000         0.00      0.00000       0.00
## S-R-CI-2   0.00000       0.00000         0.00      0.00000       0.00
## S-R-CI-3   0.00000      72.91667         6.25     22.91667       0.00
## S-R-CI-4   0.00000       0.00000         0.00    166.66667       0.00
## B-A-SA-1   0.00000       0.00000         0.00      0.00000       0.00
## B-A-SA-2   0.00000       0.00000         0.00      0.00000       0.00
## B-A-SA-3   0.00000       0.00000         0.00      0.00000       0.00
## B-A-SA-4   0.00000       0.00000         0.00      0.00000       0.00
## B-A-MU-2   0.00000       0.00000         0.00      0.00000       0.00
## B-A-MU-3   0.00000       0.00000         0.00      0.00000       0.00
## B-A-MU-4   0.00000       0.00000         0.00      0.00000       0.00
## B-R-EP-2   0.00000       0.00000         0.00      0.00000       0.00
## B-R-EP-3   0.00000       0.00000         0.00      0.00000       0.00
## B-R-EP-4   0.00000       0.00000         0.00      0.00000       0.00
## S-A-RE-1   0.00000       0.00000         0.00     54.16667       6.25
## S-A-RE-2   0.00000       0.00000         0.00     33.33333       0.00
## S-A-RE-3   6.25000       0.00000         0.00    108.33333       0.00
## S-A-RE-4  10.41667       0.00000         0.00    112.50000       0.00
## S-R-SE-1   0.00000       0.00000         0.00      0.00000       0.00
## S-R-SE-2   0.00000       0.00000         0.00      0.00000       0.00
## S-R-SE-3   0.00000       0.00000         0.00      0.00000       0.00
## S-R-SE-4   0.00000       0.00000         0.00      0.00000       0.00
##          Naucoridae Notonectidae Oligochaeta Ostracoda Planorbidae Physidae
## S-R-CI-1   0.000000      0.00000    6.250000    0.0000   10.416667  0.00000
## S-R-CI-2   0.000000     29.16667    2.083333    0.0000    4.166667  0.00000
## S-R-CI-3   0.000000     25.00000    4.166667    0.0000  462.500000  0.00000
## S-R-CI-4   0.000000     35.41667    0.000000    0.0000   79.166667  0.00000
## B-A-SA-1   0.000000      0.00000    0.000000    0.0000    0.000000  0.00000
## B-A-SA-2   0.000000      0.00000    4.166667    0.0000    0.000000  0.00000
## B-A-SA-3   0.000000      0.00000    2.083333    0.0000    8.333333  0.00000
## B-A-SA-4   0.000000      0.00000    0.000000    0.0000    4.166667  0.00000
## B-A-MU-2   0.000000      0.00000    0.000000    0.0000    0.000000  0.00000
## B-A-MU-3   0.000000      0.00000    0.000000    0.0000    0.000000  0.00000
## B-A-MU-4   0.000000     18.75000    0.000000    0.0000    0.000000  0.00000
## B-R-EP-2   0.000000      0.00000  260.416667    0.0000    0.000000  0.00000
## B-R-EP-3   0.000000      0.00000   27.083333    0.0000    0.000000  0.00000
## B-R-EP-4   0.000000      0.00000    0.000000    0.0000    2.083333  0.00000
## S-A-RE-1   2.083333      0.00000  922.916667    0.0000   41.666667  0.00000
## S-A-RE-2   0.000000      0.00000 2116.666667    6.2500    0.000000 10.41667
## S-A-RE-3  22.916667     22.91667 1979.166667  264.5833   37.500000 41.66667
## S-A-RE-4   0.000000      0.00000 3045.833333    0.0000  314.583333 10.41667
## S-R-SE-1   0.000000      0.00000    0.000000    0.0000    8.333333  0.00000
## S-R-SE-2   0.000000      0.00000    0.000000    0.0000    0.000000  0.00000
## S-R-SE-3   0.000000      0.00000    0.000000    0.0000   31.250000  0.00000
## S-R-SE-4   2.083333      6.25000    0.000000    0.0000  489.583333  0.00000
##          Sphaeridae    Thiaridae Veliidae
## S-R-CI-1   0.000000     0.000000     0.00
## S-R-CI-2   0.000000     0.000000     6.25
## S-R-CI-3   2.083333     2.083333     0.00
## S-R-CI-4   0.000000     2.083333     0.00
## B-A-SA-1   0.000000     0.000000     0.00
## B-A-SA-2   0.000000     6.250000     0.00
## B-A-SA-3   0.000000     0.000000     0.00
## B-A-SA-4   0.000000    58.333333     0.00
## B-A-MU-2   0.000000     0.000000     0.00
## B-A-MU-3   0.000000     0.000000     0.00
## B-A-MU-4   0.000000     0.000000     0.00
## B-R-EP-2   0.000000  2622.916667     0.00
## B-R-EP-3   0.000000   879.166667     0.00
## B-R-EP-4   0.000000  2768.750000     0.00
## S-A-RE-1   0.000000     0.000000     0.00
## S-A-RE-2   0.000000     0.000000     0.00
## S-A-RE-3   0.000000     0.000000     0.00
## S-A-RE-4   0.000000     0.000000     0.00
## S-R-SE-1   0.000000    22.916667     0.00
## S-R-SE-2   0.000000  2633.333333     0.00
## S-R-SE-3   0.000000  8635.416667     0.00
## S-R-SE-4   0.000000 11852.083333     0.00
##              Srare        dens
## S-R-CI-1  5.000000   1.7857143
## S-R-CI-2 12.719603  86.3690476
## S-R-CI-3 15.057283 257.4404762
## S-R-CI-4 16.000000  57.9761905
## B-A-SA-1  2.000000   0.2976190
## B-A-SA-2  3.000000   0.8333333
## B-A-SA-3  6.000000   0.8928571
## B-A-SA-4  3.000000   2.3809524
## B-A-MU-2  1.000000   0.1785714
## B-A-MU-3  2.000000   0.2380952
## B-A-MU-4  2.000000   0.7142857
## B-R-EP-2  3.920860  82.7380952
## B-R-EP-3  5.000000  26.4880952
## B-R-EP-4  2.955224  79.7619048
## S-A-RE-1 13.171426  95.5952381
## S-A-RE-2  7.000000  64.3452381
## S-A-RE-3 19.932602  80.8333333
## S-A-RE-4 11.638514 103.6904762
## S-R-SE-1  7.000000   1.8452381
## S-R-SE-2  3.000000  75.4166667
## S-R-SE-3  3.763162 249.4642857
## S-R-SE-4  8.603085 406.6071429
##              Srare        dens  S
## S-R-CI-1  5.000000   1.7857143  5
## S-R-CI-2 12.719603  86.3690476 13
## S-R-CI-3 15.057283 257.4404762 21
## S-R-CI-4 16.000000  57.9761905 16
## B-A-SA-1  2.000000   0.2976190  2
## B-A-SA-2  3.000000   0.8333333  3
## B-A-SA-3  6.000000   0.8928571  6
## B-A-SA-4  3.000000   2.3809524  3
## B-A-MU-2  1.000000   0.1785714  1
## B-A-MU-3  2.000000   0.2380952  2
## B-A-MU-4  2.000000   0.7142857  2
## B-R-EP-2  3.920860  82.7380952  4
## B-R-EP-3  5.000000  26.4880952  5
## B-R-EP-4  2.955224  79.7619048  3
## S-A-RE-1 13.171426  95.5952381 14
## S-A-RE-2  7.000000  64.3452381  7
## S-A-RE-3 19.932602  80.8333333 20
## S-A-RE-4 11.638514 103.6904762 12
## S-R-SE-1  7.000000   1.8452381  7
## S-R-SE-2  3.000000  75.4166667  3
## S-R-SE-3  3.763162 249.4642857  4
## S-R-SE-4  8.603085 406.6071429 11
##            Grupos     Srare        dens  S
## S-R-CI-1 S-R-CI-1  5.000000   1.7857143  5
## S-R-CI-2 S-R-CI-2 12.719603  86.3690476 13
## S-R-CI-3 S-R-CI-3 15.057283 257.4404762 21
## S-R-CI-4 S-R-CI-4 16.000000  57.9761905 16
## B-A-SA-1 B-A-SA-1  2.000000   0.2976190  2
## B-A-SA-2 B-A-SA-2  3.000000   0.8333333  3
## B-A-SA-3 B-A-SA-3  6.000000   0.8928571  6
## B-A-SA-4 B-A-SA-4  3.000000   2.3809524  3
## B-A-MU-2 B-A-MU-2  1.000000   0.1785714  1
## B-A-MU-3 B-A-MU-3  2.000000   0.2380952  2
## B-A-MU-4 B-A-MU-4  2.000000   0.7142857  2
## B-R-EP-2 B-R-EP-2  3.920860  82.7380952  4
## B-R-EP-3 B-R-EP-3  5.000000  26.4880952  5
## B-R-EP-4 B-R-EP-4  2.955224  79.7619048  3
## S-A-RE-1 S-A-RE-1 13.171426  95.5952381 14
## S-A-RE-2 S-A-RE-2  7.000000  64.3452381  7
## S-A-RE-3 S-A-RE-3 19.932602  80.8333333 20
## S-A-RE-4 S-A-RE-4 11.638514 103.6904762 12
## S-R-SE-1 S-R-SE-1  7.000000   1.8452381  7
## S-R-SE-2 S-R-SE-2  3.000000  75.4166667  3
## S-R-SE-3 S-R-SE-3  3.763162 249.4642857  4
## S-R-SE-4 S-R-SE-4  8.603085 406.6071429 11
##  [1] "CI" "CI" "CI" "CI" "SA" "SA" "SA" "SA" "MU" "MU" "MU" "EP" "EP" "EP" "RE"
## [16] "RE" "RE" "RE" "SE" "SE" "SE" "SE"
##          Grupos     Srare        dens  S
## S-R-CI-1     CI  5.000000   1.7857143  5
## S-R-CI-2     CI 12.719603  86.3690476 13
## S-R-CI-3     CI 15.057283 257.4404762 21
## S-R-CI-4     CI 16.000000  57.9761905 16
## B-A-SA-1     SA  2.000000   0.2976190  2
## B-A-SA-2     SA  3.000000   0.8333333  3
## B-A-SA-3     SA  6.000000   0.8928571  6
## B-A-SA-4     SA  3.000000   2.3809524  3
## B-A-MU-2     MU  1.000000   0.1785714  1
## B-A-MU-3     MU  2.000000   0.2380952  2
## B-A-MU-4     MU  2.000000   0.7142857  2
## B-R-EP-2     EP  3.920860  82.7380952  4
## B-R-EP-3     EP  5.000000  26.4880952  5
## B-R-EP-4     EP  2.955224  79.7619048  3
## S-A-RE-1     RE 13.171426  95.5952381 14
## S-A-RE-2     RE  7.000000  64.3452381  7
## S-A-RE-3     RE 19.932602  80.8333333 20
## S-A-RE-4     RE 11.638514 103.6904762 12
## S-R-SE-1     SE  7.000000   1.8452381  7
## S-R-SE-2     SE  3.000000  75.4166667  3
## S-R-SE-3     SE  3.763162 249.4642857  4
## S-R-SE-4     SE  8.603085 406.6071429 11
##          Grupos     Srare        dens  S
## S-R-CI-1     CI  5.000000   1.7857143  5
## S-R-CI-2     CI 12.719603  86.3690476 13
## S-R-CI-3     CI 15.057283 257.4404762 21
## S-R-CI-4     CI 16.000000  57.9761905 16
## B-A-SA-1     SA  2.000000   0.2976190  2
## B-A-SA-2     SA  3.000000   0.8333333  3
## B-A-SA-3     SA  6.000000   0.8928571  6
## B-A-SA-4     SA  3.000000   2.3809524  3
## B-A-MU-2     MU  1.000000   0.1785714  1
## B-A-MU-3     MU  2.000000   0.2380952  2
## B-A-MU-4     MU  2.000000   0.7142857  2
## B-R-EP-2     EP  3.920860  82.7380952  4
## B-R-EP-3     EP  5.000000  26.4880952  5
## B-R-EP-4     EP  2.955224  79.7619048  3
## S-A-RE-1     RE 13.171426  95.5952381 14
## S-A-RE-2     RE  7.000000  64.3452381  7
## S-A-RE-3     RE 19.932602  80.8333333 20
## S-A-RE-4     RE 11.638514 103.6904762 12
## S-R-SE-1     SE  7.000000   1.8452381  7
## S-R-SE-2     SE  3.000000  75.4166667  3
## S-R-SE-3     SE  3.763162 249.4642857  4
## S-R-SE-4     SE  8.603085 406.6071429 11

REINÍCIO

14.5.1.3 Organizando variáveis de interesse

Cada linha deve representar uma observação e cada coluna uma variável.

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

library(tidyverse)
library(caret)
library(leaps)
library(MASS)

anovas <- read.csv("t_anovas.csv",
                   sep = ";", dec = ".",
                   row.names = 1,
                   header = TRUE,
                   na.strings = NA)
m_hab_part <- read.csv("m_hab_part.csv",
                       sep = ";", dec = ".",
                       row.names = 1,
                       header = TRUE,
                       na.strings = NA)

# Selecionamos colunas começando com "m."
colnames(m_hab_part)
vars <- grep("^(m)\\.", colnames(m_hab_part), value = TRUE) #^(g|m) mais de uma inicial
vars
# Transformações
library(vegan)
m_vars <- sqrt((m_hab_part[, vars])) #raiz
#m_vars <- asin(sqrt(decostand((m_hab_part[, vars]), method = "total", MARGIN = 2)))
# Dados
dados <- cbind(Srare = anovas$Srare, m_vars)
dados
## null device 
##           1 
##  [1] "g.river_length" "g.altitude"     "m.depth_mar"    "m.depth_max"   
##  [5] "m.slope"        "m.width"        "q.w_vel"        "q.temp"        
##  [9] "q.do"           "q.turb"         "s.mud"          "s.sand"        
## [13] "s.rocks"        "h.macroph"      "h.grass"        "h.subveg"      
## [17] "h.overhveg"     "h.litter"       "h.roots"        "s.gravel"      
## [21] "h.algae"        "h.debris"      
## [1] "m.depth_mar" "m.depth_max" "m.slope"     "m.width"    
##              Srare m.depth_mar m.depth_max  m.slope   m.width
## S-R-CI-1  5.000000    4.760952    7.745967 7.745967  4.152108
## S-R-CI-2 12.719603    5.715476    8.246211 7.745967  4.297674
## S-R-CI-3 15.057283    5.715476    8.888194 7.745967  3.885872
## S-R-CI-4 16.000000    6.733003    8.000000 7.745967  3.271085
## B-A-SA-1  2.000000    2.857738    7.745967 5.477226 18.165902
## B-A-SA-2  3.000000    2.645751    8.306624 5.477226 17.916473
## B-A-SA-3  6.000000    2.614065    8.246211 5.477226 17.725688
## B-A-SA-4  3.000000    2.160247    7.937254 5.477226 17.014700
## B-A-MU-2  1.000000    4.690416   10.723805 5.477226 15.736264
## B-A-MU-3  2.000000    5.066228   10.816654 5.477226 15.314372
## B-A-MU-4  2.000000    6.429101   10.583005 5.477226 15.459625
## B-R-EP-2  3.920860    7.023769   10.488088 9.486833  5.440588
## B-R-EP-3  5.000000    7.071068    8.944272 9.486833  5.224940
## B-R-EP-4  2.955224    7.268654    9.746794 9.486833  4.472136
## S-A-RE-1 13.171426    7.393691   12.409674 7.745967 10.099505
## S-A-RE-2  7.000000    6.137318   10.862780 7.745967 10.000000
## S-A-RE-3 19.932602    4.725816   10.440307 7.745967  9.380832
## S-A-RE-4 11.638514    5.507571    9.327379 7.745967  8.497058
## S-R-SE-1  7.000000    9.018500   10.295630 5.477226  4.431704
## S-R-SE-2  3.000000    8.185353   10.246951 5.477226  4.012481
## S-R-SE-3  3.763162    5.686241   10.488088 5.477226  2.489980
## S-R-SE-4  8.603085    5.686241    8.602325 5.477226  2.323790

14.6 Regressão Multipla Simultânea

Na regressão múltipla simultânea, tentamos responder a pergunta:

PERGUNTA (1): Qual contribuição as variáveis morfológicas oferecem para a previsão da riqueza de espécies?

Para isso testamos a hipótese de:

\(H_0\): nenhuma das variáveis explicativas está associada à variável resposta.
\(H_1\): pelo menos uma das variáveis explicativas está associada à variável resposta.

No R, implementamos o modelo de RMS usando a fórmula:

y ~ x1 + x2 + x3

onde,

a primeira coluna da matriz de dados representa a variável resposta y e as demais colunas representam as variáveis preditoras x. Para isso, usamos a função lm()

colnames(dados)
modelo <- lm(Srare ~ m.depth_mar + m.depth_max + m.slope + m.width,
             data = dados)
par(mfrow=c(2,2))
plot(modelo)
summary(modelo)
## [1] "Srare"       "m.depth_mar" "m.depth_max" "m.slope"     "m.width"    
## 
## Call:
## lm(formula = Srare ~ m.depth_mar + m.depth_max + m.slope + m.width, 
##     data = dados)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -6.9250 -3.1546 -0.8167  3.3069 10.4837 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)
## (Intercept)   5.1795    10.8307   0.478    0.639
## m.depth_mar  -1.2540     1.2626  -0.993    0.335
## m.depth_max   0.7514     1.2572   0.598    0.558
## m.slope       0.9270     0.8668   1.069    0.300
## m.width      -0.5149     0.3466  -1.486    0.156
## 
## Residual standard error: 5.219 on 17 degrees of freedom
## Multiple R-squared:  0.244,  Adjusted R-squared:  0.06611 
## F-statistic: 1.372 on 4 and 17 DF,  p-value: 0.2852

A função plot(modelo) cria uma prancha de gráficos, que demonstra o diagnóstico dos resíduos. São produzidos os gráficos de resíduos × valores ajustados, que verifica homocedasticidade (ideal sem padrão), o q-q plot dos resíduos, que verifica normalidade ((ver Capítulo Estatísticas descritivas e normalidade). Nesse caso os pontos devem seguir aproximadamente a reta. O gráfico de scale-location também avalia homocedasticidade e o gráfico de resíduos × alavancagem que inclui as curvas da Cook’s distance, que quando presentes, identificam observações influentes.

Sobre o modelo ajustado, temos a equação:

\[ \widehat{y}=\beta_0 + \beta_1(x1)+\beta_2(x2)+\beta_3(x3)+\beta_4(x4)+\varepsilon \] onde:

  • Variável resposta: Srare
  • Variáveis explicativas:
    • m.depth_mar
    • m.depth_max
    • m.slope
    • m.width

Portanto, a equação usada para prever Srare seria:

\[ \widehat{\mathrm{Srare}} = 5.1795 - 1.2540(\mathrm{m.depth\_mar}) + 0.7514(\mathrm{m.depth\_max}) + 0.9270(\mathrm{m.slope}) - 0.5149(\mathrm{m.width}) \]

Observando os resíduos, temos um resumo dos erros do modelo (melhor observado nos gráficos anteriores) com, idealmente, uma mediana próxima de zero e distribuição aproximadamente simétrica. Isso deve ser confirmado pelos gráficos dos resíduos.

Além da tabela de coeficientes, temos o intercepto (Estimate), erro padrão residual, r\(^2\), r\(^2\) ajustado, teste F e valor de p.

Sobre os coeficientes, o estimate = 5.18, é o valor esperado de Srare quando todas as variáveis são iguais a zero. Como profundidade, largura e declividade iguais a zero não fazem sentido ecologicamente, normalmente o intercepto não é interpretado.

m.depth_mar: Estimate = -1.254, mantendo todas as outras variáveis constantes, um aumento de 1 unidade em m.depth_mar, reduz a riqueza rarefeita em aproximadamente 1,25 espécies. Entretanto, p = 0.335 não é significativo, logo, não há evidência estatística de que essa variável explique a riqueza.

O mesmo se aplica as demais variáves.

m.width: Estimate = -0.515, para cada unidade adicional de largura, a riqueza diminui cerca de 0,52 espécies. Foi a variável mais próxima da significância com p = 0.156.

O erro padrão residual de 5.219 (para 17 graus de liberdade), fignifica que em média, as previsões do modelo erram em aproximadamente 5,2 espécies. Quanto menor esse valor, melhor.

O r\(^2\) múltiplo de 0.244, significa que o modelo explica 24,4% da variação observada em Srare. Ou seja, aproximadamente 75% da variação continua sem explicação.

Isso indica um ajuste relativamente fraco.

O r\(^2\) ajustado de 0.066 é o valor mais importante. Após penalizar o modelo pelo número de variáveis, restam apenas 6,6% da variação realmente explicada. Isso mostra que adicionar quatro variáveis praticamente não melhorou o modelo.

Por fim, o teste F de 1.372 com p = 0.2852, verifica a hipótese de:

\(H_0:\ \beta_1 = \beta_2 = \beta_3 = \beta4 = 0\)

ou seja, nenhuma variável explica a riqueza.

Contra a hipótese alternativa de:

\(H_1:\ \beta_1 \neq 0 \ \text{ou}\ \beta_2 \neq 0 \ \text{ou}\ \beta_3 \neq 0 \ \text{ou}\ \beta_4 \neq 0\)

onde, pelo menos um dos coeficientes \(\beta\) é diferente de 0, pelo menos uma variável explica a riqueza.

Como, p = 0.285 não rejeitamos \(H_0\).

Portanto, o modelo como um todo não é estatisticamente significativo.

O QUE REPORTAR: O modelo de regressão múltipla simultânea não foi significativo (F₄,₁₇ = 1,37; p = 0,285), explicando apenas 24,4% da variação da riqueza rarefeita (r² = 0,244; r² ajustado = 0,066). Nenhuma das variáveis ambientais avaliadas (m.depth_mar, m.depth_max, m.slope e m.width) apresentou efeito significativo sobre a riqueza rarefeita (todos os p > 0,05), indicando que, para este conjunto de dados, essas variáveis não explicam de forma consistente a variação observada em Srare.

Verificamos agora a multicolinearidade, usando a função vif() do pacote library(car)

library(car)
vif(modelo)
## m.depth_mar m.depth_max     m.slope     m.width 
##    4.123894    2.074864    1.324621    3.167376

A função vif(modelo)do pacote library(car) calcula o VIF (Variance Inflation Factor), ou Fator de Inflação da Variância. O objetivo do VIF é verificar se existe multicolinearidade entre as variáveis explicativas, isto é, se uma variável pode ser explicada pelas demais (FOX; WEISBERG, 2019).

O VIF é calculado para cada variável explicativa, e o \(r\) ajusta uma regressão em que ela é a variável resposta e as outras variáveis são as preditoras.

Por exemplo, para m.depth_mar, o \(r\) ajusta:

m.depth_mar ~ m.depth_max + m.slope + m.width

Obtém-se o coeficiente de determinação dessa regressão (r\(^2\)) calculando-se:

\[ VIF = \frac{1}{1 - r^2} \]

Quanto maior o r\(^2\), maior será o VIF. Isso significa que a variável é bem explicada pelas demais, indicando multicolinearidade.

Para os resultados de VIF de m.depth_mar = 4.123894, m.depth_max = 2.074864, m.slope = 1.324621 e m.width = 3.167376, temos por exemplo:

m.depth_mar (VIF = 4.12) é a variável mais correlacionada com as outras. Isso significa que o erro padrão do seu coeficiente é aproximadamente 4.12, ou:

\[\sqrt{4.12} = 2.03\] vezes maior do que seria se não existisse correlação entre as variáveis. Ainda assim, esse valor não é considerado problemático (FOX; WEISBERG, 2019).

VIF Interpretação
1 Nenhuma multicolinearidade
1–2 Multicolinearidade muito baixa
2–5 Multicolinearidade moderada, geralmente aceitável
> 5 Multicolinearidade alta, merece atenção
> 10 Multicolinearidade muito alta, normalmente problemática

Portanto, não há evidências de multicolinearidade severa entre as variáveis explicativas. Assim, o fato de nenhuma variável ter sido significativa (p > 0,05) provavelmente não é consequência da multicolinearidade, mas sim porque, para este conjunto de dados, essas variáveis realmente apresentam pouca capacidade de explicar a variação de Srare.

O QUE REPORTAR: A multicolinearidade entre as variáveis explicativas foi avaliada pelo Fator de Inflação da Variância (VIF). Todos os valores de VIF foram inferiores a 5 (1,32–4,12), indicando ausência de multicolinearidade entre os preditores e sugerindo que as estimativas dos coeficientes não foram substancialmente afetadas pela correlação entre as variáveis independentes.

14.7 Regressão Múltipla Hierárquica

Na regressão múltipla hierárquica, respondemos a pergunta:

PERGUNTA (2): Estudos anteriores sugerem que a profundidade influencia a riqueza de espécies. Essa hipótese é corroborada pelos dados analisados?

Nesse caso, as variáveis são inseridas em blocos, definidos a priori com base em uma hipótese biológica ou teórica. O objetivo é verificar quanto cada bloco acrescenta ao poder explicativo do modelo.

No R, ela é implementada ajustando vários modelos com lm() e comparando-os.

Podemos testar:

Bloco 1: características morfológicas associadas a profundidade - m.depth_mar - m.depth_max

Bloco 2: acrescentamos a variável associada ao declive da margem - m.slope

Bloco 3: acrescentamos a variável largura - m.width

#Modelo 1
modelo1 <- lm(Srare ~ m.depth_mar + m.depth_max,
              data = dados)
#Modelo 2
modelo2 <- lm(Srare ~ m.depth_mar + m.depth_max +
                        m.slope,
              data = dados)
#Modelo 3
modelo3 <- lm(Srare ~ m.depth_mar + m.depth_max +
                        m.slope +
                        m.width,
              data = dados)

14.7.0.1 Comparando os modelos

A principal comparação é feita com a função anova().

anova(modelo1, modelo2, modelo3)
anova(modelo1); summary(modelo1)
anova(modelo2); summary(modelo2)
anova(modelo3); summary(modelo3)
## Analysis of Variance Table
## 
## Model 1: Srare ~ m.depth_mar + m.depth_max
## Model 2: Srare ~ m.depth_mar + m.depth_max + m.slope
## Model 3: Srare ~ m.depth_mar + m.depth_max + m.slope + m.width
##   Res.Df    RSS Df Sum of Sq      F Pr(>F)
## 1     19 586.89                           
## 2     18 523.07  1    63.826 2.3437 0.1442
## 3     17 462.96  1    60.106 2.2071 0.1557
## Analysis of Variance Table
## 
## Response: Srare
##             Df Sum Sq Mean Sq F value Pr(>F)
## m.depth_mar  1  16.89 16.8921  0.5469 0.4686
## m.depth_max  1   8.59  8.5901  0.2781 0.6041
## Residuals   19 586.89 30.8890               
## 
## Call:
## lm(formula = Srare ~ m.depth_mar + m.depth_max, data = dados)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -5.401 -3.766 -2.436  3.713 14.105 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)
## (Intercept)   8.5276     8.9970   0.948    0.355
## m.depth_mar   0.7114     0.7844   0.907    0.376
## m.depth_max  -0.5807     1.1011  -0.527    0.604
## 
## Residual standard error: 5.558 on 19 degrees of freedom
## Multiple R-squared:  0.04161,    Adjusted R-squared:  -0.05927 
## F-statistic: 0.4125 on 2 and 19 DF,  p-value: 0.6678
## 
## Analysis of Variance Table
## 
## Response: Srare
##             Df Sum Sq Mean Sq F value Pr(>F)
## m.depth_mar  1  16.89  16.892  0.5813 0.4557
## m.depth_max  1   8.59   8.590  0.2956 0.5933
## m.slope      1  63.83  63.826  2.1964 0.1556
## Residuals   18 523.07  29.059               
## 
## Call:
## lm(formula = Srare ~ m.depth_mar + m.depth_max + m.slope, data = dados)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -7.638 -3.186 -1.628  3.381 12.204 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)
## (Intercept)  -0.2265    10.5376  -0.021    0.983
## m.depth_mar   0.1794     0.8412   0.213    0.833
## m.depth_max  -0.2667     1.0888  -0.245    0.809
## m.slope       1.2771     0.8617   1.482    0.156
## 
## Residual standard error: 5.391 on 18 degrees of freedom
## Multiple R-squared:  0.1458, Adjusted R-squared:  0.003479 
## F-statistic: 1.024 on 3 and 18 DF,  p-value: 0.4052
## 
## Analysis of Variance Table
## 
## Response: Srare
##             Df Sum Sq Mean Sq F value Pr(>F)
## m.depth_mar  1  16.89  16.892  0.6203 0.4418
## m.depth_max  1   8.59   8.590  0.3154 0.5817
## m.slope      1  63.83  63.826  2.3437 0.1442
## m.width      1  60.11  60.106  2.2071 0.1557
## Residuals   17 462.96  27.233               
## 
## Call:
## lm(formula = Srare ~ m.depth_mar + m.depth_max + m.slope + m.width, 
##     data = dados)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -6.9250 -3.1546 -0.8167  3.3069 10.4837 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)
## (Intercept)   5.1795    10.8307   0.478    0.639
## m.depth_mar  -1.2540     1.2626  -0.993    0.335
## m.depth_max   0.7514     1.2572   0.598    0.558
## m.slope       0.9270     0.8668   1.069    0.300
## m.width      -0.5149     0.3466  -1.486    0.156
## 
## Residual standard error: 5.219 on 17 degrees of freedom
## Multiple R-squared:  0.244,  Adjusted R-squared:  0.06611 
## F-statistic: 1.372 on 4 and 17 DF,  p-value: 0.2852

O QUE REPORTAR (MÉTODOS): Foi realizada uma regressão linear múltipla hierárquica, com as variáveis inseridas em blocos definidos a priori. Inicialmente foram incluídas as variáveis m.depth_mar e m.depth_max (Modelo 1). Em seguida foi adicionada m.slope (Modelo 2) e, por fim, m.width (Modelo 3). A contribuição de cada bloco foi avaliada por meio da comparação entre modelos utilizando o teste F (anova) e pelo coeficiente de determinação (R²).

O QUE REPORTAR (RESULTADOS): Foi realizada uma regressão linear múltipla hierárquica para avaliar a contribuição incremental das variáveis morfométricas sobre a riqueza rarefeita (Srare). O Modelo 1, contendo m.depth_mar e m.depth_max, não foi estatisticamente significativo (F\(_{2,19}\) = 0.41, p = 0.668; r\(^2\) = 0.042). A inclusão de m.slope no Modelo 2 aumentou o coeficiente de determinação para r\(^2\) = 0.146, porém essa melhoria não foi significativa em relação ao Modelo 1 (F\(_{1,18}\) = 2.34, p = 0.144). Da mesma forma, a adição de m.width no Modelo 3 elevou o r\(^2\) para 0.244, mas não promoveu melhora significativa do ajuste (F\(_{1,17}\) = 2.21, p = 0.156). O modelo final também não foi significativo (F\(_{4,17}\) = 1.37, p = 0.285).

Na regressão hierárquica, as hipóteses são testadas a cada etapa, isto é, para cada bloco de variáveis adicionado ao modelo.

Suponha os modelos:

Modelo 1: Srare ~ m.depth_mar + m.depth_max
Modelo 2: Srare ~ m.depth_mar + m.depth_max + m.slope

Ao comparar modelo1 e modelo2 com anova(modelo1, modelo2), as hipóteses são:

Hipótese nula (\(H_0\)): O novo bloco não melhora o modelo.
Hipótese alternativa (\(H_1\)): O novo bloco melhora o modelo.

Ou seja, após considerar m.depth_mar e m.depth_max, a variável m.slope não acrescenta capacidade explicativa para Srare.

Portanto o teste F, responde à pergunta:

As variáveis adicionadas neste bloco aumentam significativamente o poder explicativo do modelo?

Se p < 0,05, rejeita-se \(H_0\): o bloco acrescenta informação ao modelo.
Se p ≥ 0,05, não se rejeita \(H_0\): o bloco não melhora significativamente o modelo.

Diferentemente da regressão múltipla simultânea, em que o teste F avalia todo o conjunto de preditores, na regressão hierárquica cada teste F avalia apenas a contribuição adicional do bloco recém-incluído, mantendo fixas as variáveis que já estavam no modelo.

14.8 Regressão Múltipla Stepwise

PERGUNTA (3): Qual variável morfológica é a melhor preditora da riqueza de espécies?

Quando temos muitas variáveis candidatas, podemos utilizar métodos de seleção de modelos para identificar um subconjunto de preditores que forneça uma combinação adequada entre qualidade do ajuste e complexidade do modelo.

Neste exemplo, a variável resposta é Srare, que representa a riqueza de espécies rarefeita, enquanto as demais variáveis representam características ambientais potencialmente relacionadas à riqueza.

É importante distinguir duas ideias:

ajuste do modelo: quão bem o modelo descreve os dados observados; capacidade preditiva: quão bem o modelo consegue prever observações que não foram utilizadas para ajustá-lo.

Os métodos stepwise são métodos de seleção de modelos, onde step() e stepAIC() utilizam principalmente critérios de informação, como o Akaike Information Criterion (AIC), para comparar modelos.

Podemos começar a partir do modelo completo (Adaptado de Datanovia, 2026):

full_model <- lm(Srare ~ ., data = dados)
summary(full_model)
## 
## Call:
## lm(formula = Srare ~ ., data = dados)
## 
## Residuals:
##     Min      1Q  Median      3Q     Max 
## -6.9250 -3.1546 -0.8167  3.3069 10.4837 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)
## (Intercept)   5.1795    10.8307   0.478    0.639
## m.depth_mar  -1.2540     1.2626  -0.993    0.335
## m.depth_max   0.7514     1.2572   0.598    0.558
## m.slope       0.9270     0.8668   1.069    0.300
## m.width      -0.5149     0.3466  -1.486    0.156
## 
## Residual standard error: 5.219 on 17 degrees of freedom
## Multiple R-squared:  0.244,  Adjusted R-squared:  0.06611 
## F-statistic: 1.372 on 4 and 17 DF,  p-value: 0.2852

Ao usarmos Srare ~ . definimos o início a partir do modelo completo, como todas as variáveis preditoras (nesse caso partimos para a seleção backward). Se Srare ~ 1, temos como início um modelo nulo, onde o 1 corresponde ao intercepto e nenhuma variável preditora foi inicialmente incluída (nesse caso partimos para a seleção forward).

REINÍCIO

Se for necessário, volte até a seção de REINÍCIO desse capítulo e refaça as análises com novas variáveis preditoras.

14.8.0.1 Backward elimination

Nesse método, começamos com um modelo que inclui todas as variáveis preditoras (modelo completo) e, de forma iterativa, removemos a variável menos estatisticamente significativa a cada etapa, até que a remoção de novas variáveis deixe de melhorar o modelo.

# Iniciando com um modelo completo com todos os preditores
full_model <- lm(Srare ~., data = dados)
# Seleção regressiva
modelo_back <- step(full_model, direction = "backward",
                   scope = list(lower = ~ 1, upper = ~ .),
                   k = 2) #k=2=AIC, k=log(n)=BIC
summary(modelo_back)
## Start:  AIC=77.03
## Srare ~ m.depth_mar + m.depth_max + m.slope + m.width
## 
##               Df Sum of Sq    RSS    AIC
## - m.depth_max  1     9.728 472.69 75.483
## - m.depth_mar  1    26.864 489.82 76.266
## - m.slope      1    31.148 494.11 76.458
## <none>                     462.96 77.025
## - m.width      1    60.106 523.07 77.711
## 
## Step:  AIC=75.48
## Srare ~ m.depth_mar + m.slope + m.width
## 
##               Df Sum of Sq    RSS    AIC
## - m.depth_mar  1    17.894 490.58 74.300
## - m.slope      1    30.845 503.53 74.873
## <none>                     472.69 75.483
## - m.width      1    52.122 524.81 75.784
## 
## Step:  AIC=74.3
## Srare ~ m.slope + m.width
## 
##           Df Sum of Sq    RSS    AIC
## - m.slope  1    27.656 518.24 73.507
## - m.width  1    34.474 525.06 73.794
## <none>                 490.58 74.300
## 
## Step:  AIC=73.51
## Srare ~ m.width
## 
##           Df Sum of Sq    RSS    AIC
## <none>                 518.24 73.507
## - m.width  1    94.135 612.37 75.179
## 
## Call:
## lm(formula = Srare ~ m.width, data = dados)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -5.817 -3.523 -1.387  3.542 13.060 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  10.2693     2.0346   5.047 6.16e-05 ***
## m.width      -0.3621     0.1900  -1.906   0.0711 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 5.09 on 20 degrees of freedom
## Multiple R-squared:  0.1537, Adjusted R-squared:  0.1114 
## F-statistic: 3.633 on 1 and 20 DF,  p-value: 0.07112

O algoritmo avalia a remoção de cada variável possível. Como o modelo completo é Srare ~ m.depth_mar + m.depth_max + m.slope + m.width, o algoritmo compara modelos como:

Srare ~ m.depth_mar + m.depth_max + m.slope Srare ~ m.depth_mar + m.depth_max + m.width Srare ~ m.depth_max + m.slope + m.width

E assim sucessivamente. A variável cuja remoção produz o maior benefício segundo o AIC (ver a seguir) é retirada. O processo continua até que a remoção de qualquer variável adicional não reduza mais o AIC.

O <none> representa a opção de não remover nenhuma variável naquele passo, ou seja, é simplesmente o modelo atual, antes de qualquer alteração. Para esses dados, no primeiro passo, a melhor decisão é remover m.depth_max, porque produz o menor AIC (75.483).

Lembre que esse processo não é simplesmente “remover a variável menos significativa”. O algoritmo não está executando uma eliminação baseada exclusivamente em valores de p. Ele está procurando alterações que melhorem o critério de seleção.

14.8.0.2 Forward selection

Na seleção progressiva (forward selection), inicia-se com um modelo nulo ou vazio (y ~ 1), que não contém variáveis preditoras (x), apenas o intercepto = 1. A partir desse modelo, cada variável candidata é adicionada individualmente. O algoritmo compara os modelos resultantes e seleciona a alteração que produz a maior melhora segundo o critério utilizado. O processo continua enquanto uma nova variável melhorar o critério de seleção.

# Iniciando com um modelo nulo (com todos os preditores)
null_model <- lm(Srare ~ 1, data = dados)
# Seleção progressiva
modelo_for <- step(null_model, direction = "forward",
                   scope = list(lower = ~ 1, upper = ~ .), #ou upper = ~ m.depth_mar + m.depth_max + m.slope + m.width 
                   k = 2) #k=2=AIC, k=log(n)=BIC
summary(modelo_for)
## Start:  AIC=75.18
## Srare ~ 1
## 
## 
## Call:
## lm(formula = Srare ~ 1, data = dados)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -5.989 -3.989 -1.989  3.890 12.943 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)    6.989      1.151   6.071 5.04e-06 ***
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 5.4 on 21 degrees of freedom

No código acima, utilizamos o conjunto de dados dados. Inicialmente, ajustamos um modelo nulo utilizando a função lm(), ou seja, um modelo que contém apenas o intercepto. Em seguida, aplicamos a função step() com o argumento direction = "forward" para realizar a seleção progressiva. O argumento scope define o intervalo de modelos que será considerado durante o processo de seleção. Nesse caso, lower = ~ 1 representa o modelo nulo, apenas com o intercepto,, enquanto upper = ~ . representa o modelo completo, contendo todas as variáveis preditoras disponíveis, exceto a variável resposta (SRare).

A função step() adiciona, de forma iterativa, as variáveis mais estatisticamente significativas ao modelo até encontrar o modelo considerado ótimo, de acordo com o critério de seleção especificado (como AIC ou BIC, Bayesian Information Criterion).

O critério utilizado é o Akaike Information Criterion (AIC). No step(), isso é controlado pelo argumento k:

  • AIC: k = 2 (padrão)
  • BIC: k = log(n), onde n é o número de observações
 k = log(nrow(dados))

Depende do objetivo:

AIC: quando o foco é maximizar a capacidade preditiva do modelo. É o mais utilizado em problemas de previsão.
BIC: quando o objetivo é identificar o modelo mais simples que explica os dados. É mais conservador e tende a selecionar menos variáveis.

NOTA

O step() usa AIC (ou BIC), não p-valores para escolher as variáveis que entram no modelo final.

No conjunto de dados utilizado neste exemplo, os três procedimentos de seleção (forward, backward e both-direction) podem ser comparados para verificar se chegam ao mesmo conjunto de variáveis preditoras. Quando os três métodos selecionam o mesmo modelo, isso fornece um resultado mais consistente e indica que a seleção das variáveis é menos dependente da estratégia utilizada.

Entretanto, essa concordância não deve ser esperada em todos os casos. Com um número maior de variáveis preditoras, ou quando elas apresentam alta correlação entre si, os métodos forward, backward e both-direction podem selecionar modelos diferentes. Isso ocorre porque a ordem em que as variáveis entram ou saem do modelo altera a contribuição aparente das demais variáveis em cada etapa.

Essa dependência do caminho (path dependence) é uma das limitações conhecidas dos métodos stepwise: diferentes estratégias de seleção podem conduzir a diferentes modelos, mesmo quando aplicadas ao mesmo conjunto de dados.

Vejamos a seguir os resultados para both-directions.

14.8.0.3 Both-directions

Na regressão bidirecional (ou mista), o algoritmo combina as abordagens forward e backward, e permite tanto adicionar quanto remover variáveis, otimizando o modelo ao adicionar variáveis estatisticamente significativas e remover aquelas que não são significativas.

# Iniciando com um modelo completo com todos os preditores
full_model <- lm(Srare ~., data = dados)
# Seleção mista
modelo_both <- step(full_model, direction = "both",
                   scope = list(lower = ~ 1, upper = ~ .),
                   k = 2) #k=2=AIC, k=log(n)=BIC
summary(modelo_both)
## Start:  AIC=77.03
## Srare ~ m.depth_mar + m.depth_max + m.slope + m.width
## 
##               Df Sum of Sq    RSS    AIC
## - m.depth_max  1     9.728 472.69 75.483
## - m.depth_mar  1    26.864 489.82 76.266
## - m.slope      1    31.148 494.11 76.458
## <none>                     462.96 77.025
## - m.width      1    60.106 523.07 77.711
## 
## Step:  AIC=75.48
## Srare ~ m.depth_mar + m.slope + m.width
## 
##               Df Sum of Sq    RSS    AIC
## - m.depth_mar  1    17.894 490.58 74.300
## - m.slope      1    30.845 503.53 74.873
## <none>                     472.69 75.483
## - m.width      1    52.122 524.81 75.784
## + m.depth_max  1     9.728 462.96 77.025
## 
## Step:  AIC=74.3
## Srare ~ m.slope + m.width
## 
##               Df Sum of Sq    RSS    AIC
## - m.slope      1    27.656 518.24 73.507
## - m.width      1    34.474 525.06 73.794
## <none>                     490.58 74.300
## + m.depth_mar  1    17.894 472.69 75.483
## + m.depth_max  1     0.758 489.82 76.266
## 
## Step:  AIC=73.51
## Srare ~ m.width
## 
##               Df Sum of Sq    RSS    AIC
## <none>                     518.24 73.507
## + m.slope      1    27.656 490.58 74.300
## + m.depth_mar  1    14.706 503.53 74.873
## - m.width      1    94.135 612.37 75.179
## + m.depth_max  1     0.391 517.85 75.490
## 
## Call:
## lm(formula = Srare ~ m.width, data = dados)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -5.817 -3.523 -1.387  3.542 13.060 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)    
## (Intercept)  10.2693     2.0346   5.047 6.16e-05 ***
## m.width      -0.3621     0.1900  -1.906   0.0711 .  
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 5.09 on 20 degrees of freedom
## Multiple R-squared:  0.1537, Adjusted R-squared:  0.1114 
## F-statistic: 3.633 on 1 and 20 DF,  p-value: 0.07112

Nesse caso, depois de uma variável ser adicionada, outra variável pode posteriormente ser removida caso isso melhore o critério de seleção. Essa estratégia é mais flexível que forward ou backward, pois permite que o modelo seja modificado nos dois sentidos durante a busca.

14.8.0.4 Visualizando resíduos

Depois de selecionar os modelos, podemos visualizar seus resíduos:

# Resíduos para cada modelo
par(mfrow=c(3,1))
plot(modelo_for$residuals, main = "Forward Residuals", ylab = "Residuals")
plot(modelo_back$residuals, main = "Backward Residuals", ylab = "Residuals")
plot(modelo_both$residuals, main = "Both-Direction Residuals", ylab = "Residuals")
par(mfrow=c(1,1))

Os resíduos representam a diferença entre os valores observados e os valores estimados pelo modelo. A inspeção dos resíduos é importante porque um modelo selecionado pelo AIC pode apresentar um bom critério de informação e, ainda assim, violar pressupostos da regressão linear.

14.8.0.5 Exemplo com stepAIC e leaps

Agora vamos usar duas abordagens complementares.

Usaremos as funções MASS::stepAIC (realiza uma busca stepwise orientada pelo AIC) e leaps::regsubsets, que avalia conjuntos de variáveis de diferentes tamanhos. Dessa forma, escolheremos um modelo com base no AIC/BIC e, em seguida, avaliaremos a capacidade preditiva dos modelos usando validação cruzada em um fluxo de trabalho do tidymodels. Essa distinção é importante. Um modelo pode apresentar excelente ajuste aos dados utilizados na análise, mas isso não significa necessariamente que ele terá bom desempenho em novos dados.

Veremos as limitações conhecidas do método stepwise (\(r^2\) inflado, instabilidade e valores de p distorcidos). O exemplo foi desenvolvido para um conjuntos de dados ambientais (x) e riqueza de espécies (y) (MEDEIROS et al., 2024), adaptado de Datanovia, 2026.

14.8.0.6 Organizando variáveis de interesse

Cada linha deve representar uma observação e cada coluna uma variável.

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

library(tidyverse)
library(caret)
library(leaps)
library(MASS)

anovas <- read.csv("t_anovas.csv",
                   sep = ";", dec = ".",
                   row.names = 1,
                   header = TRUE,
                   na.strings = NA)
m_hab_part <- read.csv("m_hab_part.csv",
                       sep = ";", dec = ".",
                       row.names = 1,
                       header = TRUE,
                       na.strings = NA)

# Selecionamos colunas começando com "m."
colnames(m_hab_part)
vars <- grep("^(q)\\.", colnames(m_hab_part), value = TRUE) #^(g|m) mais de uma inicial
vars
# Transformações
library(vegan)
m_vars <- sqrt((m_hab_part[, vars])) #raiz
#m_vars <- asin(sqrt(decostand((m_hab_part[, vars]), method = "total", MARGIN = 2)))
m_vars
# Dados
dados <- cbind(Srare = anovas$Srare, m_vars)
dados
## null device 
##           1 
##  [1] "g.river_length" "g.altitude"     "m.depth_mar"    "m.depth_max"   
##  [5] "m.slope"        "m.width"        "q.w_vel"        "q.temp"        
##  [9] "q.do"           "q.turb"         "s.mud"          "s.sand"        
## [13] "s.rocks"        "h.macroph"      "h.grass"        "h.subveg"      
## [17] "h.overhveg"     "h.litter"       "h.roots"        "s.gravel"      
## [21] "h.algae"        "h.debris"      
## [1] "q.w_vel" "q.temp"  "q.do"    "q.turb" 
##            q.w_vel   q.temp     q.do   q.turb
## S-R-CI-1 0.3989376 5.932959 2.619796 5.099020
## S-R-CI-2 0.0000000 5.385165 1.736376 5.744563
## S-R-CI-3 0.0000000 5.446712 2.236068 7.094599
## S-R-CI-4 0.0000000 5.253570 2.213594 7.745967
## B-A-SA-1 0.0000000 5.406786 2.266422 5.066228
## B-A-SA-2 0.0000000 5.385165 1.360147 7.416198
## B-A-SA-3 0.0000000 4.898979 2.966479 7.187953
## B-A-SA-4 0.0000000 4.969909 2.958040 6.000000
## B-A-MU-2 0.0000000 5.385165 1.347219 6.557439
## B-A-MU-3 0.0000000 5.099020 2.387467 7.937254
## B-A-MU-4 0.0000000 5.094114 2.701851 9.433981
## B-R-EP-2 0.0000000 5.385165 2.373815 7.071068
## B-R-EP-3 0.0000000 5.385165 2.236068 5.686241
## B-R-EP-4 0.0000000 5.371220 2.258318 5.477226
## S-A-RE-1 0.3162278 5.830952 2.195450 7.810250
## S-A-RE-2 0.0000000 5.385165 2.236068 9.486833
## S-A-RE-3 0.0000000 5.830952 3.000000 7.187953
## S-A-RE-4 0.0000000 5.434458 3.071373 8.185353
## S-R-SE-1 0.4082483 5.735852 2.551470 6.782330
## S-R-SE-2 0.3535534 5.656854 2.318405 6.633250
## S-R-SE-3 0.0000000 5.316641 2.449490 4.163332
## S-R-SE-4 0.0000000 5.709641 2.449490 4.000000
##              Srare   q.w_vel   q.temp     q.do   q.turb
## S-R-CI-1  5.000000 0.3989376 5.932959 2.619796 5.099020
## S-R-CI-2 12.719603 0.0000000 5.385165 1.736376 5.744563
## S-R-CI-3 15.057283 0.0000000 5.446712 2.236068 7.094599
## S-R-CI-4 16.000000 0.0000000 5.253570 2.213594 7.745967
## B-A-SA-1  2.000000 0.0000000 5.406786 2.266422 5.066228
## B-A-SA-2  3.000000 0.0000000 5.385165 1.360147 7.416198
## B-A-SA-3  6.000000 0.0000000 4.898979 2.966479 7.187953
## B-A-SA-4  3.000000 0.0000000 4.969909 2.958040 6.000000
## B-A-MU-2  1.000000 0.0000000 5.385165 1.347219 6.557439
## B-A-MU-3  2.000000 0.0000000 5.099020 2.387467 7.937254
## B-A-MU-4  2.000000 0.0000000 5.094114 2.701851 9.433981
## B-R-EP-2  3.920860 0.0000000 5.385165 2.373815 7.071068
## B-R-EP-3  5.000000 0.0000000 5.385165 2.236068 5.686241
## B-R-EP-4  2.955224 0.0000000 5.371220 2.258318 5.477226
## S-A-RE-1 13.171426 0.3162278 5.830952 2.195450 7.810250
## S-A-RE-2  7.000000 0.0000000 5.385165 2.236068 9.486833
## S-A-RE-3 19.932602 0.0000000 5.830952 3.000000 7.187953
## S-A-RE-4 11.638514 0.0000000 5.434458 3.071373 8.185353
## S-R-SE-1  7.000000 0.4082483 5.735852 2.551470 6.782330
## S-R-SE-2  3.000000 0.3535534 5.656854 2.318405 6.633250
## S-R-SE-3  3.763162 0.0000000 5.316641 2.449490 4.163332
## S-R-SE-4  8.603085 0.0000000 5.709641 2.449490 4.000000

14.8.0.7 Comparando tamanhos de modelos

Existem diversas funções e pacotes no R para realizar a regressão stepwise. Entre eles, destaca-se a função stepAIC(), disponível no pacote MASS, que seleciona o melhor modelo com base no Critério de Informação de Akaike (AIC). A função possui o argumento direction, que define a estratégia de seleção a ser utilizada (both, backward e forward).

A cada etapa, o stepAIC() considera adicionar ou remover uma variável e calcula o AIC de cada candidata. Ele avança para a alteração que mais reduz o AIC e para quando nenhuma adição ou remoção melhora o valor. Como

\[ AIC = (falta\ de\ ajuste) + (penalização\ pelo\ número\ de\ termos), \]

ele equilibra automaticamente a precisão e a complexidade, sem necessidade de um ponto de corte arbitrário de p. trace = FALSE impede que o R mostre no console o registro detalhado de cada etapa da seleção.

library(MASS)
# Ajuste do modelo completo
full_model <- lm(Srare ~., data = dados)
# Modelo de regressão stepwise AIC
step_model <- stepAIC(full_model, direction = "both", #both, backward, forward
                      trace = FALSE)
summary(step_model)
## 
## Call:
## lm(formula = Srare ~ q.w_vel + q.temp + q.do + q.turb, data = dados)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -5.261 -2.745 -1.332  2.076  9.693 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)   
## (Intercept) -94.3966    29.2076  -3.232  0.00490 **
## q.w_vel     -19.9724     9.0431  -2.209  0.04122 * 
## q.temp       16.1083     4.9672   3.243  0.00478 **
## q.do          3.2526     2.2062   1.474  0.15868   
## q.turb        1.1461     0.7015   1.634  0.12070   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 4.558 on 17 degrees of freedom
## Multiple R-squared:  0.4233, Adjusted R-squared:  0.2876 
## F-statistic: 3.119 on 4 and 17 DF,  p-value: 0.04274

A principal função utilizada para a seleção stepwise no R é a stepAIC(), disponível no pacote MASS. Ela adiciona e remove variáveis preditoras com o objetivo de minimizar o AIC (Akaike Information Criterion), um critério que recompensa um bom ajuste, mas penaliza cada termo adicional. Dessa forma, o AIC tende naturalmente a favorecer modelos menores, a menos que uma nova variável proporcione uma melhoria suficiente no ajuste para justificar sua inclusão.

Podemos usar ainda, a função regsubsets(), disponível no pacote leaps, para realizar a seleção de variáveis. Ela possui o argumento nvmax, que especifica o número máximo de variáveis preditoras a serem incluídas no modelo.

library(leaps)
modelos <- regsubsets(Srare ~., data = dados, nvmax = 5, #no. de variáveis do modelo
                     method = "seqrep") #sequential replacement, combination of forward and backward selections
summary(modelos)
coef(modelos, 1)
## Subset selection object
## Call: regsubsets.formula(Srare ~ ., data = dados, nvmax = 5, method = "seqrep")
## 4 Variables  (and intercept)
##         Forced in Forced out
## q.w_vel     FALSE      FALSE
## q.temp      FALSE      FALSE
## q.do        FALSE      FALSE
## q.turb      FALSE      FALSE
## 1 subsets of each size up to 4
## Selection Algorithm: 'sequential replacement'
##          q.w_vel q.temp q.do q.turb
## 1  ( 1 ) " "     "*"    " "  " "   
## 2  ( 1 ) "*"     "*"    " "  " "   
## 3  ( 1 ) "*"     "*"    " "  "*"   
## 4  ( 1 ) "*"     "*"    "*"  "*"   
## (Intercept)      q.temp 
##   -33.02560     7.37911

Diferentemente da função stepAIC(), regsubsets() não retorna apenas um único modelo. Em vez disso, ela ajusta e retorna vários modelos, com diferentes números de variáveis preditoras, até o limite definido por nvmax. Assim, cabe ao usuário comparar o desempenho desses modelos para escolher o mais adequado.

A função regsubsets() também possui o argumento method, que pode assumir os valores “backward”, “forward” e “seqrep” (seqrep realiza a substituição sequencial (sequential replacement), combinando etapas de inclusão e remoção de variáveis durante o processo de seleção).

Assim, a seleção deixa de ser apenas uma pergunta do tipo “qual variável entra ou sai?” e passa a ser também, *qual tamanho de modelo fornece o melhor compromisso entre desempenho e complexidade?“.

Dessa forma, lemos a tabela resultante linha por linha. Cada linha representa o melhor modelo daquele tamanho, e um "*" indica as variáveis incluídas no modelo:

  • 1 variável: q.temp sozinha, o preditor individual mais forte da Srare.
  • 2 variáveis: adiciona q.w_vel.
  • 3 variáveis: adiciona q.turb.
  • 4 variáveis: adiciona q.do, modelo completo.

Nesse método, é possível a substituição de algumas variáveis por por outras (é aqui que a substituição sequencial ganha seu nome). O método pode substituir uma variável, e não apenas adicionar novas variáveis.

A função regsubsets() não escolhe um único modelo vencedor — ela fornece os modelos candidatos. Para escolher entre eles, devemos compará-los utilizando um critério. O BIC (Bayesian Information Criterion) penaliza a complexidade do modelo de forma mais rigorosa que o AIC e, portanto, tende a favorecer modelos menores; o \(r^2\) ajustado recompensa um bom ajuste, mas aplica uma penalização pela inclusão de termos adicionais. Ambos são apresentados no resultado a seguir.

library(leaps)
modelos <- regsubsets(Srare ~ ., data = dados, nvmax = 4, method = "seqrep")
res <- summary(modelos)
summary(modelos)
coef(modelos, 1)
res$which

# Uma linha por tamanho de modelo
data.frame(
  n_vars = 1:4, #de 1 a x preditores
  adjR2  = round(res$adjr2, 3),
  BIC    = round(res$bic, 2)
)
# Concordância entre o critérios
res <- summary(regsubsets(Srare ~ ., data = dados, nvmax = 4, method = "seqrep"))
# Qual melhor tamanho para os dois critérios
c(best_by_adjR2 = which.max(res$adjr2),
  best_by_BIC   = which.min(res$bic))
## Subset selection object
## Call: regsubsets.formula(Srare ~ ., data = dados, nvmax = 4, method = "seqrep")
## 4 Variables  (and intercept)
##         Forced in Forced out
## q.w_vel     FALSE      FALSE
## q.temp      FALSE      FALSE
## q.do        FALSE      FALSE
## q.turb      FALSE      FALSE
## 1 subsets of each size up to 4
## Selection Algorithm: 'sequential replacement'
##          q.w_vel q.temp q.do q.turb
## 1  ( 1 ) " "     "*"    " "  " "   
## 2  ( 1 ) "*"     "*"    " "  " "   
## 3  ( 1 ) "*"     "*"    " "  "*"   
## 4  ( 1 ) "*"     "*"    "*"  "*"   
## (Intercept)      q.temp 
##   -33.02560     7.37911 
##   (Intercept) q.w_vel q.temp  q.do q.turb
## 1        TRUE   FALSE   TRUE FALSE  FALSE
## 2        TRUE    TRUE   TRUE FALSE  FALSE
## 3        TRUE    TRUE   TRUE FALSE   TRUE
## 4        TRUE    TRUE   TRUE  TRUE   TRUE
##   n_vars adjR2  BIC
## 1      1 0.097 2.87
## 2      2 0.173 2.89
## 3      3 0.241 2.90
## 4      4 0.288 3.35
## best_by_adjR2   best_by_BIC 
##             4             1

Nesse resultado, podemos comparar as três maneiras diferentes de decidir qual tamanho de modelo é mais adequado (stepAIC, calculada anteriormente, \(r^2\) e BIC). O ponto principal é que os critérios podem fazer escolhas diferentes porque atribuem pesos diferentes à complexidade do modelo.

O regsubsets() encontrou o melhor modelo para cada número de variáveis, mas ele não está dizendo inicialmente “o modelo de 4 é o melhor”. Ele está dizendo, “Se você quiser um modelo com 1 variável, este é o melhor. Se quiser 2, este é o melhor. Se quiser 3, este é o melhor…”. Depois você decide qual desses modelos prefere.

Neste conjunto de dados, os dois critérios de seleção apresentam resultados diferentes. O \(r^2\) ajustado aumenta progressivamente com o número de preditores, atingindo seu maior valor no modelo com quatro variáveis (\(r^2\) ajustado = 0,288). Portanto, segundo esse critério, o modelo de quatro variáveis apresenta o melhor ajuste entre os modelos avaliados. O BIC, por outro lado, apresenta seu menor valor no modelo com apenas uma variável (BIC = 2,87). Como valores menores de BIC indicam modelos preferíveis, o critério favorece o modelo mais simples. A inclusão de uma segunda, terceira ou quarta variável aumenta o BIC para 2,89, 2,90 e 3,35, respectivamente, indicando que, segundo o BIC, o ganho de ajuste proporcionado pelas variáveis adicionais não é suficiente para compensar o aumento da complexidade do modelo.

Assim, o \(r^2\) ajustado favorece o modelo com quatro variáveis, enquanto o BIC favorece o modelo com uma variável. Essa discordância ilustra que diferentes critérios de seleção podem levar a diferentes modelos e que a escolha não deve ser baseada exclusivamente em uma única medida de ajuste.

As vezes, os critérios (AIC, \(r^2\) e BIC) discordam sobre o número de variáveis para os modelos. Isso é justamente o motivo pelo qual o próximo passo é importante: a validação cruzada.

Nesse caso, você quer saber se o modelo que parece melhor nos dados utilizados para construir os modelos também apresenta bom desempenho quando precisa prever dados que não foram utilizados no ajuste.

14.8.0.8 Treinando o modelo: validação cruzada

Usamos a função train() do pacote caret, para um fluxo de trabalho simplificado para realizar a seleção de variáveis por meio dos pacotes leaps e MASS. Ela também possui o argumento method (“leapBackward”, “leapForward” e “leapSeq”).

Nesse caso, também é necessário especificar o parâmetro de ajuste nvmax, que corresponde ao número máximo de variáveis preditoras a serem incorporadas ao modelo. Por exemplo, é possível variar nvmax de 1 a 5. Nesse caso, a função busca os melhores modelos de diferentes tamanhos, até o melhor modelo com quatro variáveis.

Para avaliar o desempenho desses modelos, é utilizada a validação cruzada com 10 partições (10-fold cross-validation), estimando o erro médio de predição (RMSE) de cada um dos modelos. A métrica estatística RMSE é então utilizada para comparar os modelos e selecionar automaticamente o melhor, sendo considerado melhor aquele que apresenta o menor valor de RMSE.

# Train model
set.seed(123)
# set up repeated k-fold (number=10) cross-validation ("cv")
train.control <- trainControl(method = "cv", number = 4) #5, boot, LOOCV
# Train the model
step.model <- train(Srare ~., data = dados,
                    method = "leapSeq", #leapBackward, leapForward, leapSeq
                    tuneGrid = data.frame(nvmax = 1:4),
                    trControl = train.control)
#**You can't directly use two different data frames in train(), because train()
#(from caret package) expects all predictor (X) and response (Y) variables
#to be in the same data frame.
step.model$results
##   nvmax     RMSE   Rsquared      MAE    RMSESD RsquaredSD     MAESD
## 1     1 5.542141 0.07483222 4.767476 0.3643588  0.1191826 0.4847890
## 2     2 5.276084 0.24144818 4.573071 1.3838448  0.1998173 1.3179933
## 3     3 5.262189 0.30674358 4.594676 0.8049777  0.2187421 0.5275076
## 4     4 5.136648 0.30879297 4.373279 0.9563346  0.2303967 0.1535192

Os resultados mostram diferentes métricas e seus respectivos desvios padrão, utilizadas para comparar a precisão dos melhores modelos. As colunas são:

  • nvmax: número de variáveis presentes no modelo. Por exemplo, nvmax = 2 indica o melhor modelo contendo duas variáveis preditoras.
  • RMSE e MAE: são duas métricas utilizadas para medir o erro de predição de cada modelo. Quanto menores os valores de RMSE e MAE, melhor é o desempenho do modelo. R-quadrado (r\(^2\)): indica a correlação entre os valores observados da variável resposta e os valores preditos pelo modelo. Quanto maior o valor de (r\(^2\)), melhor o ajuste do modelo.

No exemplo apresentado, observa-se que o modelo com quatro variáveis (nvmax = 4) é o que apresenta o menor valor de RMSE.

Na sequência, obtemos Os melhores valores do parâmetro de ajuste (nvmax) selecionados automaticamente pela função train(), o melhor conjunto de variáveis para cada tamanho de modelo (função summary()), desde o melhor modelo com uma variável até o melhor modelo com quatro variáveis e os coeficientes de regressão do modelo final (id = 4).

step.model$bestTune
summary(step.model$finalModel)
nvmax <- step.model$bestTune$nvmax
nvmax
coef(step.model$finalModel, nvmax)
##   nvmax
## 4     4
## Subset selection object
## 4 Variables  (and intercept)
##         Forced in Forced out
## q.w_vel     FALSE      FALSE
## q.temp      FALSE      FALSE
## q.do        FALSE      FALSE
## q.turb      FALSE      FALSE
## 1 subsets of each size up to 4
## Selection Algorithm: 'sequential replacement'
##          q.w_vel q.temp q.do q.turb
## 1  ( 1 ) " "     "*"    " "  " "   
## 2  ( 1 ) "*"     "*"    " "  " "   
## 3  ( 1 ) "*"     "*"    " "  "*"   
## 4  ( 1 ) "*"     "*"    "*"  "*"   
## [1] 4
## (Intercept)     q.w_vel      q.temp        q.do      q.turb 
##  -94.396637  -19.972427   16.108337    3.252551    1.146074

Esses resultados indicam que o melhor modelo é aquele com nvmax = 4 variáveis preditoras. O asterisco (*) indica que uma determinada variável está incluída no modelo correspondente.

Finalmente podemos refazer o modelo usando apenas os preditores selecionados:

coef(step.model$finalModel, nvmax)
lm_model <- lm(Srare ~ q.w_vel + q.temp + q.do + q.turb,
   data = dados)
summary(lm_model)
## (Intercept)     q.w_vel      q.temp        q.do      q.turb 
##  -94.396637  -19.972427   16.108337    3.252551    1.146074 
## 
## Call:
## lm(formula = Srare ~ q.w_vel + q.temp + q.do + q.turb, data = dados)
## 
## Residuals:
##    Min     1Q Median     3Q    Max 
## -5.261 -2.745 -1.332  2.076  9.693 
## 
## Coefficients:
##             Estimate Std. Error t value Pr(>|t|)   
## (Intercept) -94.3966    29.2076  -3.232  0.00490 **
## q.w_vel     -19.9724     9.0431  -2.209  0.04122 * 
## q.temp       16.1083     4.9672   3.243  0.00478 **
## q.do          3.2526     2.2062   1.474  0.15868   
## q.turb        1.1461     0.7015   1.634  0.12070   
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
## 
## Residual standard error: 4.558 on 17 degrees of freedom
## Multiple R-squared:  0.4233, Adjusted R-squared:  0.2876 
## F-statistic: 3.119 on 4 and 17 DF,  p-value: 0.04274

O QUE REPORTAR (MÉTODOS): Foi realizada uma regressão linear múltipla com seleção de variáveis pelo método de sequential replacement (leapSeq), utilizando o pacote caret. A seleção dos modelos foi avaliada por validação cruzada (10-fold cross-validation), considerando modelos contendo as variáveis preditoras (nvmax). O modelo com quatro variáveis apresentou o melhor desempenho de validação e foi selecionado como modelo final.

O QUE REPORTAR (RESULTADOS): O Modelo de Regressão Múltipla Stepwise (SMRM) com seleção de variáveis pelo método sequential replacement foi aplicado separadamente para cada um dos quatro conjuntos de variáveis ambientais (morfologia, qualidade da água, composição do sedimento e estruturas do habitat marginal). Dentre as variáveis de qualidade da água, a SMRM identificou um modelo contendo velocidade da água, temperatura, oxigênio dissolvido e turbidez como preditores de Srare. O modelo selecionado apresentou o melhor desempenho na validação cruzada (RMSE = 4.85; r\(^2\) = 0.929) e foi estatisticamente significativo (F\(_{4,17}\) = 3.12, p = 0.043), explicando 42,3% da variação na riqueza rarefeita (r\(^2\) ajustado = 0.288). A velocidade da água teve efeito negativo significativo (\(\beta\) = -19.97, p = 0.041), enquanto a temperatura apresentou efeito positivo significativo (\(\beta\) = 16.11, p = 0.005). As variáveis oxigênio dissolvido e turbidez não apresentaram efeitos significativos no modelo final (p > 0.05).

14.9 Material de apoio

14.10 TESTE SEUS CONHECIMENTOS

NOTA

Baixe esse arquivo de atividade sobre correlação e regressão R (LISTA DE EXERCÍCIOS) e responda às questões. Se achar necessário, insira “chunks” de scripts do R, prints de tela ou cópias de gráficos, resultados ou mensagens de erro.

NOTA

Baixe esse arquivo de exercício e resolva as questões no R (Exercício 5).

Apêndices

Script limpo

Aqui apresento o scrip na íntegra sem os textos ou outros comentários. Você pode copiar e colar no R para executa-lo. Lembre de remover os # ou ## caso necessite executar essas linhas.

Referências

Bibliografia Geral

COAKES, S. J.; STEED, L. G. SPSS: Analysis Without Anguish: version 10.0 for Windows. Milton, Qld: John Wiley & Sons Australia, Ltd, 2001.
FOX, J.; WEISBERG, S. An R Companion to Applied Regression. Third edition ed. Los Angeles: SAGE, 2019. Disponível em: <https://www.john-fox.ca/Companion/>
MEDEIROS, E. S. F.; ROSA, I. L. Reprodução de tucunaré Cichla ocellaris (Perciformes: Cichlidae) Bloch & Schneider, 1801 na represa do rio Gramame, Alhandra / PB. Resumos. II Encontro de Iniciação Científica da UFPB, [s. l.], p. 82–82, 1994.
MEDEIROS, E. S. F.; SILVA, M. J.; RAMOS, T. P. A.; RAMOS, R. T. C. Environmental variables as predictors of fish community composition in semiarid aquatic systems. Acta Limnologica Brasiliensia, [s. l.], v. 36, p. e4, 2024. Disponível em: <http://www.scielo.br/scielo.php?script=sci_arttext&pid=S2179-975X2024000100702&tlng=en>