Você está na página 1de 40

1

Instituto Nacional de Pesquisas da Amazônia

Curso de Análises Multivariadas – Módulo II (Avançado)

Flavia Costa

William Magnussom

Comandos para análises usando o programa R

Victor Lemes Landeiro

Fernando Figueiredo

Flávia Costa

Pacotes necessários: vegan; MASS; pgirmess; cluster; mclust; mix; mvpart

3 de setembro de 2020
2

Programa e Leituras:

1º dia, manha
Panorama Geral sobre análises inferenciais multivariadas
Análises inferenciais diretas e indiretas (Regressão Multivariada, MANOVA, MANCOVA)

1º dia tarde
Análises inferenciais diretas restringidas (RDA)

Leituras do 1º dia:
 Capitulo 10 (item 10.2) e Capitulo 11 (item 11.1) de Legendre e Legendre. Numerical Ecology
 Capitulo 15 – Cortando as arvores para enxergar melhor a floresta (até a pag 17). O início do
capitulo vai ser uma revisão sobre os conteúdos da semana passada

2º dia, manha
Análises inferenciais diretas restringidas (CCA)

2º dia tarde
Funcao Discriminante (DFA)
MRPP

Leituras do 2º dia:
 Capitulo 15 – Cortando as arvores para enxergar melhor a floresta (pgs 18-20).
 Capitulo 21 de McCune & Grace (CCA)

Leituras complementares:
 Capitulo 24 de McCune & Grace (MRPP)

3º dia, manha
Análises sobre matrizes - Mantel

3º dia tarde
Classificação

Leituras do 3º dia:
 Capitulo 15 – Cortando as arvores para enxergar melhor a floresta (pgs 20-21).
 Dutilleul, P., J. D. Stockwell, D. Frigon, and P. Legendre. 2000. The Mantel test versus Pearson’s correlation
analysis: Assesment of the differences for biological and environmental studies. Journal of Agricultural and
Environmental Statistics 5: 131-150.
 Capitulo 15 – Cortando as arvores para enxergar melhor a floresta (pgs 13-15).
 Fraley, Chris, and Adrian E. Raftery. 2002. Model-based clustering, discriminant analysis and density
estimation. Journal of the American Statistical Association 97: 611-631.

Leituras complementares:
 Fraley, C. and A. E. Raftery. 2006. MCLUST Version 3 for R: Normal Mixture Modeling and Model-Based
Clustering. Technical Report No. 504, Department of Statistics, University of Washington.
3

4º dia, manha
Árvores de Regressão

4º dia tarde
Autocorrelação

Leituras do 4º dia:
 De’Ath, Glenn. 2002. Multivariate Regression Trees : A New Technique for Modeling Species-Environment
Relationships. Ecology 83: 1105-1117.
 Legendre, P. 1993. Spatial Autocorrelation : Trouble or New Paradigm ? Ecology 74, no. 6: 1659-1673.
 Landeiro, V. L., and W. E. Magnusson. 2011. The Geometry of Spatial Analyses : Implications for
Conservation Biologists. Natureza & Conservação 9: 1-13.

Leituras complementares:
 Dormann, C. F., J.M. McPherson, M. B. Araújo, R. Bivand, J. Bolliger, G. Carl, Davies, R. et al. 2007. Methods
to account for spatial autocorrelation in the analysis of species distributional data: a review. Ecography 30:
609-628.

5º dia
Discussao de questoes dos estudos dos alunos

Comentários:
Pacotes necessários: vegan, spam, sp, spdep, tripack, maptools, pgirmess, ecodist, mvpart,
MASS, cluster, mclust
Para o pacote pgirmess funcionar, os pacotes spam, sp, spdep, tripack, maptools precisam estar
instalados!
4

Análises inferenciais sobre dados multivariados podem ser de 3 tipos (figura abaixo, Legendre
p.488):

- Indiretas: usam regressão, análise de variância ou correlação para testar as relações entre eixos
ordenação ou grupos derivados de classificação, com as variáveis preditoras.
* Fazem redução de dimensionalidade.
* analisam a relação entre o maior padrão da matriz de dados e os preditores externos
* A variância explicada pelos preditores refere-se à porção da variância original captada pela
ordenação ou classificação que pôde ser explicada pelos preditores

- Diretas: relacionam diretamente a base de dados original (p.ex a matriz de dados da comunidade)
com as variáveis externas
* Fazem redução de dimensionalidade.
* Analisam a relação entre qualquer padrão da matriz de dados e os preditores externos

- Baseadas em matrizes de associação: usam análises similares à regressão, correlação (Mantel) ou


anova (ANOSIM, MRPP) para testar relações entre matrizes de associação
* Não fazem redução de dimensionalidade.
* A variância explicada refere-se à variância original nas dissimilaridades que pode ser explicada
pelos preditores. Embora toda a variação original esteja incluída (já que não há redução de
dimensionalidade), a variação de fato explicada é das distâncias, e não da distribuição original dos atributos
* Analisam a relação entre o maior padrão da matriz de dissimilaridades da comunidade e os
preditores externos
5
6

Exercício 1. Testes inferenciais multivariados (MANOVA, MANCOVA,


Regressão Multivariada)

Nós agora já sabemos que os eixos de ordenação indireta representam os padrões de co-variação
entre os atributos (que no nosso exemplo eram as espécies). Ao longo de um eixo de ordenação, amostras
mais próximas tem distribuições de seus atributos parecidas. Nós agora podemos perguntar quais gradientes
conhecidos estão associados aos padrões captados por estes eixos. A forma mais simples e intuitiva de
responder esta questão já foi apresentada anteriormente, e se baseia em uma análise visual dos padrões em
gráficos que relacionam os eixos de ordenação às variáveis independentes (os nossos gradientes). Entretanto,
muitos de vocês não devem estar satisfeitos com esta abordagem, e querem saber qual a significância das
associações entre os padrões da matriz de dados original e os gradientes conhecidos.
Já vimos que nós deveríamos verificar que um resultado numérico de um teste estatístico está de
acordo com o padrão visível num gráfico. Se não, pode ser que estamos tirando conclusões sobre artefatos
matemáticos. As mesmas considerações se aplicam aos testes estatísticos multivariados, que em geral são
simples adaptações dos testes univariados. No entanto, os gráficos geralmente apresentados em associação
com alguns testes estatísticos multivariados não podem ser usados para avaliar as hipóteses, e podem ser
muito enganosos se forem interpretados da mesma forma que os gráficos simples que estamos acostumados a
fazer.
Existem duas abordagens distintas para determinar a significância de relações entre conjuntos de
variáveis dependentes e variáveis preditoras. Uma primeira abordagem, baseada nas análises indiretas de
gradientes, é uma extensão natural do teste visual que fazemos ao examinar os gráficos mostrados acima.
Entretanto, a maior parte da literatura publicada em ecologia de comunidades, mostra análises baseadas em
uma outra abordagem, chamada de análise direta. A análise direta tem este nome porque a matriz de dados
original é relacionada diretamente com as variáveis independentes.
A análise direta mais geral é a regressão múltipla multivariada (RMM), que é uma extensão da
"análise de correlação canônica". Considere a seguinte equação:

Y1,Y2,Y3,...Yi = a + b1*X1+ b2*X2+..... bi*Xi

A análise pergunta se há uma combinação linear de variáveis do lado esquerdo da igualdade que
pode ser explicada por uma combinação linear das variáveis do lado direito.

1.1 Regressão múltipla multivariada

Sp1, Sp2, Sp3, Sp4, Sp5, Sp6 = a + b1*Chuva + b2*Altitude

molu.m<-as.matrix(molu) # Usamos as.matrix porque neste caso o objeto com as


variáveis deve ser da classe matrix.
ambi.m<-as.matrix(ambi)
chuva<-ambi.m[,1]
alt<-ambi.m[,2]

resu<-lm(molu.m~ambi.m)
summary(resu) # Note que este resultado possui um output para cada espécie, use a barra de
7

rolagem para ver os resultados que ficaram para trás.

Os resultados podem ser combinados para produzir uma probabilidade única da “comunidade” estar
associada aos preditores:
fit.molu <- manova(molu.m ~ ambi.m$chuva + ambi.m$altitude)
summary(fit.molu) # univariate ANOVA tables
summary(fit.molu, test="Wilks") # ANOVA table of Wilks' lambda
summary(fit.molu, test="Pillai") # ANOVA table of Pillai traces

Perguntas:
a. Quantas espécies estão associadas aos preditores ambientais? Vc diria que “a comunidade de
moluscos (ou plantas) está associada a este preditor”? Porque? Que proporção das espécies da
comunidade precisaria estar associada para vc achar que a comunidade esta associada?

Se o resultado da análise indicar que há um efeito significativo de uma variável independente sobre
as variáveis dependentes, a interpretação não é tão fácil. O efeito significativo pode ter aparecido por que
uma única variável (p.ex. Y2) tem um padrão associado a alguma das variáveis independentes ou por que
uma combinação de variáveis (p.ex. Y2,Y5 e Y10) tem algum padrão associado. Mesmo que encontremos algo
"significativo", ainda será necessário muita exploração de dados para descobrir o que aconteceu. Talvez seja
por isso que é tão raro encontrar RMM sendo usada na literatura ecológica.

Neste caso nós estamos perguntando se algum componente da comunidade está sendo afetado, mas isso
significa que a comunidade está sendo afetada?

Há também o problema dos graus de liberdade numa análise assim. Você está fazendo tantos testes, que o
efeito precisa ser muito forte para encobrir a chance de ter um efeito só pelo número de variáveis.

Entretanto, uma questão diferente, mas igualmente válida, seria "a precipitação e a altitude explicam
o padrão mais forte nas variáveis dependentes"? Esta é a pergunta feita pelas análises inferenciais de
gradientes indiretos, nas quais o padrão mais forte de variação dos dados originais é extraído por ordenação e
só depois relacionado com as variáveis independentes. No exemplo de plantas, nós sabemos de antemão que
há apenas um gradiente direcionando estes dados, mas os leitores não saberão isto com seus dados de campo.
Numa situação real, em que não soubéssemos qual é a dimensionalidade real da estrutura nos dados,
poderíamos ter assumido que dois eixos NMDS são a melhor representação do padrão mais forte nas
variáveis dependentes. Usando estes dois eixos de NMDS como variáveis dependentes, podemos fazer uma
RMM que teria a seguinte estrutura geral:
NMDS1, NMDS2 = a + b*precipitação + altitude
Caso decidíssemos que 1 eixo de ordenação é suficiente para representar o maior padrão da comunidade,
poderímos fazer uma análise com a estrutura:
NMDS1 = a + b*precipitação + altitude

1.2 Regressão sobre um 1 eixo principal de ordenação


(neste caso, usando o primeiro eixo principal de uma PCA)

pca.molu<-prcomp(molu)
scor.molu<-pca.molu$x
resu2<-lm(scor.molu[,1]~ambi.m)
8

summary(resu2)

1.3 Regressão sobre 2 eixos principais de ordenação

Nem sempre é possível resumir os padrões principais da comunidade a 1 único eixo de ordenação, mas
podemos fazer uma regressão semelhante a que fizemos acima usando mais do que um eixo de ordenação:
Eixo 1, Eixo 2 = a + b1*Chuva + b2*Altitude
Ao fazer uma pergunta deste tipo, nós cumprimos a premissa de ortogonalidade entre as variáveis
dependentes (os eixos de análises Eigen são sempre ortogonais).

Y<-scor.molu[,1:2] #criamos um arquivo com os 2 primeiros eixos da


ordenação por PCA

fit <- manova(Y ~ ambi.m$chuva + ambi.m$altitude)


summary.aov(fit) # univariate ANOVA tables
summary(fit, test="Wilks") # ANOVA table of Wilks' lambda
summary(fit, test="Pillai") # ANOVA table of Pillai traces

Perguntas
b. O resultado do teste conjunto do efeito dos preditores ambientais sobre a comunidade, representada
agora pelos eixos de ordenação, está de acordo com sua expectativa (o que vc respondeu na questao
a)?
c. Qual a diferença entre estas análises (2.2 e 2.3) e a que vc fez em 2.1 ?

Neste caso nossa pergunta mudou. Nós não estamos mais perguntando se algum padrão da comunidade
está associado às variáveis independentes, mas sim se o Maior Padrão da comunidade está associado à estas
variáveis.
Ambas as questões foram válidas, mas a diferença é importante. A segunda questão, que perguntou
sobre o efeito de chuva sobre o padrão mais forte foi mais poderosa neste caso. Isto ocorre frequentemente,
porque o uso de uma ordenação indireta para reduzir a dimensionalidade reduz o número de comparações
internas da análise e efetivamente permite uma análise com mais graus de liberdade. Além disso, ao focar no
padrão global dos dados, a análise remove muito do ruído associado com as peculiaridades de cada espécie
que não está associado com os padrões gerais na comunidade.

Os eixos criados por PCoA também são ortogonais e podem ser usados para o mesmo tipo de análise.
Eixos de NMDS podem ser usados, embora seja difícil garantir a ortogonalidade. Na prática, a maior parte
das vezes os resultados por NMDS e PCoA são semelhantes, quando os padroes são fortes.

1.4 MANOVA
Quando as variáveis externas (preditoras) são categóricas, nossa análise se transforma em uma análise de
variância multivariada (MANOVA). Todas as precauções exigidas para a ANOVA se aplicam para a
"análise de variância multivariada" (MANOVA). Na verdade, ela é apenas um caso especial da análise de
RMM, que usa variáveis substitutas (dummy variables) para codificar as categorias da mesma forma que
ANOVA de categorias é uma extensão de regressão simples. A estrutura da análise é igual à apresentada
9

para a RMM, com a diferença apenas de que a variável independente é categórica.


A forma de fazer no R é igual a que usamos acima para fazer a regressão multivariada. Mas para termos
categorias vamos precisar transformar nossas variáveis externas (a chuva e altitude).

# O comando cut irá "dividir" os gradientes de chuva e altitude em categorias, breaks=3 especifica
que o gradiente será dividido em três categorias, labels dá os nomes das categorias.
cat.chuva<-cut(ambi$chuva,breaks=3,labels=c("Pouca","Médio",
"Muita"))
cat.alt<-cut(ambi$alt,breaks=3,labels=c("Pouca","Médio", "Muita"))

#para rodar a MANOVA


fit <- manova(Y ~ cat.chuva + cat.alt) # Y é a matriz contendo os 2 primeiros eixos
de ordenação de PCA de moluscos

#você pode escolher qual teste de significância global prefere, na opcão “test”
summary(fit, test="Wilks") # ANOVA table of Wilks' lambda

#podemos usar tambem os eixos de ordenação derivados de um NMDS:


library(vegan)
resu<-metaMDS(molu)
scor.nmds<-resu$points
resu.manova<- manova(scor.nmds~cat.chuva+cat.alt)
summary(resu.manova, test="Pillai")

Há muitas estatísticas que podem ser usadas para avaliar a significância de MANOVA, mas simulações
indicam que uma delas, denominada "Pillai trace", é a mais robusta à violações das premissas (Olson 1976,
Johnson e Field 1993). Um teste não-paramétrico análogo a MANOVA, que usa aleatorização para gerar
valores de probabilidade (Anderson 2001) pode ser o mais apropriado em muitas situações.

Leitura da Aula:

Capítulo 10 de: Legendre, P. & Legendre,L. 1998. Numerical Ecology. Elsevier, Amsterdan, The
Netherlands.
ver paginas 481 até 495, para uma visão geral da interpretação de estruturas multivariadas
ver página 518 para regressão multivariada
ver pagina 522 para regressão sobre eixos de ordenação

Análises Diretas Restringidas


10

Exercício 2. Análise de Redundância (RDA)

Existem análises inferenciais que seletivamente removem o “ruído” antes de fazer uma ordenação e
estas podem ser muito mais complicadas para interpretar. O conceito por trás destas análises foi elaborado
primeiramente pelo grande Ronald Fisher. No entanto, nós vamos começar com a análise canônica mais
simples, a "Análise de Redundância" (RDA). O processo é simples (Legendre e Legendre 1998). A estrutura
da análise, da mesma forma como mostramos antes é:

Variáveis dependentes (Y1, Y2, Y3....Yn) = a + b1X1 + b2X2 + .... bnXn (variáveis idenpendentes ou
preditoras)

Primeiro, uma regressão múltipla é feita entre as variáveis preditoras e cada uma das variáveis
dependentes. Se você tiver 20 variáveis dependentes (Y), vai precisar fazer 20 regressões múltiplas. Se tiver
somente uma variável preditora, faria 20 regressões simples. Os valores estimados para os objetos por esta
regressão (os Y estimados) são então usados para substituir os dados das variáveis dependentes na tabela
original. As regressões garantem uma relação linear perfeita entre os dados e as variáveis preditoras. É uma
redução de ruído seletiva; elimina todo o “ruído” não associado com a hipótese sendo testada. Isto garante
que voce não vai “perder” uma relação com as variáveis preditoras somente por causa dos dados!
Os novos dados, que excluem todas as informações que não apoiam a hipótese, são usados numa
ordenação por PCA para criar eixos que descrevem a comunidade. Para “ajudar” a interpretar os gráficos, os
atributos e as variáveis preditoras (os Xi) podem ser projetados no gráfico (triplot) da mesma forma que nós
usamos os loadings dos atributos para produzir biplots em PCA.

Vamos fazer uma RDA passo a passo, para entender o processo:


1. Pegue a matriz de plantas ou moluscos e as variáveis ambientais e centre os valores em média 0 e desvio
padrão 1. Faça uma regressão de cada uma das espécies contra as variáveis ambientais, p.ex: Sp1= a +
b1*Chuva + b2*Altitude.

moluc<-scale(molu,center=T,scale=T)
ambic<-scale(ambi,center=T,scale=T)

lm.sp1<-lm(moluc[,1]~ambic[,"chuva"]+ambic[,"altitude"])
lm.sp2<-lm(moluc[,2]~ ambic[,"chuva"]+ ambic[,"altitude"])
lm.sp3<-lm(moluc[,3]~ ambic[,"chuva"]+ ambic[,"altitude"])
lm.sp4<-lm(moluc[,4]~ ambic[,"chuva"]+ ambic[,"altitude"])
lm.sp5<-lm(moluc[,5]~ ambic[,"chuva"]+ ambic[,"altitude"])
lm.sp6<-lm(moluc[,6]~ ambic[,"chuva"]+ ambic[,"altitude"])

… e salve os valores estimados para cada um destes modelos.


cruz<-lm.sp1$fitted.values
quadr<-lm.sp2$fitted.values
bola<-lm.sp3$fitted.values
estre<-lm.sp4$fitted.values
traco<-lm.sp5$fitted.values
trian<-lm.sp6$fitted.values
11

Apenas para entender oque as regressões acima estão fazendo, vamos plotar os valores ajustados contra as
variáveis ambientais (vc pode trocar a espécie e olhar todas se quiser) e comparar com os valores originais:

par(mfrow=c(2,2))
plot(cruz,ambi[,1],pch=16,ylab="Chuva",main="Valores ajustados")
plot(molu[,1],ambi[,1],pch=16,,ylab="Chuva",xlab="cruz",main="Valores
originais")
plot(cruz,ambi[,2],pch=16,ylab="Altitude")
plot(molu[,1],ambi[,2],pch=16,ylab="Altitude",xlab="cruz")

2. Junte todos os estimados de todas as espécies num só arquivo. Esta é a nova matriz que será usada pela
ordenação.
estimados<-data.frame(cruz,quadr,bola,estre,traco,trian)
rownames(estimados)<-rownames(molu) # estamos dizendo que o nome das linhas da
tabela de valores estimados deve ter os mesmos nomes que as linhas da tabela molu.

3. Use a nova matriz para fazer uma ordenação com PCA e guarde os 2 primeiros eixos
pca.est<-prcomp(estimados)# Faz a PCA com os dados estimados
eixos<-pca.est$x[,1:2]
rownames(eixos)<-rownames(molu)# Salva o nome das linhas do objeto eixos com o
nome das linhas do objeto molu

4. Para fazer o Triplot (preditores, espécies, sites), calcule a correlação dos atributos com os eixos da PCA.
sploadings1<-cor(estimados,eixos)

5. Faça também as correlações das variáveis ambientais com os eixos da PCA


ambient<-cor(ambi,eixos)

6. Use os arquivos que contém os eixos da PCA (eixos), os loadings das espécies (sploadings1) e as
correlações com as variáveis ambientais (ambient) para fazer o triplot usando a receita abaixo
# colocar os dados na mesma escala
eixos2<-scale(eixos)
sploadings2<-scale(sploadings1,center=T,scale=T)

par(mfrow=c(1,3))
plot(eixos2,type="n",main="Nossa RDA")
abline(h=0,v=0,lty=2)
text(eixos2,rownames(eixos))
text(sploadings2,rownames(sploadings2),col="red")
text(ambient,rownames(ambient) ,col="blue")
arrows(0,0,ambient[1,1],ambient[1,2],col="blue")
arrows(0,0,ambient[2,1],ambient[2,2],col="blue")

7. O R já tem um pacote pronto para fazer RDA, vamos usá-lo para comparar o resultado:
12

library(vegan)
rda.pronta<-rda(molu,ambi)
plot(rda.pronta,scaling=3,display=c("lc","sp","cn"),main="RDA
pronta")

7. Agora vamos fazer uma PCA simples para comparar


pca.simples<-prcomp(molu)
eixos.s<-pca.simples$x[,1:2]
plot(eixos.s[,1],eixos.s[,2],type="n")
text(eixos.s[,1],eixos.s[,2])
abline(h=0,v=0,lty=2)

# Faca também o biplot da PCA, para entender a diferenca entre este e o triplot da RDA

biplot(pca.simples)
# aqui as espécies, e não as variáveis externas, são mostradas como
setas

Perguntas:
a. O resultado que vc obteve usando o procedimento passo-a-passo foi semelhante ao do pacote
pronto? Caso não tenha sido, qual a razão?
b. A posição das parcelas no gráfico de ordenação da RDA foi semelhante ao da PCA? Porque isso
acontece?
c. Qual sua interpretação do gráfico da RDA?

9. Existem diferentes modos de fazer o triplot, e isso pode mudar a interpretaçao. Vamos usar estas
diferentes opçoes para entender o que de fato estamos representando.

par(mfrow=c(1,2))

Opção1. gráfico usando os scores lineares (lc)


plot(rda.pronta,scaling=3,display=c("lc","sp","cn"),main="Scores
Lineares (LC)")

Opção2. gráfico usando os scores "pesados pela média" (wa)


plot(rda.pronta,scaling=3,display=c("wa","sp","cn"),main="Scores
Pesados (WA)")

Perguntas:
d. Sua interpretacao geral dos efeitos das variáveis ambientais sobre a comunidade de moluscos ou
plantas muda entre os gráficos acima? Deveria mudar?
e. O que eles significam?

Na opção 1, vocês plotaram os “LC” (Linear Combination Scores), que são combinações lineares das
variáveis “restritoras” (as variáveis externas que foram usadas para restringir a variação das espécies).
13

Segundo Oksanen (2007) esta forma de plotar os resultados da RDA mostra apenas onde os sítios deveriam
estar (segundo a predição das variáveis ambientais) e não onde eles de fato estão, em termos da composição
de espécies. Se os dados das variáveis ambientais não mudarem, as posições dos sítios serão sempre as
mesmas, mesmo que as espécies sejam trocadas. Isto significa que estamos plotando nossa hipótese e não o
teste dela.

Para conferir isto, vamos misturar os dados para ver que os LC não mudam de posição, mesmo mudando a
distribuição das espécies entre as parcelas.

# cria um "vetor de bagunça" nos dados


bagunca<-sample(1:10)
#bagunça dos dados
molu.bagunca<-molu[order(bagunca),]
#O nome das parcelas deve ficar na ordem original.
rownames(molu.bagunca)<-rownames(molu)
#Graficos
par(mfrow=c(1,3))
plot(rda(molu,ambi),display=c("lc","cn","sp")
,main="Dados Originais")
plot(rda(molu.bagunca,ambi),dis=c("lc","cn","sp")
,main="Dados baguncados")
# salvar os resultados para poder fazer o procrustes
orig<-scores(rda(molu,ambi),display="lc")
bagu<-scores(rda(molu.bagunca,ambi),display="lc")
#plotar a sobreposição dos resultados
plot(procrustes(orig,bagu,cex=2))
# Este gráfico mostra os gráficos das duas análises sobrepostos, mas girando o segundo para procurar a
posição em que os pontos se sobreponham. Se os pontos estão na mesma posição nas duas ordenações,
apenas um ponto aparecerá no gráfico final, se eles divergem, aparecerá uma seta mostrando onde o segundo
ponto está.

Perguntas:
f. Observando o gráfico acima (retorne aos comandos para entender como vc fez o gráfico!), qual sua
conclusão sobre o que a RDA faz?

Como os dados usados na ordenação foram combinações lineares das variáveis preditoras, os eixos
criados também são combinações lineares das variáveis preditoras. Não inesperadamente, gráficos da
ordenação vão reforçar (forçar) a associação entre a comunidade e as variáveis preditoras. Os gráficos,
usualmente apresentados em duas dimensões, dão a impressão de que ainda há ruído, mas isto é porque parte
da variação está escondida nos outros eixos. Nos gráficos que fizemos até agora, os pontos nos gráficos
representaram os dados, e os eixos e linhas representaram os modelos. No gráfico de RDA, os pontos
representam o modelo e, portanto, não podem ser usados para avaliar o modelo. O gráfico resultante é
imponente, e provavelmente poucas pessoas teriam coragem de admitir que não entenderam nada.
Mesmo que o gráfico sempre dê uma impressão falsa, podemos usar permutação para perguntar se a
relação é mais forte do que esperado para uma relação aleatória entre variáveis preditoras e os valores dos
atributos. Podemos usar os níveis de significância fornecidos pelos programas para decidir se vale a pena
14

continuar com a hipótese de que alguma das variáveis preditoras afeta a comunidade. No entanto, o tri- ou
quadriplot da RDA não pode ser usado para indicar a magnitude ou forma da relação. Para isso, precisamos
plotar as densidades dos atributos (nosso caso, as espécies) contra os eixos criados, ou contra as variáveis
que o teste estatístico indicou que são “significantes”.
Em resumo, a RDA é uma ordenação sobre dados que foram “restringidos” pelas variáveis
preditoras. Sendo assim, o resultado da ordenação quando apresentado em gráficos, mostra apenas como é a
relação entre objetos, atributos e variáveis preditoras segundo a hipótese do estudo. Toda a variação não
associada com as variáveis preditoras foi descartada no primeiro passo do processo, e portanto o gráfico da
ordenação não pode ser usado para avaliar as relações que foram hipotetizadas.

Leitura da Aula:

Legendre, P. & Legendre,L. 1998. Numerical Ecology. Elsevier, Amsterdan, The Netherlands. Capítulo 11.
15

3. Exercício de Análise de Correspondencia Canônica (CCA)


Da mesma forma que RDA é uma extensão de PCA sobre dados “restringidos”, uma análise análoga a RDA
foi desenvolvida sobre a Análise de Médias Recíprocas (RA) por ter Braak (1986). Neste caso, os dados
originais não são substituídos, mas os eixos resultantes de uma RA são substituídos pelos valores esperados
de uma regressão entre os valores do eixo e as variáveis preditoras. O método originalmente foi
desenvolvido para RA, mas os mesmos resultados podem ser obtidos usando Análise de Correspondência
(CA). A análise é chamada Análise de Correspondência Canônica, e é uma das técnicas mais usadas para
análises de comunidades biológicas.
Os resultados de CCA podem ser representados em relação a eixos LC ou WA. Os eixos LC são
combinações lineares das variáveis preditoras e podem ser derivados de forma totalmente independente dos
dados sobre os atributos. Gráficos dos eixos LC mostram exatamente a estrutura da hipótese e, portanto, não
podem ser usados para avaliar a(s) hipótese(s) nula(s). No entanto, da mesma forma que RDA, podem ser
usados para criar triplots que impressionam e para consolidar sua posição na cultura científica. Os eixos WA
também são combinações lineares das variáveis preditoras, mas são levemente “contaminados” pelos dados
sobre os atributos. Podem ser até mais difícieis de interpretar que os eixos LC. Não representam somente a
hipótese e nem somente os dados. De qualquer forma, é importante determinar se seu programa está
fornecendo escores LC ou WA. Inclusive, o que está sendo mostrado pode variar dependendo da versão do
mesmo programa.
Da mesma forma que RDA, permutação pode ser usada para avaliar a “significância” estatística das
variáveis preditoras, e estas estatísticas são as únicas informações reais sobre a relação entre preditores e
atributos que esta análise fornece. Não podemos indicar como interpretar os gráficos resultantes. Talvez você
nem precise de orientação neste sentido, porque um triplot da CCA geralmente é tão complexo que você
pode interpretar como quiser.

A tabela abaixo mostra os cálculos dos dois primeiros passos de uma CCA feita pelo modo iterativo,
como mostrado por ter Braak (1986) na descrição do método. Primeiro criamos um gradiente arbitrário e
calculamos os escores das espécies. Depois calculamos os escores dos locais, que são chamados de WA
scores (Weighted scores). Usamos os WA scores como variável resposta em uma regressão contra as
variáveis ambientais e pegamos os valores estimados dessa regressão. Estes valores estimados são chamados
de LC scores. Depois é só repetir o processo até estabilizar.

cruz quadr bola estre traco triang ARB WA1 LC1 WA2 LC2
P1 10 9 15 2 1 0 1 3.67 3.53 4.18 2.60
P2 0 0 0 0 13 12 2 4.99 -2.75 5.62 -2.04
P3 7 4 0 0 0 0 3 2.23 2.63 3.94 1.95
P4 0 1 0 3 14 20 4 5.07 -1.04 5.57 -0.77
P5 0 0 0 10 8 6 5 6.03 -0.74 5.50 -0.53
P6 0 0 2 5 4 0 6 6.16 0.17 5.22 0.11
P7 0 4 11 0 0 0 7 4.25 2.01 4.16 1.49
P8 0 0 7 3 0 0 8 5.53 1.16 4.55 0.85
P9 0 0 0 9 5 0 9 6.67 -0.56 5.43 -0.42
P10 0 0 1 15 10 8 10 6.07 -2.04 5.46 -1.50
SS1 1.82 2.94 4.72 7.42 5.30 4.65
SS2 3.161 2.73 2.26 0.73 -1.36 1.62

Obs: Cada coluna de escores LCx é feita através da regressão entre o WAx e as variáveis ambientais
(as variáveis ambientais não estão mostradas nesta tabela) .
16

1. Vamos fazer uma CCA passo a passo (como descrito em McCune e Grace 2002).

a. Gerar os WA scores
arb<-1:10
SS1<-colSums(molu*arb)/colSums(molu);SS1
WA1<-colSums(t(molu)*SS1)/rowSums(molu);WA1

b. Fazer regressão múltipla entre os site scores e as variáveis ambientais, usando como pesos os totais
dos sites (que são os locais)
site.scores1<-glm(WA1~ambi$chu+ambi$alt,weights=rowSums(molu))

c. Salvar os valores ajustados pela equação acima - estes são os LC scores1


LC1<-site.scores1$fitted.values

d. Agora repetimos o processo para a segunda rodada do processo iterativo.


SS2<-colSums(molu*LC1)/colSums(molu);SS2
WA2<-colSums(t(molu)*SS2)/rowSums(molu);WA2

site.scores2<-glm(WA2~ambi$chu+ambi$alt,weights=rowSums(molu))

e. Salvar os valores ajustados pela equação acima - estes são os LC scores2


LC2<-site.scores2$fitted.values

f. Para atingir a solução final, é preciso repetir o processo, sempre calculando os WA scores e usando-
os na regressão múltipla para obter os valores estimados (“site.fitted”), chamados de LC scores,e
usá-los em substituição ao gradiente arbitrário usado na primeira rodada. As soluções obtidas em
cada rodada vão sendo comparadas, até que se atinja um critério de estabilidade, da mesma forma
como na RA. Voce precisa repetir o processo até estabilizar! (lembre que vc já definiu um critério
para estabilização quando fizemos as Médias Recíprocas.)

2. Agora vamos fazer a CCA com o pacote pronto


cca.mol<-cca(molu,ambi)

3. Comparação CCA passo a passo com a pronta (com LC scores). Uma reta mostra que os valores
são proporcionalmente iguais.

# para comparar os LC scores


par(mfrow=c(1,2))
plot(scores(cca.mol,display="lc",choices=1),LC8,xlab="Scores CCA pronta",
ylab="Scores Nossa CCA", main="Linear Scores (LC)")

# para comparar os WA scores

plot(scores(cca.mol,display="wa",choices=1),WA8,xlab="Scores CCA pronta",


ylab="Scores Nossa CCA", main="Weighted Scores (WA)")

Pergunta:
a. Sua CCA foi igual à do pacote pronto do Vegan? Se não foi, você sabe porquê?
17

4. Agora faça o triplot da CCA, primeiro com os LC scores e depois com os WA scores.
par(mfrow=c(1,2))
plot(cca.mol,display= c("lc","cn","sp"), main="Linear Scores (LC)")
plot(cca.mol,display= c("wa","cn","sp"), main="Weighted Scores (WA)")

Perguntas:
b. Sua interpretação geral dos efeitos das variáveis ambientais sobre a comunidade de moluscos ou
plantas muda entre os gráficos acima? Deveria mudar?
c. O que eles significam?

Na CCA os escores LC são combinações lineares ponderadas (weighted), onde os pesos são o total de
indivíduos de cada parcela. Misturando as espécies na CCA causa mudanças nos pesos, e isso pode causar
mudanças nos escores LC. A magnitude da mudança depende da variabilidade do total dos sites.

5. Vamos misturar os dados para mostrar que na CCA os LC mudam um pouco sua posição, quando
mudamos as espécies de parcelas.

bagunca<-sample(1:10)# cria um "vetor de bagunça" nos dados


molu.bagunca<-molu[order(bagunca),]#bagunça dos dados
rownames(molu.bagunca)<-rownames(molu)#O nome das parcelas deve ficar na ordem
original.
cca.bagunca<- cca(molu.bagunca,ambi)
par(mfrow=c(1,3))
plot(cca.mol),display=c("lc","cn","sp"), main="Dados Originais")
plot(cca.bagunca,display=c("lc","cn","sp"), main="Dados Baguncados")
orig<-scores(cca(molu,ambi),display="lc") # salvar os resultados
bagu<-scores(cca(molu.bagunca,ambi),display="lc") #salvar os resultados
plot(procrustes(orig,bagu,cex=2))
# Este gráfico mostra os gráficos das duas análises sobrepostos, mas girando o segundo para procurar a
posição em que os pontos se sobreponham. Se os pontos estão na mesma posição nas duas ordenações,
apenas um ponto aparecerá no gráfico final, se eles divergem, aparecerá uma seta mostrando onde o segundo
ponto está.

Leitura da Aula:

Legendre, P. & Legendre,L. 1998. Numerical Ecology. Elsevier, Amsterdan, The Netherlands. Capítulo 11.
18

Exercício 4. Função Discriminante

A primeira técnica canônica foi desenvolvida por Ronald Fisher (1936) e é chamada “Análise de
Função Discriminante" (DFA). Este método é derivado de MANOVA, e tenta determinar a combinação
linear de variáveis que melhor discrimina dois ou mais grupos. A lógica é identica à da RDA, exceto que as
variáveis dependentes são categóricas.

A FD pode ter dois propósitos:


1) identificação de novos objetos (determinar a qual grupo cada objeto pertencem)
2) discriminação – determinar que preditores contribuem mais apara a formação dos grupos
O primeiro passo na FD é determinar se de fato há grupos, e isso é equivalente a uma MANOVA. O segundo
passo é a construção das funções discriminantes, que serão combinações lineares dos preditores. A FD é uma
forma de análise inversa, onde os grupos são as variáveis resposta (Y) e as variáveis quantitativas serão os
preditores (X).

GrupoA, GrupoB, GrupoC... Grupo n = a + b1X1 + b2X2 + .... bnXn (variáveis independentes ou preditoras)

Figura de Legendre e Legendre ilustrando a derivação de uma função discriminante (z) para separar as
espécies A e B. Neste exemplo a função discriminante é a combinação linear dos preditores x1 e x2.

As funções discriminantes são baseadas em preditores padronizados, para poder acessar as contribuições
relativas destes para a formação dos grupos. Já as funções de identificação são baseadas nos valores originais
dos preditores, para que se possa fazer a alocação de novas observações aos grupos.
Como com RDA e CCA, se as premissas das análises são cumpridas, as probabilidades associadas
com os testes inferenciais podem ser usadas para guiar suas interpretações biológicas (ver Williams e Titus
1988 para uma discussão dos perigos de desconsiderar as premissas das análises). No entanto, como em
RDA e CCA, DFA produz gráficos que ilustram a hipótese e não os dados.

Vamos fazer uma Função Discriminante para separar grupos de plantas ou moluscos de acordo com
19

categorias de chuva ou altitude.

1. Use a matriz de moluscos ou plantas


1. Usar a variável que deu relação significativa com cada um destes grupos
2. Vamos usar as categorias de chuva e altitude que criamos em um exercício anterior (cat.chuva e
cat.alt)
3. Fazer uma função discriminante. No R o comando é lda(dados, grouping variable). lda = Linear
Discriminant Analisys. A função lda é do pacote MASS.
library(MASS)
resu<-lda(molu,cat.chuva)

4. Olhe o gráfico da classificação das amostras segundo suas categorias


plot(resu)

1. Agora vamos criar três matrizes com dados aleatórios.


aleat1<-matrix(sample(0:20,60,replace=T),10,6) # irá ordenar as parcelas em
uma seqüência arbitrária (mudar a ordem das parcelas), isso faz com que a relação com os gradientes se
perca.
aleat2<-matrix(sample(0:20,60,replace=T),10,6)
aleat3<-matrix(sample(0:20,60,replace=T),10,6)

7. Repita a análise de função discriminante usando as matrizes com dados aleatórios e as categorias de
chuva ou altitude.
resu.aleat1<-lda(aleat1,cat.chuva)
resu.aleat2<-lda(aleat2,cat.chuva)
resu.aleat3<-lda(aleat3,cat.chuva)

8. Compare agora os gráficos de cada análise.


par(mfrow=c(2,2))
plot(resu,main="dados originais")
plot(resu.aleat1,main="dados aleatórios 1")
plot(resu.aleat2,main="dados aleatórios 2")
plot(resu.aleat3,main="dados aleatórios 3")

9. Vamos comparar agora com o resultado de uma MANOVA testando o efeito de chuva. Use o
resultado do NMDS feito acima (scor.nmds) – se vc não tem este arquivo, vai precisar executar de
novo o exercício 1.4

resu.manova2<- manova(scor.nmds~cat.chuva)
summary(resu.manova2,,test="Pillai")

Pergunta:
a. O que a comparação dos gráficos de função discriminante gerados com dados ao acaso e com os
dados originais mostrou?
b. Os gráficos da Função Discriminante podem ser usados para testar a existência de grupos? Por que?
20

A análise sempre encontra combinações lineares das variáveis para separar as categorias,
especialmente se o número de observações é pequeno, o que é típico de experimentos ecológicos (Williams e
Titus 1988). O gráfico da análise discriminante não deve ser usado para decidir se as categorias existem.
Para isso deve-se usar as estatísticas que testam esta diferença por um procedimento que é essencialmente
igual à MANOVA. A utilidade de DFA é criar equações que permitem determinar a qual categoria uma
determinada amostra deve pertencer, com base nos valores de seus atributos. Entretanto, não deposite
confiança em equações para separar categorias que foram geradas por DFA, a menos que elas tenham sido
validadas por um conjunto independente de dados, ou pelo menos por um procedimento Jackknife (Manel et
al. 1999).

Agora vamos aprender a usar a Funçao Discriminante para prever novas observações:
Use a matriz de pessoas que medimos no ano anterior, retirando da tabela a coluna que fala qual o sexo da
pessoa
pessoas<-read.table("pessoas.txt",header=T)
pessoas1<-pessoas[,-8]

#Vamos usar como grupos o sexo das pessoas. Você vai precisar criar um vetor que tem apenas o sexo das
pessoas
sexo<-pessoas[,8]

# Gere a função discriminante

library(MASS)
clas_pessoas<-lda(pessoas1,sexo)

#Olhe o gráfico da classificação das amostras segundo suas categorias


plot(clas_pessoas)

#Importe os dados das medidas de pessoas que não foram usadas para gerar a Funçao Discriminante acima

pessoas.new<-read.table("pessoas_new.txt",header=T)
pessoas.new1<-pessoas.new[,-8)]

#Use a FD para prever o sexo das novas pessoas


clas<-predict(clas_pessoas, pessoas.new1); clas

Perguntas:
O que o gráfico gerado pela FD sugere? Esta interpretação é correta?
A classificação das novas pessoas, com base na função discriminante, foi correta?

Leitura da Aula:
Legendre, P. & Legendre,L. 1998. Numerical Ecology. Capítulo 11, paginas 616 – 620.

McCune, B & Grace, J.B. 2002. Analysis of Ecological Communities. Capitulo 21.
21

Análises sobre matrizes de distância

Exercício 5. MRPP

MRPP - Multi Response Permutation Procedure of Within- versus Among-Group Dissimilarities

MRPP é um teste para saber se há uma diferença significativa entre dois ou mais grupos de amostras. Esta
diferença pode ser uma questão de localização (diferenças em média) ou de distribuição (diferença na
distância dentro do grupo). O método é filosoficamente e matematicamente relacionado à análise de
variância, na medida em que compara as dissimilaridades entre e dentro de grupos. Se dois grupos de
unidades de amostragem são realmente diferentes (por exemplo, na sua composição de espécies), a média
das dissimilaridades de composição dentro do grupo deve ser inferior à média da dissimilaridade entre dois
conjuntos aleatórios de unidades amostrais extraídas da população.

1. Calcular a Matriz de distancias entre os objetos


2. Calcular a distancia media dentro de cada grupo (xi)
3. Calcular a distancia media ponderada dentro do grupo
Delta=Somatorio de Ci * xi
Sendo Ci o peso, que depende do numero de itens no grupo (em geral Ci é ni/N, sendo ni o numero
de amostras do grupo i, e N o número total de amostras)
4. Determinar a probablidade de encontrar um delta tao pequeno quanto o que foi observado. Isso
pode ser feito com permutação, alocando os objetos aleatoriamente aos grupos e calculando os
deltas para estes grupos. Com isto se pode construir uma distribuição de valores de delta que
representa uma distribuição ao acaso dos objetos em grupos, e comparar o delta observado para
saber se é mais extremo do que o esperado ao acaso. Como para problemas com muitos grupos ou
muitos objetos isso é muito trabalhoso, é possível aproximar a distribuição esperada ao acaso com a
distribuição tipo III de Pearson (ver detalhes em McCune e Grace 2002).
A distância entre os grupos pode ser calculada com qualquer métrica, e você deve ter os mesmos cuidados
para escolher a distância que melhor representa as relações biológicas que está estudando como discutimos
nas ordenações.

No R, a função é:
mrpp(dat, grouping, permutations = 1000, distance = "euclidean",
weight.type = 1, strata)

# aplicando para os dados de moluscos e as categorias de chuva:


mrpp(molu,cat.chuva,distance="bray")

O método não vai fornecer nada mais do que uma probabilidade de que existam os grupos e uma
estatística que diz quanto de homogeneidade interna nos grupos existe, que é uma forma de medir quão
fortes eles são. Esta estatística é o A, que vai ser 1 quando todos os objetos dentro de cada grupo são
exatamente iguais (ou seja, a distância entre eles é zero) e vai ser zero quando a heterogeneidade é igual à
esperada ao acaso.
Inclusive, esta probabilidade final não indica se há diferenças entre todos os grupos, da mesma forma
que uma ANOVA, que só diz que há alguma diferença entre grupos. Se você precisar saber quais grupos
22

diferem, precisa testar as diferenças par a par, mas depois precisa fazer um controle para o número de testes,
com uma correção de Bonferroni.

Pergunta:
a. Este teste é equivalente à MANOVA que fizemos anteriormente? Explique porque.

Desafio:
b. Crie os comandos para demonstrar a relação entre os dois métodos. Pode usar o arquivo de dados
de “pessoas” para o seu teste (lembre que sexo é a variável categórica que define os grupos, e que
para ela funcionar como categoria vc precisa transforma-la em um fator, assim:
sexop=as.factor(sexo)).

Se os grupos que estão sendo testados são comunidades, você pode querer aplicar uma análise de
espécies indicadoras para determinar quais espécies são mais associadas com cada grupo. Esta análise
determina quais são as espécies que indicam fortemente um grupo, por serem mais restritas a ele que o
esperado ao acaso (especificidade) e por serem observadas frequentemente no grupo (fidelidade).

O cálculo é:
Especificidade: Akj = Nindkj / Nind+k
Onde Nindkj é o número médio de indivíduos da espécie j nos locais que pertencem ao grupo k
e Nind+k é a soma da abundância médio da espécie j sobre os diferentes grupos

Fidelidade: Bkj = Nlocaiskj / Nlocais+k


Nlocaiskj é o número de locais do grupo k onde a espécie j está presente
Nlocais+k é o número total de locais no grupo k

Valor indicador = 100 * Akj * Bkj

Para fazer no R:
library(indicspecies)
indval = multipatt(molu, cat.chuva, control = how(nperm=999))
summary(indval)

Leitura da Aula: McCune, Bruce, and James B. Grace. 2002. Chapter 24. MRPP.
23

Exercício 6. Teste de Mantel

A abordagem que vamos tratar agora pode ser genericamente chamada de “análises inferenciais sobre
matrizes de associação”. A grande diferença entre esta forma e as anteriores é que aqui não acontece redução
de dimensionalidade, que é o que caracteriza a ordenação. A matriz de associação da comunidade (como a
mostrada na tabela 14) é relacionada diretamente com uma ou mais matrizes de associação derivadas das
variáveis preditoras. O teste de associação entre as matrizes é parecido com um teste de correlação, mas a
probabilidade é avaliada com base em permutações. Existem muitas variações deste teste, para lidar com
modelos que se assemelham à correlações, regressões simples ou múltiplas ou análises de variância, mas
todos estes testes são derivados do teste de Mantel (Mantel e Varland 1970).
Neste exercício, vamos relacionar as distancias de composição da comunidade que estamos estudando,
com as distâncias geográficas entre elas. Também vamos relacionar as distancias da comunidade com as
distancias de chuva.
O primeiro passo é medir as coordenadas geográficas (x, y) das parcelas e montar uma tabela com elas
(chamada por exemplo “coord.molu”).

library(vegan)
coord.molu<-read.table("coord_molu.txt",header=T)

# calculo das distancias geograficas e ambientais


dist.chuva<-vegdist(ambi$chuva,"man")
dist.molu.fisica<-vegdist(coord.molu,"euclidean")

# calculo das distancias de composicao entre as parcelas


dist.molu.bray<-vegdist(molu,"bray")

# graficos
par(mfrow=c(1,2))
plot(dist.molu.fisica,dist.molu.bray,
main="Dist Composicao x Dist geográfica")
plot(dist.chuva,dist.molu.bray,
main="Dist Composicao x Dist ambiental")

Pergunta:
a. Interprete os gráficos: existe uma relação entre a composição de espécies de moluscos (ou
plantas) e as distancias geográficas? E com as distancias ambientais?

# teste de mantel simples


## os defaults do R: mantel(xdis, ydis, method="pearson", permutations=1000, strata)

mantel(dist.molu.fisica,dist.molu.bray)
mantel(dist.chuva,dist.molu.bray)

#teste de mantel parcial


# tirando efeito de chuva
mantel.partial(dist.molu.fisica,dist.molu.bray,dist.chuva)

# tirando efeito de distancia geográfica


24

mantel.partial(dist.chuva,dist.molu.bray,dist.molu.fisica)

Pergunta:
b. Os testes de mantel estão de acordo com sua interpretação dos gráficos? O que cada teste diz?
c. Por que os testes parciais dão resultados diferentes dos testes simples?

Da mesma forma como antes chamamos a atenção de que as análises inferenciais diretas e indiretas
respondem à perguntas diferentes, o mesmo vale para as análises de matrizes de associação. A pergunta que
está sendo feita neste tipo de análise é sobre as relações entre as distâncias (dissimilaridades) de uma
variável e as distâncias de outra(s) variável(s), e não sobre as relações entre os valores originais destas
variáveis. Sendo assim, a variância explicada por uma regressão ou correlação entre matrizes não é a mesma
que a variância explicada para os dados originais.

Desafio:
Vocês podem comprovar a afirmacao acima fazendo uma correlação simples entre a abundância da
espécie Cruz e a altitude, e depois fazer uma correlação entre as distâncias de parcelas para a espécie Cruz e
as distâncias de altitude. Cole aqui os comandos que vc usou e o resultado.
Qual sua conclusao?

O fato de que não há redução de dimensionalidade nas análises de matrizes de associação pode ser
importante em algumas situações, já que preserva toda a informação contida na matriz de dados original. Isto
pode ser o caso quando o objetivo do estudo é comparar dois grupos de dados para saber se tem estrutura
semelhante (p.ex. uma comparaçao da composição de árvores adultas e árvores jovens). Entretanto, a maior
parte dos dados ecológicos contém uma grande quantidade de ruído, que em geral é descartada no processo
de ordenação, e que não será descartada em análises de matrizes de associação. Se o objetivo é entender que
fatores afetam a estrutura de um grupo de dados, análises que permitem visualizar a estrutura (= padrão), são
geralmente mais úteis.
Como em outras análises de gradientes diretos, os testes de permutação do tipo Mantel e similares
perguntam se há alguma associação entre as variáveis dependentes e as independentes, e não se os fatores
contribuem para os maiores padrões. Eles também têm a deficiência de só testar se os padrões nos dados
estão associados com a(s) variável(eis) independente(s) mas não descreverem o padrão. Como em outras
técnicas estatísticas, estes testes têm uso limitado para refinar nossos modelos biológicos, se os usarmos
apenas para gerar valores de probabilidade. Eles testam as hipóteses, mas não fornecem uma indicação real
do porquê elas são rejeitadas ou não.

Os testes para detectar relações entre matrizes de associação podem ser problemáticos, pois
conjuntos de dados sem correlação podem dar origem a matrizes de associação que são correlacionadas
(Dutilleul et al. 2000), como vcs viram no exercício acima!

Leitura da Aula:

Dutilleul, Pierre, Jason D. Stockwell, Dominic Frigon, and Pierre Legendre. 2000. The Mantel test versus
Pearson’s correlation analysis: Assesment of the differences for biological and environmental studies.
Journal of Agricultural and Environmental Statistics 5, no. 2: 131-150.

Legendre, P. & Legendre,L. 1998. Numerical Ecology. Elsevier, Amsterdan, The Netherlands.
Capítulo 10, páginas 552-560
25

Classificação

7.1 Classificação hierárquica

Classificar objetos em categorias, classes, grupos, etc..., é um pré-requisito para nomeá-los. A lógica de
classificar consiste em tentar alocar objetos semelhantes ao mesmo grupo e objetos diferentes a grupos
diferentes. Ou seja, minimizar as diferenças entre objetos do mesmo grupo e maximizar as diferenças entre
objetos de grupos distintos.
Para classificar algo precisamos reconhecer descontinuidades em um ambiente que, às vezes é discreto,
mas que geralmente é contínuo. Infelizmente, na maioria das vezes os pesquisadores classificam os seus
dados antes mesmo de perguntar se eles realmente formam grupos verdadeiros.
O processo de formação de grupos pode ser aglomerativo, adicionando-se objetos um por vez para
formar grupos, ou divisivo, separando os objetos em subgrupos, até que cada subgrupo se constitua de
apenas um objeto. A classificação pode ser hierárquica, quando os grupos são organizados em uma
hierarquia representada por um dendograma, ou não. Na maior parte dos métodos de classificação, o ponto
de início é o cálculo de uma matriz de associações entre os objetos.

Exemplo de uma
classificação hierárquica

Existem também várias formas de unir 2 objetos para formar um grupo:


- método de ligação completa ou vizinho mais distante : a dissimilaridade de um objeto para um
grupo é definida como sendo igual a sua dissimilaridade com o objeto mais distante deste
grupo. Quando dois grupos vão ser aglomerados, sua dissimilaridade é igual a maior
dissimilaridade entre qualquer par de objetos, sendo um objeto de cada grupo.
- método de ligação simples ou vizinho mais próximo : é o oposto do método do vizinho mais
distante. A dissimilaridade entre grupos é definida como sendo a mínima dissimilaridade entre
qualquer par de objetos, sendo um objeto de cada grupo.
- método de ligação por média de grupo: A dissimilaridade entre grupos é definida como sendo a
dissimilaridade média. Como a média pode ser calculada de várias formas, existem vários
métodos de média de grupo. UPGMA (unweighted pair-groups method using arithmetic
26

averages) é o método mais usado, a média usada é aritimética e todos os objetos tem o mesmo
peso. WPGMA (weighted pair group arithmetic averaging) permite que se dê pesos diferentes
aos objetos. UPGMC (unweighted pair group centroid) usa o centróide dos grupos (mediana) e
todos os objetos tem o mesmo peso. WPGMC (weighted pair group centroid) permite que se
dê pesos diferentes aos objetos.

Classificação pelo método


da media de grupo
(UPGMA)

Classificação pelo método


do vizinho mais próximo

Nós vamos fazer uma classificação das pessoas na classe, para ver se podemos separar homens e mulheres.
Para isso, vamos medir os colegas e montar uma tabela como a abaixo, salve com o nome de
pessoas.txt.
NÃO esqueça de retirar da tabela o sexo e peso antes de rodar as analises. Pense se os dados deveriam ser
padronizados antes de classificar, e qual deveria ser a padronização.

Cabeça Pescoço Peito Cintura Quadril Coxa Peso Sexo


Maria ...
João ...
... ...

1. Para fazer a classificação use a função agnes (Agglomerative Nesting -Hierarchical Clustering) do
pacote cluster.
library(cluster)

1. Usar a distância euclidiana e experimentar os diferentes tipos de ligação


Seis métodos estão disponíveis. São eles: "average" ([unweighted pair-]group average method,
UPGMA), "single" (single linkage), "complete" (complete linkage), "ward" (Ward's method), "weighted"
(weighted average linkage) and its generalization "flexible" which uses (a constant version of) the
27

Lance-Williams formula. Default is "average".

Exemplo:
lig.upgma<- agnes(pessoas,method="average",metric="euclid")
plot(lig.upgma,which.plots=2)
## average indica que o método de ligação será UPGMA
## which.plots=2 indica que o gráfico a ser plotado é o dendograma.

## Para usar outras medidas de associação (p.ex bray abaixo, mas poderia ser qq outra) na função agnes use:
agnes(vegdist(pessoas,"bray"),dis=TRUE, method="average")

Desafio:
Use diversos métodos de ligação disponíveis e gere os gráficos. Vc pode também mudar a medida de
distancia entre os atributos das pessoas e refazer as análises (mas precisa justificar pq escolheu cada medida).

Pergunta:
a. A classificação muda com os diferentes métodos?
b. Quantos grupos existem, segundo a classificação?
c. Qual dos métodos que vc usou acima é melhor e porquê?
d. É necessário padronizar os dados? Se sim, quais?

Muitas vezes é possível determinar se há grupos reais nos dados usando ordenação. Vamos ver isso
fazendo uma ordenação dos dados das pessoas.

2. Ordene os dados acima com PCA em 2 dimensões. O exemplo abaixo usa PCA, mas você deve
escolher o método que você acha mais adequado. Não esqueca de usar o arquivo que não tem a coluna de
sexo.
pca.pess<-prcomp(pessoas1)

3. Plote o PCA1 x PCA2 e use os nomes das pessoas para plotar no gráfico.
plot(pca.pess$x[,1],pca.pess$x[,2],type="n")
text(pca.pess$x,type="n",labels=sexo)

Perguntas:
e. Você consegue distinguir os homens das mulheres neste gráfico melhor ou pior que na classificação?
f. Olhando a distribuição de homens e mulheres neste gráfico, voce consegue entender os resultados da
classificação hierárquica? Descreva suas conclusões.

4. Agora plote o primeiro eixo da PCA contra o peso das pessoas. O que este resultado lhe diz?
plot(pessoas$peso, pca.pess$x[,1])

Desafio:
28

Podemos agora testar se há diferença morfométrica entre os sexos com os scores da PCA, usando uma
MANOVA. Cole aqui os comandos para isso e seu resultado.

Pergunta:
g. O que o teste que você fez acima indica sobre a existência dos grupos “homem” e “mulher”?

A escolha da técnica de agrupamento é provavelmente mais difícil do que a escolha entre as técnicas
de ordenação, e só pode ser feita baseando-se na estrutura esperada dos dados. A opção de tentativa e erro é
inaceitável. Se usarmos todas as combinações possíveis de medidas de distâncias e técnicas de agrupamento,
é quase garantido que poderemos produzir um agrupamento que se conforme a qualquer hipótese ecológica
que formulemos. Portanto, ficar pescando entre as diferentes técnicas é usar a estatística de um modo
inadequado.

A análise de gradiente (variáveis contínuas) foi capaz de detectar melhor o padrão do que a análise
que tentou criar categorias, ainda que o padrão que estivéssemos procurando pudesse ser descrito por
categorias. Todas as distâncias comumente empregadas e as técnicas de agrupamento e de ordenação
fornecem resultados qualitativamente similares para este exemplo. O fato de a variável categórica "sexo" não
poder explicar em detalhes as diferenças entre nossos objetos (estudantes) poderia nos levar a procurar por
variáveis contínuas, como nível de hormônios ou idade, que poderiam ser melhores preditores das diferenças
entre os estudantes.

7.2 Classificação não hierárquica

Até agora vimos com detalhes a classificação hierárquica e baseada em conectividade (método
aglomerativo). Agora veremos um pouco sobre métodos que particionam os objetos de forma independente,
baseados no centróide. O método mais conhecido e usado é o k-means, onde k é o numero de clusters. O
processo consiste num processo iterativo e se inicia ao estabelecer k pontos ao acaso que representam os
centróides dos grupos. Calcula-se então a distância de cada ponto a todas as k médias. Cada objeto então será
alocado no grupo que contém o centróide mais próximo. Calcula-se a soma dos desvios (SSE) de cada ponto
ao centroide do grupo. O processo se repete deslocando-se um pouco o centroide no espaço multivariado e
então define-se novamente a qual grupo cada objeto pertence pelo mesmo método acima e calcula-se
novamente a SSE. A classificação final é dada por aquela que produz os menores SSE. O detalhe é que o
processo se inicia com um número de grupos pré-definidos. Ou seja o método vai sempre produzir clusters
mesmo onde eles não existem. Existem algumas formas de selecionar a posteriori o número ideal clusters,
mas eles apresentam o problema de não convergirem para um mínimo local, ou seja, existe uma oscilação no
SSE ótimo conforme aumenta-se o número de clusters.
29

Um método promissor de agrupamento, mas pouco utilizado em estudos ecológicos é o método de


agrupamento por modelos de distribuição normal multivariados baseados em máxima verossimilhança (ver
Fraley e Raftery 2002). Este método consiste em ajustar modelos de distribuição normal à distribuição dos
dados, ou seja, cada cluster é definido por uma distribuição normal. Os parâmetros das distribuições (médias
e covariâncias) são estimados através de máxima verossimilhança. Diferente do método do k-means, que
tende a reconhecer grupos esféricos, este método de modelos normais permite identificar grupos não
esféricos, com diferentes formas, volumes e orientação no espaço. O método apresenta também um critério
para definir o número de grupos que provavelmente deve existir naquele conjunto de dados, segundo cada
modelo assumido (esférico, elíptico, com volumes iguais ou diferentes, etc...) dado pelo Critério de
Informação Bayesiana (BIC). Conforme aumenta-se o número de parâmetros aumenta-se o ajuste dos
modelo, porém com a possibilidade de causar um superajustamento (overfitting). O BIC é dado portanto
através de um balanço entre ajustamento do modelo e número de parâmetros, este chamado de termo de
penalidade. O melhor modelo é dado então pelo maior BIC. Portanto, para um conjunto de dados que não
forma grupos, o método indicará um modelo com 1 cluster apenas, pois os nossos dados se ajustam apenas a
uma distribuição normal, e não a duas, três, etc... Outra vantagem do método é que ele é gera valores de
incertezas para cada objeto, ou seja, cada objeto tem um probabilidade associada que diz o quanto é provável
que aquele objeto faça parte daquele cluster que o método indicou. Este tipo de classificação que não
considera que um objeto faça parte exclusivamente de um grupo ou outro, mas sim que gera um grau de
probabilidade para cada objeto é também chamado de agrupamento difuso (Fuzzy methods).
30

Vamos fazer um exercício utilizando os três métodos apresentados até agora: hierárquico aglomerativo,
k-means e agrupamento baseado em modelos normais.

#### carregar pacotes cluster, mclust e mix

# importar arquivo "grupos nao esfericos.txt". Este arquivo representa medidas de altura e quadril de
14 homens e mulheres (dados simulados)

gne<-read.table("grupos nao esfericos.txt",header=TRUE)


gne

#salve uma tabela apenas com as variá veis altura e quadril


gne.aq<-gne[,2:3];gne.aq

#plot as pessoas em funçã o da altura e quadril e marque os sexos


plot(gne.aq$Altura,gne.aq$Quadril,type="n")
text(gne.aq$Altura,gne.aq$Quadril,label=gne$Pessoas)

Perguntas:
a. Ao observar o grá fico, você consegue identificar grupos?
b. Quantos? Qual a característica que mais chama atençã o nestes grupos?

#### aplicando método hierá rquico aglomerativo


#use método "average"
hc.gne1<-agnes(gne.aq,metric="euclidian",method="average")

#divida a janela dos grá ficos em 2 partes


par(mfrow=c(1,2),mar=c(3,4,1.6,2)+0.1,mgp=c(2.1,1,0))
plot(hc.gne1,which.plot=2)

#observe a relaçã o entre homens e mulheres

#use outro método, p.ex "single linkage"


hc.gne2<-agnes(gne.aq,metric="euclidian",method="single")
plot(hc.gne2,which.plot=2)

Perguntas:
c. Ao observar o grá fico, você consegue identificar grupos?Quantos?
d. Os agrupamentos sã o os mesmos nos dois métodos?

### aplicando o método k-means


# o método k-means exige que voce especifique o nú mero de clusters que você quer e o no. de
iteraçõ es
#vamos dividir nossa janela de grá ficos em 4 partes
par(mfrow=c(2,2),mar=c(3,4,1.6,2)+0.1,mgp=c(2.1,1,0))

#aplique K=means com 10 iteracoes


km.gne1<-kmeans(gne.aq,2,iter.max=10)
31

plot(gne.aq, col = km.gne1$cluster ,pch=16)

Pergunta:
e. Ao observar os gráficos, você consegue identificar grupos?
f. Quantos?

# k-means é um processo iterativo entã o vamos mudar o nú mero de iteraçõ es má ximas


km.gne2<-kmeans(gne.aq,2,iter.max=50)
plot(gne.aq, col = km.gne2$cluster ,pch=16)
km.gne3<-kmeans(gne.aq,2,iter.max=100)
plot(gne.aq, col = km.gne3$cluster ,pch=16)
km.gne4<-kmeans(gne.aq,2,iter.max=200)
plot(gne.aq, col = km.gne4$cluster ,pch=16)

Pergunta:
g. Os agrupamentos sã o os mesmos em todos os grá ficos?
h. Os grupos formados correspondem à sua expectativa?

## Vamos aplicar o método de agrupamento baseado em modelos de distribuiçã o normal


##aplique a funçã o MClust que busca o melhor modelo que se ajusta aos dados baseado em má xima
verossimilihança

library(mclust)
Mc.gne<-Mclust(gne.aq,control=emControl())

# vamos calcular os valores de BIC (critério de informaçã o bayesiana) para cada modelo e para cada
nú mero de clusters
BIC.gne<-mclustBIC(gne.aq,control=emControl())

#plot os valores de BIC para cada modelo


plot(BIC.gne,xlab="numero de clusters")

Perguntas:
h. É prová vel que existam grupos? quantos?
i. Qual o melhor modelo e o nú mero prová vel de grupos? (As siglas da legenda no grá fico acima
representam os modelos da tabela abaixo, estamos usando o método EM)
32

#plot agora o grá fico com a classificaçã o gerada pelo melhor modelo
mclust2Dplot(gne.aq,parameters=Mc.gne$parameters,z=Mc.gne$z,what="classification")

#vamos plotar agora as incertezas de cada membro pertencer ao grupo escolhido pelo modelo
coordProj(gne.aq,uncertainty=Mc.gne$uncertainty,what="uncertainty")

# o que significa o tamanho dos pontos?

Perguntas:
j. Compare agora os três métodos de classificação. Eles produziram o mesmo número de grupos e se
sim, os grupos dos diferentes métodos são correspondentes?
k. Discuta por que os métodos reconheceram certos grupos ou não, de acordo com as premissas dos
métodos.

Leitura da Aula:

Fraley, Chris, and Adrian E. Raftery. 2002. Model-based clustering, discriminant analysis and density
estimation. Journal of the American Statistical Association 97: 611-631.

Material de suporte:

Fraley, Chris, and Adrian E Raftery. 2009. MCLUST Version 3 for R : Normal Mixture Modeling and
Model-Based Clustering. Technical Report 504, Department of Statistics, University of Washington.
33

Outros métodos de análise

Exercício 8. Árvores de regressão e Árvores de regressão multivariada

Os métodos discutidos acima para relacionar conjuntos multivariados de dados ou os escores de uma
ordenação à variáveis preditoras têm sempre a premissa de que as relações entre variáveis preditoras são
lineares e aditivas. Além disso, embora seja possível incluir interações entre variáveis, conforme o número
de preditores aumenta, a quantidade de interações possíveis aumenta exponencialmente, o que torna estes
modelos complexos impossíveis de analisar com os métodos clássicos derivados de regressões. Uma
possibilidade para detectar interações complexas são as Árvores de regressão ou classificação. A árvore pode
ser construída para uma variável dependente (por exemplo os escores do primeiro eixo de ordenação) ou
sobre toda a matriz multivariada. As árvores de regressão/classificação tem sido vistas principalmente como
ferramentas de exploração dos dados, mais do que ferramentas para teste de hipóteses específicas. Como
ferramenta exploratória, pode ser muito útil para detectar relações não-lineares e múltiplas interações.
McCunne & Grace 2002 fornecem uma boa descrição da técnica e exemplos.

O algorítimo para a árvore de regressão é:


1. Pegar a primeira variável preditora e repartir os dados com base em cada uma das (2 L-1-1, sendo L o
número de níveis da variável preditora) possíveis combinações de 2 grupos de valores desta variável
(p.ex. se a variável for chuva, com valores 10,20,30,40 – os dados poderão ser repartidos em grupos
assim:

1) <=10 e >10
2) <=20 e >20
3) <=30 e >30, etc...Calcular a heterogeneidade interna (“impureza”) de cada grupo formado em
cada repartição. Impureza é calculada por um estimador log-likelihood dos desvios para a média.

2. Fazer o mesmo processo para as outras variáveis preditoras

3. A melhor repartição da melhor variável (aquela que minimiza a impureza do grupo) é selecionada
como sendo a primeira partição da árvore. Esta repartição vai gerar 2 ramos na árvore.

4. O processo é repetido dentro de cada ramo, usando todas as variáveis preditoras novamente, e assim
por diante, até não restar impureza alguma dentro de cada ramo (ou seja, cada ramo ser composto
34

por uma única amostra), ou até que se atinja um valor mínimo de impureza definido a priori, ou um
certo número mínimo de amostras por ramo, também definido a priori.

O caminho através da árvore, até cada grupo de folhas terminais, define o conjunto de características que
prevê a ocorrência de um certo intervalo de valores da variável dependente (caso de uma árvore de
regressão) ou prevê a ocorrência de um grupo (no caso de uma árvore de classificação).

1. Neste exercício, vamos usar dados reais multivariados. Os dados são de abundancia de espécies de
ervas em parcelas. A pergunta do estudo foi: Como luz, textura do solo e distancia do igarapé afetam
a estrutura da comunidade de ervas? Como existe uma interação de distancia do igarapé e textura do
solo no efeito sobre a comunidade, vamos plotar este gráfico antes de fazer a árvore de regressão,
para vocês poderem visualizar o que é a interação.
A árvore de regressão vai ser feita sobre um eixo de ordenação gerado por NMDS (mas poderia
também ser feita sobre mais do que um eixo). No final, vamos também calcular as espécies
indicadoras para cada ramo da árvore, para facilitar a interpretação.

#Instale o pacote rpart e rpart.plot e chame os outros pacotes necessários.

library(rpart)
library(rpart.plot)
library(vegan)
library(MASS)
library(indicspecies)

#Chamando arquivos e preparando para as análises

ervas<-read.csv("ervas.csv")
dim(ervas);names(ervas)

abiotico<-ervas[,c(1:7)]
dim(abiotico);names(abiotico)

biotico<-ervas[,8:75]
dim(biotico);names(biotico)

# Ordenação das espécies de ervas com NMDS em 1 dimensao

#padronizar dados por linha


biotico1.pad<-
decostand(biotico,"total",MARGIN=1);head(biotico1.pad)

## rodando NMDS 1d e extraindo os scores


mds1dp<-metaMDS(biotico1.pad,k=1,"bray",autotransform=F)$points
mds1dp

## Juntando arquivos

total = cbind(ervas,mds1dp)
head(total)
35

#Gráfico da interação dos efeitos de textura do solo e distancia do igarapé sobre a comunidade reduzida a um
eixo de ordenacao (NMDS1d)

ripario = total[which(total$Dist.igarape<100),];nrow(ripario)
nripario = total[which(total$Dist.igarape>100),]; nrow(nripario)

reg.ripa = lm(MDS1 ~ Areia, data=ripario)


reg.nripa = lm(MDS1 ~ Areia, data=nripario)
summary(reg.ripa)
summary(reg.nripa)

plot (MDS1 ~ Areia, data=tudo2,type='n',cex.lab =


1.3,font=2,cex.axis=1.1,
ylab="Herb Community Composition (NMDS axis)", xlab="% Sand")
points (ripario$Areia,ripario$MDS1,pch=16,cex=2)
points (nripario$Areia,nripario$MDS1,pch=1,cex=2)
abline(reg.nripa,lty=1, lwd=1)

#Arvore de regressão
library(rpart)
library(rpart.plot)

names(total)
colnames(total)[3] <- "Sand_Content"
colnames(total)[4] <- "Canopy_Openness"
colnames(total)[5] <- "Distance_from_Stream"

arv<-rpart(MDS1 ~ Distance_from_Stream + Canopy_Openness +


Sand_Content,data=total,cp=0.05)
rpart.plot(arv)

# este é o sumário completo da arvore, para você ver a ordem de importância dos preditores para as
partições, e descobrir qual o numero de cada grupo formado. Isso vai ser necessário para interpretar as
espécies indicadoras abaixo.

summary(arv)

#Espécies indicadoras dos grupos

# extraindo o vector que tem a alocação das amostras para os grupos


class.arv <- arv$where
total1<-cbind(total,class.arv)

indval = multipatt(biotico, tudon$class.arv, control =


how(nperm=999))
summary(indval)

Uma árvore de regressão é construída de forma que na árvore final cada folha seja um local. Porém os
ramos usados para chegar nas folhas explicam muito pouca variância dos dados, por isso é necessário
"podar" a árvore. O default do programa é podar os ramos que explicam menos de 1% (cp=0.01). O número
36

de partições na árvore depende do critério usado para julgar quanto "erro" é aceitável dentro de cada grupo
criado. Se usarmos um valor pequeno, vamos produzir uma árvore com maior número de ramos, pois o
algoritmo continua a dividir até atingir aquele critério baixo de erro aceitável.

Neste exercício acima nós usamos um critério de 5% de redução de erro para determinar novas
partições. Vamos mudar o critério de erro e ver como a árvore cresce. Para isso, use cp=0.001.

Perguntas:
a. Qual a sua interpretação da árvore de regressão obtida no exercício?
b. O que significa uma partição, dentro de um grupo obtido na partição anterior?
c. De que forma detectamos interações na árvore de regressão? Exemplifique com as árvores obtidas
no exercício.

Leitura da Aula:

De’Ath, Glenn. 2002. Multivariate Regression Trees : A New Technique for Modeling Species-Environment
Relationships. Ecology 83: 1105-1117.

Shalizi, C.Lecture 10: Regression Trees. Course 36-350: Data Mining. Carnegie Mellon University. 

Exercício 9. Autocorrelação espacial – detecção com


Correlogramas (Moran)
Para detectar se existe auto-correlação, em que distância ela ocorre, qual a forma da estruturação
espacial (tendência, degrau, manchas com diferentes formas) e se ela é endógena (variável dependente) ou
exógena (variável independente) é necessário fazer correlogramas.
No exercício abaixo nós vamos plotar a distribuição de algumas variáveis no espaço e calcular o
correlograma. É importante olhar o gráfico de distribuição da variável junto com o correlograma, para
entender que forma de distribuição espacial dá origem a qual forma de correlograma.
No pacote pgirmess do R que usaremos a seguir, as auto-correlações significativas são
automaticamente pintadas de vermelho no gráfico.

1. Importe a tabela de dados legendre.txt. Esta tabela possui uma simulação de dados similar a feita por
Legendre e Legendre (1998) na página 722 figura 13.5. As duas primeiras colunas da tabela são coordenadas
geográficas e as 5 colunas restantes são a variáveis simuladas, com as quais vamos calcular a autocorrelação
espacial e fazer correlogramas de Moran.
Plote os dados da tabela usando a função persp ou image para ver o padrão dos dados, depois
execute o pacote pgirmess. A função correlog calcula, testa e plota os valores I de Moran em um
correlograma que usa n classes de distância, dependendo dos comandos usados.

dados<-read.table("legendre.txt", header=T)
37

library(pgirmess)

par(mfrow=c(2,2))
image(matrix(dados[,3],15),col=gray(seq(0,1,0.01)))
persp(1:15,1:15,matrix(dados[,3],15),expand=0.3,theta=20,col = "gray" )
plot(correlog(dados[,1:2],dados[,3],nbclass = 16)) # Moran é o default

par(mfrow=c(2,2))
image(matrix(dados[,4],15),col=gray(seq(0,1,0.01)))
persp(1:15,1:15,matrix(dados[,4],15),expand=0.3,theta=20,col = "gray" )
plot(correlog(dados[,1:2],dados[,4],nbclass = 16))

par(mfrow=c(2,2))
image(matrix(dados[,5],15),col=gray(seq(0,1,0.01)))
persp(1:15,1:15,matrix(dados[,5],15),expand=0.3,theta=20,col = "gray" )
plot(correlog(dados[,1:2],dados[,5],nbclass = 16))

par(mfrow=c(2,2))
image(matrix(dados[,6],15),col=gray(seq(0,1,0.01)))
persp(1:15,1:15,matrix(dados[,6],15),expand=0.3,theta=20,col = "gray" )
plot(correlog(dados[,1:2],dados[,6],nbclass = 16))

par(mfrow=c(2,2))
image(matrix(dados[,7],15),col=gray(seq(0,1,0.01)))
persp(1:15,1:15,matrix(dados[,7],15),expand=0.3,theta=20,col = "gray" )
plot(correlog(dados[,1:2],dados[,7],nbclass = 16))

2. Agora vamos analisar a autocorrelacao de dados reais de altitude da Reserva Ducke. Para isso,
vamos precisar criar a tabela de dados com as coordenadas x e y, e os valores de altitude. Salve esta
tabela e importe para o R. Em seguida, faca o correlograma da altitude. Desafio: fazer o
correlograma com intervalos de classe de distância de 1km, que corresponde à distancia entre
parcelas. Dica: o argumento nbclass ajusta o número de classes de distancia.

Perguntas:
a. Interprete os correlogramas do exercício 1 em função dos mapas, como os valores de
autocorrelacao correspondem a mudanças na variável representada nos mapas?
b. Quais padrões nos mapas correspondem a correlogramas com a mesma forma? O que isso
nos diz sobre a interpretação da autocorrelacao?
c. Existe autocorrelacao nas altitudes na Reserva Ducke? Até qual escala? Se você precisa
planejar um desenho de amostragem, que distancia entre amostras você usaria para evitar
autocorrelacao nesta variável?

Leitura da Aula:

Legendre, Pierre. 1993. Spatial Autocorrelation : Trouble or New Paradigm ? Ecology 74, no. 6: 1659-1673.
38

Landeiro, Victor Lemes, and William Ernest Magnusson. 2011. The Geometry of Spatial Analyses :
Implications for Conservation Biologists. Natureza & Conservação 9, no. 1: 1-13.

Exercício 10. Simulação de dados e escolha de métodos de análise

Você deve gerar comunidades que tenham as características que você espera encontrar nos seus
estudos. Estas comunidades "ideais" são criadas para gerar dados que podem ser usados para testar métodos
de análise que são adequados para determinado tipo de comunidade. Assim, você pode escolher "a priori" o
melhor método para analisar o tipo de dados que você espera encontrar no campo.

1. Que características tem a sua comunidade?


a. Quantas espécies?
b. Qual a abundância de cada espécie?
c. As abundâncias diferem muito entre si – há espécies muito dominantes e outras muito raras? Que
proporção de espécies raras existe em sua comunidade?
d. De que forma vc acredita que estas espécies se distribuem ao longo do gradiente principal que vc
está estudando - distribuição uniforme? distribuição modal? onde se localiza o pico da moda de
distribuição – em algum extremo do gradiente ou no meio? a distribuição é bimodal?
e. A diferença de abundância entre os picos e os menores valores é grande?
f. Há grande substituição de espécies ao longo do seu gradiente principal, ou a maior parte das espécies
está presente ao longo de todo o gradiente?

2. Desenhe o gráfico de ordenação da sua comunidade, ao longo do seu gradiente principal.


39

3. De que forma será feita sua amostragem? Ela é regular ao longo de todo o gradiente? Se for irregular, ela
é aleatória? Ou existem mais amostras em alguma parte do gradiente?

4. Derive, a partir deste gráfico, a tabela de dados que representa a amostragem da sua comunidade, em
pelo menos 10 pontos.

5. Pense quais análises parecem adequadas para representar a estrutura da comunidade que vc tem, e para
responder as perguntas que vc tem sobre ela. Vc deve selecionar um pacote de análises com suas
variações para testar. Se escolher apenas uma, jamais saberá se foi a melhor, certo?
A sua seleção de métodos deve conter a decisão sobre:

a. Análise direta ou indireta? ou ambas?


b. Ordenação ou classificação?
c. Transformação dos dados ou não? Qual?
d. Padronização ou não? Em caso positivo, linhas (locais) ou colunas (espécies), ou ambas? Qual tipo
de padronização?
e. Qual medida de dissimilaridade para representar as diferenças entre amostras?
f. Qual método de ordenação ou classificação, se for o caso?
g. Que análise(s) inferenciais?

6. Agora faça as análises multivariadas que você aprendeu no curso para descobrir qual delas melhor
recupera o padrão que você desenhou no gráfico acima.

7. Reporte seus resultados em gráficos e tabelas, comparando os conjuntos de análises que vc testou.
Justifique suas escolhas, em cada passo. Discuta os resultados que obteve, e indique qual sua conclusão
sobre o melhor pacote para suas análises.

8. Para ajudar a pensar, leia:

Faith, D.P.; Minchin, P.R. & Belbin, L. 1987. Compositional dissimilarity as a robust measure of ecological
distance. Vegetatio 69: 57-68.

Kenkel, N.C. & Orlóci, L. 1986. Applying metric and nonmetric multidimensional scaling to ecological
studies: some new results. Ecology 67(4):919-928.

Leibold, M.A. & Mikkelson, G.M. 2002. Coherence, species turnover, and boundary clumping: elements of
meta-community structure. Oikos 237-250.

Minchin, P. R. 1987. An evaluation of the relative robustness of techniques for ecological ordination.
Vegetatio 69: 89-107.

Minchin, P.R. 1987. Simulation of multidimensional community patterns: towards a comprehensive model.
Vegetatio 71:145-156.
40

COMANDOS USADOS COM FREQÜÊNCIA DURANTE O CURSO

# Ordenação direta
medias<-colSums(tabela*gradiente)/colSums(tabela)
tabela1<-tabela[order(gradiente),]
tabela.ord<-tabela1[,order(medias)]

# Ordenação indireta
arb<-1:nrow(dados)
SS1<-colSums(dados*arb)/colSums(dados)

# calcular os escores dos sítios (RAi)


RA1<-colSums(t(dados)*SS1)/rowSums(dados)
##Repetir até estabilizar

generico(dados,gradiente,at,"grad","eixoY","eixoX")# para fazer o gráfico composto

plot(x,y) # para fazer gráficos simples

lm(resposta~preditor)# para fazer regressão

decorana(dados,ira=1) # RA por iteração, similar a CA

prcomp(dados) e prcomp(dados,scale.=TRUE)# PCA de covariâncias e de correlações

cmdscale(vegdist(dados,"bray"))# PCoA usando a matriz de associação desejada

metaMDS(dados,distance="bray",autotransform=FALSE,trymax=100)# NMDS

rda(dados.resp,constraits);
rda(dados.resp,contraints,conditions) # rda e rda parcial

cca(dados.resp,constraits);
cca(dados.resp,contraints,conditioned) # cca e cca parcial

Você também pode gostar