Neste exemplo, aplicamos um Modelo Linear Multivariado Generalizado (MGLM) para analisar como variáveis ambientais influenciam simultaneamente as abundâncias de múltiplas espécies em comunidades ecológicas. Posteriormente aplicamos testamos a mesma hipótese usando um teste de Mantel.
library(readxl)
library(MGLM)
library(vegan)
library(dplyr)
# Dados de comunidade
dados_com <- read_excel("Data/dado_comunidade_gradiente.xlsx")
comunidade <- as.data.frame(dados_com[, -(1:2)]) # remover Habitat e Sites
# Dados ambientais
dados_env <- read_excel("Data/dados_bioclimaticos_pca.xlsx")
variaveis_ambientais <- dados_env[, -1] # remover coluna Site
O modelo é ajustado assumindo distribuição de Dirichlet multinomial. O modelo Dirichlet-multinomial (DM) é apropriado para dados ecológicos de contagem em que as espécies não são independentes entre si e há sobredispersão em relação à distribuição multinomial padrão. Isso é comum em comunidades naturais, onde fatores ambientais afetam múltiplas espécies simultaneamente.
# Converter para matriz (MGLM requer isso)
Y <- as.matrix(comunidade)
X <- as.matrix(scale(variaveis_ambientais)) # padronizar variáveis ambientais
# Ajustar o modelo
modelo_mglm <- MGLMreg(Y ~ X, dist = "DM")
modelo_mglm
## Call: MGLMreg(formula = Y ~ X, dist = "DM")
##
## Coefficients:
## sp_01 sp_02 sp_03 sp_04 sp_05 sp_06 sp_07
## [1,] 1.049927 1.135843 0.916135 0.838931 0.852019 0.990817 1.136598
## [2,] -0.068996 0.614591 0.431601 0.600278 0.668649 0.420845 0.057000
## [3,] 0.194705 0.254263 0.242360 0.297843 0.384102 -0.123417 -0.118993
## [4,] -0.053500 -0.696299 -0.879265 -0.853417 -0.305592 -0.649098 -0.389437
## [5,] -0.298255 -0.076075 0.133181 0.155476 -0.492741 -0.040136 -0.073636
## [6,] 0.057585 -0.320227 -0.030223 0.037591 0.134635 -0.097239 0.025486
## [7,] 0.806333 0.745760 1.084855 0.637762 1.006752 0.554960 0.757647
## [8,] -0.082292 -0.327038 -0.232884 -0.470928 -0.357153 -0.192934 -0.180514
## sp_08 sp_09 sp_10 sp_11 sp_12 sp_13 sp_14
## [1,] 0.943748 1.193143 0.748802 0.799674 0.922138 0.901673 1.231614
## [2,] 0.345036 0.071669 1.342812 0.042499 0.276354 0.567683 -0.341805
## [3,] 0.194122 0.076795 -0.137192 0.285627 0.038394 0.064327 0.187835
## [4,] -0.778941 -0.201306 -1.535881 -0.418517 -0.356636 -0.687162 -0.239147
## [5,] 0.134723 -0.070035 -0.152619 -0.221234 -0.033914 0.158556 0.351535
## [6,] -0.244114 0.115657 -0.026532 0.038141 0.034043 -0.001874 -0.080582
## [7,] 1.042763 0.692897 0.642511 0.873494 0.675646 0.173571 0.427943
## [8,] -0.103062 -0.127159 -0.276309 -0.244258 -0.329612 -0.121321 -0.257822
## sp_15 sp_16 sp_17 sp_18 sp_19 sp_20 sp_21
## [1,] 0.854045 1.079112 1.055329 1.030132 1.072492 0.940642 0.969033
## [2,] 0.839911 0.692860 -0.887798 -1.027355 -1.068120 -0.107631 -0.590376
## [3,] 0.255605 0.283263 -0.044430 -0.210426 -0.286112 0.016967 0.009648
## [4,] -1.234315 -0.898615 0.853208 0.795342 0.810450 0.270360 0.274705
## [5,] 0.114418 -0.089879 -0.270409 -0.304753 -0.268817 -0.527817 -0.175321
## [6,] -0.098029 -0.212896 0.431349 0.223793 0.372613 0.070326 0.253978
## [7,] 1.225537 0.948055 0.135942 0.012962 0.228954 0.135924 0.027749
## [8,] -0.145759 -0.412766 0.811867 0.698847 0.904145 0.694549 0.582708
## sp_22 sp_23 sp_24 sp_25 sp_26 sp_27 sp_28
## [1,] 1.082334 0.777110 0.783096 0.837604 0.978131 0.785303 1.100093
## [2,] -1.056590 -1.022068 -0.870084 -1.136159 -0.863419 -1.291119 -0.927420
## [3,] -0.010632 -0.127262 -0.099834 -0.208952 0.288104 -0.296298 -0.120833
## [4,] 0.572523 0.390865 0.632888 1.036811 0.559642 1.241338 0.520420
## [5,] 0.193817 0.375473 -0.106088 -0.302471 -0.228045 -0.126902 -0.004858
## [6,] 0.169440 0.250111 0.506430 0.225268 0.173047 0.645686 0.063424
## [7,] 0.160201 -0.162381 0.109984 0.094187 0.082641 0.191952 0.062822
## [8,] 0.691479 0.984960 0.763582 1.130004 0.656438 1.194979 0.878877
## sp_29 sp_30 sp_31 sp_32 sp_33 sp_34 sp_35
## [1,] 0.797732 0.642871 1.031046 1.099452 0.537200 0.907375 0.754597
## [2,] -0.742595 -1.105311 -0.307949 -1.023954 -0.980415 -0.676614 -0.900694
## [3,] 0.162013 0.194602 -0.074736 -0.205711 -0.821777 -0.238291 -0.716031
## [4,] 0.421031 1.301981 -0.170672 0.509162 0.426859 0.707974 0.626162
## [5,] -0.244169 -0.473169 -0.164449 0.284145 -0.146532 -0.328126 -0.437890
## [6,] 0.111744 0.372104 -0.035015 0.306463 0.353809 0.236882 0.518124
## [7,] 0.031759 0.074264 0.034885 0.110641 -0.149834 0.151237 0.127421
## [8,] 0.845853 1.258709 0.786859 0.741334 0.981765 0.976699 0.711472
## sp_36 sp_37 sp_38 sp_39 sp_40 sp_41 sp_42
## [1,] 1.112190 0.921909 0.901275 0.940161 0.885461 1.118278 0.939038
## [2,] -1.279668 -0.148442 -1.154377 -0.961769 -0.717302 -1.333847 -1.464857
## [3,] 0.131663 0.005314 -0.172260 0.179406 0.159882 0.104733 0.081681
## [4,] 1.061300 0.606456 0.519548 1.303086 0.643287 0.833177 0.871407
## [5,] 0.364662 -0.234374 0.808027 0.108846 0.291539 0.443077 0.605367
## [6,] 0.281020 0.277376 0.304483 0.148691 -0.024965 0.063555 -0.131593
## [7,] 0.432968 0.276505 0.262250 0.259191 0.431064 0.368669 0.398161
## [8,] 0.159823 -0.332169 0.120069 -0.238324 -0.226829 -0.182642 0.095332
## sp_43 sp_44 sp_45 sp_46 sp_47 sp_48 sp_49
## [1,] 1.060318 0.812014 1.114812 1.230849 1.047359 1.231816 1.257940
## [2,] -0.549599 -0.692811 -1.018130 -1.706085 -1.228961 -0.399263 -1.254162
## [3,] -0.054399 0.251977 0.101157 0.021128 -0.106197 0.141501 -0.006898
## [4,] 0.599967 0.619526 0.590979 1.228748 1.203868 0.415484 0.954599
## [5,] 0.105880 0.046138 0.383511 0.491991 0.369908 0.197807 0.351025
## [6,] -0.088401 -0.098859 -0.091667 -0.170501 -0.001950 -0.085308 0.210304
## [7,] 0.345261 0.332324 0.366078 0.329778 0.275824 0.370817 0.341939
## [8,] -0.131427 -0.282818 0.210184 0.054588 0.058206 -0.104163 0.114076
## sp_50
## [1,] 0.933285
## [2,] -0.886732
## [3,] 0.073171
## [4,] 0.729404
## [5,] 0.132210
## [6,] -0.161967
## [7,] 0.422038
## [8,] -0.129869
##
## Hypothesis test:
## wald value Pr(>wald)
## (Intercept) 114.17926 6.298320e-07
## XBIO1_TempMediaAnual 87.85961 7.529419e-04
## XBIO4_VarTemp 55.42455 2.775478e-01
## XBIO5_TempMax 127.56877 1.042693e-08
## XBIO6_TempMin 41.29242 8.049426e-01
## XBIO12_PrecipAnual 48.16241 5.474115e-01
## XBIO13_PrecipMax 82.89577 2.373721e-03
## XBIO14_PrecipMin 215.32919 2.123208e-22
##
## Distribution: Dirichlet Multinomial
## Log-likelihood: -2649.612
## BIC: 6659.704
## AIC: 6099.225
## Iterations: 9
O modelo retorna os coeficientes estimados para cada espécie em relação a cada variável ambiental. Cada coluna da matriz representa uma espécie e cada linha um coeficiente associado a uma variável preditora. Coeficientes positivos indicam que o aumento daquela variável ambiental está associado ao aumento da abundância da espécie correspondente.
Como são muitos coeficientes, é útil analisar: - quais variáveis ambientais têm efeitos consistentes sobre muitas espécies; - se existem espécies fortemente associadas a determinados gradientes ambientais; - o sinal e magnitude dos coeficientes para espécies ecologicamente indicadoras.
Aqui visualizamos os coeficientes associados a uma variável (ex: temperatura média anual) para todas as espécies.
coefs <- coef(modelo_mglm)
bio1_coefs <- coefs[1, ]
barplot(sort(bio1_coefs), las = 2, cex.names = 0.5,
main = "Efeito da Temperatura Média Anual nas espécies",
ylab = "Coeficiente (log-escala)")
O teste de Mantel permite avaliar se há correlação entre a distância ambiental e a distância de composição de espécies. Se ambas forem significativamente correlacionadas, isso sugere que as diferenças ambientais estão associadas a mudanças na composição das comunidades.
# Matriz de dissimilaridade da comunidade (Bray-Curtis)
dist_comunidade <- vegdist(comunidade, method = "bray")
# Matriz de distância ambiental (Euclidiana)
dist_ambiental <- dist(scale(variaveis_ambientais))
# Teste de Mantel com 999 permutações
mantel_result <- mantel(dist_comunidade, dist_ambiental, permutations = 999)
print(mantel_result)
##
## Mantel statistic based on Pearson's product-moment correlation
##
## Call:
## mantel(xdis = dist_comunidade, ydis = dist_ambiental, permutations = 999)
##
## Mantel statistic r: 0.001628
## Significance: 0.461
##
## Upper quantiles of permutations (null model):
## 90% 95% 97.5% 99%
## 0.0513 0.0724 0.0941 0.1037
## Permutation: free
## Number of permutations: 999
O valor de r
indica a força da correlação entre as duas
matrizes. O p-valor
avalia se essa correlação é
estatisticamente significativa. Resultados significativos (ex:
p < 0.05
) indicam que gradientes ambientais estão
associados a mudanças na composição da comunidade.
O MGLM é uma ferramenta poderosa para modelar simultaneamente múltiplas respostas (espécies) como função de preditores ambientais, sem precisar resumir a comunidade em métricas univariadas. Ele é particularmente útil quando se deseja entender quais espécies respondem a quais variáveis, mantendo a estrutura multivariada do dado ecológico.
O teste de Mantel é uma outra abordagem, ao testar se as diferenças ambientais explicam de forma global as diferenças na composição das comunidades.