Traduções desta página:

Ferramentas do usuário

Ferramentas do site


05_curso_antigo:r2015:alunos:trabalho_final:vinicius.biffi:start

Vinícius Biffi

Mestrando em Ecologia, Instituto de Biociências, USP.

O título de minha dissertação é “O que faz de um indivíduo um invasor? Atributos individuais, formas de manejo e determinantes ambientais associados à invasão de remanescentes de Mata Atlântica por cachorros domésticos”, com orientação da professora Renata Pardini.

O trabalho de campo para coleta dos dados já está em andamento, e como a internet por aqui não é das melhores, vou deixar pra aprimorar esta página quando estiver em São Paulo.

Exercícios

Trabalho Final

Proposta A

A função deverá realizar uma buscar em um dataframe a partir das coordenadas fornecidas pelo usuário, retornando um subset com as linhas cujas coordenadas se encontrem em um raio de até x km daquele ponto, sendo x um valor apresentado pelo usuário. Pretendo utilizar o pacote “sp” para auxiliar no cálculo das distâncias entre as coordenadas.

Cada linha do dataframe representa um objeto observado, com sua localização e características associadas. No caso específico, em que os objetos são cães, essas características podem ser o sexo, a idade, e informações sobre castração e vacinação, entre outras. Adicionalmente tais características podem ser incluídas como argumentos na busca, servindo como um filtro para o subset que retornará como resultado.

Proposta B

Iscas são utilizadas em diversos trabalhos de amostragem de fauna, com o intuito de atrair indivíduos para as armadilhas. Porém, ao longo dos dias elas são consumidas e apodrecem, podendo ter seu efeito reduzido.

A função deverá realizar uma análise exploratória dos dados e uma ANOVA multifatorial, tendo os dias como variáveis independentes (fatores) e o número de registros como variável resposta, a fim de verificar se existe uma tendência de perda do efeito das iscas. A análise exploratória será composta por um sumário, um histograma e boxplots.

Os dados devem ser inseridos em forma de dataframe, em que cada linha representa um ponto de captura e cada coluna representa o número de registros em um dia.

Oi, Vinícius!

Então, as suas propostas estão um pouco simples e você precisa descrever mais detalhadamente como as suas funções vão funcionar:

- Na proposta A, como você vai calcular as distâncias entre as coordenadas? E o que você chama de características associadas do seu objeto observado? Se essas características entrarem como argumentos da sua função, elas servirão para você filtrar os dados do seu dataframe?

- Na proposta B, que informações exatamente você pretende usar para dizer se existe mesmo ou não um efeito de perda do efeito das iscas? Seria interessante, provavelmente, você incluir algum teste estatístico na sua função que apoie a sua análise.

Viviane Santos 2015/03/24 14:43

Comentários Vitor Rios

Vinicius, esclarece melhor suas propostas, detalhando o que a função faz. Sua primeira função retorna um vetor com tudo que estiver em um raio x a partir de um ponto determinado pelo usuário? sua função B é apenas uma análise de gráficos? acho que vc pode expandir mais suas idéias, elas me parecem muito simples

Função (Proposta A)

# Seleciona a partir de um conjunto de dados fornecido pelo usuário um subconjunto
# que contenha os indivíduos que se encontrem a uma dada distância de um determinado
# ponto, opcionalmente respeitando critérios de sexo, castração e idade.
seleciona <- function(data,x,y,km,sexo,castracao,idade)
{
  # confere se x foi fornecido pelo usuário e o avisa em caso negativo, mas dá sequência à função
  if(missing(x)){a=data; cat("Aviso: não foram fornecidas as coordenadas do ponto de referência ou a distância limite.\n\n")}
  else{ # se x foi fornecido
    # confere se y foi fornecido pelo usuário e o avisa em caso negativo, mas dá sequência à função
    if(missing(y)){a=data; cat("Aviso: não foram fornecidas as coordenadas do ponto de referência ou a distância limite.\n\n")}
    else{ # se y foi fornecido
      # confere se km foi fornecido pelo usuário e o avisa em caso negativo, mas dá sequência à função
      if(missing(km)){a=data; cat("Aviso: não foi fornecida a distância limite.\n\n")}
      else{ # se km foi fornecido
        # carrega o pacote "sp"
        library(sp)
        # transforma x e y em matriz
        z=matrix(c(x,y),nrow=1)
        # calcula a distância entre o ponto de cada linha do data.frame e o ponto de referência fornecido pelo usuário
        dist=spDistsN1(as.matrix(data[,2:3]),z,longlat=TRUE)
        # cria uma coluna no data.frame com o vetor dist
        data$dist=dist
        # seleciona as linhas cujas distâncias para o ponto de referência sejam menores que 'km'
        a=subset(data,dist<km)
      }
    }
  }
  # confere se foi selecionada alguma opção para o argumento 'sexo'
  if(missing(sexo)){b=a} # se não, ignora o argumento 'sexo' e passa ao argumento 'castracao'
  else{ # se sim
    # seleciona as linhas cujos indivíduos sejam fêmeas
    if(sexo=="femea"){b=subset(a,sexo==0)}
    # seleciona as linhas cujos indivíduos sejam machos
    if(sexo=="macho"){b=subset(a,sexo==1)}
    # seleciona as linhas de cujos indivíduos não se sabe o sexo
    if(sexo=="?"){b=subset(a,sexo==9)}
    # interrompe a função se o valor escolhido para o argumento for diferente dos disponíveis
    if(sexo!="femea"&sexo!="macho"&sexo!="ns") stop("Verifique o valor do argumento 'sexo'")    
  }
  # confere se foi selecionada alguma opção para o argumento "cast"
  if(missing(castracao)){d=b} # se não, ignora o argumento 'castracao' e passa ao argumento 'idade'
  else{ # se sim
    # seleciona as linhas cujos indivíduos não sejam castrados
    if(castracao=="nao"){d=subset(b,castracao==0)}
    # seleciona as linhas cujos indivíduos sejam castrados
    if(castracao=="sim"){d=subset(b,castracao==1)}
    # seleciona as linhas cujos indivíduos não se sabe se foram castrados
    if(castracao=="ns"){d=subset(b,castracao==9)}
    # interrompe a função se o valor escolhido para o argumento for diferente dos disponíveis
    if(castracao!="nao"&castracao!="sim"&castracao!="ns") stop("Verifique o valor do argumento 'castracao'")
  }
  # confere se foi selecionada alguma opção para o argumento "idade"
  if(missing(idade)){e=d} # se não, ignora o argumento 'idade' e passa aos resultados da função
  else{ # se sim
    # seleciona as linhas cujos indivíduos tenham menos que 1 ano
    if(idade=="jovem"){e=subset(d,idade<1)}
    # seleciona as linhas cujos indivíduos tenham 1 ano ou mais
    if(idade=="adulto"){e=subset(d,idade>=1&idade!="ns")}
    # interrompe a função se o valor escolhido para o argumento for diferente dos disponíveis
    if(idade!="jovem"&idade!="adulto") stop("Verifique o valor do argumento 'idade'")
  }
  # se nenhum indivíduo se enquadrar na busca
  if(dim(e)[1]==0) {cat("Nenhum resultado foi encontrado.")}
  else{ # se algum indivíduo se enquadrar na busca
    # retorna as linhas do data.frame que preenchem todos os requisitos
    cat("Foram encontrados "); cat(dim(e)[1]); cat(" resultados.\n\n")
    # retorna as linhas do data.frame que preenchem todos os requisitos
    return(e)
  }
}

Help

seleciona                package:nenhum                R Documentation
 
Seleção de indivíduos sob critérios a serem definidos pelo usuário.
 
 
Description:
 
Seleciona, a partir de um conjunto de dados fornecido pelo usuário, um subconjunto que
contenha indivíduos que se encontrem a uma dada distância de um determinado ponto, 
opcionalmente respeitando critérios de sexo, castração e idade.
 
 
Usage:
 
seleciona(data,x,y,km,sexo,castracao,idade)
 
 
Arguments:
 
data		Data.frame contendo methods/html/as.html">as informações sobre os indivíduos.
 
x		Valor numérico: latitude do ponto de referência selecionado, em graus
		decimais.
 
y		Valor numérico: longitude do ponto de referência selecionado, em graus 
		decimais.
 
km		Valor numérico: distância limite da localização do indivíduo ao ponto
		de referência, em quilômetros.
 
sexo		Sexo dos indivíduos a serem selecionados. Valores possíveis: 'femea',
		para indivíduos fêmeas, 'macho', para machos, e 'ns', para quando o 
		sexo é desconhecido.
 
castracao	Situação dos indivíduos a serem selecionados quanto à castração.
		Valores possíveis: 'sim', para indivíduos castrados, 'nao', para 
		indivíduos não castrados, e 'ns', para quando não se sabe se o
		indivíduo é castrado.
 
idade		Faixa etária dos indivíduos a serem selecionados. Valores possíveis:
		'jovem', para indivíduos menores de 1 ano, e 'adulto', para indivíduos
		com 1 ano ou mais.
 
 
Details:
 
É necessário ter o pacote 'sp' instalado.
 
Se usado o sistema de localização, a latitude e longitude devem estar presentes no
data.frame respectivamente na segunda e terceira colunas, em formato de graus decimais.
 
Se os argumentos 'sexo', 'castracao' e 'idade' forem usados, methods/html/as.html">as informações referentes
a eles devem estar presentes no data.frame sob colunas de mesmo nome.
 
 
Value:
 
Retorna um subset do data.frame, contendo methods/html/as.html">as linhas referentes aos indivíduos que se
enquadram nos critérios definidos pelo usuário.
 
 
Author:
 
Vinicius Leonardo Biffi
vinicius.biffi@usp.br
 
 
Examples:
 
plan <- read.csv2("planilha.csv", as.is=T)
seleciona(plan,idade="jovem")
 
plan <- read.csv2("planilha.csv", as.is=T)
seleciona(plan,-22.964944,-46.208889,0.9,"femea","sim","adulto")

Arquivos

Script da função 'seleciona'

Help da função 'seleciona'

.csv cachorros (para teste)

05_curso_antigo/r2015/alunos/trabalho_final/vinicius.biffi/start.txt · Última modificação: 2020/09/23 17:15 por adalardo