====== Marina de Oliveira Fernandez ====== {{:bie5782:01_curso_atual:alunos:trabalho_final:marina.fernandez:marina_1.jpg?200|}} Mestranda em Zoologia no IB, USP. O título do meu projeto é "Dinâmica sazonal da comunidade de cnidários bentônicos em larga escala latitudinal da costa brasileira", sob orientação do Prof. Antonio Carlos Marques. [[.:exec]] ===== Propostas de Trabalho Final ===== ===== Proposta A ===== Meu projeto de mestrado consiste em investigar se o recrutamento sazonal de cnidários bentônicos flutua de maneira estocástica ou se há padrões diferenciados e persistentes em diferentes latitudes. Para isso estudo a sazonalidade do recrutamento utilizando placas que são colocadas no mar e nas quais as espécies se assentam e sobrevivem por 3 meses, quando as retiro do mar e coloco novas. Assim, possuo dados do número de ocorrências das espécies em diferentes períodos. Minha proposta é criar uma função que me devolva valores de riqueza e abundância das espécies para cada período e verifique se há diferenças nas composições das assembleias entre os períodos. Se possível, gostaria de fazer uma função que me retornasse quais espécies estão influenciando mais nas diferenças entre os períodos. ===== Proposta B ===== Como possuo dados de epibiose das espécies, a proposta B seria criar uma função que verifica se há preferência das espécies por determinado hospedeiro. ===== Comentários ===== ==== PI ==== As duas ideias são atraentes e bem fundamentadas. O potencial limitante é o quanto vc vai já está familiarizada com os procedimentos estatísticos que pretende implementar nesta funções. Assim, para a proposta 1 vc precisa definir uma maneira de comparar as assembleias, e como avaliar o efeito de cada espécie sobre as eventuais diferenças. Se ainda não tem ideia de como fazer, avalie se terá tempo para estudar isso e depois implementar a rotina em uma função de R. O mesmo vale para a segunda proposta que, além disso, deve ganhar generalidade (e.g. uma função para avaliar preferência/escolha por animais). ==== Comentário Marina ==== Optei pela proposta B. ===== Código da função ===== ### Marina de Oliveira Fernandez - 2012 - Depto de Zoologia - IBUSP ### Função preferida.sp ### Verifica preferência/escolha por espécies preferida.sp <- function(x) { if(nrow(x)<=1) { cat("\t A tabela deve conter no mínimo 2 linhas.\n\t Nenhum valor foi calculado.\n") } if(ncol(x)<=1) { cat("\t A tabela deve conter no mínimo 2 colunas.\n\t Nenhum valor foi calculado.\n") } if(sum(is.na(x)>0)) { cat("\t Valor(es) NA(s) presente(s).\n\t Nenhum valor foi calculado.\n") } if(sum(x<0, na.rm=TRUE)>0) { cat("\t Valor(es) negativo(s) presente(s). \n\t Nenhum valor foi calculado.\n") } if((dim(x)[1]>1)&(dim(x)[2]>1)&(sum(is.na(x))==0)&(sum(x<0)==0)) { # soma os totais das linhas e colunas: total.colunas <- apply(x,2,sum) total.linhas <- apply(x,1,sum) total.geral <- sum(x) # transforma em matriz: x <- as.matrix(x) # cria uma matriz do mesmo tamanho,onde serão colocados os valores esperados: nvalores <- ncol(x)*nrow(x) nvalores matriz.esperada <- matrix(rep(NA,nvalores), ncol=ncol(x)) # coloca os valores esperados na matriz criada: for(i in 1:nrow(matriz.esperada)) for(j in 1:ncol(matriz.esperada)) { matriz.esperada[i,j] = ((total.linhas[i]*total.colunas[j])/total.geral) } # subtrai a matriz observada da esperada, eleva ao quadrado e divide pela esperada: tabela.qui <- ((x-matriz.esperada)^2/matriz.esperada) # soma os valores da tabela e encontra o valor do qui-quadrado: valor.qui <- sum(tabela.qui) # calcula os graus de liberdade: gl <- (nrow(x)-1)*(ncol(x)-1) # calcula o valore de P: valor.p <- pchisq(valor.qui,gl, lower.tail=FALSE) if(valor.p>=0.05) { cat("\t Valor de p =",valor.p,"\n\t Não há diferença significativa entre as observações.\n\n") } if(valor.p<0.05) { cat("\t Valor de p =",valor.p,"\n\t Há diferença significativa entre as observações.\n\n") # cria matriz onde serão colocados os resultados de (1-plinha)(1-pcoluna): matriz.intermediaria <- matrix(rep(NA,nvalores), ncol=ncol(x)) # coloca os resultados na matriz intermediaria: for(i in 1:nrow(matriz.intermediaria)) for(j in 1:ncol(matriz.intermediaria)) { matriz.intermediaria[i,j]= (1-(total.linhas[i]/total.geral))*(1-(total.colunas[j]/total.geral)) } # cria a matriz dos resíduos padronizados de cada célula: matriz.residuos <- (x-matriz.esperada)/sqrt(matriz.esperada*matriz.intermediaria) # encontra os valores maiores que o intervalo de confiança -2=2 which(logica.g) tam.g <- length(which(logica.g)) # cria um vetor para colocar os nomes das linhas com os TRUE: nomes.linhas.g <- rep(NA,tam.g) # obtém os nomes das linhas com TRUE: for(i in 1:tam.g) { y = which(logica.g)[i] k <- arrayInd(y, dim(logica.g)) nomes.linhas.g[i] = rownames(logica.g)[k[,1]] } # cria um vetor para colocar os nomes das colunas com os TRUE: nomes.colunas.g <- rep(NA,tam.g) # obtém os nomes das colunas com TRUE for(i in 1:tam.g) { y = which(logica.g)[i] k <- arrayInd(y, dim(logica.g)) nomes.colunas.g[i] = colnames(logica.g)[k[,2]] } # Devolve na tela quais espécies tem "preferências": for (i in 1:tam.g) { cat("\t A espécie",nomes.linhas.g[i],"prefere/escolhe",nomes.colunas.g[i],".\n\n") } # encontra os valores menores que o intervalo de confiança -2 ===== Página de ajuda da função ===== preferida.sp package:nenhum R Documentation Avaliar preferência por animais. Descrição: A função verifica se há preferência ou escolha de espécies por uma outra determinada espécie ou grupo (por exemplo escolha de um epibionte por determinada espécie para assentamento). Os cálculos são feitos a partir de uma tabela de contingência contendo o número de observações de cada espécie associada a outra. Uso: preferida.sp(x) Argumentos: x Um data frame ou uma matriz, com ao menos duas linhas e duas colunas. Deve conter apenas números positivos. Detalhes: A função faz, primeiramente, um teste de qui-quadrado para verificar se há diferenças significativas entre as observações. Caso o valor de p seja < 0.05, a função calcula os resíduos padronizados em cada célula. Os resíduos que estiverem fora de um intervalo de confiança são considerados como provenientes de observações significantemente diferentes. Se positivos, a função mostra na tela quais são as espécies que apresentaram "preferência" por determinada espécie. Se negativos, a função mostra na tela quais são as espécies que "evitaram" determinada espécie. Valor: Uma lista contendo os seguintes componentes: estatística: o valor da estística-teste de qui-quadrado. graus de liberdade: os graus de liberdade do teste estatístico de qui-quadrado. valor de p: o valor de p do teste. Avisos: Caso os dados inseridos sejam um data frame ou uma matriz com apenas uma linha ou uma coluna, aparecerá uma mensagem avisando e os cálculos não serão feitos. Caso faltem valores nos dados inseridos ou estes apresentem número negativos, aparecerá uma mensagem avisando e os cálculos não serão feitos. Autor: Marina de Oliveira Fernandez mafernandez_bio@hotmail.com Referências: Agresti, A. (2007) An Introduction to Categorical Data Analysis, 2nd ed., New York: John Wiley & Sons. Veja também: Para o cálculo do qui-quadrado apenas, veja chisq.test. Exemplo: # Exemplo exemplo <- matrix (c(17,22,40,20,15,25,34,27,25,17,29,31,28,13,33), ncol=3) colnames(exemplo) <- c("Esponja", "Ascídia", "Briozoário") rownames(exemplo) <- c("sp1","sp2","sp3","sp4","sp5") preferida.sp(exemplo) ===== Arquivo da função ===== {{:bie5782:01_curso_atual:alunos:trabalho_final:marina.fernandez:preferida.sp.r|}}