Índice
- O Curso R
-
- Tutoriais
-
- Apostila
-
- 6. Testes de Hipótese (em preparação!)
- Exercícios
-
- Material de Apoio
-
- Área dos Alunos
-
- Cursos Anteriores
-
IBUSP
Outras Insitutições
Linques
Visitantes
Outras Insitutições
OPÇÃO 1 : Criar uma função que estime parâmetros das matrizes ecológicas (espécies em colunas, locais em linhas), para diferentes reordenamentos das linhas e com re-amostragem tipo Jacknife. Os arreglos das linhas corresponderiam a gradientes em variáveis ambientais. Dados de entrada: matriz ecológica e data frame com variáveis ambientais para cada local. Dados de saída: Parâmetros matriciais estimados com intervalos de confiança, para cada uma das matrizes reordenadas.
OPÇÃO 2 : Uma Organização tem um programa de educação musical para crianças em cinco cidades. Neste programa os estudantes podem entrar e sair do programa a qualquer época do ano. Para a Organização é importante estimar o percentual de frequência dos alunos, o progresso do aluno no programa (5 níveis), o número de alunos que entram cada mês (substituição) e taxa de abandono. Os dados de entrada são tabelas de dados com o nome e identificação de alunos e suas presenças nas aulas registradas com valores 0 e 1. Os dados são reportados mês a mês.
Em geral, procure explicar melhor, para as duas opções, como a função processará os dados de entrada para gerar os dados de saída. Em relação à opção 1, quais são esses parâmetros das matrizes ecológicas? Os diferentes reordenamentos que vc se refere são correspondentes aos diferentes “areglos” das linhas em função dos gradientes ambientais? Como e porque as reamostragens do tipo Jacknife serão incluidas na sua função? Em relação à opção 2, explique melhor como serão os dados de saída. A opção 1 me pareceu mais interessante e exequível.
Oi Eliana, senti a mesma dificuldade que o Marcelo (comentários acima). As duas proposta são interessantes, mas acho que deve ficar na A que parece mais acabada. Deve definir claramente o que são os “parâmetros matriciais”.Pelo que entendi o intervalo de confiança será calculado pelo Jackknife… Use o procedimento bootstrap, que é mais utilizado nesse caso! — Alexandre Adalardo de Oliveira 2013/03/24 12:19
Oi Ale e Marcelo. Obrigada pelos comentários. Vou tentar aclarar um pouco mais a primeira proposta.
Na ecologia das comunidades os padrões de distribuição espacial de espécies em diferentes localidades (meta-comunidades) podem ser detectados mediante as analises da estrutura das matrizes de incidência das espécies. Algumas destas estruturas podem ser encontradas pelo acaso, mais em outros casos elas têm uma organização que emerge de processos ecológicos e evolutivos. Entre estas estruturas podem se identificar gradientes na composição das espécies, substituição de espécies (species turnover) e aninhamento (Leibold & Mikkelson 2002).
O aninhamento em meta-comunidades é encontrado quando os locais com a menor quantidade de espécies tendem a formar subconjuntos de aqueles locais que têm maior riqueza de espécies (Atmar & Patterson 1993). Entre as causas do ahinhamento tinham sido descritos alguns atributos das espécies, como sua abundância, limites de tolerância a fatores ambientais e requerimentos de área. Mais também se acredita que diferenças nas características dos habitat como o tamanho, o grãu de isolamento, a qualidade do habitat podem gerar padrões aninhados (Almeida-Neto et al. 2008).
Em consequência, quando as matrizes de incidência de espécies têm padrões aninhados, é frequente rearranjar as linhas da matriz (neste caso os locais) acordo com diferentes características biofísicas dos locais, como altitude, distancia geográfica, tamanho, produtividade, etc, com o objetivo de encontrar quais destes fatores podem explicar o padrão aninhado na composição de espécies. Além disso, normalmente os estúdios que avaliam composição de espécies em diferentes localidades não tem replicação. Por este motivo é conveniente fazer uma re-amostragem das matrizes, tirando uma observação (linha) por vez e calcular o aninhamento em estas novas matrizes. Este procedimento permite obter uma medida de erro na estimação do aninhamento, a partir do desvio padrão das diferencas entre matrizes ordenadas com e sim re-amostragem. Nesse jeito e posso obter os intervalos de confiança.
Este procedimento é totalmente iterativo por isso e conveniente criar uma função no R que permita tirar uma a uma as linhas das matrizes e calcular o aninhamento nas matrizes re-arranjadas e nas matrizes re-amostradas. Como resultado espero obter valores de aninhamento para a matriz original, e para cada uma das matrizes re-arranjadas com seus respectivos intervalos de confiança. A função também pode ter uma saída gráfica que facilite a identificação dos fatores que mais contribuem ao aninhamento. Para mais versatilidade o usuário pode definir o índice de aninhamento entre as opções que oferece o pacote vegam.
Almeida-Neto, M., Guimarães, P., Guimarães, P. R., Loyola, R. Ulrich, W. 2008. A consistent metric for nestedness analysis in ecological systems: reconciling concept and measurement. Oikos. Volume 117, Issue 8, pages 1227–1239.
Atmar, W. and Patterson, B. D. 1993. The measure of order and disorder in the distribution of species in fragmented habitat. Oecologia 96: 373-382.
Leibold, M. A. and G.M. Mikkelson. 2002. Coherence, species turnover, and boundary clumping: elements of meta-community structure. Oikos 97: 237–250, 2002.
Lewinsohn, T.M., Prado, P.I., Jordano, P., Bascompte, J. & Olesen, J. (2006) Structure in plant–animal interaction assemblages. Oikos, 113, 174–184.
IC_NODF package:unknown R Documentation Função para estimar intervalos de confiança para o Indice de Aninhamento NODF em matrizes de incidência de espécies Descripção IC_NODF rearranja as linhas de uma matriz de incidência de espécies acordo com variaveis ambientais dos locais e calcula os valores do indice de Aninhamento NODF. Porquanto os estúdios que avaliam composição de espécies em diferentes localidades não sempre tem replicação, IC_NODF faz uma re-amostragem das matrizes. Para isto elimina uma observação (linha) por vez e calcula o aninhamento em estas novas matrizes. Este procedimento permite obter os intervalos de confiança para o Índice de Aninhamento NODF, a partir do desvio padrão dos valores das diferencias entre os valores de NODF observados e os valores de NODF calculados por Jacknife. A função reporta os valores de NODF con intervalos de confiança para as linhas (NODF.row), as colunas (NODF.col) e total (NODFtotal). Também cria um grafico em arquivo pdf com os valores meios de cada matriz ordenada por fatores ambientais con seus respectivos intervalos de confiança. Uma linha horizontal no gráfico indica o valor de máximo aninhamento dos dados originais. En esse jeito o usuario pode identificar aqueles fatores que mais contribuem ao aninhamento na composição de espécies. Uso IC_NODF (data, amb) Argumentos data é uma matriz de incidência de espécies (presência - ausência) com os locais nas linhas e as espécies nas colunas. amb é um data frame com variaveis ambientais nas colunas. Todas as colunas são arranjados em modo decrescente (portanto o usuario previamente debe organizar seus dados de modo que façam sentido para avaliar o aninhamento). Valores Retorna uma lista com tres data frames que correspondem aos valores de NODFrows, NODFcol y NODF total. Cada data frame tem três colunas: o valor de NODF para a matriz ordenada por cada fator ambiental, o limite inferior e o limite superior do intervalo de confiança do índice. A função também retorna o grafico com valores meios do NODF +/_ os intervalos do confiança ao 95% . Autora Eliana Martínez Pachón emartinezpa@unal.edu.co Referências Almeida-Neto, M., Guimarães, P., Guimarães, P. R., Loyola, R. Ulrich, W. 2008. A consistent metric for nestedness analysis in ecological systems: reconciling concept and measurement. Oikos. Volume 117, Issue 8, pages 1227–1239. Atmar, W. and Patterson, B. D. 1993. The measure of order and disorder in the distribution of species in fragmented habitat. Oecologia 96: 373-382. Leibold, M. A. and G.M. Mikkelson. 2002. Coherence, species turnover, and boundary clumping: elements of meta-community structure. Oikos 97: 237–250, 2002. Lewinsohn, T.M., Prado, P.I., Jordano, P., Bascompte, J. & Olesen, J. (2006) Structure in plant–animal interaction assemblages. Oikos, 113, 174–184. Exemplos dados<-matrix((sample(c(rep(0,80),rep(1,120)))),10,20) f1<-(rnorm(10,20,2.5)) f2<-(rnorm(10,80,3.0)) f3<-(rnorm(10,0.5,0.01)) amb1<-data.frame(f1,f2,f3) IC_NODF(dados,amb1)
IC_NODF<-function(x,amb) { cat("\n\t IC_NODF retorna valores do Índice de aninhamento NODF com intervalos de confiança ao 95%, calculados através de re-amostragem tipo Jacknife. \n\n") library(vegan) library(permute) data=x amb=amb ncol.amb<-ncol(amb) # número de fatores ambientais col.data<-dim(data)[2] # número de colunas da matriz ecológica (espécies) row.data<-dim(data)[1] # número de linhas da matriz names.3d<-paste(colnames(amb))# nomes da terceira dimensão das matrizes resultados<-array(NA, dim=c(row.data,col.data, ncol.amb),dimnames=list(NULL, NULL, c(names.3d))) # objeto para salvar matrizes re-arrangeadas for(i in 1:ncol.amb) { m.ordenada<-data[order(amb[,i],decreasing = TRUE),] resultados[,,i]<-m.ordenada } ##### CALCULO DE ANINHAMENTO PARA àS MATRIZES REARRANJADAS PELOS FATORES AMBIENTAIS NODF<-matrix(NA, nrow=ncol.amb, ncol=3) # objeto para salvar resultados de aninhamento das matrizes re-arranjadas colnames(NODF)<-c("NODFcolumns", "NODFrows", "NODFtotal") #nomes das colunas rownames(NODF)<-paste("F.", c(colnames(amb))) #nomes das linhas for (i in 1:dim(resultados)[3]) { NODF[i,]<-nestednodf(resultados[,,i],order=FALSE, weighted=FALSE)$statistic } ###### RE-AMOSTRAGEM - Função que elimina una a una às linhas das matrizes e calcula o aninhamento de novo. NODF.reamostragem<-array(NA, dim=c(row.data,3,ncol.amb), dimnames=list(NULL, c("NODFcolumns", "NODFrows", "NODFtotal"), c(names.3d))) for(i in 1:ncol.amb) { for (j in 1: row.data) { NODF.reamostragem[j,,i]<-nestednodf(resultados[-j,,i],order=FALSE, weighted=FALSE)$statistic } } ## Diferencias entre valores observados de NODFrows e NODFrows(Jacknife) elevadas ao quadrado Obs_Nrows<-c(rep(NODF[,2],each=row.data)) # Construçao de um vetor com os valores observados de NODF ObsNODFrows<-array(Obs_Nrows,dim=(c(row.data,1, ncol.amb))) Dif<-(NODF.reamostragem[,2,]-ObsNODFrows[,,])^2 #Calcula a diferencia entre os valores observados e os calculados por re-amostragem ###Calculando média quadrático, desvio padrão e intervalos de confiança MC<-(colSums(Dif))/(row.data-1) desvio.padrao<-sqrt(MC) #(Desvio padrão) IC_NODFrows<-desvio.padrao*1.96 #(intervalos de confiança ao 95%) inf1<-NODF[,2]- IC_NODFrows sup1<-NODF[,2]+ IC_NODFrows NODF.rows<-data.frame(NODF[,2],inf1,sup1) names(NODF.rows)<-c("NODFrows", "IC95inf", "IC95sup") ## Diferências entre valores observados de NODFcol e NODFcol(Jacknife) elevadas ao quadrado Obs_Ncol<-c(rep(NODF[,1],each=row.data)) ObsNODFcol<-array(Obs_Ncol,dim=(c(row.data,1, ncol.amb))) Dif2<-(NODF.reamostragem[,1,]-ObsNODFcol[,,])^2 ###Calculando média quadrático, desvio padrão e intervalos de confiança MC2<-(colSums(Dif2))/(row.data-1) desvio.padrao2<-sqrt(MC2) IC_NODFcol<-desvio.padrao2*1.96 #(intervalos de confiança ao 95%) inf<-NODF[,1]- IC_NODFcol sup<-NODF[,1]+ IC_NODFcol NODF.col<-data.frame(NODF[,1],inf,sup) names(NODF.col)<-c("NODFcol", "IC95inf", "IC95sup") ## Diferências entre valores observados de NODFtotal e NODFtotal(Jacknife) elevadas ao quadrado Obs_Ntotal<-c(rep(NODF[,3],each=row.data)) ObsNODFtotal<-array(Obs_Ntotal,dim=(c(row.data,1, ncol.amb))) Dif3<-(NODF.reamostragem[,3,]-ObsNODFtotal[,,])^2 ###Calculando média quadrático, desvio padrão e intervalos de confiança MC3<-(colSums(Dif3))/(row.data-1) desvio.padrao3<-sqrt(MC3) IC_NODFtotal<-desvio.padrao3*1.96 #(intervalos de confiança ao 95%) inf2<-NODF[,3]- IC_NODFtotal sup2<-NODF[,3]+ IC_NODFtotal NODF.total<-data.frame(NODF[,3],inf,sup) names(NODF.total)<-c("NODFcol", "IC95inf", "IC95sup") #gRAFICOS maxNODF.row<-nestednodf(data,order=TRUE, weighted=FALSE)$statistic[2] maxNODF.col<-nestednodf(data,order=TRUE, weighted=FALSE)$statistic[1] #GRAFICO NODFrow pdf("NODFgraf.pdf") par(mfrow=c(2,1), mar=c(4,4,1,1)) plot(NODF.rows$NODFrows, bty="l", type="n", xaxt="n", yaxt="n", xlab="", ylab="", ylim=c(0, 80), xlim=c(1,ncol.amb)) mtext(c(names.3d), cex=0.7, side = 1, line = 0.5, at = c(1:ncol.amb), tcl=20, las=1) text(7,80, "a", cex=0.8) axis(1, at=c(1:ncol.amb), label=FALSE, tick=TRUE, cex=1) axis(2, cex.axis=1, label=TRUE, cex.lab=1) title(xlab="Factor", line=1.5, cex.lab=0.9) title(ylab= "NODFrow", line=2.5,cex.lab=1) points(NODF.rows$NODFrows, pch="*", cex=1.5) abline(h=maxNODF.row, lty="dotted")#maximo valor de aninhamento dos dados originales. for(i in 1:ncol.amb) {lines(c(i,i),c(NODF.rows$IC95sup[i], NODF.rows$NODFrows[i]),col=3)} for(i in 1:ncol.amb) {lines(c(i,i),c(NODF.rows$IC95inf[i], NODF.rows$NODFrows[i]),col=3)} #GRAFICO NODFcol plot(NODF.col$NODFcol, bty="l", type="n", xaxt="n", yaxt="n", xlab="", ylab="", ylim=c(0, 80), xlim=c(1,ncol.amb)) mtext(c(names.3d), cex=0.7, side = 1, line = 0.5, at = c(1:ncol.amb), tcl=20, las=1) text(7,80, "b", cex=0.8) axis(1, at=c(1:ncol.amb), label=FALSE, tick=TRUE, cex=1) axis(2, cex.axis=1, label=TRUE, cex.lab=1) title(xlab="Factor", line=1.5, cex.lab=0.9) title(ylab= "NODFcol", line=2.5,cex.lab=1) points(NODF.col$NODFcol, pch="*", cex=1.5) abline(h=maxNODF.col, lty="dotted")#maximo valor de aninhamento dos dados originales. for(i in 1:ncol.amb) {lines(c(i,i),c(NODF.col$IC95sup[i], NODF.col$NODFcol[i]),col=3)} for(i in 1:ncol.amb) {lines(c(i,i),c(NODF.col$IC95inf[i], NODF.col$NODFcol[i]),col=3)} dev.off() respuesta<-list(maxNODF.row, NODF.rows, maxNODF.col, NODF.col, NODF.total) names(respuesta)<-c("Maximo aninhamento por linhas", "NODFrows com IC95%", "Maximo aninhamento por colunas", "NODFcol com IC95%", "NODFtotal com IC95%") cat("\n\t Gráficos de NODFrows e NODFcol disponíveis no arquivo NODFgraf.pdf em seu escritorio de trabalho. \n\n") return(respuesta) }