====== Rafael Campos Duarte ====== {{:bie5782:01_curso_atual:alunos:trabalho_final:rafaduarte87:foto_lattes.jpg?200|}} Doutorando em Biologia Comparada, Faculdade de Filosofia, Ciências e Letras de Ribeirão Preto - USP ===== Exercícios ===== Link para página com os meus exercícios resolvidos: [[.:exec]] ===== Proposta de trabalho final ===== ==== Plano A ==== === "Line Intercept Method" === Criar uma função que automatize o método de intercepto de linha (“Line Intercept Method” – Eberhardt 1978), bastante utilizado em estudos com plantas e comunidades de animais sésseis e que será utilizado nas análises de alguns resultados obtidos no meu projeto de doutorado. O objetivo principal do método é obter estimativas de cobertura (abundância ou densidade) de determinada espécie em uma comunidade utilizando transectos lineares. É um método bastante abrangente e pode ser aplicado, por exemplo, para estimar a cobertura de árvores e arbustos em um dossel, a cobertura de algas na região sublitoral de um costão rochoso, ou até mesmo a área coberta por tocas de caranguejos em um manguezal, entre outras aplicações. A função deverá ter quatro principais dados de entrada: (i) um valor único que indique o comprimento total da área estudada (baseline); (ii) um vetor de dimensões variáveis, indicando os comprimentos das linhas traçadas na área de estudo; (iii) um vetor que contenha para cada transecto, a medida referente à largura das unidades amostrais (plantas, algas, tocas...) interceptadas pela linha; e (iv) o valor de probabilidade de erro do tipo I (α = 0,05; 0,001...) utilizado para a construção do intervalo de confiança da média. A função retornará 3 valores: (i) abundância média e (ii) densidade média dos indivíduos na área amostrada; e (iii) intervalo de confiança para ambas as médias, uma vez que as estimativas são sempre baseadas em mais de uma linha de intercepto. Eberhardt, L. L. 1978. Transect methods for population studies. Journal of Wildlife Management, 42: 1-31. ==== Plano B ==== === Método de Wiegert para estimar o melhor quadrado amostral === Criar uma função que realize o método de Wiegert (1962) para determinar o tamanho ótimo do quadrado (unidade amostral) em uma amostragem prévia. Esse método é bastante utilizado em estudos-piloto, onde não se conhece a priori a variabilidade dos dados, nem o custo associado à amostragem. A escolha da melhor unidade amostral antes da realização do estudo em si, torna-se bastante importante, pois o método de Wiegert indica previamente qual o tamanho da unidade amostral que possui o melhor custo/benefício associado. O diferencial dessa função com relação ao método original é que, para aumentar o poder do método, será incluído o intervalo de confiança para a média obtida para cada tamanho de quadrado. A função deverá ter três principais dados de entrada: (i) um vetor que indique o custo, na forma de tempo, gasto para realizar a amostragem para determinado tamanho de quadrado; (ii) um dataframe que contenha uma coluna numérica que apresente os dados de contagem/ biomassa/ cobertura de determinada espécie por quadrado e uma coluna com os respectivos tamanhos dos quadrados, na forma de fatores; (iii) o valor de probabilidade de erro do tipo I (α = 0,05; 0,001...) utilizado para a construção do intervalo de confiança da média. A função retornará um valor único indicando qual o tamanho do quadrado que apresenta a melhor razão custo/benefício, ou seja, o menor valor do produto entre o intervalo de confiança para a respectiva média e o custo associado. Wiegert, R. G. 1962. The selection of an optimum quadrat size for sampling the standing crop of grasses and forbs. Ecology, 43: 125-129. === Comentários === Ola Rafael, As duas propostas me parecem factíveis e úteis. Pode escolher a que for mais útil para você e se o desafio não for muito grande, você pode tornar a função mais complexa, como utilizando diferentes métodos para calcular o intervalo de confiança da densidade e abundância. === Resposta ao comentário === Olá! Escolhi pela proposta B, uma vez que me será bastante útil futuramente. Realizei algumas modificações na ideia original: 1) Estabeleci 2 métodos para o cálculo do intervalo de confiança para a média, um baseado numa distribuição t e o outro baseado no métodos de bootstrap. 2) Removi o argumento "valor de p", e padronizei todas as análises para um valor de p de 0.05. Da mesma forma, no caso das análises de bootstrap, padronizei 10000 simulações. 3) Adicionei um novo argumento, chamado "area", que é utilizado para se obter as estimativas de densidade. Entretanto, caso não se conheça o valor da área, propus uma forma de estimá-la usando 2 dos outros argumentos da função (x e base). Acho que é isso! Obrigado pelas dicas === Resolução Proposta A - Line Intercept Method === == Página de ajuda / Help == LIM package:none R Documentation Description This function performs the Line Intercept Method, proposed by Eberhardt (1978). The main objective of this method is to obtain a cover estimate (abundance and/or density) of a determined species in a community using linear transects. Usage LIM (object, x, base, area, method=”student”) Arguments object An object of class data.frame, containing in the first column, the perpendicular width of individuals intercepted by the i st transect line; and in the second column, the correspondent number (i) of the transect line. x A vector containing the length of line transects. base An integer indicating the width of the base line from which the transects begin. area An integer indicating the total study area where lines were traced. If not specified (NULL), the study area will be calculated by dividing the average length of all lines and the baseline. method The method to calculate confidence intervals for abundance and density means. The default is based in a “t student” distribution (method = “student”), but the other option is to use a bootstrap method with 10000 simulations (method = “bootstrap”). Value A list containing one matrix with species abundance and density for each transect line; and another matrix showing the confidence interval for mean abundance and density, indicating beyond the mean, the percentiles of 5 and 95%. Author Rafael Campos Duarte (rafaduarte87@gmail.com) References Eberhardt, L. L. 1978. Transect methods for population studies. Journal of Wildlife Management, 42: 1-31. Krebs, C. J. 1999. Ecological Methodology, 2nd ed. Addison-Wesley Educational Publishers, Inc. Example # this is an example found in the book of Krebs (1999). Four lines were laid out at random along a 125 m baseline to estimate the willow density on an irregular area bordering a stream. The study area was 6.3 ha. # values of the intercept distances width_1<-c(1.3, 3.1, 0.8, 2.2, 0.4, 1.7, 0.2, 1.5, 1.9, 0.4, 0.1) width_2<-c( 1.1, 0.1, 1.8, 2.7, 2.4, 0.7, 0.4, 0.3, 1.4, 0.1, 2.1, 2.3) width_3<-c(0.3, 1.7, 2.1, 0.2, 0.2, 0.4, 1.1, 0.3) width_4<-c(3.3, 3.0, 1.4, 0.2, 1.7, 1.1, 0.2, 1.9, 0.9) width<-c(width_1, width_2, width_3, width_4) lines<-c(rep(1,length(width_1)),rep(2, length(width_2)), rep(3, length(width_3)), rep(4, length(width_4))) dat<-data.frame(width,lines) len<-c(438,682,511,387) # length of each transect line baseline<-125 area<-6.3 # applying the “LIM function”, using a t student distribution to calculate the confidence intervals for mean LIM(dat,len,baseline,area) # applying the “LIM function”, using a bootstrap procedure to calculate the confidence intervals for mean LIM(dat,len,baseline,area,method= "bootstrap") == Código da função LIM == # Line intercepet method function LIM<-function(object,x,base,area=NULL,method="student") { # object entry standardization colnames(object)<-c("width","line") object$line<-as.factor(object$line) object$relative<-1/object$width # abundance estimate for each transect line abundance<-rep(NA,length(unique(object$line))) for(i in 1:length(unique(object$line))) { abundance[i]=base*sum(object$relative[object$line==i]) } # density estimate for each transect line if(mode(area)=="numeric") { density=abundance/area } if(mode(area)=="NULL") { density<-abundance/(mean(x)*base) } # mean and standard deviation calculation of parameters used to calculate confidence intervals y<-rep(NA,length(unique(object$line))) for(i in 1:length(unique(object$line))) { y[i]=sum(object$relative[object$line==i]) } mean_y<-mean(y) sd_y<-sd(y) mean_length<-mean(x) sd_length<-sd(x) dev_y<-(y-mean_y) dev_length<-(x-mean_length) cross_product<-sum(dev_y*dev_length)/(((length(unique(object$line)))-1)*mean_y*mean_length) # standard error calculation for mean abundance and mean density mean_abundance<-mean(abundance) mean_density<-mean(density) error_abundance<-mean_abundance*(sqrt((((sd_y/mean_y)^2)+((sd_length/mean_length)^2)-2*cross_product)/(length(unique(object$line))-1))) error_density<-mean_density*(sqrt((((sd_y/mean_y)^2)+((sd_length/mean_length)^2)-2*cross_product)/(length(unique(object$line))-1))) # confidence interval calculation for abundance and density mean if(method=="student") # confidence interval based in a t student distribution { t_value<-qt(0.05/2,length(unique(object$line))-1,lower.tail=F) ci_abundance<-error_abundance*t_value lower_abundance<-mean_abundance-ci_abundance upper_abundance<-mean_abundance+ci_abundance ci_density<-error_density*t_value lower_density<-mean_density-ci_density upper_density<-mean_density+ci_density estimate<-matrix(c(lower_abundance,mean_abundance,upper_abundance,lower_density,mean_density,upper_density),nrow=2,ncol=3,byrow=T) colnames(estimate)<-c("5%","mean","95%") rownames(estimate)<-c("abundance","density") } if(method=="bootstrap") # confidence interval based in a bootstrap methodology { resulta_abundance=rep(NA,10000) for(i in 1:10000) { resulta_abundance[i]<-mean(sample(abundance, replace=TRUE)) } resulta_density=rep(NA,10000) for(i in 1:10000) { resulta_density[i]<-mean(sample(density, replace=TRUE)) } quant_abundance<-quantile(resulta_abundance, prob=c(0.05, 0.95)) quant_density<-quantile(resulta_density, prob=c(0.05, 0.95)) estimate<-matrix(c(quant_abundance[1],mean_abundance,quant_abundance[2],quant_density[1],mean_density,quant_density[2]),nrow=2,ncol=3,byrow=T) colnames(estimate)<-c("5%","mean","95%") rownames(estimate)<-c("abundance","density") } # construction of the final objects, which will be shown in the screen abundance<-round(abundance,0) density<-round(density,3) final<-matrix(c(abundance,density),byrow=T,nrow=2,ncol=length(unique(object$line))) rownames(final)<-c("abundance","density") colnames(final)<-paste("line",levels(object$line)) result<-list(final,estimate) names(result)<-c("table","mean confidence interval") return(result) } ===== Links da função e help ===== {{:bie5782:01_curso_atual:alunos:trabalho_final:rafaduarte87:function.r|}} {{:bie5782:01_curso_atual:alunos:trabalho_final:rafaduarte87:lim_documentation.docx|}}