Artigo escrito com a colaboração de Maria Luisa Gomes dos Reis
Séries temporais são um conjunto de observações de uma variável de interesse tomadas ao longo do tempo. Utilizando a relação de dependência (ou correlação) que uma observação da série apresenta com relação às anteriores, pode-se construir modelos para esta série e com eles, gerar previsões para os próximos valores que ela pode assumir. Para o ajuste de tais modelos, é necessário estudar o comportamento da série a fim de descobrir quais são suas principais características e realizar a modelagem mais adequada.
Caracterizando a série temporal
Uma característica importante das séries temporais é a estacionariedade. Quando uma série apresenta média, variância e autocorrelação constantes ao longo do tempo, ela pode ser dita estacionária. Um exemplo simulado de como este tipo de série se comporta é apresentado no gráfico abaixo.
Se uma série Yt, além de ser estacionária, for normal e apresentar média e autocorrelação iguais a zero (ou seja, suas observações são independentes e identicamente distribuídas com média zero e variância constante), ela é chamada de ruído branco.
Além disso, as séries temporais podem apresentar algumas componentes que caracterizam seu comportamento:
- Nível (μt): é a média da série no tempo t, ou seja, E(Yt) = μt. Vale notar que quando μt é uma constante e não depende de t, a série é dita estacionária em média.
- Tendência (Tt): descreve o comportamento geral da série, ou seja, se seus valores tendem a aumentar ou a decair com o passar do tempo.
- Sazonalidade (St): descreve comportamentos que se repetem periodicamente em intervalo de tempo inferior a um ano, comumentemente relacionados às estações do ano e ao comportamento das populações estudadas.
- Ciclo: também descreve um comportamento periódico, porém desta vez com duração superior a um ano.
- Autocorrelação (ρk): mede o quanto a observação no tempo t está correlacionada com a observação no tempo t−k.
- Erro (εt): é a variabilidade presente na série que não pode ser explicada pelo modelo ajustado.
Com base nestas definições, podemos também notar que:
- Uma série estacionária é aquela que não apresenta tendência, sazonalidade ou ciclo.
- O erro εt de uma série temporal é um ruído branco, uma vez que εi~i.i.d N(0, σ2), i = 1, 2, …, T.
Por fim, uma série temporal pode ser aditiva ou multiplicativa. Quando é aditiva, suas componentes são somadas, de forma que, por exemplo
Yt = Tt + St + εt
Já quando é multiplicativa, suas componentes estão presentes em um produto:
Yt = Tt × St × εt
Vale notar que uma série multiplicativa pode se tornar aditiva com a aplicação do logaritmo.
Uma série multiplicativa pode ser visualmente identificada, no caso da presença de sazonalidade, se a amplitude desta aumenta com o passar do tempo. No exemplo abaixo, a série das garrafas de vinho apresenta amplitude constante, de forma que pode-se dizer que esta é uma série aditiva. Além disso, neste gráfico pode-se observar também a tendência, a sazonalidade e o erro aleatório desta série.
Alisamentos exponenciais
Em predição, são comuns duas classes de modelos: os Modelos de Alisamento (ou Suavização) Exponencial e os Modelos ARIMA. Tanto nos modelos de alisamento quanto nos ARIMA, a série é descrita como uma função de seus valores passados, em que a cada um deles é atribuído um peso. No alisamento exponencial, no entanto, as observações mais recentes são favorecidas, recebendo um peso maior, enquanto as observações mais antigas recebem pesos exponencialmente menores. Desta forma, os próximos valores previstos para a série terão forte influência das observações recentes e influência exponencialmente menor de observações mais distantes.
Discutiremos aqui três variações dos modelos de alisamento exponencial: o Simples, o de Holt e o de Holt-Winters.
Alisamento exponencial Simples
Este é o método mais simples, indicado para casos em que a série não apresenta tendência ou padrão de sazonalidade muito claros, como no caso apresentado abaixo.
Neste caso, a série Yt pode ser descrita como
Yt = μt + εt , εt ∼ i.i.d N (0, σ2)
em que μt é a média (ou nível) da série e εt é um ruído branco, no tempo t
A estimativa do nível da série é
at = αYt + (1−α)at−1, 0 < α < 1
em que α é a constante de suavização para o nível da série. Valores menores de αα resultam em mais alisamento e valores maiores resultam em alisamentos mais suaves. Em outras palavras, valores de αα maiores dão peso maior para as observações mais recentes. Desta forma, pesos próximos de zero são utilizados para suavizar componentes irregulares e cíclicos indesejados, enquanto pesos próximos de 1 são utilizados para previsão.
Dessa forma, a previsão do h-ésimo valor futuro é obtida a partir da equação:
^Yt+h=at , h=1,2,…
Método de Holt
O Alisamento Exponencial de Holt é adequado para séries que apresentam tendência linear, já que ele introduz uma nova constante para suavizar a componente de tendência. No exemplo abaixo, percebemos que a taxa tende a aumentar com o passar dos anos, mas sem apresentar qualquer outro tipo de padrão, tornando o alisamento de Holt ideal para sua modelagem.
A série YtYt pode ser descrita como
Yt = μt + Tt + εt, εt ∼i.i.d N(0,σ2)
em que μt é a média (ou nível) da série, Tt é a componente que modela a tendência e εt é um ruído branco, no tempo t.
A estimativa da tendência da série é
^Tt = β(at − at−1) + (1 − β)^Tt−1, 0 < β < 1
em que β é a constante de suavização para a tendência.
Enquanto a estimativa do nível da série neste caso será
at = αYt + (1 − α)(at−1 + ^Tt−1), 0 < α < 1
em que α é a constante de suavização para o nível da série.
Assim, a previsão ^Yt+h é dada por
^Yt+h = at + h^Tt , h = 1, 2, …
Método de Holt-Winters
Por fim, o Alisamento Exponencial de Holt-Winters é indicado para séries que apresentam tanto tendência quanto sazonalidade. Além disso, na modelagem da sazonalidade, temos o caso em que ela é multiplicativa e o em que ela é aditiva.
Holt-Winters Aditivo
Na série apresentada abaixo podemos observar claramente a tendência e a sazonalidade. No entanto, não há aumento da amplitude da sazonalidade, o que nos dá indícios de que esta seja uma série aditiva.
No caso aditivo, a série Yt pode ser descrita como
Yt = μt + St + Tt + εt , εt∼i.i.dN(0, σ2)
em que μt é a média (ou nível) da série, St é a componente que modela a sazonalidade, Tt a componente de tendência e εt é um ruído branco, no tempo t.
No caso das séries aditivas, o fator de sazonalidade St está presente no modelo sendo somado ao nível e à tendência. Assim, teremos
at = α(Yt − ^St−p) + (1 − α)(at−1 + ^Tt−1), 0 < α < 1
A estimativa da tendência se mantém a mesma
^Tt = β(at − at−1) + (1 − β)^Tt−1, 0 < β < 1
E a sazonalidade é dada por
^St = γ(Yt − ^St−p) + (1 − γ)^St−p , 0 < γ < 1
α, β e γ são as constantes de suavização para o nível, a tendência e a sazonalidade, respectivamente. O valor p presente na estimativa da sazonalidade é o período da sazonalidade.
A previsão será então
^Yt+h = at + h^Tt + ^St+h−kp , h = 1, 2, …
em que o valor de k depende do valor de p, de modo que
k = 1 se h ≤ p e k = 2 se p ≤ h ≤ 2p.
Holt-Winters Multiplicativo
Aqui, as séries são multiplicativas e, portanto, o fator de sazonalidade St está presente no modelo multiplicando o nível e a tendência. A diferença em relação ao caso anterior é que o valor da série é dividido pela sazonalidade ao invés de ser subtraído por ela. Visualmente, este tipo de série apresenta aumento da amplitude da sazonalidade com o passar do tempo.
No caso multiplicativo, a série Yt pode ser descrita como
Yt = μt × St + Tt + εt , εt~i.i.d N(0,σ2)
em que μt é a média da série, St é a componente que modela a sazonalidade, Tt a componente de tendência e εt é um ruído branco, no tempo t. O nível estará presente na previsão como
α, β e γ são as constantes de suavização para o nível, a tendência e a sazonalidade, respectivamente. O valor p presente na estimativa da sazonalidade é o período da sazonalidade.
A previsão será então
^Yt+h = (at + h^Tt)^St+h−kp , h = 1, 2, …
em que o valor de k depende do valor de p, de modo que
k = 1 se h ≤ ph ≤ p e k = 2 se p ≤ h ≤ 2p.
Aplicação do Script no R
Primeiramente, os dados devem ser transformados em um objeto de classe “ts” (se já não estiverem originalmente neste formato).
library(tidyverse)
library(forecast) # pacote para modelagem e previsão
library(tsdl) # fonte das séries utilizadas
set.seed(22)
dados_exemplo <- rnorm(144, 20, 2)
ts_exemplo <- ts(data = dados_exemplo, # dados que não estão no formato ts
frequency = 12, # número de observações por ano
start = c(2000,2), # ano e mês da primeira observação
end = 2012 # ano da última observação
)
A série pode ser visualizada utilizando a função ts.plot
do pacote stats
ou a função autoplot
do pacote forecast
; esta última opção permite modificar o gráfico com funções do pacote ggplot2
.
ts.plot(ts_exemplo) # pacote stats
autoplot(ts_exemplo) # pacote forecast
Alisamento exponencial Simples
A previsão utilizando este método pode ser feita tanto utilizando a função ses
quanto as funções HoltWinters
e forecast.HoltWinters
do pacote forecast
.
serie_ses <- tsdl[[21]] # a série já estava no formato ts
# investigando a série
autoplot(serie_ses,col = "deepskyblue4",lwd = 1) +
ggtitle("Rendimento anual de grãos no campo Broadbalk em Rothamsted") +
xlab("Ano") + ylab("Rendimento") +
theme_minimal()
# apresenta a série, o gráfico de sua função autocorrelação e o gráfico
# de dispersão da observação no tempo t contra o lag 1 (t-1)
ggtsdisplay(serie_ses, plot.type="scatter", theme=theme_minimal())
# previsão com a função ses
previsao_ses1 <- ses(serie_ses,
h = 10) # previsão para os próximos h anos
summary(previsao_ses1)
##
## Forecast method: Simple exponential smoothing
##
## Model Information:
## Simple exponential smoothing
##
## Call:
## ses(y = serie_ses, h = 10)
##
## Smoothing parameters:
## alpha = 0.2809
##
## Initial states:
## l = 2.1998
##
## sigma: 0.5313
##
## AIC AICc BIC
## 228.8612 229.2041 235.7734
##
## Error measures:
## ME RMSE MAE MPE MAPE MASE
## Training set -0.02478999 0.5240262 0.4178097 -6.895163 20.54569 0.8567446
## ACF1
## Training set 0.0908823
##
## Forecasts:
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 1926 1.684603 1.0037733 2.365433 0.6433636 2.725843
## 1927 1.684603 0.9774302 2.391776 0.6030754 2.766131
## 1928 1.684603 0.9520338 2.417173 0.5642350 2.804972
## 1929 1.684603 0.9274889 2.441718 0.5266967 2.842510
## 1930 1.684603 0.9037150 2.465492 0.4903377 2.878869
## 1931 1.684603 0.8806439 2.488563 0.4550534 2.914153
## 1932 1.684603 0.8582166 2.510990 0.4207538 2.948453
## 1933 1.684603 0.8363821 2.532825 0.3873608 2.981846
## 1934 1.684603 0.8150957 2.554111 0.3548061 3.014401
## 1935 1.684603 0.7943181 2.574889 0.3230295 3.046177
autoplot(previsao_ses1) +
ggtitle("Previsão para o rendimento anual de grãos no campo Broadbalk em Rothamsted") +
xlab("Ano") + ylab("Rendimento") +
theme_minimal()
No caso da função HoltWinters
, deve-se primeiramente ajustar o modelo para então realizar a previsão. Note que os argumentos beta e gamma foram definidos com FALSE, já que estamos modelando uma série sem tendência ou sazonalidade.
# previsão com a função HoltWinters
# ajustando o modelo
mod_ses2 <- HoltWinters(serie_ses,
alpha = NULL,
beta = FALSE, # não inclui parâmetro de tendência
gamma = FALSE # não inclui parâmetro de sazonalidade
)
mod_ses2
## Holt-Winters exponential smoothing without trend and without seasonal component.
##
## Call:
## HoltWinters(x = serie_ses, alpha = NULL, beta = FALSE, gamma = FALSE)
##
## Smoothing parameters:
## alpha: 0.3099475
## beta : FALSE
## gamma: FALSE
##
## Coefficients:
## [,1]
## a 1.641215
plot(mod_ses2) # plotando o modelo ajustado
previsao_ses2 <- forecast:::forecast.HoltWinters(mod_ses2,
h = 10)
previsao_ses2 # valores da previsão
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 1926 1.641215 0.9583047 2.324126 0.5967935 2.685637
## 1927 1.641215 0.9262540 2.356177 0.5477763 2.734655
## 1928 1.641215 0.8955798 2.386851 0.5008641 2.781567
## 1929 1.641215 0.8661185 2.416312 0.4558070 2.826624
## 1930 1.641215 0.8377368 2.444694 0.4124009 2.870030
## 1931 1.641215 0.8103240 2.472107 0.3704765 2.911954
## 1932 1.641215 0.7837871 2.498644 0.3298919 2.952539
## 1933 1.641215 0.7580472 2.524384 0.2905262 2.991905
## 1934 1.641215 0.7330366 2.549394 0.2522757 3.030155
## 1935 1.641215 0.7086965 2.573734 0.2150508 3.067380
autoplot(previsao_ses2) +
ggtitle("Previsão para o rendimento anual de grãos no campo Broadbalk em Rothamsted") +
xlab("Ano") + ylab("Rendimento") +
theme_minimal()
Como pode-se ver abaixo, os resultados obtidos utilizando ambas funções foram bem parecidos.
# comparando as previsões
autoplot(serie_ses) +
ylab("Rendimento") + xlab("Ano") +
theme_minimal() +
autolayer(previsao_ses1,
series = "Função ses",
PI = FALSE # não inclui o intervalo
) +
autolayer(previsao_ses2,
series = "Função HoltWinters",
PI = FALSE # não inclui o intervalo
)
Método de Holt
serie_holt <- tsdl[[60]] # série já está no formato ts
autoplot(serie_holt, col = "brown3", lwd = 1) +
ggtitle("Taxa anual de incidência de melanoma em Connecticut") +
xlab("Tempo") + ylab("Taxa") +
theme_minimal()
# apresenta a série, o gráfico de sua função autocorrelação e o gráfico
# de dispersão da observação no tempo t contra o lag 1 (t-1)
ggtsdisplay(serie_holt, plot.type="scatter", theme=theme_minimal())
previsao_holt <- holt(serie_holt,
h = 10 # Previsão para os próximos h anos
)
summary(previsao_holt)
##
## Forecast method: Holt's method
##
## Model Information:
## Holt's method
##
## Call:
## holt(y = serie_holt, h = 10)
##
## Smoothing parameters:
## alpha = 1e-04
## beta = 1e-04
##
## Initial states:
## l = 0.6869
## b = 0.1114
##
## sigma: 0.3468
##
## AIC AICc BIC
## 61.00688 62.94237 69.06147
##
## Error measures:
## ME RMSE MAE MPE MAPE MASE
## Training set 0.004142669 0.3275296 0.2622434 -1.388455 11.13102 0.8209359
## ACF1
## Training set 0.3626341
##
## Forecasts:
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 1973 4.921098 4.476640 5.365556 4.241358 5.600838
## 1974 5.032520 4.588062 5.476978 4.352780 5.712260
## 1975 5.143942 4.699484 5.588400 4.464202 5.823681
## 1976 5.255364 4.810906 5.699821 4.575624 5.935103
## 1977 5.366785 4.922327 5.811243 4.687046 6.046525
## 1978 5.478207 5.033749 5.922665 4.798467 6.157947
## 1979 5.589629 5.145171 6.034087 4.909889 6.269369
## 1980 5.701051 5.256593 6.145509 5.021311 6.380791
## 1981 5.812473 5.368014 6.256931 5.132732 6.492213
## 1982 5.923895 5.479436 6.368353 5.244154 6.603635
autoplot(previsao_holt) +
ggtitle("Previsão para taxa anual de incidência de melanoma em Connecticut") +
xlab("Tempo") + ylab("Taxa") +
theme_minimal()
Alternativamente, como no caso anterior, a previsão pode ser feita com a função HoltWinters.
# ajustando o modelo
mod_holt2 <- HoltWinters(serie_holt,
alpha = NULL,
beta = NULL,
gamma = FALSE # não inclui parâmetro de sazonalidade
)
mod_holt2
## Holt-Winters exponential smoothing with trend and without seasonal component.
##
## Call:
## HoltWinters(x = serie_holt, alpha = NULL, beta = NULL, gamma = FALSE)
##
## Smoothing parameters:
## alpha: 0.8154541
## beta : 0.08500788
## gamma: FALSE
##
## Coefficients:
## [,1]
## a 4.8233688
## b 0.1044501
plot(mod_holt2) # visualizando o modelo ajustado
previsao_holt2 <- forecast:::forecast.HoltWinters(mod_holt2,
h = 10)
previsao_holt2 # valores da previsão
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 1973 4.927819 4.422915 5.432723 4.155635 5.700003
## 1974 5.032269 4.358109 5.706429 4.001230 6.063308
## 1975 5.136719 4.308135 5.965303 3.869509 6.403929
## 1976 5.241169 4.264667 6.217671 3.747738 6.734601
## 1977 5.345619 4.224032 6.467206 3.630300 7.060939
## 1978 5.450069 4.184287 6.715852 3.514223 7.385916
## 1979 5.554520 4.144290 6.964749 3.397760 7.711279
## 1980 5.658970 4.103323 7.214616 3.279814 8.038125
## 1981 5.763420 4.060916 7.465923 3.159665 8.367175
## 1982 5.867870 4.016749 7.718991 3.036825 8.698915
autoplot(previsao_holt2) +
ggtitle("Previsão para taxa anual de incidência de melanoma em Connecticut") +
xlab("Tempo") + ylab("Taxa") +
theme_minimal()
# comparando as previsões
autoplot(serie_holt) +
ylab("Taxa") + xlab("Ano") +
theme_minimal() +
autolayer(previsao_holt,
series = "Função holt",
PI = FALSE # não inclui o intervalo
) +
autolayer(previsao_holt2,
series = "Função HoltWinters",
PI = FALSE # não inclui o intervalo
)
Método de Holt-Winters
Aditivo
serie_hw_adi <- tsdl[[4]] # série já está no formato ts
autoplot(serie_hw_adi, col = 'darkorange3', lwd = 0.8) +
ggtitle("Demanda mensal de gasolina em Ontario ") +
xlab("Ano") + ylab("Milhões de galões") +
theme_minimal()
# apresenta a série, o gráfico de sua função autocorrelação e o gráfico
# de dispersão da observação no tempo t contra o lag 1 (t-1)
ggtsdisplay(serie_hw_adi, plot.type="scatter", theme=theme_minimal())
# decompõe a série em tendência, sazonalidade e erro aleatório
decomposta_hw_adi <- decompose(serie_hw_adi, type = "additive")
autoplot(decomposta_hw_adi) + theme_minimal()
previsao_hw_adi <- hw(serie_hw_adi,
h = 10,
seasonal = "additive")
previsao_hw_adi # valores da previsão
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## Jan 1976 209518.3 201642.6 217394.0 197473.5 221563.1
## Feb 1976 205360.5 197401.4 213319.6 193188.1 217532.9
## Mar 1976 216612.9 208566.6 224659.2 204307.1 228918.7
## Apr 1976 221684.7 213547.3 229822.2 209239.6 234129.9
## May 1976 244210.6 235978.2 252443.0 231620.2 256801.0
## Jun 1976 245431.0 237099.7 253762.3 232689.4 258172.6
## Jul 1976 258898.7 250464.6 267332.7 245999.9 271797.4
## Aug 1976 261971.1 253430.6 270511.7 248909.4 275032.8
## Sep 1976 241322.5 232671.5 249973.4 228092.0 254552.9
## Oct 1976 244886.7 236121.6 253651.8 231481.6 258291.8
autoplot(previsao_hw_adi) +
ggtitle("Previsão para a demanda mensal de gasolina em Ontario ") +
xlab("Ano") + ylab("Milhões de galões") +
theme_minimal()
# ajustando o modelo
mod_hw_adi2 <- HoltWinters(serie_hw_adi,
alpha = NULL,
beta = NULL,
gamma = NULL,
seasonal = "additive"
)
mod_hw_adi2
## Holt-Winters exponential smoothing with trend and additive seasonal component.
##
## Call:
## HoltWinters(x = serie_hw_adi, alpha = NULL, beta = NULL, gamma = NULL, seasonal = "additive")
##
## Smoothing parameters:
## alpha: 0.1290835
## beta : 0.02848968
## gamma: 0.1461064
##
## Coefficients:
## [,1]
## a 229313.6669
## b 712.8638
## s1 -20902.9175
## s2 -26240.9913
## s3 -15611.5983
## s4 -10233.8221
## s5 14109.6988
## s6 12721.7484
## s7 25715.3763
## s8 26574.1178
## s9 4246.2864
## s10 9018.8500
## s11 -4780.4992
## s12 -3247.9602
plot(mod_hw_adi2) # plotando o modelo ajustado
previsao_hw_adi2 <- forecast:::forecast.HoltWinters(mod_hw_adi2,
h = 10,
seasonal ="additive")
previsao_hw_adi2 # valores da previsão
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## Jan 1976 209123.6 201012.0 217235.2 196718.0 221529.2
## Feb 1976 204498.4 196315.6 212681.2 191983.9 217012.9
## Mar 1976 215840.7 207583.4 224097.9 203212.2 228469.1
## Apr 1976 221931.3 213596.2 230266.4 209183.8 234678.8
## May 1976 246987.7 238571.3 255404.0 234116.0 259859.4
## Jun 1976 246312.6 237811.7 254813.5 233311.5 259313.7
## Jul 1976 260019.1 251430.2 268608.0 246883.5 273154.7
## Aug 1976 261590.7 252910.5 270270.9 248315.4 274866.0
## Sep 1976 239975.7 231200.8 248750.7 226555.6 253395.8
## Oct 1976 245461.2 236588.2 254334.2 231891.1 259031.2
autoplot(previsao_hw_adi2) +
ggtitle("Previsão para a demanda mensal de gasolina em Ontario ") +
xlab("Ano") + ylab("Milhões de galões") +
theme_minimal()
autoplot(serie_hw_adi) +
ylab("Demanda de gasolina") + xlab("Ano") +
theme_minimal() +
autolayer(previsao_hw_adi,
series="Função hw",
PI = FALSE) +
autolayer(previsao_hw_adi2,
series="Função HoltWinters",
PI = FALSE)
Multiplicativo
serie_hw_mult <- AirPassengers # série já está no formato ts
autoplot(serie_hw_mult, col = 'deeppink', lwd = 0.8) +
ggtitle("Número mensal de passageiros de linhas aéreas internacionais") +
xlab("Mês/Ano") + ylab("Milhares de passageiros") +
theme_minimal()
# apresenta a série, o gráfico de sua função autocorrelação e o gráfico
# de dispersão da observação no tempo t contra o lag 1 (t-1)
ggtsdisplay(serie_hw_mult, plot.type="scatter", theme=theme_minimal())
# decompõe a série em tendência, sazonalidade e erro aleatório
decomposta_hw_mult <- decompose(serie_hw_mult,
type = "multiplicative")
autoplot(decomposta_hw_mult) + theme_minimal()
previsao_hw_mult <- hw(serie_hw_mult,
h = 10,
seasonal = "multiplicative")
previsao_hw_mult # valores da previsão
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## Jan 1961 445.8901 422.6577 469.1225 410.3592 481.4210
## Feb 1961 418.9478 396.0288 441.8667 383.8963 453.9993
## Mar 1961 466.4298 439.7182 493.1414 425.5780 507.2816
## Apr 1961 496.1291 466.4627 525.7955 450.7583 541.4999
## May 1961 507.1463 475.5546 538.7381 458.8309 555.4617
## Jun 1961 575.6281 538.3478 612.9083 518.6129 632.6432
## Jul 1961 666.6573 621.8494 711.4652 598.1295 735.1850
## Aug 1961 658.4970 612.6386 704.3554 588.3627 728.6313
## Sep 1961 550.0907 510.4559 589.7255 489.4745 610.7069
## Oct 1961 491.7130 455.1069 528.3190 435.7289 547.6971
autoplot(previsao_hw_mult) +
ggtitle("Previsão do número mensal de passageiros de linhas aéreas internacionais") +
xlab("Mês/Ano") + ylab("Milhares de passageiros") +
theme_minimal()
# ajustando o modelo
mod_hw_mult2 <- HoltWinters(serie_hw_mult,
alpha = NULL,
beta = NULL,
gamma = NULL,
seasonal = "multiplicative"
)
mod_hw_mult2
## Holt-Winters exponential smoothing with trend and multiplicative seasonal component.
##
## Call:
## HoltWinters(x = serie_hw_mult, alpha = NULL, beta = NULL, gamma = NULL, seasonal = "multiplicative")
##
## Smoothing parameters:
## alpha: 0.2755925
## beta : 0.03269295
## gamma: 0.8707292
##
## Coefficients:
## [,1]
## a 469.3232206
## b 3.0215391
## s1 0.9464611
## s2 0.8829239
## s3 0.9717369
## s4 1.0304825
## s5 1.0476884
## s6 1.1805272
## s7 1.3590778
## s8 1.3331706
## s9 1.1083381
## s10 0.9868813
## s11 0.8361333
## s12 0.9209877
plot(mod_hw_mult2) # plotando o modelo ajustado
previsao_hw_mult2 <- forecast:::forecast.HoltWinters(mod_hw_mult2,
h = 10,
seasonal = "multiplicative")
previsao_hw_mult2 # valores da previsão
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## Jan 1961 447.0559 434.1422 459.9696 427.3061 466.8057
## Feb 1961 419.7123 406.2559 433.1686 399.1326 440.2920
## Mar 1961 464.8671 450.5448 479.1895 442.9630 486.7712
## Apr 1961 496.0839 480.8809 511.2870 472.8329 519.3350
## May 1961 507.5326 491.5815 523.4838 483.1375 531.9278
## Jun 1961 575.4509 557.9648 592.9370 548.7083 602.1935
## Jul 1961 666.5923 647.0002 686.1843 636.6288 696.5558
## Aug 1961 657.9137 637.8194 678.0081 627.1821 688.6454
## Sep 1961 550.3088 531.5631 569.0544 521.6398 578.9777
## Oct 1961 492.9853 474.6967 511.2739 465.0153 520.9553
autoplot(previsao_hw_mult2) +
ggtitle("Previsão do número mensal de passageiros de linhas aéreas internacionais") +
xlab("Mês/Ano") + ylab("Milhares de passageiros") +
theme_minimal()
autoplot(serie_hw_mult) +
xlab("Mês/Ano") + ylab("Milhares de passageiros") +
theme_minimal() +
autolayer(previsao_hw_mult,
series="Função hw",
PI = FALSE) +
autolayer(previsao_hw_mult2,
series="Função HoltWinters",
PI = FALSE)