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>