Você está na página 1de 7

14/09/2019 Aula 3

Aula 3
Brenner Silva
22/08/2019

ENGD 02
Plano de Aula
O presente material apresentado contempla a segunda aula prática de Estatística Descritiva, contemplando uma breve introdução a séries
temporais (time series).

Para tal, será utilizado o dataset AirPassengers , que tem funcionalidade similar ao iris , porém estrutura de classe diferente ( ts ).

Esta aula está disponível no RPubs (http://rpubs.com/brennerbiasi/intro_ts) e no GitHub


(https://github.com/bbiasi/ENGD02/blob/master/Aula_3.Rmd).
Para pleno andamento da atividade, os discentes deverão verificar e, se necessário, verificar a necessidade de instalação dos seguintes pacotes:

ggfortify ;
ggplot2 .

Em um momento final, haverá, também, uma breve introdução para aplicação do pacote dygraphs .

Série Temporal
Série temporal são nada mais que a colocação de observações, de modo sequencial, ao longo do tempo. As ts (time series) podem ser uni ou
multivariadas, e apresentar influência de fatores inerentes (covariáveis).

Este tipo de informação requer uma atenção a mais em relação ao df , pois, normalmente, é necessário verificar a adequação de classe ( class )
dos dados tabulados.

No presente estudo prático, analisaremos apenas aspectos visuais de ts .

HANDS-ON
Inicialmente iremos carregar nosso dataset AirPassengers e verificar sua classe.

data("AirPassengers")
View(AirPassengers)
class(AirPassengers)

## [1] "ts"

Observe também que a estrutura visual do objeto AirPassengers apresentada no Ambiente de Trabalho é diferente do modelo convencional de
dataframe .

Contudo, perceba que se solicitado o print no console, há informação “oculta” no objeto.

print(AirPassengers)

rpubs.com/brennerbiasi/intro_ts 1/7
14/09/2019 Aula 3

## Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
## 1949 112 118 132 129 121 135 148 148 136 119 104 118
## 1950 115 126 141 135 125 149 170 170 158 133 114 140
## 1951 145 150 178 163 172 178 199 199 184 162 146 166
## 1952 171 180 193 181 183 218 230 242 209 191 172 194
## 1953 196 196 236 235 229 243 264 272 237 211 180 201
## 1954 204 188 235 227 234 264 302 293 259 229 203 229
## 1955 242 233 267 269 270 315 364 347 312 274 237 278
## 1956 284 277 317 313 318 374 413 405 355 306 271 306
## 1957 315 301 356 348 355 422 465 467 404 347 305 336
## 1958 340 318 362 348 363 435 491 505 404 359 310 337
## 1959 360 342 406 396 420 472 548 559 463 407 362 405
## 1960 417 391 419 461 472 535 622 606 508 461 390 432

ôpa! Agora é possível entender um pouco melhor sobre esses dados. Os dados históricos são os totais mensais de passageiros (uni variado) da
companhia aérea Box & Jenkins, entre 1949 a 1960.

Mas, mesmo com outra classe é possível extrair informação? Sim, é possível. Entretanto é aconselhável o uso de pacotes específicos para ts
ou que seja feito manipulação de dados. Por ora utilizaremos funções residentes no R, através do pacote stats e base .

Em ts , uma análise inicial essencial é a verificação de gaps/missing data (dados faltantes - NA ), e isto pode ser verificado, de maneira genérica,
utilizando a função residente is.na() , onde contaremos (somaremos) a quantidade de observações que "é NA).

sum(is.na(AirPassengers))

## [1] 0

A frequência de observações (meses), bem como a ordem dos meses, podem ser facilmente verificadas, respectivamente, com as funções
frequency e cycle .

stats::frequency(AirPassengers)

## [1] 12

stats::cycle(AirPassengers)

## Jan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec
## 1949 1 2 3 4 5 6 7 8 9 10 11 12
## 1950 1 2 3 4 5 6 7 8 9 10 11 12
## 1951 1 2 3 4 5 6 7 8 9 10 11 12
## 1952 1 2 3 4 5 6 7 8 9 10 11 12
## 1953 1 2 3 4 5 6 7 8 9 10 11 12
## 1954 1 2 3 4 5 6 7 8 9 10 11 12
## 1955 1 2 3 4 5 6 7 8 9 10 11 12
## 1956 1 2 3 4 5 6 7 8 9 10 11 12
## 1957 1 2 3 4 5 6 7 8 9 10 11 12
## 1958 1 2 3 4 5 6 7 8 9 10 11 12
## 1959 1 2 3 4 5 6 7 8 9 10 11 12
## 1960 1 2 3 4 5 6 7 8 9 10 11 12

Estatística básicas podem ser extraídas

Nessa aula utilizaremos, nesse momento, os pacotes ggfortify (que pode ser entendido como uma extensão do ggplot2 , porém com
simplificações) e o pacote tseries .

O pacote ggfortify proporciona o uso da função autoplot , que permite realizar plots com boa estética e de modo bastante simplificado.

rpubs.com/brennerbiasi/intro_ts 2/7
14/09/2019 Aula 3

library(ggfortify)
autoplot(AirPassengers)

autoplot(AirPassengers) +
labs(x = "Data", y = "Número de Passageiros (1000's)",
title = "Passageiros de 1949 a 1961")

Perceba a simplicidade para realização deste plot, e também que ele aceita os mesmos comandos do pacote ggplot2 .

Entre os diversos tipos de estudos que podem ser concebidos utilizando a abordagem de séries temporais, podemos destacar as análises de
sazonalidade, tendência, estacionariedade, ciclicidade e autocorrelação como os mais simples e essenciais. Contudo, nesta aula, abordaremos
apenas a análise de sazonalidade e de tendências de modo visual.

Para tal, será necessário decompor a série original, que pode ser feita de modo multiplicativo ou aditivo (https://anomaly.io/seasonal-trend-
decomposition-in-r/index.html).

rpubs.com/brennerbiasi/intro_ts 3/7
14/09/2019 Aula 3

decomposeAP1 <- stats::decompose(AirPassengers, "multiplicative")


autoplot(decomposeAP1)

decomposeAP2 <- stats::decompose(AirPassengers, "additive")


autoplot(decomposeAP2)

EXTRA!! E se desejado utilizar o ggplot2 ? Neste caso podemos utilizar o pacote zoo para facilitar a programação.

library(ggplot2)
library(zoo)

df <- data.frame(Passageiros = as.matrix(AirPassengers),


Data = zoo::as.yearmon(time(AirPassengers)))

ggplot(df) +
geom_line(aes(x = Data, y = Passageiros)) +
theme(axis.text.x = element_text(angle = 90))

rpubs.com/brennerbiasi/intro_ts 4/7
14/09/2019 Aula 3

Para maiores aplicações de ggplot2 a ts , deixo como sugestão este link (http://www.sthda.com/english/articles/32-r-graphics-essentials/128-
plot-time-series-data-using-ggplot/).

E o dygraphs ?

library(dygraphs)
dygraphs::dygraph(AirPassengers)

650

600

550

500

450

400

350

300

250

200

150

100

1950 1960

Para um exemplo mais lúdico, utilizaremos três séries (https://www.rdocumentation.org/packages/datasets/versions/3.6.1/topics/UKLungDeaths)


temporais que mostram as mortes mensais por bronquite, enfisema e asma no Reino Unido, 1974-1979, ambos os sexos ( ldeaths ), homens
( mdeaths ) e mulheres ( fdeaths ).

df2 <- cbind(mdeaths, fdeaths)


dygraphs::dygraph(df2)

mdeaths fdeaths
2800

rpubs.com/brennerbiasi/intro_ts 5/7
14/09/2019 Aula 3
2600

2400

2200

2000

1800

1600

1400

1200

1000

800

600

400

200
Jan 1974 Jan 1975 Jan 1976 Jan 1977 Jan 1978 Jan 1979

library(dplyr)
dygraphs::dygraph(df2) %>% dygraphs::dyRangeSelector()

mdeaths fdeaths

2500

2000

1500

1000

500

Jan 1974 Jan 1975 Jan 1976 Jan 1977 Jan 1978 Jan 1979

df3 <- cbind(mdeaths, fdeaths, ldeaths)


dygraphs::dygraph(df3)

mdeaths fdeaths ldeaths


4000

3500

3000

2500

2000

rpubs.com/brennerbiasi/intro_ts 6/7
14/09/2019 Aula 3

1500

1000

500

0
Jan 1974 Jan 1975 Jan 1976 Jan 1977 Jan 1978 Jan 1979

dygraphs::dygraph(df2) %>%
dygraphs::dySeries("mdeaths", label = "Maculino") %>%
dygraphs::dySeries("fdeaths", label = "Feminino") %>%
dygraphs::dyOptions(stackedGraph = TRUE) %>%
dygraphs::dyRangeSelector(height = 20)

Maculino Feminino
4000

3500

3000

2500

2000

1500

1000

500

0
Jan 1974 Jan 1975 Jan 1976 Jan 1977 Jan 1978 Jan 1979

rpubs.com/brennerbiasi/intro_ts 7/7

Você também pode gostar