SAUDAÇÕES!

Seja bem vindo à página do professor Pedro Albuquerque. Para saber mais sobre meu currículo, disciplinas ministradas e interesses de pesquisa, navegue no menu disponível no topo da página.
Mostrando postagens com marcador Previsão.. Mostrar todas as postagens
Mostrando postagens com marcador Previsão.. Mostrar todas as postagens

quinta-feira, 27 de setembro de 2012

Previsão de Séries Temporais usando Holt Winters.


Usualmente, quado desejamos fazer previsão há uma série de informações sobre o mercado que deveríamos levar em conta. Por exemplo, as vendas de produtos são muitas vezes sazonais, e podemos esperar que as tendências sejam sustentadas por períodos curtos, os quais podem se alterar.

Se temos por exemplo um produto inovador bem-sucedido, as vendas aumentarão inicialmente, mas depois estabilizarão antes de decrescer devido aos concorrentes que entram no mercado. Esse tipo de informação pode ser adequadamente modelada pelo método Holt-Winters.

A nomenclatura usada aqui define a mudança no nível de um período de tempo para o período seguinte, como inclinação (slope). Os padrões sazonais também podem mudar devido aos caprichos da moda e da variação do clima.

O método de Holt-Winters foi sugerido por Holt (1957) e Winters (1960), que
trabalharam no School of Industrial Administration em Carnegie Institute
of Technology
.

O método usa médias móveis ponderadas exponencialemente para atualizar as estimativas da média ajustada sazonalmente (chamada de nível), inclinação e sazonalidade.

Considere uma série temporal $\{x_{t}\}$ com período igual a $p$. O método Holt-Winters utiliza as seguintes equações:


onde $a_{t}$, $b_{t}$ e $s_{t}$ são as estimativas para o nível, inclinação e efeito da sazonalidade no período $t$. Os parâmetros $\alpha$, $\beta$ e $\gamma$ são os parâmetros de suavização.

A previsão para valores futuros $x_{n+k}$ em $k$ períodos a frente após a $n$-ésima observação é dada da seguinte forma:


onde $a_{n}$ é o nível estimado, $b_{n}$ é a inclinação estimada e $a_{n}+kb_{n}$ é o nível estimado no tempo $n+k$ e $s_{n}+k-p$ é a estimativa do peso exponencializado para o efeito sazonal no tempo $n=k-p$. Outra forma do método Holt-Winters é com efeito sazonal multiplicativo. Nesse caso, o conjunto de equações é dado por:


A equação de previsão para o período $x_{n} + k$ torna-se:


Os parâmetros podem ser fixados no R ou então estimados de modo a minimizar o erro de previsão. Em outras palavras, quando os parâmetros não são informados, o R procura pelos valores que minimizam o erro de previsão.

Usando o método Holt-Winters no R.

Para realizar a estimação e posterior previsão pelo método Holt-Winters no R utilizamos a função HoltWinters.

Para esse exemplo, considere a base de dados das concentrações atmosféricas de CO2 expressos em partes por milhão (ppm).

O nome da base em CSV é denominada BaseCO2.csv.

O primeiro passo é ler a base de dados no R:

#Lê a base de dados
dados.df<-read.csv("http://dl.dropbox.com/u/36068691/BaseCO2.csv")

#Imprime as variáveis existentes
names(dados.df)

#Cria a série temporal
serie<-ts(dados.df$CO2,start=c(1959,1),end=c(1997,12),frequency=12)
Os dados também foram transformados no formato ts com a primeira observação referente a Janeiro de 1959 e a última em Dezembro de 1997. O argumento frequency=12 informa ao R que cada período (de um ano) é composto por 12 observações. Em outras palavras, informa ao R que a frequência da série é mensal. Em seguida utilizamos a função HoltWinters:
#Realiza o método Holt-Winters
holt <- HoltWinters(serie)

#Plota a série temporal
plot(holt)

#Plota a decomposição da serie
plot(fitted(holt))
A série temporal observada juntamente com seus valores preditos pelo modelo são representados no gráfico abaixo:
O método decompõem a série temporal. Essa decomposição é apresentada a seguir:
A previsão para o próximo ano com um intervalo de confiança de 95% é dado pelo seguinte comando:
#Realiza a previsão para 12 meses a frente
p <- predict(holt, 12, prediction.interval = TRUE, level = 0.95)
plot(holt, p)
Cujo resultado é apresentado pelo gráfico abaixo:
Caso não haja sazonalidade evidente, podemos fazer:
#Realiza o método Holt-Winters sem efeito sazonal
holt <- HoltWinters(serie, gamma = FALSE)
Para maiores detalhes do método Holt-Winters indico o texto The Holt-Winters Forecasting Procedure.