1 + 1[1] 2
1 + 1[1] 2
[1] 4
library(tidyverse)── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
✔ dplyr 1.1.4 ✔ readr 2.1.6
✔ forcats 1.0.1 ✔ stringr 1.6.0
✔ ggplot2 4.0.1 ✔ tibble 3.3.0
✔ lubridate 1.9.4 ✔ tidyr 1.3.1
✔ purrr 1.2.0
── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
✖ dplyr::filter() masks stats::filter()
✖ dplyr::lag() masks stats::lag()
ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
library(quantmod)Carregando pacotes exigidos: xts
Carregando pacotes exigidos: zoo
Anexando pacote: 'zoo'
Os seguintes objetos são mascarados por 'package:base':
as.Date, as.Date.numeric
######################### Warning from 'xts' package ##########################
# #
# The dplyr lag() function breaks how base R's lag() function is supposed to #
# work, which breaks lag(my_xts). Calls to lag(my_xts) that you type or #
# source() into this session won't work correctly. #
# #
# Use stats::lag() to make sure you're not using dplyr::lag(), or you can add #
# conflictRules('dplyr', exclude = 'lag') to your .Rprofile to stop #
# dplyr from breaking base R's lag() function. #
# #
# Code in packages is not affected. It's protected by R's namespace mechanism #
# Set `options(xts.warn_dplyr_breaks_lag = FALSE)` to suppress this warning. #
# #
###############################################################################
Anexando pacote: 'xts'
Os seguintes objetos são mascarados por 'package:dplyr':
first, last
Carregando pacotes exigidos: TTR
Registered S3 method overwritten by 'quantmod':
method from
as.zoo.data.frame zoo
library(caret)Carregando pacotes exigidos: lattice
Anexando pacote: 'caret'
O seguinte objeto é mascarado por 'package:purrr':
lift
library(randomForest)randomForest 4.7-1.2
Type rfNews() to see new features/changes/bug fixes.
Anexando pacote: 'randomForest'
O seguinte objeto é mascarado por 'package:dplyr':
combine
O seguinte objeto é mascarado por 'package:ggplot2':
margin
library(lubridate)
library(rpart)
library(rpart.plot)library(tidyverse) # Data science.
library(forecast) # Previsão de séries temporais no R.
library(sidrar) # Raspagem de dados do SIDRA-IBGE.
library(zoo) # Tratamento de séries temporais no R.
library(quantmod) # Dados financeiros em R.
library(tseries) # Pacote para tratar séries temporais.
library(lmtest) # Realiza testes com os modelos estimados.pim <- get_sidra(api="/t/8888/n1/all/v/12606/p/all/c544/129314/d/v12606%205") # tabela do sidra que irei utilizar como base para construir um modelo de séries temporais utilizando a linguagem R de programação.All others arguments are desconsidered when 'api' is informed
Agora, irei limpar a série.
pimpf <- pim %>% # renomeando o data frame
select(Mes = `Mês (Código)` , Valor = Valor) %>% # selecionando as colunas que quero trabalhar.
mutate(Mes = as.numeric(Mes), Valor = as.numeric(Valor)) %>% # modificando as colunas que selecionei.
arrange(Mes) # função para ordenar dados.Transformando o data frame em série temporal.
pim_ts <- ts(pimpf$Valor, start = c(2002, 01), frequency = 12) # especificando quando a série irá começar e a frequência = 12, observações mensais.
pim_ts Jan Feb Mar Apr May Jun Jul
2002 84.35985 81.23882 90.19468 92.75477 93.74586 90.30861 97.02905
2003 86.21006 83.64805 90.21116 89.17615 92.85332 88.90555 94.79223
2004 89.48491 86.27226 101.29663 95.78715 100.60552 100.36502 104.98271
2005 94.43859 89.01654 102.59731 101.36217 106.16136 106.49943 105.46883
2006 97.48057 93.46685 107.67339 99.82820 111.11460 106.16070 109.25591
2007 101.38564 96.22568 112.38721 105.59200 116.40273 112.88043 116.34116
2008 110.45695 106.13137 113.89996 115.64141 119.39461 120.34545 126.43891
2009 91.66715 88.63398 103.19096 99.31350 106.35166 107.43047 113.86257
2010 106.28638 103.65597 122.44795 115.72172 121.51816 119.43995 124.55664
2011 108.63430 111.18262 121.63363 113.61426 124.81165 119.80302 123.60012
2012 103.35733 104.68291 116.18120 108.09827 119.38667 114.50151 121.76721
2013 110.11744 102.62008 113.85214 118.65181 122.33153 118.51416 125.88470
2014 107.91411 107.54777 113.37495 111.89740 118.53030 110.61037 121.70206
2015 102.66304 97.57125 109.92777 103.51269 108.44442 107.78466 111.24612
2016 88.87564 88.35558 97.51803 96.72772 100.51023 102.14944 104.43092
2017 90.76173 88.41199 99.55177 92.42064 105.02557 103.06748 107.34819
2018 95.85064 90.04273 100.49774 100.77646 98.36000 106.10223 111.61924
2019 94.02286 92.15176 94.39633 97.12618 106.03589 99.98849 108.88426
2020 93.25265 91.90105 90.76051 70.24669 82.93598 91.33918 106.03440
2021 95.45141 92.15339 100.31730 94.72257 102.95969 102.41462 107.53425
2022 90.12692 89.76868 98.37445 94.63148 102.66461 101.79733 107.14913
2023 90.39570 87.42669 99.38515 92.03653 104.73802 101.88765 105.51240
2024 93.75190 92.36098 96.50021 99.72287 103.50713 105.19257 111.98145
2025 94.99691 93.49041 99.89923 99.25379 107.11833 103.92569 112.32570
Aug Sep Oct Nov Dec
2002 97.40784 95.68385 103.92059 97.75810 86.94687
2003 95.13301 99.81096 104.87061 98.57643 90.74434
2004 107.37683 107.36306 108.93971 106.96965 98.73418
2005 111.39355 107.22933 109.21963 107.68567 100.94034
2006 114.86336 108.65657 113.57487 111.69618 101.34553
2007 122.27648 114.61139 125.65204 119.33440 107.93691
2008 124.58390 125.07010 126.34873 112.08152 92.19722
2009 116.10422 115.87901 123.07453 118.13763 109.62616
2010 126.02153 123.28957 125.54517 124.42525 112.54306
2011 129.14280 122.10754 123.83857 121.40188 111.49519
2012 129.95274 120.52278 130.27003 122.16077 107.48937
2013 130.56683 125.03259 131.19189 123.68849 104.97604
2014 123.92138 123.07107 127.32526 116.28840 102.21340
2015 113.73341 109.91113 113.31974 102.02329 89.97213
2016 108.37187 105.65274 105.07812 100.76965 90.00232
2017 112.64103 108.34912 110.87912 105.57980 94.39374
2018 114.46150 105.73437 111.61565 104.28134 90.84141
2019 112.11340 106.94489 113.06392 102.50798 89.65106
2020 109.41676 111.13157 113.42905 105.13475 97.10610
2021 108.81356 106.61016 104.56847 100.55820 92.29860
2022 110.72404 105.56805 105.86250 101.38154 91.95129
2023 111.26735 106.28180 107.01406 102.82135 92.73326
2024 113.82899 109.74694 113.54651 104.59393 93.99803
2025 113.01008 111.95545
Agora, irei transformar minha série temporal em um gráfico.
autoplot(pim_ts, colour = "blue", size = 1.2) + # função para criar gráficos especificando a cor e a espessura da linha.
ggtitle("Produção Física 2002-2025") + # nomeando o gráfico.
ylab("Variação Percentual") + # definindo o eixo y
xlab("Mês/Ano") + # definindo o eixo x
theme_minimal()Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
ℹ Please use `linewidth` instead.
ℹ The deprecated feature was likely used in the forecast package.
Please report the issue at <https://github.com/robjhyndman/forecast/issues>.
Agora, irei decompor a série para separá-la nos seus elementos principais: tendência, sazonalidade e ruído branco.
decomposicao <- decompose(pim_ts)
plot(decomposicao)Agora, iremos visuaizar a sazonalidade de maneira mais nítida calculando a média de cada mês.
monthplot(pim_ts, col = "darkred", lwd = 2, main = "Sazonalidade da PIM_PF", ylab = "Variação percentual")