Cap. 14 - Diversidade Funcional
14.1 Utilize os dados “aviurba” do pacote ade4 para testar o efeito de variáveis ambientais na dispersão (FDis) e regularidade funcional (FEve). Utilize modelos lineares (lm) para testar quais variáveis ambientais são as mais importantes para a dispersão e regularidade funcional. Além disso, faça um boxplot comparando os valores de FDis e FEve entre as categorias das variáveis ambientais mais relevantes.
Solução:
# Pacotes e dados
library(ade4)
library(FD)
library(ggplot2)
library(tidyverse)
library(ecodados)
library(gridExtra)
data(aviurba)
com <- aviurba$fau # matriz de composição de espécies
trait <- aviurba$traits # atributos funcionais das espécies
amb <- aviurba$mil # matriz de variáveis ambientais
# 1. Cálculo da diversidade funcional: FDis e FEve
div_fun <- dbFD(trait, com)
#> Species x species distance matrix was not Euclidean. 'sqrt' correction was applied.
#> FRic: Only categorical and/or ordinal trait(s) present in 'x'. FRic was measured as the number of unique trait combinations, NOT as the convex hull volume.
#> FDiv: Cannot be computed when only categorical and/or ordinal trait(s) present in 'x'.
FDis <- div_fun$FDis
FEve <- div_fun$FEve
#. 2. modelos lineares
lm_fdis <- lm(FDis~., data=amb)
anova(lm_fdis)
#> Analysis of Variance Table
#>
#> Response: FDis
#> Df Sum Sq Mean Sq F value Pr(>F)
#> farms 1 0.008631 0.0086311 3.1698 0.08422 .
#> small.bui 1 0.000000 0.0000000 0.0000 0.99665
#> high.bui 1 0.001561 0.0015610 0.5733 0.45434
#> industry 1 0.012983 0.0129830 4.7680 0.03621 *
#> fields 1 0.004193 0.0041926 1.5397 0.22341
#> grassland 1 0.000053 0.0000528 0.0194 0.89007
#> scrubby 1 0.000773 0.0007733 0.2840 0.59767
#> deciduous 1 0.000385 0.0003845 0.1412 0.70948
#> conifer 1 0.000191 0.0001905 0.0700 0.79304
#> noisy 1 0.000386 0.0003859 0.1417 0.70900
#> veg.cover 7 0.020059 0.0028655 1.0524 0.41507
#> Residuals 33 0.089857 0.0027230
#> ---
#> Signif. codes:
#> 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
lm_feve <- lm(FEve~., data=amb)
anova(lm_feve)
#> Analysis of Variance Table
#>
#> Response: FEve
#> Df Sum Sq Mean Sq F value Pr(>F)
#> farms 1 0.00001 0.000007 0.0005 0.981844
#> small.bui 1 0.14651 0.146507 10.7662 0.002446 **
#> high.bui 1 0.00969 0.009687 0.7118 0.404906
#> industry 1 0.00786 0.007860 0.5776 0.452664
#> fields 1 0.03908 0.039083 2.8720 0.099549 .
#> grassland 1 0.00769 0.007686 0.5648 0.457668
#> scrubby 1 0.02200 0.021996 1.6164 0.212489
#> deciduous 1 0.00010 0.000104 0.0076 0.930976
#> conifer 1 0.00192 0.001921 0.1412 0.709495
#> noisy 1 0.04924 0.049236 3.6181 0.065911 .
#> veg.cover 7 0.14969 0.021385 1.5715 0.178578
#> Residuals 33 0.44907 0.013608
#> ---
#> Signif. codes:
#> 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# 3. Para facilitar a construção dos gráficos, podemos criar um data.frame
dat_graf <- data.frame(amb, FDis, FEve)
# 4. Gráficos
dat_graf %>%
ggplot(aes(x = industry, y = FDis, fill = industry)) +
geom_boxplot(width = 0.4, alpha = 0.7)+
scale_fill_manual(values = c("cyan4", "darkorange"))+
labs(x = "Presença de indústrias", y = "Divergência Funcional (FDis)") +
tema_livro() -> g_fdis
dat_graf %>%
ggplot(aes(x = small.bui, y = FDis, fill = small.bui)) +
geom_boxplot(width = 0.4, alpha = 0.7)+
scale_fill_manual(values = c("cyan4", "darkorange"))+
labs(x = "Presença de pequenas construções", y = "Regularidade Funcional (FEve)") +
tema_livro() -> g_feve
grid.arrange(g_fdis, g_feve, nrow = 1)
14.2 Utilize os dados “mafragh” do pacote ade4 para teste o efeito da das variáveis “conductivity”, “silt” e “K2O” na diversidade funcional (método de Petchey e Gaston). Utilize modelos lineares (regressão múltipla) para testar a relação entre essas variáveis e discuta (a) qual variável mais importante (se houver) e (b) se as conclusões são coerentes tendo como base os pressupostos dos modelos lineares. Além disso, caso exista alguma relação significativa, faça um gráfico (scatterplot) da relação da variável mais importante e a diversidade funcional.
Solução:
# Pacotes e dados
library(ade4)
library(vegan)
library(ape)
library(picante)
library(ggplot2)
library(tidyverse)
library(ecodados)
data(mafragh)
trait_ma <- mafragh$traits$tabQuantitative # atributos funcionais das espécies
amb_ma <- mafragh$env # matriz de variáveis ambientais
com_ma <- mafragh$flo # matriz de composição de espécies
names(com_ma) <- rownames(trait_ma)
# 1. Cálculo da distância funcional
dis <- vegdist(trait_ma, "euclidean")
# 2. Construção do dendrograma
dendro_ma <- hclust(dis, "average")
# 3. Transformar dendrograma em classe phylo
tree_ma<- as.phylo(dendro_ma)
# 4. Diversidade Funcional de Petchey & Gaston
FD_ma <- pd(com_ma, tree_ma)$PD
#. 5. modelo linear
lm_FD <- lm(FD_ma~Conductivity+`K+`+Silt+K2O, data=amb_ma)
par(mfrow = c(2, 2), oma = c(0, 0, 2, 0))
plot(lm_FD)
anova(lm_FD) # resultados
#> Analysis of Variance Table
#>
#> Response: FD_ma
#> Df Sum Sq Mean Sq F value Pr(>F)
#> Conductivity 1 2.104 2.104 1.4431 0.2327
#> `K+` 1 35.301 35.301 24.2172 3.76e-06 ***
#> Silt 1 0.232 0.232 0.1592 0.6909
#> K2O 1 0.015 0.015 0.0104 0.9189
#> Residuals 92 134.108 1.458
#> ---
#> Signif. codes:
#> 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
# 6. Para facilitar a construção dos gráficos, adicionar FD no data.frame amb_ma
amb_ma$FD <- FD_ma
# 7. Gráfico
amb_ma %>%
ggplot(aes(x = `K+`, y = FD_ma)) +
geom_point(pch = 21, color = "black", fill = "cyan4", size = 3)+
geom_smooth(method = "lm", color = "black") +
labs(x = "Quantidade de K+", y = "Diversidade Funcional (FD)") +
tema_livro()
14.3 Utilize os dados “mafragh” do pacote ade4 para comparar a composição filogenética e funcional em áreas com alta e baixa concentração de potássio. Para fazer esta comparação, será necessário transformar a matriz de atributos funcionais e a árvore filogenética em matrizes de distância e, depois, utilizar o CWM para criar uma matriz de localidades por composição funcional ou filogenética. Depois, você poderá usar a matriz CWM para testar potenciais diferenças entre concentrações com PERMANOVA e para visualizar com PCoA.
Solução:
# Pacotes e dados
library(ade4)
library(FD)
library(vegan)
library(ggplot2)
library(tidyverse)
library(ecodados)
data(mafragh)
trait_ma <- mafragh$traits$tabQuantitative # atributos funcionais das espécies
amb_ma <- mafragh$env # matriz de variáveis ambientais
com_ma <- mafragh$flo # matriz de composição de espécies
names(com_ma) <- rownames(trait_ma)
# 1. CWM: Cálculo da composição funcional
cwm_fun <- dbFD(trait_ma, com_ma)$CWM
#> FEVe: Could not be calculated for communities with <3 functionally singular species.
#> FDis: Equals 0 in communities with only one functionally singular species.
#> FRic: To respect s > t, FRic could not be calculated for communities with <3 functionally singular species.
#> FRic: Dimensionality reduction was required. The last PCoA axis (out of 3 in total) was removed.
#> FRic: Quality of the reduced-space representation = 0.8976601
#> FDiv: Could not be calculated for communities with <3 functionally singular species.
# 2. criar uma variável categórica a partir da quantidade de K+
amb_ma$k_cat <- ifelse(amb_ma$`K+` > mean(amb_ma$`K+`), "alto", "baixo")
# 2. PERMANOVA
permanova_cwm <- adonis(cwm_fun ~ k_cat, data = amb_ma)
dis_cwm <- vegdist(cwm_fun, "euclidean")
# 3. Betadisper + gráfico PCoA
betadisper_cwm <- betadisper(dis_cwm, amb_ma$k_cat)
plot(betadisper_cwm)