Traduções desta página:

Ferramentas do usuário

Ferramentas do site


05_curso_antigo:r2010:alunos:trabalho_final:rmwerneck:start

Rachel Werneck

Mestranda em Ecologia (IB - USP) Orientada pelo Dr. Glauco Machado. Nosso objetivo é tentar dominar o mundo. Enquanto isso não acontece nos divertimos estudando comportamento de opiliões.1)

Meus Exercícios

Proposta de Trabalho Final

Principal

O método de marcação e recaptura é usado em estudos populacionais para estimar parâmetros como o tamanho da população, a mortalidade e as taxas de migração. Na ecologia comportamental esse método também possibilita a compreensão do sistema de acasalamento em uma população, através de comparações entre os deslocamentos de machos e fêmeas ou os deslocamentos entre indivíduos do mesmo sexo. Por exemplo, se as fêmeas se deslocam menos do ques os machos, podemos pensar em hipóteses sobre a territorilidade das fêmeas e escolha dos sítios de reprodução. Se entre os machos de uma população existe uma diferença significativa dos deslocamentos, podemos pensar em hipóteses sobre diferenças morfológicas ou comportamentais dentro de uma mesma população.

O Objetivo da função

Calcular a distância percorrida por cada indivíduo, a média e a moda.

Comentário

Dependendo do conteúdo e formato dos dados de entrada, estimar esses parâmetros pode ser uma tarefa banal. Inclua na função algum teste de hipótese entre grupos. Por exemplo: teste de hipótese se o deslocamento entre dois níveis (machos e femeas) de um fator apresentam diferenças na média ou na moda. Acho que poderia faze-lo utilizando técnicas de monte carlo. — Alexandre Adalardo de Oliveira 2010/03/31 09:42

Página de Ajuda


rwalker                 package:nenhum                R Documentation

		Diferenças de deslocamento e Índice de Residência de machos e fêmeas

Description:

     Usando uma tabela com dados de captura e recaptura calcula a diferença entre
     os deslocamentos de machos e fêmeas e utiliza o Método de Monte Carlo para testar se
     essa diferença é significativa.Gera matrizes com as modas dos locais de recaptura e os
     Índices de Residência para cada indivíduo.

Usage:

     rwalker(x, hipotese="both", RI=T)

Arguments:

x: um objeto da classe data.frame contendo os locais de captura e recaptura dos indivíduos.

hipotese: lógico, indicando se o teste de hipóteses será bicaudal (H1), unicaudal (H2) ou ambos (both).

RI: lógico, indicando quando é desejável que os Índices de Residência sejam calculados.


Details:

	Peculiaridades do data.frame (x)

O data.frame com os dados a serem analisados precisa ser construído da seguinte forma:
Cada linha corresponde a um indivíduo.
A primeira coluna deve ser um vetor com dois níveis de um fator: M e F, para machos e fêmeas respectivamente.
A segunda coluna deve ser de identificação dos indivíduos e portanto deverá ser indicada como row.names se a tabela for
importada.
As colunas seguintes devem conter apenas números que representem os locais de captura e recaptura, para que possam ser
calculadas as distâncias entre eles. Os deslocamentos serão calculados como o somatório das diferenças entre o local de
captura na coluna t e o local de recaptura na coluna t+1. 
Quando o indivíduo não foi capturado (ou recapturado) este evento deverá representado por NA. 

	Cáluclo da moda

Para calcular as modas dos locais de recaptura é usada a função Mode() que pertence ao pacote prettyR.
Portanto será necessário baixar e instalar esse pacote.

	Simulação Monte Carlo

Para testar a hipótese de que a diferença das médias do deslocamento de machos e fêmeas não é gerada ao acaso ("H1")
e/ou que o deslocamento dos machos é maior do que o das fêmeas ("H2").
Número de simulações=1000

	Índices de Residência

O ìndice de residência (RI) é calculado pela equação: (N/n)*100, onde N é o número de vezes que um indivíduo foi
recapturado no local que representa a moda, ou seja, o local de maior frequência de recaptura, e n representa o número
de vezes que cada indivíduo foi recapturado durante o período de estudo. Quando um indivíduo nunca é recapturado duas
vezes no mesmo lugar o RI tende a zero e quando o indivíduo é recapturado 100% das vezes no mesmo local o RI tende a 1.
   

Value:

Retorna um histograma da frequência das diferenças entre os deslocamentos médios de machos e fêmeas, geradas pela
simulação. No caso do teste bicaudal, as linhas vermelhas marcam a diferença observada e a diferença observada*(-1).
No teste unicaudal a linha vermelha marca a diferença observada.

O argumento hipotese alimentado por "H1" retorna uma lista com os valores da diferença observada (Dif.obs) e a
probabilidade (P1) calculada coma simulação para o teste bilateral. Quando alimentado por "H2" retorna uma lista
com os valores Dif.obs e a probabilidade (P2) calculada para o teste unilateral. Alimentado por "both" retorna uma
lista com Dif.obs, P1 e P2.

Quando o argumento RI=T, os índices de residência para machos e fêmeas são calculados e apenas as quatro primeiras
linhas das matrizes contendo os índices são mostradas no console.

Retorna uma lista com os valores das médias de deslocamentos para machos e fêmeas, e mostra as quatro primeiras linhas
das matrizes que contem a moda.


Warning:

     Se o pacote prettyR não estiver instalado a função retornará uma mensagem de erro.

     Se o pacote prettyR estiver instalado mas não estiver carregado a funçãom retornará a mensagem:
	"Erro em match.fun(FUN) : objeto 'Mode' não encontrado"

     Se houver casos em que há mais de uma moda para o mesmo indivíduo a função retornará a mensagem: ">1 mode".



Author(s):

     Rachel Miranda Werneck


References:

http://ecologia.ib.usp.br/bie5782/doku.php?id=bie5782:02_tutoriais:start

Zatz C, Werneck RM, Macías-Ordóñez R, Machado G. Sexual selection on male weaponry in two neotropical harvestmen (Arachnida: Opiliones)

     
Examples:

### Instalar e carregar o pacote prettyR
install.package("prettyR") 
library(nome do pacote) 

##criando dados
a<-as.numeric(c("S",1,5,8,10,5,"NA","NA","NA","NA","NA","NA","NA","NA","NA","NA","NA"))
b<-as.numeric(c("S",2,6,6,6,7,"NA","NA","NA","NA","NA","NA","NA","NA","NA","NA","NA"))
c<-as.numeric(c("S",3,105,102,103,110,109,109,"NA","NA","NA","NA","NA","NA","NA","NA","NA"))
d<-as.numeric(c("S",4,24,20,24,21,14,12,11,4,5,5,8,6,6,6,6))
e<-as.numeric(c("S",5,"NA","NA","NA","NA",10,11,10,12,12,10,12,"NA","NA","NA","NA"))
f<-as.numeric(c("S",6,91,94,84,84,86,85,"NA","NA","NA","NA","NA","NA","NA","NA","NA"))
S<-sample(c(rep("M", 3), rep("F",3)))
D<-matrix(c(a,b,c,d,e,f), nrow=6, byrow=T)
desloc<-as.data.frame(D)
row.names(desloc)<-desloc[,2]
desloc[,1]<-S

#usando a função

rwalker(desloc)

rwalker(desloc, "H2", RI=F)

Código da Função

rwalker<-function(x, hipotese="both", RI=T)
 
   {
     pacotes_instalados<-rownames(installed.packages()) 
         vetor_logico<-pacotes_instalados=="prettyR" 
         s_logico<-sum(vetor_logico) 

        if (s_logico==0) 
                { 
                print("Erro: Sistema não possui pacote preetyR")	
                } 
        
        else 
                { 
      macho<-x[x[,1]=="M",]
      femea<-x[x[,1]=="F",]
      deslocF<-abs(apply(femea[,2:dim(femea)[2]],1,FUN=diff,lag=1,byrow=T,na.rm=T))
      deslocM<-abs(apply(macho[,2:dim(macho)[2]],1,FUN=diff,lag=1,byrow=T,na.rm=T))
      D.F<-apply(deslocF,2,sum,na.rm=T)
      D.M<-apply(deslocM,2,sum,na.rm=T)
      media.D.F<-mean(apply(deslocF,2,sum,na.rm=T))
      media.D.M<-mean(apply(deslocM,2,sum,na.rm=T))
      moda.F<<-matrix(apply(femea,1,Mode),ncol=1,nrow=dim(femea)[1],byrow=T)
      colnames(moda.F)<-("Moda")
      rownames(moda.F)<-paste(rownames(femea))
      moda.M<<-matrix(apply(macho,1,Mode),ncol=1,nrow=dim(macho)[1],byrow=T)
      colnames(moda.M)<-("Moda")
      rownames(moda.M)<-paste(rownames(macho))
      mf<-c(D.M,D.F)
      difer.media<-media.D.M-media.D.F
       
      ## Índice de Residência
              ###Fêmeas
              f.F<-as.matrix(femea[,2:dim(femea)[2]])
              FreqF<-as.matrix(NA,ncol=1,nrows= dim(f.F)[1])
              for (i in 1:dim(f.F)[1])
                {
                FreqF[i]<-max(table(f.F[i,]))#nro de vezes que cada indivíduo foi recaptura no local da moda
                RIF<- as.matrix(rep(NA),nrows=length(FreqF))
                  for (i in 1:length(FreqF))
                  {

                    RIF[i]<-((FreqF[i]/sum(table(f.F[i,])))*100)
                    }
                    }
              ###Machos
              f.M<-as.matrix(macho[,2:dim(macho)[2]])
              FreqM<-as.matrix(NA,ncol=1,nrows= dim(f.M)[1])
              for (i in 1:dim(f.M)[1])
                {
                FreqM[i]<-max(table(f.M[i,]))#nro de vezes que cada indivíduo foi recaptura no local da moda
                RIM<- as.matrix(rep(NA),nrows=length(FreqM))
                  for (i in 1:length(FreqM))
                    {
                    RIM[i]<-((FreqM[i]/sum(table(f.M[i,])))*100 )
                    }
                    }

                mRIF<<-as.matrix(RIF)
                colnames(mRIF)<-("Indice de Residencia Femeas")
                rownames(mRIF)<-paste(rownames(femea))
                mRIM<<-as.matrix(RIM)
                colnames(mRIM)<-("Indice de Residencia Machos")
                rownames(mRIM)<-paste(rownames(macho))
		    
          #Monte Carlo
          sexo=c(rep("M",length(D.M)),rep("F",length(D.F)))
          dif.mf=diff(tapply(mf,sexo,mean)[])

          result<-rep(0,1000)
          result[1]<-diff(tapply(mf,sexo,mean)[])
          for(i in 2:1000)
	           {
	           dif.dados=diff(tapply(sample(mf),sexo,mean)[])
	           result[i]<-dif.dados
	           }
          if (hipotese=="H1")#H1: Há diferença entre o deslocamento de machos e fêmeas. Teste bicaudal
              {
              H1=sum(result>=result[1]| result<=(result[1]*-1))
              p.H1=H1/length(result)
              LH1<-list(difer.media,p.H1)
              names(LH1)<-c("Dif.obs", "P1")

              if (RI==T)
              {
               print(list(head(mRIF),head(mRIM)))
               print(LH1)
               hist(result,main="", xlab="Diferenças entre as médias dos deslocamentos (Macho-Femea)", ylab="Frequências")
               abline(v = result[1], col="red")
               abline(v = result[1]*-1, col="red")
              }
              if (RI==F)
              {
                print(LH1)
                hist(result,main="", xlab="Diferenças entre as médias dos deslocamentos (Macho-Femea)", ylab="Frequências")
                abline(v = result[1], col="red")
                abline(v = result[1]*-1, col="red")
              }
              }

          if (hipotese=="H2")#H2: Machos se deslocam mais do que fêmeas. Teste unicaudal
            {
              H2=sum(result>=result[1])
              p.H2=H2/length(result)
              LH2<-list(difer.media, p.H2)
              names(LH2)<-c("Dif.obs","P2")
              if (RI==T)
              {
              print(LH2)
              print(list(head(mRIF),head(mRIM)))
              hist(result,main="", xlab="Diferenças entre as médias dos deslocamentos (Macho-Femea)", ylab="Frequências")
              abline(v = result[1], col="red")
               }
              if (RI==F)
              {
              print(LH2)
              hist(result,main="", xlab="Diferenças entre as médias dos deslocamentos (Macho-Femea)", ylab="Frequências")
              abline(v = result[1], col="red")
              }
              }
          if (hipotese=="both")
            {
              H1=sum(result>=result[1]| result<=(result[1]*-1))
              p.H1=H1/length(result)
              H2=sum(result>=result[1])
              p.H2=H2/length(result)
              L<-list(difer.media,p.H1, p.H2)
              names(L)<-c("Dif.obs", "P1", "P2")

              if (RI==T)
              {
                hist(result,main="", xlab="Diferenças entre as médias dos deslocamentos (Macho-Femea)", ylab="Frequências")
                abline(v = result[1], col="red")
                abline(v = result[1]*-1, col="red")
                print(L)
                print(list(head(mRIF),head(mRIM)))
              }
              if (RI==F)
              {
              hist(result,main="", xlab="Diferenças entre as médias dos deslocamentos (Macho-Femea)", ylab="Frequências")
              abline(v = result[1], col="red")
              abline(v = result[1]*-1, col="red")
              print(L)
              }
          }
   {
  cat(' A função gerou matrizes separadas para machos e fêmeas, com a moda do local de recaptura e os índices de residência para cada indivíduo.
  Para consultar essas matrizes forneça o nome do objeto:
    moda.F : matriz com os valores da moda para as fêmeas
    moda.M : matriz com os valores da moda para os machos
    mRIF: matriz com os índices de residência das fêmeas
    mRIM: matriz com os índices de residência dos machos\n\n\n ')
    {
    resumo<-list(media.D.F, media.D.M, head(moda.F),head(moda.M))
    names(resumo)<-c("Deslocamento médio F", "Deslocamento médio M", "Moda F", "Moda M")
    print(resumo)
     }                
          {
cat('\n           "KEEP WALKING"\n
                    RWalker\n')
                    }
             }
             }
             }
             

Arquivo da Função

Agradecimentos

Aos professores, “May the force be with you”. Aos monitores (um 'tks' especial pro Fábio que desenhou quando eu precisei ^_^) . Aos coleguinhas. Ao Musgo pelos seus 20 minutos de vida, help's, conselhos e críticas (Monkey work!). Aos amigos que compreenderam a mudança de comportamento e de linguagem. Ao Dr. Glauco Machado pela “Pergunta Fundamental da Vida, do Universo e Tudo Mais”.

1)
Bazzinga!
05_curso_antigo/r2010/alunos/trabalho_final/rmwerneck/start.txt · Última modificação: 2020/08/12 06:04 (edição externa)