Série histórica anual


<?xml version="1.0" encoding="ISO-8859-1"?>
<Rscript>
<titulo>Série histórica anual</titulo>
<descricao>
Gera gráficos das séries históricas e gráficos da função de autocorrelaçao (ACF)
As colunas devem ser Regiões, Estados, Municipios etc..., e as linhas os Anos. Pode ser facilmente tabulado a partir do TabWin ou do TabNet.
Lembre-se que muitas linhas tornará difícil a vizualização.

Teoria:
Dados ordenados no tempo são denominado séries temporais e, quando analisadas,podem mostrar importantes informações acerca do processo endêmico-epidêmico, entre as quais: a verificação de existência de tendências, ciclos e variações sazonais e a detecção de mudanças no comportamento da doença 
 
A função de autocorrelação (ACF), é uma das principais ferramentas de análise exploratória das séries temporais, ela indica o grau de dependência temporal existente.

A ACF não possui dimensão, variando entre -1 e +1. Nela o coeficiente de correlação r mede o quanto os pares ordenados de observações (Zt+k, Zt ) estão relacionados. 

Classifica-se a dependência quanto à:

  Sem dependência serial: série puramente aleatória.
  Memória longa: a dependência desaparece lentamente (os valores de pontos no passado influenciam momentos muito adiante no tempo - ex, doenças com grande latência)
  Memória curta: dependência desaparece rapidamente (doenças de alta infecciosidade e "explosivas" - gripe, por ex.)

Bibliografia:
Morettin, P.A. & Toloi, C.M.C. (1987) Previsão de Séries Temporais. Atual Editora, 2ª Edição
Diggle, P. (1990) Time Series : A Biostatistical Introduction. Oxford Statistical Science Series, No. 5
</descricao>
<autor>Oswaldo G Cruz</autor>
<email>oswaldo@fiocruz.br</email>
<versao>1.03</versao>
<parametro></parametro>
<parametro2></parametro2>
<colsel></colsel>
<colsel2></colsel2>
<script>
library(ts)
	grafico.tabwin()
			
	NCOL <- dim(tabela)[2]  			# Numero de Colunas
	NLIN <- dim(tabela)[1]				# Numero de Linhas
	MAX <- (max(tabela))*1.2			# valor maximo + 20%
	PALHETA <- c(colors()[2:145],colors()[363:657]) # Palheta de cores sem branco e cinzas
	
	# palheta de cores 
	cores <- c("#000080", "#0000FF", "#006400", "#008B8B", "#00FF7F", 
		"#00FFFF", "#1E90FF", "#20B2AA", "#228B22", "#43CD80", "#5F9EA0", 
		"#6495ED", "#6A5ACD", "#6E8B3D", "#7B68EE", "#7FFF00", "#8A2BE2", 
		"#8B8B00", "#9932CC", "#A52A2A", "#A9A9A9", "#B8860B", "#C0FF3E", 
		"#CD5555", "#CD6839", "#CD8162", "#D2691E", "#DC143C", "#DEB887", 
		"#E9967A", "#FF1493", "#FF7F50", "#FF8C00", "#FFFF00")


	#  else cor.regiao <- topo.colors(NCOL)  ou  sample(colors(),NCOL) ou cor.regiao <- sample(PALHETA,NCOL)
	
	if (NCOL < 6) cor.regiao <- c("green","blue","red","magenta","orange") else
	{
		if (NCOL > 6 & NCOL < 34) cor.regiao <- cores[1:NCOL] else cor.regiao <- sample(PALHETA,NCOL)
	}

	quebra <- ifelse (NCOL < 6,2,round(NCOL/4))
	
	#  tira REGIAO da frente se houver
	
	nome.regiao <-  gsub("Região","",colnames(tabela))
	
	
	serie <- ts(tabela,start=as.numeric(rownames(tabela)[1]))
	
	
	# Gráfico das Series 
	ts.plot(serie,gpars=list(ylim=c(0,MAX),xlab="Anos", ylab="Casos", col=cor.regiao,lwd=2))
	
	
	xy <- list(x=as.numeric(rownames(tabela)[1])-1,y=MAX*1.05)
	legend(xy,nome.regiao,col=cor.regiao,lty=1,lwd=2,ncol=quebra,cex=0.7)
	title(paste(titulo,"\n","Séries de",rownames(tabela)[1]," a ",rownames(tabela)[NLIN]),cex.main=1.2)
	box()
	
	# Gráfico Log das series
	MINLOG <- min(log(serie)[is.finite(log(serie))])
	MAXLOG <- max(log(serie))*1.1
	ts.plot(log(serie),gpars=list(ylim=c(MINLOG,MAXLOG),xlab="Anos", ylab="Log Casos", col=cor.regiao,lwd=2,lty=1))
	xy <- list(x=as.numeric(rownames(tabela)[1])-1,y=MAXLOG*1.02)
	legend(xy,nome.regiao,col=cor.regiao,lty=1,lwd=2,ncol=quebra,cex=0.7)
	title(paste(titulo,"\n","Logaritimo das Séries de",rownames(tabela)[1]," a ",rownames(tabela)[NLIN]),cex.main=1.2)
	box()
	
	
	# Graficos e MM
	if (NCOL < 10) par(mfrow=c(3,2)) else par(mfrow=c(3,3))
	T1 <- ifelse (NCOL < 10,0.8,0.6)
	T2 <- ifelse (NCOL < 10,1.8,0.8) 
	fator <- ifelse (NLIN < 40,3,round(NLIN*0.1)) 

	
	for(i in 1:NCOL)
	{
		plot(serie[,i],xlab="Anos", ylab="Casos", col="red",main=nome.regiao[i])
		# lines(filter(serie[,i],c(1,1,1))/3,lty=2,col="blue")
		lines(filter(serie[,i],rep(1,fator))/fator,col="blue",lty=2)

	}
	plot(seq(1:50),seq(1:50),axes=F,type="n",ylab="",xlab="")
	text(20,45, "Legenda",cex=T2)
	legend(10,30,c("Serie","Média Movel "),lty=c(1,2),col=c("red","blue"),bty="n",cex=T1*1.5)
	text (25,5,paste("Tamanho da Janela da Média Móvel = ",fator),cex=T1)

	
	
	# graficos ACF
	if (NCOL < 10) par(mfrow=c(3,2)) else par(mfrow=c(3,3))
	
		for(i in 1:NCOL) acf(serie[,i],main=nome.regiao[i])
	
	#gera o texto 
	plot(seq(1:50),seq(1:50),axes=F,type="n",ylab="",xlab="")
	box(lty='1373', col = 'red')
	text(25,47, "Função de autocorrelação",cex=T2)
	text(1,37, "a  autocorrelação indica o grau de dependência",adj = c(0,0),cex=T1)
	text(1,32, "temporal existente numa série histórica.",adj = c(0,0),cex=T1)
	text(1,27, "Se a autocorrelaçao demora a cair, a serie tem ",adj = c(0,0),cex=T1)
	text(1,22, "memoria longa, caso contrário  memória curta.",adj = c(0,0),cex=T1)
	text(1,17, "Caso nenhum valor seja significativo não há dependência.",adj = c(0,0),cex=T1)
	text(1,12, "Valores abaixo de 0,4 (linha azul) de autocorrelaçao",adj = c(0,0),cex=T1)
	text(1,7, "não são significativos. ",adj = c(0,0),cex=T1)
</script>
<exemplo>

</exemplo>
</Rscript>