====== 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 ===== [[.:exec]] ===== 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.sds90@gmail.com|Viviane Santos]] 2015/03/24 14:43// 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=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 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, 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 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 {{:01_curso_atual:alunos:trabalho_final:vinicius.biffi:funcao-final.r|Script da função 'seleciona'}} {{:01_curso_atual:alunos:trabalho_final:vinicius.biffi:help-funcao.txt|Help da função 'seleciona'}} {{:01_curso_atual:alunos:trabalho_final:vinicius.biffi:planilha.csv|.csv cachorros (para teste)}}