Traduções desta página:

Ferramentas do usuário

Ferramentas do site


05_curso_antigo:r2013:alunos:trabalho_final:izadoram:start

izadora_m..jpg

Izadora Mattiello

Bióloga e mestranda em Oceanografia (Biológica), Instituto Oceanográfico, USP.

Título da minha tese: “Uso de corantes vitais para identificação da viabilidade de organismos planctônicos marinhos”, orientada pelo professor Rubens Mendes Lopes (IO-USP).

Exercícios

Trabalho Final

Proposta A - inicial Gostaria de aproveitar a flexibilidade do R para tentar reproduzir um gráfico de um paper (Fig.1) nos dados da minha iniciação científica. A proposta é tentar comparar o tamanho de indivíduos jovens e adultos (machos, fêmeas e fêmeas ovadas) quando estão associados à diferentes hospedeiros e analisar qual associação tem mais jovens ou adultos, de qual sexo, qual tamanho predominante, em qual dos casos a colonização se inicia mais cedo e em que tamanho as fêmeas estão aptas para se reproduzir nos diferentes hospedeiros. Para isso, creio que primeiramente deve ser feito uma matriz com os dados, ou mesmo uma tabela, e depois gostaria de criar uma função que gerasse ao mesmo tempo o gráfico da figura 1 (que é bem descritivo) e uma regressão linear, a fim de complementar a análise.

grafico_tamanho.jpg Fig. 1: Relação do tamanho de machos, fêmeas e jovens do anfípodo Leucothoe “ascidicola” encontrados em cada mês no interior de ascídias solitárias.

Um dos desafios desta proposta é inserir os símbolos de “macho” e “fêmea” no R, que eu não sei ainda se existe em algum pacote. Apesar de ser uma proposta direcionada a um estudo já realizado, creio que pode ajudar outros pesquisadores que queiram fazer qualquer análise em que se utiliza as categorias “machos” e “fêmeas”. É um gráfico bem visual.

Proposta B - inicial Meu plano B é tentar analisar a presença e ausência de um organismo em função do tamanho do seu hospedeiro. Para isso, pretendo criar uma função que forneça tanto o gráfico de regressão logística quanto um gráfico parecido com da figura 1, mas com os sinais de “+” e “-”.

É possível criar dois gráficos diferentes em uma mesma função? Será que uma das propostas é viável?

Reformulando a proposta “A” Para generalizar minha função, a proposta é plotar um gráfico “Tamanho dos inquilinos” (diferenciando machos, fêmeas e jovens através de símbolos) X “Tamanho do hospedeiro” (dividido em classe de tamanhos), a fim de visualizar se o tamanho do hospedeiro tem alguma relação no tamanho dos inquilinos e qual a concentração de inquilinos machos, fêmeas e jovens por classe de tamanho do hospedeiro. Para isso, creio que a melhor saída seria a regressão múltipla. Fazer primeiro a regressão tamanho do hospedeiro x tamanho das fêmeas, e depois adicionar as regressões com os tamanhos dos machos e dos jovens.

Portanto, se você possui 8 classes de tamanho do hospedeiro, você terá no final 8 gráficos. E em cada gráfico será plotado o tamanho dos indivíduos (machos, fêmeas e jovens) encontrados no interior do hospedeiro de determinada classe de tamanho (Fig. 2). Para gerar 8 gráficos, cada um com uma classe de tamanho, pensei em indexar as informações da minha tabela de cada classe de tamanho.

exemplo_trab_final.jpg Fig. 2: Relação do tamanho de machos, fêmeas e jovens de inquilinos encontrados em cada classe de tamanho no interior de um hospedeiro.

Devido a dificuldade, pretendo, por enquanto, plotar somente estes gráficos na minha função.

REFORMULANDO PROPOSTA - TRABALHO FINAL

O objetivo da minha função é facilitar o pesquisador a fazer análises exploratórias de seu trabalho. A ideia é que o pesquisador trabalhe com associações biológicas e queira analisar os dados compartimentados, para facilitar a manipulação e a interpretação de como ocorre exatamente a associação estudada.

Para isso, a função gerará gráficos de relação entre variáveis, como tamanho e peso, do animal hospedeiro e o animal inquilino, por exemplo. Na mesma função, é possível criar classes de tamanho ou peso (ou período de coleta - de acordo com objetivo do pesquisador). A partir disso, serão feitas as relações de cada classe determinada e tabulará a frequência tanto de classes quanto de outros fatores, como classificação de macho, fêmeas ou idade (jovem e adulto).

O gráfico que eu havia proposto a fazer foi modificado, devido a uma melhora na razão dado/tinta.

Página de Ajuda

association              package:lattice                R Documentation

Análise exploratória de dados para associações biológicas entre animais

Description:
Exploração dos dados compartimentados para análises de associações biológicas. 
Categoriza em classes de tamanho ou de peso do hospedeiro, gera nova tabela com os 
dados inseridos das classes de tamanho ou peso e tabula a contagem de indivíduos por 
sexo, idade e classes de tamanho ou peso. Além disso, gera gráficos de correlação com
os dados das classes de tamanho ou peso do hospedeiro X tamanhos ou peso dos inquilinos.

Usage:
    association(dados, a, data.frame)

Arguments:
dados       objeto contendo uma planilha de três colunas (tamanho ou peso hospedeiro; 
            tamanho ou peso inquilino e sexo) no formato "csv".
a      	    objeto que deve ser criado da coluna de dados de tamanho ou peso que 
            se quer categorizar em classes 
data.frame  nova tabela que deve ser gerada com a coluna dos dados categorizados


Details:
O input desta função deve ser uma tabela ou planilha de três colunas 
(tamanho ou peso hospedeiro; tamanho ou peso inquilino e sexo) no formato
"csv" e de mesmo comprimento. 
Para esta função deve-se instalar o pacote lattice.

Value:
Categorias = geram os dados categorizados em classes de tamanho ou peso.
Nova matriz = gera nova tabela com a coluna dos dados categorizados.
Categorias compiladas = gera tabela dos dados categorizados compilados 
por sexo e idade.
Gráfico com as correlações do tamanho/peso por classes do hospedeiro x 
tamanho/peso dos inquilinos.

Warning:
A função pode apresentar limitações quanto à formatação dos gráficos gerados.
E dependendo da quantidade de dados a tabulação dos dados categorizados por 
classes e sexo aparece somente no console dentro dos argumentos e não como output.

Note:
----

Author(s):
    Izadora Mattiello	izadoram@usp.br
	
References:
Crawley, M.J. (2007) The R Book. John Wiley & Sons Ltd, West Sussex, UK.
Dalgaard, P. (2002) Introductory Statistics with R. Springer.

See also:
     cut, data.frame, table, dotplot

Exemples:
## Leitura da planilha de dados
hospedeiro1<-read.csv("hospedeiro1.csv", header=T, sep=";", dec=".", as.is=T)
## Criar objeto da coluna de tamanhos que quer se classificar
ascidia<-hospedeiro1$ascidia
## Uso da função com as categorias e parâmetros desejados
association<-function(hospedeiro1, ascidia, hospedeiro2)
{
classes<-cut(ascidia, breaks=c(20,25,30,35,40,45,50,55,60), 
labels=c("20-25","25.1-30","30.1-35", "35.1-40", "40.1-45", 
"45.1-50", "50.1-55","55.1-60"))#categorizar por classes de tamanho 
                                #nos intervalos que desejar, 
                                #sempre se baseando no mínimo e máximo dos seus dados
}
{
hospedeiro2<-data.frame(hospedeiro1, classes=c(classes)) # criar nova tabela com a coluna de classes
hospedeiro2$classes[hospedeiro2$classes=="1"]<- "2.0-2.5" # nomear as classes
hospedeiro2$classes[hospedeiro2$classes=="2"]<- "2.51-3.0"
hospedeiro2$classes[hospedeiro2$classes=="3"]<- "3.1-3.5"
hospedeiro2$classes[hospedeiro2$classes=="4"]<- "3.51-4.0"
hospedeiro2$classes[hospedeiro2$classes=="5"]<- "4.1-4.5"
hospedeiro2$classes[hospedeiro2$classes=="6"]<- "4.51-5.0"
hospedeiro2$classes[hospedeiro2$classes=="7"]<- "5.1-5.5"
hospedeiro2$classes[hospedeiro2$classes=="8"]<- "5.51-6.0"
tabela<-table(hospedeiro2$classes,hospedeiro2$sexo) #tabular os dados
tabela
}
{
require(lattice)
dotplot(tamanho~ascidia|classes, layout=c(8,1),groups=sexo,data=hospedeiro2, 
auto.key=TRUE, xlab="Classes de tamanho hospedeiro (mm)", 
ylab="Tamanho inquilino (mm)") #grafico que correlaciona todas as classes 
                               # de tamanho do hospedeiro
                               # por tamanho dos inquilinos e por sexo 
}
{
results<-list(tabela, dotplot)
return(results)
}
association

Código da Função

association<-function(dados, a, data.frame)
{
class<-cut(a, breaks=c(…), labels=c(...)) # class é um objeto, pode ter qualquer nome
}
{
dados2<-data.frame(dados, classes=c(class)) # criar nova tabela com a coluna de classes
dados2$classes[dados1$class=="1"]<- "x1-x2” # nomear as classes
			#fazer para cada categoria para visualizar no gráfico
tabela<-table(hospedeiro2$classes,hospedeiro2$sexo) #tabular os dados
tabela						# tabela = objeto
}
{
require(lattice) # pacote para fazer o dotplot
dotplot(tamanho.hospedeiro~a|class, layout=c(...),groups=(),data=dados2, 
auto.key=TRUE, xlab=" ", ylab="”) #grafico que correlaciona todas as classes 
                               # de tamanho do hospedeiro
                               # por tamanho dos inquilinos e por sexo 
}
{
results<-list(tabela, dotplot)
return(results)
}
association

Banco de dados para teste: hospedeiro1.csv Arquivo do código da função: cod_funcao_f.txt

Comentários

PI

Supondo que estes são gráficos que são necessários explorar um certo tipo genérico de conjuntos de dados as duas propostas são cabíveis e viáveis. Então tente criar funções genéricas o suficiente para serem usadas por outras pessoas com uma questão similar à sua.

Sobre a primeira, os dados necessários são bem complexos, e o desafio está em organizá-los em um objeto de entrada que a função receberá. E não entendi o que está abscissa, e qual regressão linear será feita.

A segunda proposta ainda está muito vaga.

Chalom

Estou chegando meio tarde, mas alguns comentarios:

Pelo que entendi do seu projeto, voce quer criar uma funcao que plota diferentes graficos em um mesmo device. Como a sua funcao vai determinar quais pontos devem ser plotados em cada grafico?

Vc pode fazer primeiro uma funcao que plota simplesmente os dados de uma unica classe de tamanho (ou mes, tanto faz), e depois pense em como generalizar isso para varios graficos, um ao lado do outro. Qual sera o melhor jeito de dividir o seu device para gerar varios graficos?

Izadora

Eu não consigo a partir de uma única tabela com todos os meus dados, indexar até que linha que quero para fazer um gráfico, de outra linha até outra indexada para gerar um segundo gráfico…não é possível isso?

05_curso_antigo/r2013/alunos/trabalho_final/izadoram/start.txt · Última modificação: 2020/08/12 06:04 (edição externa)