Variáveis ambientais e a comunidade

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.

Pacotes necessários

library(readxl)
library(MGLM)
library(vegan)
library(dplyr)

Carregar os dados

# 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

Ajustar o MGLM

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

Interpretação

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.

Visualização dos efeitos de uma variável ambiental

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)")

Teste de Mantel

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.

Considerações finais

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.