Traduções desta página:

Ferramentas do usuário

Ferramentas do site


05_curso_antigo:r2010:alunos:trabalho_final:ccaselli:start

Christini B. Caselli

Sou aluna de doutorado do Programa de Pós-graduação em Ecologia da Unicamp, estudo comportamento de primatas com enfoque em comportamento territorial.

Meus exercícios

Trabalho Final

Proposta A

Criar uma função, que utilizando estatística circular, permita determinar o nível de sincronia na floração e frutificação entre indivíduos de espécies de plantas. Com esta função poderei testar se existe ou não variação sazonal nos padrões fenológicos de um conjunto de coespecíficos ou de um conjunto de espécies de interesse, como por exemplo, espécies zoocóricas. A função proposta irá primeiramente transformar os dados em ângulos e em seguida calcular dois parâmetros: 1) o ângulo médio (μ) - período no qual é mais provável encontrar indivíduos (ou espécies) numa determinada fenofase; 2) o comprimento do vetor médio ( r ) - um índice de concentração dos dados, onde zero representa assincronia e 1, o máximo possível de sincronia. Com esses parâmetros a função deverá ainda testar se os dados apresentam uma distribuição uniforme por meio do teste de Rayleigh. Caso os dados apresentem uma distribuição uniforme, as fenofases analisadas serão interpretadas como não sazonais.

Comentários PI

Ótima! Vc vai aprender muito de R e de estatística circular. Há pacotes de estatística circular no R, que vc pdoe usar para verificar os resultados obtidos com a sua função, além de obter outras idéias.

Resultado trabalho final (Proposta A)

Página de ajuda

fenologia          package:nenhum                R Documentation
   
Description:
utiliza estatística circular para testar se existe variação sazonal
nos padrões fenológicos de um conjunto de coespecíficos ou de um 
conjunto de espécies de interesse.

Usage:
fenologia<-function(x,y)

Arguments:
x  Vetor representando a escala de tempo. Se utilizou uma escala mensal,
   x=c(1:30), por exemplo.
y  Número de indivíduos ou espécies na fenofase de interesse para cada 
   intervalo se sua escala de tempo (para cada dia do mês, por exemplo).
   Logo, este vetor deve ter mesmo comprimento que o vetor x.
   
Details:
Como se trata de estatística circular, esta função primeiramente converte
os valores da escala de tempo utilizada em ângulos (radiano).

Esta função só deve ser utilizada para distribuições unimodais ou bimodais
cujas modas não sejam opostas entre si. Se este for o caso dos seus dados, 
aguarde a próxima versão desta função.

Value:
A função retorna um aviso afirmando se o fenômeno observado apresenta 
variação sazonal ou não. Além disso, a função retorna uma tabela com 
os valores do ângulo médio, moda, r e P (discriminados abaixo) e dois
gráficos. Um dos gráficos mostra a distribuição da sua escala de tempo 
indicando a posição do ângulo médio e da moda. O outro gráfico mostra 
a distribuição dos valores de r gerados ao acaso e indica o valor de r
observado.

Ângulo médio (em graus e em radianos)   ângulo no qual é mais provável 
                                        encontrar indivíduos 
                                        (ou espécies) numa determinada 
                                        fenofase. 
Moda                                    ângulo no qual existe mais 
                                        indivíduos ou espécie na 
                                        fenofase em questão.
r                                       Índice de concentração dos dados.
                                        Varia de zero a um (zero representa
                                        assincronia e 1, o máximo possível
                                        de sincronia.
P                                       Probablidade de que o r observado 
                                        seja encontrado ao acaso.

Author(s): 
Christini B. Caselli

References:
ZAR, J. H. 1999. Biostatistical analysis. Upper Saddle River : Prentice

Example:

x=c1:12) ##A escala temporal desejada, se for ano deve ter 12 elementos, se for mês, deve ter 30 elementos.
y=c(13,14,12,7,12,6,8,6,13,14,17,13) ##A frequência de observação de um determinado fenômeno para cada unidade
                                       da sua escala de tempo(hora, dia, mês). 
fenologia(x,y)

A função

fenologia<-function(x,y)
	{
	library(circular)
	x1=(x*360)/length(x)##primeiro transforma meses em graus
	x2=circular(rep(x1, times=y),type = c("angles"), units = c("degrees"))##aplica as frequencias de 
                                                                            ##observação   de eventos
                                                                            ##fenológicos para cada mês
	x3<-conversion.circular(x2, units = "radians")##converte em radianos
	X=(sum(cos(x3)))/length(x3)
	Y=(sum(sin(x3)))/length(x3)
	r=round((sqrt((X^2)+(Y^2))), digits=4)
	coseno=X/r
	seno=Y/r
 	para.angulo=function(d)
		{
		para.angulo=circular(((360*d)/(2*pi)), type = c("angles"), units = c("degrees"))
		return(para.angulo)
		}
	Ângulo.Médio.radiano=round((acos(coseno)), digits=4)
	Ângulo.Médio.graus=round((para.angulo(acos(coseno))), digits=4)
	moda.rad=as.numeric(names(sort(table(x3),decreasing = T))[1])
	moda.grau=para.angulo(moda.rad)
	par(mfrow=c(1,2),mar=c(8,4,8,4))
	grafico=plot(x3, axes=FALSE, ticks=FALSE, main="Distribuição circular dos dados")
	axis.circular(at=circular(seq(0, 11/6*pi, pi/6)), labels=x)
	points(Ângulo.Médio.graus, col=2,cex=1.5)
	points(moda.grau, col=3,cex=1.5)
	mtext("Ângulo médio", side=1, line=0,at=1, cex=1, family="serif", col="red")
	mtext("Moda", side=1, line=2,at=1, cex=1, family="serif",col="green")
	result<-rep(0,1000)
	result[1]<-r
	for(i in 2:1000)
		{
  		reamostragem=sample(y)
  		x1=(x*360)/length(x)##primeiro transforma meses em graus
  		x2a=circular(rep(x1, times=reamostragem),units = c("degrees"))
		x3a<-conversion.circular(x2a, units = "radians")##converte em radianos
		Xa=(sum(cos(x3a)))/length(x3a)
		Ya=(sum(sin(x3a)))/length(x3a)
		ra=sqrt((Xa^2)+(Ya^2))
		result[i]<-ra
		}
	histograma=hist(result, main="Distribuição de frequências de r",xlab="Valores de r", ylab="Frequência")
	abline(v = result[1], col="blue")
	abline(v = result[1]*-1, col="red")
	mtext(col=4,"r obs", side=1, line=1,at=r, cex=1, family="serif")
	unicaudal=sum(result>=result[1])
	P=round((unicaudal/length(result)),digits=4)
		if(P>=0.05)
		{ 
		cat("\n\n\n\t *Distribuição Uniforme. O fenômeno observado não apresenta variação sazonal* \n\n\n")
		}
		if(P < 0.05) 
		{ 
		cat("\n\n\n\t *Distribuição não uniforme. Há variação sazonal no parâmetro amostrado* \n\n\n")
		}		
	Resultado=c(Ângulo.Médio.radiano,Ângulo.Médio.graus,moda.grau,r,P)
	Título=c("Ângulo médio (radiano)", "Ângulo médio(graus)","Moda (graus)","r","P")
	Tabela=data.frame(Título,Resultado)
	return(Tabela)
	} 

Proposta B

Nos estudos de comportamento é muito comum utilizar o método de varredura instantânea, registrando-se o comportamento dos animais a um determinado intervalo de tempo. No entanto, o intervalo de tempo escolhido deve ser suficiente para evitar interdependência entre períodos amostrais. Assim, pretendo criar uma função que determine o intervalo em que os registros comportamentais sejam independentes entre si (resumindo: análise de autocorrelação temporal).

Comentários PI

Promissora, mas não estão claros os inputs e ouputs da função.

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