Você está na página 1de 23

1

Instituto Nacional de Pesquisas da Amaznia

Curso de Anlises Multivariadas Mdulo I (Basico)

Flavia Costa illiam Ma!nussom

Comandos "ara anlises usando o "ro!rama # $ictor %emes %andeiro

&' de (anuar) de &*+,

ComentriosVocs iro trabalhar em computadores que j contm todas as ferramentas necessrias para acompanhar o curso: 1. O programa instalado 2. !acotes vegan "#tal$e% seja necessrio instalar& '. (rande parte do curso ser feita usando o mesmo conjunto de dados) de moluscos ou plantas #escolha um deles&. !asse os seus dados de espcies #moluscos ou plantas&) e $ari$eis ambientais #altitude e chu$a: $eja os dados de chu$a no e*erc+cio , desta apostila& para o -*cel) sal$e como .t*t separado por tabula.o com o nome de moluscos.txt ou plantas.txt. Coloque na ta.ela "rimeiro as es"/cies e de"ois a altitude e a c0uva1 /mporte os dados para o com os nomes de: planta para os dados de plantas e molusco para moluscos. -m seguida separe os dados das espcies dos dados ambientais. 0hame os dados das espcies de molu ou plant e os dados ambientais de ambi. 1sando estes nomes $oc e$itar confus2es ao longo do curso. molusco<-read.table("molusco.txt",header=T) molu<-molusco[,1: ! " ou planta<-read.table("planta.txt",header=T) plant<-planta[,1: ! amb#<-molusco[,$:%! " ou amb#<-planta[,$:%!

23erc4cio +1 5rdena67o direta manual Vamos analisar o efeito da topografia sobre a composi.o de espcies arb3reas #grupo 1& e sobre a composi.o de moluscos #grupo 2& de uma floresta. O mapa 1 mostra a topografia da rea de estudo e a distribui.o dos transectos onde os organismos foram amostrados. O mapa 2 mostra a distribui.o das espcies encontradas em cada transecto. !ara come.ar a anlise) n3s precisamos transferir estes dados para uma matri% que mostre o n4mero de indi$+duos por espcie) em cada amostra e a cota altitudinal de cada amostra. 0om a matri% pronta) $amos fa%er uma ordena.o manual dos dados. 1. !lote a abund5ncia de cada espcie ao longo do gradiente de altitude. 6a.a um grfico separado para cada espcie) mas use a mesma escala para todos. 2. ecorte cada grfico em uma tira. !rocure arranjar as tiras de modo a obter uma seq7ncia de mudan.as na abund5ncia das espcies ao longo do gradiente de altitude. 23erc4cio &1 Clculo do valor m/dio dos indiv4duos (8"eso9) 1. !ara cada espcie) somar o $alor da $ari$el ambiental #neste e*emplo) a altitude& para cada

'
indi$+duo da espcie e depois di$idir esta soma pelo n4mero de indi$+duos da espcie. 2. -*emplo: 8a 9abela 1 abai*o) : indi$+duos da -spcie 0ru% foram encontrados no local que tem altitude ;1<<) e = indi$+duos foram encontrados no local que tem altitude ; 12<. 8enhum indi$+duo foi encontrado em locais com outros $alores de altitude. -nto o $alor mdio de altitude para os indi$+duos da >p0ru% #1<<?1<<?1<<?1<<?1<<?1<<?1<<?1<<?1<<?12<?12<?12<?12<?12<?12<?12<&@1A ; 1<B)=,. 9abela de dados dos Coluscos Docais bola quad

cru%

91 92 9' 9E 9, 9A 9= 9B
9: 91< Valor Cdio

1, < <
< < 2

: < E
1 < <

1< < =
< < <

estr 2 < <


' 1< ,

11 = < 1

E < < <

< < < <

< ' : 1,

linha 1 1' < 1E B E < < , 1<

triang

altitude

< 12 <
2< A <

1<<
E<

12<
B< 1E< A< 1E<

< < < B

E< A< 1<<

23erc4cio : ; Clculo automatizado dos valores m/dios dos indiv4duos ao lon!o de um !radiente1 %2IA 5 INICI5 <A AP5=>I%A PA#A $2# C5M5 5#?ANI@A# 5= <A<5=1 Fgora que $ocs j sabem fa%er os clculos G mo) $amos aprender a fa%er estes clculos no : 1se os dados de moluscos O1 plantas. >e esti$er usando plantas) ordene pelo gradiente de altitude) se esti$er usando moluscos ordene pelo gradiente de chu$a. O e*emplo abai*o est usando moluscos. Hclculo do $alor mdio molu.med#as<-col&ums(molu'amb#(alt#tude))col&ums(molu) H$er os resultados dos $alores mdios #que so as mdias da chu$a) ponderada n4mero de indi$+duos de cada espcie& molu.med#as H colocar os $alores mdios em ordem med#as.sort<-sort(molu.med#as) H somente para $er os $alores em ordem med#as.sort H ordenar as linhas da tabela de acordo com o gradiente) e as colunas de acordo com as mdias. molu.ord1<-molu[order(amb#(alt#tude),! molu.ord<-molu.ord1[,order(molu.med#as)!

E
H $er a tabela ordenada molu.ord H !ara fa%er o grfico da tabela ordenada $amos usar a fun.o !enerico) que est em um script do na pasta do curso #generico. &. Fbra este script e*ecuteIo e feche o script. F fun.o est pronta para ser usada. 8ela precisamos informar qual tabela de dados queremos ordenar e plotar) qual a $ari$el que representa o gradiente e as legendas para os ei*os da figura. Veja abai*o como usar a fun.o. gener#co(tabela, grad#ente ,at,grad,e#xo*,e#xo+) gener#co , o nome da -un./o tabela , o con0unto de dados grad#ente , a var#1vel 2ue representa o grad#ente at , a pos#./o no gr1-#co onde o nome das esp,c#es va# aparecer grad , o nome do grad#ente, para aparecer no gr1-#co e#xo* e e#xo+ s/o as legendas para os e#xos do gr1-#co exclu#rspp , usado para de-#n#r um l#m#te de corte para a abundanc#a das esp,c#es. 3sp,c#es com valor aba#xo do espec#-#cado n/o s/o plotadas.

H !ara usar a fun.o e fa%er o grfico dos moluscos ordenados pela chu$a use:
gener#co(molu,amb#(chuva,14,"5huva","6arcelas","7ens. rel. das spp",8)

23erc4cio ,1 5rdena67o Indireta manual #usando os dados de moluscos ou plantas& 8o e*erc+cio anterior n3s usamos as informa.2es sobre uma $ari$el e*terna #a altitude ou chu$a& para direcionar a ordena.o das amostras. Vamos agora supor que n3s no temos esta informa.o ou que esta $ari$el no seja a 4nica a influenciar a distribui.o das espcies. -nto n3s $amos ordenar as amostras usando apenas a informa.o das espcies. 8ossa inten.o colocar as amostras que so mais parecidas entre si mais pr3*imas) numa ordem que reflita a seq7ncia de mudan.as na composi.o de espcies. !ara isso) $amos seguir os seguintes passos: 1. 9ransforme as abund5ncias das espcies em presen.a@ausncia 2 ecorte as linhas correspondentes Gs amostras e organi%eIas em ordem de similaridade #colar& '. 1sando a matri% produ%ida acima) recorte as colunas correspondentes Gs espcies e ordene no$amente) para melhorar a $isuali%a.o. E. 0ontinue o processo at obter uma matri% que pare.a ordenada #lembre quais so os tipos de estrutura que se espera obser$ar&

23erc4cio A. /nterpreta.o da ordena.o em fun.o do gradiente ecol3gico !lotar a ordem obtida no e*erc+cio acima contra cada um dos gradientes ecol3gicos #altitude e chu$a&. !ara chu$a) os dados so:

Fmostras 91 92 9' 9E 9, 9A 9= 9B 9: 91<

0hu$a 1B<< 1,<< 1=,, 1,B< 1,:< 1AE< 1=2' 1A:< 1A<, 1,'<

23erc4cio '1 M/dias #ec4"rocas Flgoritmo para fa%er eciprocal F$eraging 1. Jar pesos arbitrrios Gs amostras 2. 0alcular o $alor mdio das espcies no gradiente arbitrrio '. 0alcular o $alor mdio das amostras) usando como peso os $alores mdios das espcies calculadas no passo anterior E. 0alcular no$amente o $alor mdio das espcies) usando como peso os $alores mdios das amostras calculados no passo anterior ,. 0ontinuar iterando) at que os $alores das mdias estabili%em. -stas mdias finais so os scores do primeiro ei*o de ordena.o. A. Fgora ordene a matri% de espcies $s amostras usando a ordem obtida pelo primeiro ei*o da ordena.o por F. Kue estrutura tem esta matri%L -*emplo: !rimeiro passo. F >p1 tem 1 indi$+duo na parcela para a qual n3s demos o $alor arbitrrio de 1 e , indi$+duos na parcela para a qual n3s demos o $alor arbitrrio de '. -nto o $alor mdio dos indi$+duos da >p1 para a nossa escala arbitrria #1?'?'?'?'?'&@A ; &1'B. F >p' tem , indi$+duos na parcela para a qual n3s demos o $alor 2 e ' indi$+duos na parcela com $alor E. -nto seu $alor mdio #2?2?2?2?2?E?E?E&@B ; &1BA 8o >egundo passo) os $alores mdios das espcies $o funcionar como o gradiente que d os pesos. F !arcela F tem 1 indi$+duo da >p1) 2 da >p2 e E da >pE ento seu $alor mdio ser #1 * 2.A=&?#2 * 2.B& ? #E * 1.A=&@= ; &1+:1

9abela 1 Docais F M 0 J >>1 >>2 >>'

>p1

1
< , < 2.66 7 2.34 0 2.30 7

>p2 2 < < ' 2.80 0 2.51 8 2.51 1

>p' < , < ' 2.75 0 2.75 9 2.71 4

>pE

Frb

E
< 2 < 1.66 7 2.21 6 2.31 5

1
2

'
E

F1 2.133 2.750 2.381 2.775

F2 2.320 2.759 2.304 2.639

F' 2.370 2.714 2.309 2.613

0omo espcies e amostras so ordenadas ao mesmo tempo) o primeiro ei*o da F tem a propriedade de ma*imi%ar a correla.o entre as amostras e as espcies. Jesta forma) se as amostras e as espcies em uma tabela forem colocadas na ordem dada pelo primeiro ei*o de ordena.o por F) o resultado ser uma tabela onde os maiores $alores estaro concentrados na diagonal #(auch 1:B2&.

23erc4cio BC #eci"rocal Avera!in! no # usando os dados de moluscos ou "lantas H8ote) abai*o) que ao calcularmos os Fs precisamos transpor a tabela #usando a fun.o t& para que a multiplica.o seja feita na ordem correta. H gera os $alores arbitrrios arb<-1:18 "calcular os escores das espcies #>>i& &&1<-col&ums(molu'arb))col&ums(molu)9&&1 H calcular os escores dos s+tios # Fi& :;1<-col&ums(t(molu)'&&1))ro<&ums(molu)9:;1 Hdaqui para frente $amos s3 repetir o processo) e $ocs de$em fa%er tantas $e%es quanto necessrio para estabili%ar os $alores de >> e F &&=<-col&ums(molu':;1))col&ums(molu)9&&= :;=<-col&ums(t(molu)'&&=))ro<&ums(molu)9:;= Kual o critrio que $oc utili%ou para decidir se os >> e F estabili%aramL

23erc4cio D ; Inter"reta67o da ordena67o "or #A ; o que si!niEicam os ei3os em termos das es"/cies (atri.utos) 1. Vamos produ%ir um grfico composto que mostra a ordem das espcies ao longo da ordena.o dos s+tios pelo ei*o de ordena.o gerado por F. HVamos ordenar a tabela usando os escores dos s+tios e depois os escores das espcies. 8este e*emplo estamos usando o FE e >>E) mas $c de$e usar o $alor da rodada que estabili%ou. molu.:;1<-molu[order(:;>),!9molu.:;1 molu.:;=<-molu.:;1[,order(&&>)!9molu.:;=

H!ara $er o grfico composto use a fun.o !enerico. gener#co(molu, :;>,14,"grad#ente","e#xo?","e#xox")

2. 0ompare com a ordena.o direta ao longo dos gradientes conhecidos #chu$a e altitude&. !ara isso) fa.a a ordena.o direta no$amente. gener#co(molu, amb#(chuva,14,"grad#ente","e#xo?","e#xox") '. F ordena.o por F captou os padr2es da comunidade ao longo dos gradientes conhecidosL E.Fgora $amos fa%er a ordena.o por F usando a fun.o decorana #do pacote $egan& para conferir se o resultado igual ao que fi%emos passo a passo #por itera.o&. !ara conferir plote o ei*o1 do resultado usando a fun.o decorana contra o F* calculado passo a passo #* o n4mero de passos que $oc fe% na F passo a passo) por e*emplo F=N&. F fun.o decorana pode fa%er dois tipos de F) uma que igual G que fi%emos por itera.o) mas usando eigen anlise #e que chamada 0F&. -*iste uma $aria.o) chamada de J0F) na qual os OarcosP so OdesentortadosP. !ara fa%er 0F) use #ra = 1) para fa%er J0F #ra=8. :;vegan<-decorana(molu,#ra=1) :;scores<-scores(:;vegan) HO F* refereIse ao ei*o de ordena.ao da rodada que estabili%ou plot(:;scores[,1!,:;x) HH Dembre que quanto mais pr3*imo de uma reta mais parecidos so os $alores. >e for uma reta indica que os $alores so iguais) mas no em $alores e sim proporcionalmente iguais.

23erc4cio F ; 8#eci"rocal =ummin!9 ; PCA na m7o >eguir os mesmos passos da eciprocal F$eraging) mas ao in$s de calcular a mdia) calcular apenas a soma em cada passo. -*: 9abela 1 Docais F M 0 J >>1 >>2 >>'

>p1

>p2

>p'

>pE

Frb

>1p

>2p

>'p

1 < , < +'

2 < < ' 1E

< , < ' 22

E < 2 < 1<

1
2

'
E

F >p1 tem 1 indi$+duo na parcela para a qual n3s demos o $alor arbitrrio de 1 e , indi$+duos na parcela que n3s demos o $alor arbitrrio de '. -nto a soma dos indi$+duos da >p1 para a nossa escala arbitrria #1?'?'?'?'?'& ;1A. 0omo n3s estamos sempre adicionando mais $alores os > $o ficando $alores muito altos) por isso usamos uma transforma.o que dei*a os > sempre numa escala com mdia < e des$io padro 1. !or isso usamos a fun.o decostand com o mtodo standard#@e. F fun.o decostand do pacote $egan) por isso precisamos e*ecutar o $egan. >tandarti%ation o comando para padroni%ar os dados para que eles tenham mdia < e des$io padro 1. eciprocal >umming no com os dados de moluscos. arb<-1:18 &1<-col&ums(molu'arb)9&1 :&1<-col&ums(t(molu)'&1)9:&1 HHH $eja que os $alores so altos) por isso fa%emos a padroni%a.o a seguir :&1pad<-decostand(:&1,"standard#@e")9:&1pad &=<-col&ums(molu':&1pad)9&= H 8ote que abai*o n3s j calcularemos e padroni%aremos o > em apenas uma linha de comandosN :&=pad<-decostand(col&ums(t(molu)'&=), "standard#@e")9:&=pad &4<-col&ums(molu':&=pad)9&4 :&4pad<-decostand(col&ums(t(molu)'&4), "standard#@e")9:&4pad &><-col&ums(molu':&4pad)9&> :&>pad<-decostand(col&ums(t(molu)'&>), "standard#@e")9:&>pad 6a.am mais rodadas para $er se j estabili%ou.

23erc4cio +*1+ Inter"reta67o da 5rdena67o "or #= ; o que si!niEicam os ei3os em termos das es"/cies (atri.utos) HVamos ordenar a tabela usando os escores dos s+tios e depois os escores das espcies molu.ord:&1<-molu[order(:&>pad),!9molu.ord:&1 molu.ord:&=<-molu.ord:&1[,order(&&>pad)!9molu.ord:&= H 6a.a o grfico usando a fun.o !enerico: gener#co(molu, :&>pad,14,"grad#ente","e#xo?","e#xox") 0ompare a ordena.o por > com a ordena.o por F e com a ordena.o direta ao longo dos gradientes conhecidos #chu$a e altitude&. !ara fa%er esta compara.o construa os grficos compostos. 1se os comandos que $oc aprendeu no e*erc+cio de F e a fun.o !enerico. 23erc4cio +*1& Inter"reta67o da 5rdena67o ; o que si!niEicam os ei3os em termos das variveis e3ternas (!radientes con0ecidos) 1. !lote os $alores do >* contra os gradientes conhecidos #chu$a e altitude&. -ste ei*o # >*& est relacionado com estes gradientesL 8o par(m-ro<=c(=,=)) H!ara $er os grficos em uma s3 janela plot(amb#(chuva,:&x,t?pe="n") H 1sar o > que estabili%ou text(amb#(chuva,:&x) 8ote nos comandos acima que o argumento t?pe="n" far que no apare.a nada no grfico e depois com a fun.o text n3s iremos inserir o te*to que informa o nome da parcela #na $erdade o n4mero da parcela&. Anote como Eazer esse !rEico e como colocar o te3to inEormando as "arcelasG "ois Earemos esse ti"o de !rEico mais vezes durante o curso1 !ara colocar a linha de regresso nos grficos use : abl#ne(lm(:&xAamb#(chuva)) Fgora para altitude plot(amb#(alt#tude, :&x, t?pe="n") text(amb#(alt#tude, :&x) abl#ne(...)

1<

Com"ara6ao #= 3 #A 2. 0ompare com os grficos do F* contra os mesmos gradientes. O que mudouL !or quL '. Ordene a tabela de acordo com o >* #Qprimeiro componente principal& e obser$e qual foi a ordem das parcelas ao longo deste ei*o. 6oi igual G ordem obtida por F L molu[order(:&x),! "anote a ordem das parcelas molu[order(:;x),! "#dem ac#ma E. !lote os $alores do >* contra os $alores do F*. -les so parecidosL plot(:&Bpad,:;B,pch=1 ,cex==)

23erc4cio ++ ; PCA "or ei!enanal)sis O possui duas fun.2es para fa%er !0F #pr#ncomp e prcomp&. pr#ncomp trabalha com o to falado Imode !0F #!0F modo &) que quando as $ari$eis #atributos& esto nas linhas R no nosso caso isso $ai produ%ir uma ordena.o das espcies. !ara fa%er anlise no modo K use a fun.o prcomp. O modo K quando as $ari$eis #atributos& esto nas colunas R no nosso caso isso $ai produ%ir uma ordena.o dos locais. O default #padro& da fun.o prcomp fa%er a !0F usando a matri% de co$ari5ncias. 1se scale.=T:C3 quando desejar usar a matri% de correla.o para fa%er a !0F. 1. 1se a matri% de plantas ou moluscos. 1se a fun.o prcomp para fa%er a !0F) use resu(x ou scores(resu) para $er ou sal$ar somente os scores da !0F. Obser$a.o: resu o nome que $oc deu para o resultado da sua !0F) no e*emplo abai*o o nome dados pca.molu. pca.molu<-prcomp(molu) scores.molu<-pca.molu(x Fgora $amos fa%er um grfico da !0F plotando os dois primeiros componentes principais. plot(scores.molu[,1!,scores.molu[,=!,t?pe=DnD) text(scores.molu[,1!,scores.molu[,=!)

2. !lote o primeiro ei*o da !0F feita por itera.o #reciprocal summing) >*& contra o primeiro ei*o da !0F feita por eigenanalSsis. O que $oc concluiL plot(scores.molu[,1!,:&x, pch=1 ,cex=1.B)

11

23erc4cio +&1 %oadin!s e "orcenta!em e3"licada "or cada com"onente "rinci"al 23erc4cio +&1+ $amos a"render o que s7o os loadin!s e como calcul;los "ara uma PCA de correla67o e "ara uma PCA de covariHncia1 Fs correla.2es #pca de correla.2es& ou co$ari5ncias #pca de co$ari5ncia& entre os

atributos originais e os componentes principais so chamadas de loadings #ou auto$etores& e so usados para mostrar o que os componentes principais representam no mundo real.
Vamos $er primeiro para uma pca de correla.2es: pca.cor<-prcomp(molu,scale.=T) scores.pcacor<-pca.cor(x cor(scores.pcacor,molu) " correla.o dos ei*os com as $ari$eis originais.

H!ara conferir com o resultado do ) use: t(pca.cor(rotat#on) ' pca.cor(sdev H 8ota: no resultado da pca do os $alores (rotat#on so os loadings) porem estes $alores esto em uma escala diferente da que obtemos ao fa%er a correla.o dos ei*os com as $ari$eis originais. !ara ficar na mesma escala) precisamos multiplicar os loadings do pelo des$io padro dos ei*os) e para que esta multiplica.o seja feita corretamente preciso transpor a tabela com os loadings #(rotat#on&. H !0F de co$ari5ncia. Os loadings da pca de co$ari5ncia so calculados a partir da co$ari5ncia entre os ei*os da pca e as $ari$eis originais. pca.cov<-prcomp(molu) cov(pca.cov(x,molu) HH 8ote que os $alores no esto em uma escala de I1 a 1. !ara dei*ar nessa escala necessrio normali%ar os dados da tabela de co$ari5ncia. !ara normali%ar: l#brar?(vegan)HH precisamos de uma fun.o do vegan (decostand) covar<- cov(pca.cov(x,molu)H matri% de co$ari5ncia entre ei*os e $ari$eis covar.norm<-decostand(covar,"normal#@e")"" covar normali%ada t(covar.norm) " O t#& apenas para transpor a tabela. 1se pca.cov(rotat#on para conferir pca.cov(rotat#on

12

23erc4cio +&1& ; Clculo da "orcenta!em e3"licada "or cada ei3o da PCA1 <iEeren6as entre PCA de covariHncias e PCA de correla6Ies1 1. 6a.a uma !0F de co$ari5ncia pcacov<-prcomp(molu) 2. >al$e os componentes principais #ei*os& scores.pcacov<-pcacov(x '. Jepois calcule os auto$alores #eigenvalues&. 0ada auto$alor a $ari5ncia de cada ei*o da !0F. Vamos checar isso calculando a $ari5ncia de cada componente principal. var(scores.pcacov[,1!)H calcula a $ari5ncia do primeiro !0 autoval.pcacov<-appl?(scores.pcacov,=,var&H$ari5ncia dos componentes principais E. Fgora calcule a $ari5ncia total nos dados originais. -sta $ari5ncia total tambm chamada de inrcia. var#an<-sum(appl?(molu,=,var)) -*perimente somar os auto$alores e $eja o resultado que obtmN sum(autoval.pcacov) ,. !ara encontrar os $alores de porcentagem e*plicada por cada ei*o da !0F basta di$idir cada auto$alor pela $ari5ncia total dos dados originais. expl#cado<-autoval.pcacov)var#an expl#cado 8ota: Kuando fa%emos a !0F usando co$ari5ncias o modo de calcular a T e*plicada pelos componentes principais este descrito acima. 1sando co$ari5ncias estamos dando maior peso para as espcies mais abundantes. Kuando usamos correla.2es para fa%er a !0F estamos dando o mesmo peso para todas as espcies. 8este caso a inrcia passa a ser a soma das correla.2es de cada espcie consigo mesma) e j que a correla.o de uma espcie com ela mesma 1) o n4mero de espcies #ou atributos& do conjunto de dados passa a ser a no$a inrcia. 9emos seis espcies de moluscos ou de plantas) portanto a inrcia da !0F de correla.2es ser A. A. 6a.a uma !0F usando correla.o. !ara isso use scale.=T como argumento. pcacor<-prcomp(molu,scale.=T) =. >al$e os auto$alores. autoval.pcacor<-appl?(pcacor(x,=,var& autoval.pcacor B. Fgora calcule a T e*plicada pelos componentes di$idindo os auto$alores por A #A a soma dos auto$alores) confira: sum(autoval.pcacor).

1'
8ote que usando correla.2es a porcentagem e*plicada pelo primeiro componente diminuiu. !or quL /sto natural) pois antes n3s precis$amos Oe*plicarP somente as espcies abundantes com grandes $ari5ncias) porm) agora n3s ti$emos que e*plicar todas as espcies igualmente. DembremIse) n3s no de$emos olhar cegamente para as porcentagens e*plicadas pelos ei*os) elas precisam ser interpretadas da forma correta. 23erc4cio +:1+ ; PCoA 1. Vamos fa%er a !0oF passo a passo: H crie uma matri% de dissimilaridades de braSIcurtis molu.bra?<-vegd#st(molu,Dbra?D) H fa.a a transforma.o de (oUer molu.bra?.go<er<-(-.B'molu.bra?E=) H fa.a uma pca usando como base a matri% de dissimilaridades de braSIcurtis transformada pcoa.bra?<-prcomp(molu.bra?.go<er) H$er os resultados da OpcaP R perceba que os objetos #locais& agora tm loadings e no scores $erdadeiros pcoa.bra? H !ara selecionar e sal$ar os loadings use pcoa.bra?.load <-pcoa.bra?(rotat#on H !lotar ei*o 1 * ei*o2 plot(pcoa.bra?.load[,1!, pcoa.bra?.load[,=!,t?pe="n") text(pcoa.bra?.load[,1!,pcoa.bra?.load[,=!,ro<names(pcoa.bra?.load))

2. Fgora fa.a uma !0oF com os dados de moluscos ou plantas usando a fun.o do pacote $egan para fa%er !0oF. !ara fa%er no use a fun.o cmdscale do pacote $egan #cmdscale ; Classical (Metric) Multidimensional Scaling ; !0oF&. O input usado na fun.o cmdscale de$e ser a matri% de associa.2es. !ortanto use a matri% de associa.2es de braSIcurtis que foi calculada no passo anterior #molu.braS& para rodar a anlise. molu.pcoa<-cmdscale(molu.bra?,e#g=T) O resultado desta anlise #!0oF com pacote pronto& foi parecido com os resultados da !0oF atra$s de !0F) usando a matri% de MraSI0urtisL Veja a rela.o entre o primeiro ei*o da !0oF feita usando a fun.o para fa%er !0oF e o primeiro ei*o da !0oF feita atra$s de uma !0F. plot(molu.pcoa(po#nts[,1!,pcoa.bra?(rotat#on[,1!,pch=1 ,cex=1.B)

1E

23erc4cio +:1& Inter"reta6ao da PCoA em termos dos !radientes e3ternos !lote o primeiro ei*o da !0oF contra o gradiente de chu$a #para moluscos& ou altitude #para plantas&. 0aso queiram usem abl#ne para colocar a reta de regresso. par(m-ro<=c(=,=)) plot(amb#(chuva,molu.pcoa[,1!,t?pe="n") text(amb#(chuva,molu.pcoa[,1!,ro<names(molu.pcoa)) plot(molu.pcoa[,1!,pcoa.bra?(rotat#on[,1!)

23erc4cio +:1: Fgora fa.a uma !0oF usando a matri% de dist5ncia 0hiIquadrado) e no mais a matri% de MraSI 0urtis. H!0oF usando matri% de dist5ncias chiIquadrado moluT<-decostand(molu,"total")HH 9ransforma.o pelo total molu.ch#<- vegd#st(decostand(moluT,"ch#"),"eucl#") H Jist5ncia 0hiI quadrado pcoa.molu.ch#<-cmdscale(molu.ch#) Fnlise de 0orrespondncia #0F que igual G F) lembramL& ca.molu<-decorana(molu,#ra=1) !0oF * 0F plot(pcoa.molu.ch#[,1!,scores(ca.molu)[,1!) 23erc4cio +:1, Calculo da Jvariancia de uma PCoA vartotal<-sum(molu.pcoa(e#g) vare#xos<-as.matr#x(molu.pcoa(e#g) vare#xo1<-(vare#xos[1,!'188)vartotal

vare#xo=<-(vare#xos[=,!'188)vartotal)
23erc4cio +,1+ ; Kndices de Associa67o 1. 0alcule para a matri% abai*o os +ndices de Canhattan) MraSI0urtis) 0hord #euclidiana sobre dados normali%ados&) chiIquadrado e (oUer para todas as compara.2es entre locais. >p1 1<< A< < 1< >p2 :< =< 2 , >p' B< B< , 2 >pE =< :< 1< < >p, A< 1<< 1, <

Doc1 Doc2 Doc' DocE

1,
!ara quem quiser conferir no : ex1><-read.table("ex1>.txt",header=T) l#brar?(vegan) manhattan<-vegd#st(ex1>,"manhattan") bra?.curt#s<-vegd#st(ex1>,"bra?") go<er<-vegd#st(ex1>,"go<er") chord<-d#st(decostand(ex1>,"normal#@e"),"eucl#dean") ch#<-d#st(decostand(ex1>,"ch#"),"eucl#")

1. Olhe os dados originais. Kuais so os locais que parecem mais pr3*imosL 2. Kue compara.2es ti$eram as menores dist5ncias com cada +ndiceL !or queL '. Fgora compare com os $alores das 2 matri%es de associa.o e $eja se eles correspondem ao que $oc pensou. E. Kual +ndice corresponde melhor ao padro que $oc espera$aL !or queL 23erc4cio +,1& ; Parado3o da a.undHncia de es"/cies =ites L+ L& L: s"+ * + * s"& + * , s": + * ,

!asse os dados ta tabela acima para o : tab<-data.-rame(sp1=c(8,1,8),sp==c(1,8,>),sp4=c(1,8,>)) 0alcule a dist5ncia euclideana dos dados dessa tabela. 8ote que a dist5ncia entre os locais V1 e V2) que no tem nenhuma espcie em comum) menor que a dist5ncia entre os outros locais d#st(tab, upper=T,d#ag=T) 8o comando acima) upper = T e d#ag=T apenas informam que a diagonal e o lado de cima da matri% de$em aparecer no resultado. Veja que se no informarmos isso o resultado mostra apenas o lado inferior da matri% de dist5ncias. d#st(tab) 23erc4cio +A ; Padroniza6Ies Padroniza67o dos atri.utos Docais F M 0 J 6 sapo.sp1 2'2 1'E =2 = 2 1 sapo.sp2 1< 22 AE B2 2< 2 sapo.spE = 2 E 1< ' B sapo.spA < 1 < < 1 < sapo.sp= 1 < < < < 1 sapo.sp' < 2 1: E, =A :1 sapo.sp, < < 1 < 1 <

1. Ordene a matri% acima #sapo.txt& em 1 dimenso sem padroni%ar. 6a.a a ordena.o com

1A
!0oF) +ndice de MraSI0urtis. Fnote qual foi a ordem das parcelas obtida nesta ordena.o. 8o precisa sal$ar estes dados. Fnote tambm os loadings das espcies. sapo.bra?<-vegd#st(sapo,"bra?") pcoa.sapo<-cmdscale(sapo.bra?,F=1) H para ordenar a tabela sapo[order(pcoa.sapo),! H para obter os loadings das espcies loads<-cor(pcoa.sapo,sapo) 2. !adroni%e os atributos #as espcies& por di$iso pela soma. !ara fa%er padroni%a.2es no use a fun.o decostand. -*istem $arias transforma.2es poss+$eis. !ara fa%er a di$iso pela soma use: decostand(dados,"total", G;:HIJ==). total indica que a padroni%a.o por di$iso pela soma e G;:HIJ== indica que iremos padroni%ar os atributos #colunas&. !ara padroni%ar as linhas G;:HIJ=1. Fgora fa.a uma no$a ordena.o com !0oF. Fnote a no$a ordem das parcelas e os loadings das espcies. !adroni%ando pela di$iso pela soma das espcies #atributos& sapo.pad<-decostand(sapo,"total",G;:HIJ==) sapo.bra?.pad<-vegd#st(sapo.pad,"bra?") pcoa.sapo.pad<-cmdscale(sapo.bra?.pad,F=1) sapo[order(pcoa.sapo.pad),!Hmatri% original ordenada p3s padroni%a.o opt#ons(d#g#ts==) sapo.pad[order(pcoa.sapo.pad),!Hmatri% padroni%ada ordenada p3s padroni%a.o loads.pad<-cor(pcoa.sapo.pad,sapo.pad)H !ara obter os loadings '. 0ompare as ordens das parcelas obtidas. O que mudouL !or queL E. 0ompare os loadings das espcies em cada ordena.o. Kuais espcies contribu+ram mais para a constru.o dos ei*os em cada ordena.oL O que isso di% sobre este tipo de padroni%a.oL loads loads.pad Padroniza67o dos o.Metos Docais F M 0 J Mromlia.sp1 1 2< E E< , Mromlia.sp2 , A< = B< 11 Mromlia.sp' , E< 2 2< 1

1. Ordene a matri% acima #bromel#a.txt& em 1 dimenso sem padroni%ar. 6a.a a ordena.o

1=
com !0oF) +ndice de MraSI0urtis. Fnote qual foi a ordem das parcelas obtida nesta ordena.o. 8o precisa sal$ar estes dados. bro<-read.table("bromel#a.txt",header=T) bro.bra?<-vegd#st(bro,"bra?") pcoa.bro<-cmdscale(bro.bra?,F=1) bro[order(pcoa.bro),! 2. !adroni%e as linhas #os locais& por di$iso pela soma e fa.a uma no$a ordena.o em !0oF. Fnote a no$a ordem das parcelas. bro.pad<-decostand(bro,"total",G;:HIJ=1) bro.bra?.pad<-vegd#st(bro.pad,"bra?") pcoa.bro.pad<-cmdscale(bro.bra?.pad,F=1) bro[order(pcoa.bro.pad),! '. 0ompare as ordens obtidas. O que mudouL !or quL E. Fnalise a matri% padroni%ada. Voc consegue en*ergar a diagonal captada pela ordena.oL bro.pad ,. O que isso di% sobre este tipo de padroni%a.oL 23erc4cio +' ; #edu67o de <imensionalidade Vamos reconstruir as posi.2es dos objetos F)M)0 e J usando as dist5ncias entre eles. -m primeiro lugar $amos calcular as dist5ncias entre os objetos) usando a dist5ncia euclidiana) que a menor dist5ncia em linha reta de um ponto a outro. Catematicamente ela pode ser calculada usando o teorema de !itgoras #6igura 1&. 0om todas as dist5ncias calculadas) $amos recortar tiras finas de papel) cada uma com tamanho correspondente a uma das dist5ncias. Carque nas pontas de cada tira quais so os objetos aos quais a dist5ncia se refere #figura 2&. 0ole as tiras) unindo as pontas correspondentes ao mesmo objeto. >e $ocs fi%eram o processo direito) as tiras de$em estar no mesmo plano #no h distor.o&. /sto por que a dist5ncia euclidiana uma dist5ncia geomtrica) baseada diretamente nas dist5ncias f+sicas entre os objetos. Vamos $er agora o que acontece se calcularmos a dist5ncia entre os objetos com o +ndice de Canhattan. epetir todo o processo 0omo o +ndice de Canhattan no baseado em dist5ncias f+sicas) ocorre uma distor.o quando tentamos reconstruir as posi.2es dos objetos. Vamos agora $er o que acontece quando acrescentamos mais uma espcie) tornando o nosso espa.o tridimensional. Fgora) a dist5ncia entre os objetos $ai ser baseada em trs dimens2es #as trs espcies&) mas n3s $amos representIlas em apenas duas. epetir o processo) usando dist5ncia euclidiana 83s usamos dist5ncia euclidiana) que uma dist5ncia f+sica e mesmo assim hou$e distor.oL !or quL F distor.o ocorre por que n3s estamos tentando fa%er com que a dist5ncia entre os pares de objetos) baseada em mais que duas dimens2es #as espcies&) OcaibaP em um espa.o de dimens2es menores. F distor.o mostra que h $aria.o que fica alm do espa.o bidimensional.

1B

Catri% para o e*erc+cio Objetos F M 0 J Ftributos >p1 1 2 , E >p2 2 , , ' >p' E 2 1 1

!ara quem quiser conferir as dist5ncias no : ex1 <-read.table("ex1 .txt",header=T) H2 espcies ex1 euc=<-d#st(ex1 [,1:=!,"eucl#d") ex1 man=<-d#st(ex1 [,1:=!,"manhattan") H ' espcies ex1 euc4<-d#st(ex1 ,"eucl#d") ex1 man4<-d#st(ex1 ,"manhattan")

A , E

>!2

' 2 1 <

J F

' >!1

6igura 1 I Os objetos plotados no espa.o definido pelas espcies: 6igura 2. -*emplo das tiras para o e*erc+cio F F

M 0

1:

23erc4cio +B ; M<= 0omo fa%er 8CJ> no 8O9-> O6 OW>F8-8 #2<<E) Culti$ariate FnalSsis in -cologS R Decture 8otes R pgina ==) dispon+$el na internet em !J6& O9here Uere se$eral programmes for 8CJ>) but about the onlS one to UorX bS the recommended procedure Uas !eter CinchinYs Jecoda ZA2[. Jecoda is still a$ailable) and it is the recommended choice. \oUe$er) librarS $egan complements other functions so that a $erS Jecoda liXe analSsis can be performed in . >0e "ro"er NM<= module is Eunction isoM<= in t0e MA== li.rar)G .ut ve!an "rovides .etter N&'O dissimilarit) indices (ve!dist) ) common data standardi%ation methods #decostand&) comparison of alternati$e dissimilaritS indices and transformations #ranXinde*&) random starts #initCJ>&) scaling and rotation of results #postCJ>&) comparison of results #procrustes&) and an opportunitS to add species scores #Uascores& or fit en$ironmental $ariables #en$fit) ordisurf& to the ordination.P !ortanto) use a fun.o metaG7& do pacote vegan. F fun.o metaG7& usa principalmente os argumentos abai*o. Veja o que eles significam. metaG7&(comm, d#stance = "bra?", F = =, autotrans-orm = T:C3 ...) comm d#stance F autotrans-orm HJados da comunidade. H]ndice de associa.o) $eja as possibilidades em L vegd#st. O default MraSI0urtis. 84mero de dimens2es desejada) default;2. ^ um Opiloto automticoP da fun.o metaCJ>. 0aso esteja ati$ado ;9 1#default&) ele ir a$aliar os seus dados e normali%Ilos quando necessrio. 8este caso) cada $alor subtra+do da mdia das colunas e di$idindo pelo des$io padro #padroni%a.o de _isconsin&. O !0IO J sempre fa% esta transforma.o e no tem op.o para `desligIla`. Veja no help LmetaCJ> o t3pico Jetails para mais informa.2es. >e $oc deseja ter total controle sobre a anlise de$e usar autotransform ; 6.

6aremos o CJ> usando estes comandos: metaG7&(molu,d#stance=Dbra?D,F=1, autotrans-orm=K) H 0omo a dist5ncia de MraSI0urtis o default no precisamos colocar a informa.o sobre o +ndice.

2<

O output do CJ> do $ai mostrar pouca informa.o. !ara $er os scores com a configura.o final dos objetos #os scores de cada objeto em cada uma das dimens2es& use scores(resultado) R resultado o nome que $oc sal$ou os resultados do seu CJ>. H!rimeiro $amos fa%er o CJ> em uma dimenso. molu.mds1d#m<-metaG7&(molu,F=1,autotrans-orm=K) HFgora $amos sal$ar os scores da solu.o em uma dimenso: scor1d#m<-scores(molu.mds1d#m) OM>: >e quisermos fa%er transforma.2es dos dados originais isso tem que ser feito antes de entrar no CJ>. 8em sempre o metaCJ> consegue atingir uma solu.o est$el. 8o nosso e*emplo de plantas isto acontece a partir da segunda dimenso. !ara resol$er este problema) $amos usar a fun.o isoCJ> do pacote CF>>. plant.bra?<-vegd#st(plant,Dbra?D)
plant.#so<-#soG7&(plant.bra?, F = =)

plot(plant.mds=d#m,t?pe="n", ma#n="JG7&") text(scor=d#m[,1!,scor=d#m[,=!)

23erc4cio +D ; Inter"reta67o da ordena67o em NM<= 1. !lote a ordena.o em 1 dimenso de 8CJ> contra os gradientes conhecidos #chu$a e altitude&. -ste ei*o est relacionado com estes gradientesL par(m-ro<=c(1,=)) "di$ide a janela do grfico em E plot(amb#(chuva,scor1d#m,t?pe="n",ma#n="JG7&") text(amb#(chuva,scor1d#m) plot(amb#(alt#tude,scor1d#m,t?pe="n",ma#n="JG7&") text(amb#( alt#tude,scor1d#m) 2. 0ompare com os grficos do 1a ei*o de F e !0F contra os mesmos gradientes. O que mudouL !or quL molu.pca<-prcomp(molu) H!0F plot(amb#(chuva,molu.pca(x[,1!,t?pe="n",ma#n="65;") text(amb#(chuva,molu.pca(x[,1!) 5;<-decorana(molu,#ra=1) 5;scores<-scores(5;) H sal$a os escores da 0F #; F& plot(amb#(chuva,5;scores[,1!, t?pe="n",ma#n="5;")

21
text(amb#(chuva,5;scores[,1!)

23erc4cio +F1 Porcenta!em de variHncia ca"tada "ela ordena67o em NM<= !ara saber a quantidade de $ari5ncia captada que se adiciona com o aumento de dimens2es da ordena.o preciso fa%er a ordena.o em 8CJ> em 1 dimenso) depois em 2 e depois em ' #geralmente no 4til mais do que ' ei*os) mas isso depende do caso&. Vamos fa%er isso para o nosso e*emplo de moluscos ou plantas e depois comparar estes $alores. !ara fa%er o clculo da $ari5ncia captada de$emos fa%er uma regresso entre a matri% de dist5ncias original #a matri% de MraSI0urtis& e a matri% de dist5ncias final #que representam a melhor apro*ima.o das dist5ncias originais que o 8CJ> conseguiu produ%ir no n4mero de dimens2es selecionado&. Fs dist5ncias finais so usadas para produ%ir a configura.o final #scores&. 0omo no no poss+$el acessar diretamente as dist5ncias finais) n3s precisamos recalculIlas a partir dos scores. -las sero a dist5ncia euclidiana entre os objetos #no nosso caso os locais& no espa.o da configura.o final: d#st.-#nal<-vegd#st(scor1d#m,"eucl#d"). !ara calcular a regresso: summar?(lm(vegd#st(molu,"bra?")Ad#st.-#nal)) Kuanto mais alto o r2 entre as dist5ncias originais e as finais) melhor a solu.o do 8CJ>. F adi.o de mais dimens2es ao 8CJ> de$e aumentar a capacidade de representar as dist5ncias originais #maior r2&) mas este aumento no linear. -nto $amos calcular um 8CJ> com 2 dimens2es e $er a $ari5ncia e*plicada pela solu.o em duas dimens2es. molu.mds=d#m<-metaG7&(molu,F==,autotrans-orm=K) scor=d#m<-scores(molu.mds=d#m) summar?(lm(vegd#st(molu)Avegd#st(scor=d#m,"eucl#d")))

Fgora $amos fa%er com trs dimens2es: molu.mds4d#m<-metaG7&(molu,F=4,autotrans-orm=K) scor4d#m<-scores(molu.mds4d#m) summar?(lm(vegd#st(molu)Avegd#st(scor4d#m,"eucl#d")))

Ften.o: !ara comparar ordena.2es com diferentes n4meros de dimens2es $oc precisa fa%er este clculo para cada uma delas. 23erc4cio &*1 5rdena67o em mais do que + dimens7o Ft agora tratamos de ordena.2es em 1 dimenso. 8o e*emplo que est$amos usando #moluscos e plantas&) foi simulado um 4nico gradiente de resposta das espcies) ou seja) s3 ha$ia uma 4nica dimenso de $aria.o real nos dados. Cas n3s podemos ordenar estes dados em 2 dimens2es) e olhar o que acontece.

22

par(m-ro<=c(=,=)) " JG7& em = d#mensoes molu.mds=d#m<-metaG7&(molu,F==,autotrans-orm=K) scor=d#m<-scores(molu.mds=d#m) plot(molu.mds=d#m,t?pe="n",ma#n="JG7&") text(scor=d#m[,1!,scor=d#m[,=!) " 5; em = d#mensoes 5;<-decorana(molu,#ra=1) 5;scores<-scores(5;) plot(5;scores[,1!,5;scores[,=!,t?pe="n",ma#n="5;") text(5;scores[,1!,5;scores[,=!) " 65; em = d#mensoes molu.pca<-prcomp(molu) plot(molu.pca(x[,1!,molu.pca(x[,=!,t?pe="n",ma#n="65;") text(molu.pca(x[,1!,molu.pca(x[,=!) " 65o; em = d#mensoes molu.pcoa<-cmdscale(molu.bra?) plot(molu.pcoa[,1!,molu.pcoa[,=!,t?pe="n",ma#n="65o;") text(molu.pcoa[,1!,molu.pcoa[,=!) 0omo nos dados que est$amos usando antes no ha$ia de $erdade um segundo gradiente de resposta) o segundo ei*o que n3s e*tra+mos apenas um artefato. !ara entender como os mtodos de ordena.o so capa%es de e*trair informa.o de mais do que um gradiente) n3s precisamos criar comunidades que tem espcies que respondam a pelo menos 2 gradientes. >e criarmos uma comunidade na qual uma parte das espcies responde ao primeiro gradiente) mas no tem resposta ao segundo) e outra parte das espcies fa% o contrrio) n3s temos um padro de resposta ortogonal) que os mtodos de ordena.o de$eriam ser capa%es de recuperar de modo que a sequncia dos locais ordenados represente uma grade. -sta tcnica de simula.o usada para testar a capacidade de diferentes mtodos de ordena.o) usando diferentes combina.2es de +ndices de similaridade e padroni%a.2es) de recuperar gradientes ecol3gicos conhecidos. !ara simular sua comunidade) $oc $ai estudar os comandos abai*o e modificIlos para criar o conjunto que representa a sua comunidade de interesse. Jepois $oc $ai analisar estes dados com as combina.2es de mtodo?+ndice?padroni%a.o que $c imagina que so adequados para o seu caso e $ai guardar os resultados. H>imula.o de uma comunidade com resposta a dois gradientes Hsp1 aumenta linearmente no gradiente1 sp1<-c(rep(8: ,$))

2'

Hsp2 diminui linearmente no gradiente1 sp=<-c(rep( :8,$)) Hsp' rara e tem distribui.o randbmica uniforme sp4<-run#-(>L,m#n=8,max=1) HspE tem distribui.o poisson com uma cur$a no meio do gradiente1 sp><-c(rep(dpo#s(1:$, lambda=>, log = K),$)) Hsp, tem distribui.o poisson com cur$a tendendo para o fim do grad1 spB<-c(rep(dpo#s(1:$, lambda=B.B, log = K),$)) HspA aumenta linearmente no gradiente 2
sp <-c(rep(8,$),rep(1,$),rep(=,$),rep(4,$),rep(>,$),rep(B,$),rep( ,$))

Hsp= aumenta linearmente no gradiente 2 sp$<-c(rep( ,$),rep(B,$),rep(>,$),rep(4,$),rep(=,$),rep(1,$),rep(8,$)) Hjuntando todas as especies para formar a comunidade s#mu1<-cb#nd(sp1,sp=,sp4,sp>,spB,sp ,sp$) Hplot da distribuicao das especies no espaco
persp(1:$,1:$,matr#x(s#mu1[,1!,$),expand=8.4,theta==8,col = "gra?" ) #mage(matr#x(s#mu1[,1!,$),col=gra?(se2(8,1,8.81)))

Fgora use a comunidade que $oc simulou #arqui$o simu1& e fa.a a ordena.o dela em 2 dimens2es com os diferentes mtodos de ordena.o) e suas combina.2es com diferentes padroni%a.2es ou +ndices de associa.o. (uarde o resultado destas ordena.2es e plote os escores da dimenso 1 contra dimenso 2 para cada um deles. >e nestes grficos os pontos formam uma grade) ento os mtodos conseguem recuperar a estrutura que $c criou. O e*emplo de simula.o acima muito simples e pode ser incrementado para criar uma comunidade mais real) p.e*. aumentando o n4mero de espcies) acrescentando ru+do aos dados.
H adicionar ruidos ru#do<-run#-(>L, m#n=8, max=1)

" (erar dados aleatorios com distribui.o uniforme