Lista 1 de exercicio Séries Temporais

rm(list = ls())

banco de dados utilizado para resolução da lista

library(readxl) 
bebida <- read_excel("C:/Users/Clevia/Documents/series temporais/Conjuntos de dados.XLS", 
                                 sheet = "M-Bebida")
head(bebida)
## # A tibble: 6 × 2
##   Meses               Bebida
##   <dttm>              <chr> 
## 1 1985-01-01 00:00:00 56.92 
## 2 1985-02-01 00:00:00 49.67 
## 3 1985-03-01 00:00:00 49.63 
## 4 1985-04-01 00:00:00 53.84 
## 5 1985-05-01 00:00:00 57.49 
## 6 1985-06-01 00:00:00 59.94
energia <- read_excel("C:/Users/Clevia/Documents/series temporais/Conjuntos de dados.XLS", 
                                 sheet = "M-Energia")
head(energia)
## # A tibble: 6 × 3
##     Ano   Mes Energia
##   <dbl> <dbl>   <dbl>
## 1  1968     1   10951
## 2    NA     2   10671
## 3    NA     3   13643
## 4    NA     4   15109
## 5    NA     5   12602
## 6    NA     6   12295
IPI <- read_excel("C:/Users/Clevia/Documents/series temporais/Conjuntos de dados.XLS", 
                                 sheet = "M-IPI")
head(IPI)
## # A tibble: 6 × 2
##   `mês/ano`           ipialiment
##   <dttm>                   <dbl>
## 1 1985-01-01 00:00:00       84.2
## 2 1985-02-01 00:00:00       71.5
## 3 1985-03-01 00:00:00       72.6
## 4 1985-04-01 00:00:00       67.0
## 5 1985-05-01 00:00:00       72.6
## 6 1985-06-01 00:00:00       95.6

pacotes utilizados

library(tidyverse)
library(TTR)
library(forecast)

Questão 1

Considerando os dados (M-Energia) do anos de janeiro de 1968 à dezembro de 1969 sobre consumo de energia elétrica no estado do Espírito Santo:

letra a - Faça um gráfico das observações.
letra b - Estime a tendência por meio da utilização de um polinômio de primeira ordem.
letra c - Calcule as médias móveis por trimestre e por quadrimestre. Em seguida, adicione essas informações ao gráco das observações obtido no item a).

selecionando o periodo de tempo de janeiro de 1968 à dezembro de 1969

energia2 <- energia[1:24,3]

transformando em série temporal

energia_serie <- ts(energia2, start=1968, freq=12)

linha de tendência

N <- nrow(energia_serie)
Tempo <- 1:N
X.lm <- lm(energia_serie ~ Tempo)
X.pred <- predict(X.lm) ## Previsão da série observada
M <- seq(as.Date("1968/1/1"),as.Date("1969/12/1"),"months")
plot(M, energia_serie, type="l")
lines(M, X.pred, col= "red", lwd=2,lty=2)

media móvel por trimestre

energiaM3<- SMA(energia_serie, n=3)

plot(energia_serie)
points(energiaM3, pch=20, col="darkgreen")

media movel por quadrimestre

energiaM4<- SMA(energia_serie, n=4)

plot(energia_serie)
points(energiaM4, pch=20, col="darkgreen")

questão 2

Analise cada um dos conjuntos de dados abaixo e ajuste um modelo para tendências, sazonalidade ou contendo ambas de acordo com o que for adequado a cada problema.

##letra a

modelo aditivo

bebida_serie <- ts(bebida[,2], start=1985, freq=12)

bebida_adt <- decompose(bebida_serie)
plot(bebida_adt, col= "darkgreen" )

para o modelo multiplicativo

bebida_mult =decompose(bebida_serie,type = "mult")
plot(bebida_mult, col= "darkgreen" )

estimar tendencia

bebida_trend <- bebida_mult$trend
plot(bebida_trend, col= "darkgreen" )

letra b

IPI_serie <- ts(IPI[,2], start=1985, freq=12)

modelo aditivo

IPI_adt <- decompose(IPI_serie)
plot(IPI_adt, col= "darkblue" )

para o modelo multiplicativo

IPI_mult =decompose(IPI_serie,type = "mult")
plot(IPI_mult, col= "darkblue")

estimar tendencia

IPI_trend <- IPI_mult$trend
plot(IPI_trend, col= "darkblue")

letra c

energia2_serie <- ts(energia[,2], start=1968, freq=12)

modelo aditivo

energia2_adt <- decompose(energia2_serie)
plot(energia2_adt, col= "purple")

para o modelo multiplicativo

energia2_mult =decompose(energia2_serie,type = "mult")
plot(energia2_mult, col= "purple")

estimar tendencia

energia2_trend <- energia2_mult$trend
plot(energia2_trend, col= "purple")

questão 3

Analise cada um dos conjuntos de dados abaixo e ajuste um modelo de suavização exponencial de acordo com o que for adequado a cada problema.

letra a

transformando bebida em serie temporal

bebida_serie <- ts(bebida[,2], start=1985, freq=12)

Gráfico

plot(bebida_serie)

N2 <- nrow(bebida_serie)
Tempo <- 1:N2
X.lm2 <- lm(bebida_serie ~ Tempo)
X.pred2 <- predict(X.lm2) ## Previsão da série observada
M2 <- seq(as.Date("1985/1/1"),as.Date("2000/7/1"),"months")
plot(M2, bebida_serie, type="l")
lines(M2, X.pred2, col= "red", lwd=2,lty=2)

neste caso iremos utilizar a Suavização Exponencial de Holt pois a serie posui tendencia

modelo_bebida <- HoltWinters(bebida_serie, gamma = FALSE)

valores estimados da serie

head (modelo_bebida$fitted)
##              xhat    level     trend
## Mar 1985 67.00000 71.00000 -4.000000
## Apr 1985 64.24532 68.23172 -3.986405
## May 1985 63.47793 67.42920 -3.951264
## Jun 1985 65.13977 69.02975 -3.889986
## Jul 1985 67.41836 71.24100 -3.822645
## Aug 1985 65.91269 69.71004 -3.797351

gráfico

plot(bebida_serie)
lines(modelo_bebida$fitted[,1],pch = 18, col = "red", type = "b", 
      lty = 2, lwd = 1)

#letra b

transformando IPI em serie temporal

IPI_serie <- ts(IPI[,2], start=1985, freq=12)

##Gráfico

plot(IPI_serie)

N3 <- nrow(IPI_serie)
Tempo <- 1:N3
X.lm3 <- lm(IPI_serie ~ Tempo)
X.pred3 <- predict(X.lm3) ## Previsão da série observada
M3 <- seq(as.Date("1985/1/1"),as.Date("2000/7/1"),"months")
plot(M3, IPI_serie, type="l")
lines(M3, X.pred3, col= "red", lwd=2,lty=2)

utilizando a Suavização Exponencial de Holt Winters pois a serie possui tendencia de sazonalidade aditiva

modelo_IPI <- HoltWinters(IPI_serie)

valores estimados da serie

head(modelo_IPI$fitted)
##              xhat    level       trend      season
## Jan 1986 92.85683 90.31837 -0.06821096   2.6066667
## Feb 1986 77.78533 90.02896 -0.06821096 -12.1754167
## Mar 1986 67.18462 89.60283 -0.06821096 -22.3500000
## Apr 1986 69.42130 89.32868 -0.06821096 -19.8391667
## May 1986 72.48061 89.44465 -0.06821096 -16.8958333
## Jun 1986 89.77116 89.62729 -0.06821096   0.2120833

gráfico

plot(IPI_serie)
lines(modelo_IPI$fitted[,1],pch = 18, col = "red", type = "b", 
      lty = 2, lwd = 1)

#letra c

transformando em serie temporal

energia2_serie <- ts(energia[,2], start=1968, freq=12)

Gráfico

plot(energia2_serie)

N4 <- nrow(energia2_serie)
Tempo <- 1:N4
X.lm4 <- lm(energia2_serie ~ Tempo)
X.pred4 <- predict(X.lm4) ## Previsão da série observada
M4 <- seq(as.Date("1968/1/1"),as.Date("1979/9/1"),"months")
plot(M4, energia2_serie, type="l")
lines(M4, X.pred4, col= "red", lwd=2,lty=2)

Ajustando a suavização exponencial Simples pois a serie não possui tendencia

modelo_energia2 <- HoltWinters(energia2_serie, beta = F,gamma = F)

valores estimados da serie

head(modelo_energia2$fitted)
##              xhat    level
## Feb 1968 1.000000 1.000000
## Mar 1968 1.890777 1.890777
## Apr 1968 2.878847 2.878847
## May 1968 3.877544 3.877544
## Jun 1968 4.877402 4.877402
## Jul 1968 5.877387 5.877387

gráfico

plot(energia2_serie)
lines(modelo_energia2$fitted[,1],pch = 18, col = "red", type = "b", 
      lty = 2, lwd = 1)