Ferramentas do usuário

Ferramentas do site


05_curso_antigo:r2013:alunos:trabalho_final:rafaduarte87:start

Rafael Campos Duarte

foto_lattes.jpg

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)
  } 
  
05_curso_antigo/r2013/alunos/trabalho_final/rafaduarte87/start.txt · Última modificação: 2020/08/12 06:04 (edição externa)