Abstract
We analyse car prices in Brazil using the FIPE’s table.This work is licensed under the Creative Commons Attribution-ShareAlike 4.0 International License. To view a copy of this license, visit http://creativecommons.org/licenses/by-sa/4.0/ or send a letter to Creative Commons, PO Box 1866, Mountain View, CA 94042, USA.
License: CC BY-SA 4.0
Sugestão de citação: FIGUEIREDO, Adriano Marcos Rodrigues. Aplicações com R: preços de carros - tabela FIPE. Campo Grande-MS,Brasil: RStudio/Rpubs, 2019. Disponível em http://rpubs.com/amrofi/aplication_car_price.
Este artigo é baseado em um post de 2017 de Ítalo Cegatta (https://italocegatta.github.io/como-um-cientista-de-dados-pesquisa-o-carro-que-quer-comprar/) e seu pacote fipe
(cegatta2019).
Conforme Cegatta (2017), “o pacote fipe
foi desenvolvido para facilitar a consulta dos preços dos veículos vendidos no Brasil levantados pela FIPE”. Seus preços podem ser consultados online no site https://veiculos.fipe.org.br/. O primeiro passo é instalar o pacote fazendo uso do github do autor.
install.packages("remotes")
remotes::install_github("italocegatta/fipe",force = TRUE)
O pacote faz uma consulta semelhante ao site oficial, onde se preenchem os campos com detalhes do mês de referência, marca, modelo e ano do veículo de interesse. É necessário usar exatamente os descritores que a FIPE utliza em termos da grafia dos nomes. Primeiro chamaremos os pacotes.
library(tidyverse)
library(stringr)
library(forcats)
library(fipe)
Faremos um ensaio para a caminhonete S10 ano 2016, e data de referência 01/Abril/2019.
# acesso aos dados no site da fipe (igual ao site veiculos.fipe.org.br)
s10_2016 <- fipe_carro(modelo = "S10 Pick-Up", marca = "GM - Chevrolet", ano = 2016,
data_referencia = "2019-04-01")
knitr::kable(s10_2016)
modelo | marca | ano | data_referencia | valor |
---|---|---|---|---|
S10 Pick-Up LS 2.4 F.Power 4x2 CD | GM - Chevrolet | 2016 | 2019-04-01 | 68209 |
S10 Pick-Up LS 2.4 F.Power 4x2 CS | GM - Chevrolet | 2016 | 2019-04-01 | 58211 |
S10 Pick-Up LS 2.8 TDI 4x4 CD Dies. Mec. | GM - Chevrolet | 2016 | 2019-04-01 | 84498 |
S10 Pick-Up LS 2.8 TDI 4x4 CS Diesel | GM - Chevrolet | 2016 | 2019-04-01 | 83401 |
S10 Pick-Up LT 2.5 Flex 4x2 CD | GM - Chevrolet | 2016 | 2019-04-01 | 74068 |
S10 Pick-Up LT 2.5 Flex 4x4 CD | GM - Chevrolet | 2016 | 2019-04-01 | 82029 |
S10 Pick-Up LT 2.8 TDI 4x2 CD Diesel | GM - Chevrolet | 2016 | 2019-04-01 | 91009 |
S10 Pick-Up LT 2.8 TDI 4x2 CD Diesel Aut | GM - Chevrolet | 2016 | 2019-04-01 | 99144 |
S10 Pick-Up LT 2.8 TDI 4x4 CD Diesel | GM - Chevrolet | 2016 | 2019-04-01 | 101038 |
S10 Pick-Up LT 2.8 TDI 4x4 CD Diesel Aut | GM - Chevrolet | 2016 | 2019-04-01 | 102566 |
S10 Pick-Up LTZ 2.5 Flex 4x2 CD | GM - Chevrolet | 2016 | 2019-04-01 | 80675 |
S10 Pick-Up LTZ 2.5 Flex 4x4 CD | GM - Chevrolet | 2016 | 2019-04-01 | 87599 |
S10 Pick-Up LTZ 2.8 TDI 4x2 CD Dies.Aut | GM - Chevrolet | 2016 | 2019-04-01 | 117359 |
S10 Pick-Up LTZ 2.8 TDI 4x4 CD Dies.Aut | GM - Chevrolet | 2016 | 2019-04-01 | 118283 |
É possível constatar que o fato de não especificar maiores detalhes do que “S10 Pick-Up”, e marca “GM - Chevrolet”, gera um resultado múltiplo contendo todos os preços de veículos com este descritor “S10 Pick-Up”.
Outra consulta, agora com uma especificação única, “S10 Pick-Up LT 2.5 Flex 4x2 CD”, marca “GM - Chevrolet” e uma sequência de datas. Neste caso, a saída de resultados é uma sequência de valores desde 01/Jan/2017 até 01/Abril/2019. Um gráfico é feito.
# S10 Pick-Up LT 2.5 Flex 4x2 CD
s10_2016seq <- fipe_carro(modelo = "S10 Pick-Up LT 2.5 Flex 4x2 CD", marca = "GM - Chevrolet",
ano = 2016, data_referencia = seq.Date(as.Date("2017-01-01"), as.Date("2019-04-01"),
by = "1 months"))
A saída deste dado dput()
está abaixo:
s10_2016seq <- structure(list(modelo = c("S10 Pick-Up LT 2.5 Flex 4x2 CD", "S10 Pick-Up LT 2.5 Flex 4x2 CD",
"S10 Pick-Up LT 2.5 Flex 4x2 CD", "S10 Pick-Up LT 2.5 Flex 4x2 CD", "S10 Pick-Up LT 2.5 Flex 4x2 CD",
"S10 Pick-Up LT 2.5 Flex 4x2 CD", "S10 Pick-Up LT 2.5 Flex 4x2 CD", "S10 Pick-Up LT 2.5 Flex 4x2 CD",
"S10 Pick-Up LT 2.5 Flex 4x2 CD", "S10 Pick-Up LT 2.5 Flex 4x2 CD", "S10 Pick-Up LT 2.5 Flex 4x2 CD",
"S10 Pick-Up LT 2.5 Flex 4x2 CD", "S10 Pick-Up LT 2.5 Flex 4x2 CD", "S10 Pick-Up LT 2.5 Flex 4x2 CD",
"S10 Pick-Up LT 2.5 Flex 4x2 CD", "S10 Pick-Up LT 2.5 Flex 4x2 CD", "S10 Pick-Up LT 2.5 Flex 4x2 CD",
"S10 Pick-Up LT 2.5 Flex 4x2 CD", "S10 Pick-Up LT 2.5 Flex 4x2 CD", "S10 Pick-Up LT 2.5 Flex 4x2 CD",
"S10 Pick-Up LT 2.5 Flex 4x2 CD", "S10 Pick-Up LT 2.5 Flex 4x2 CD", "S10 Pick-Up LT 2.5 Flex 4x2 CD",
"S10 Pick-Up LT 2.5 Flex 4x2 CD", "S10 Pick-Up LT 2.5 Flex 4x2 CD", "S10 Pick-Up LT 2.5 Flex 4x2 CD",
"S10 Pick-Up LT 2.5 Flex 4x2 CD", "S10 Pick-Up LT 2.5 Flex 4x2 CD"), marca = c("GM - Chevrolet",
"GM - Chevrolet", "GM - Chevrolet", "GM - Chevrolet", "GM - Chevrolet",
"GM - Chevrolet", "GM - Chevrolet", "GM - Chevrolet", "GM - Chevrolet",
"GM - Chevrolet", "GM - Chevrolet", "GM - Chevrolet", "GM - Chevrolet",
"GM - Chevrolet", "GM - Chevrolet", "GM - Chevrolet", "GM - Chevrolet",
"GM - Chevrolet", "GM - Chevrolet", "GM - Chevrolet", "GM - Chevrolet",
"GM - Chevrolet", "GM - Chevrolet", "GM - Chevrolet", "GM - Chevrolet",
"GM - Chevrolet", "GM - Chevrolet", "GM - Chevrolet"), ano = structure(c(1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L,
1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L, 1L), .Label = "2016", class = "factor"),
data_referencia = structure(c(17167, 17198, 17226, 17257, 17287, 17318,
17348, 17379, 17410, 17440, 17471, 17501, 17532, 17563, 17591, 17622,
17652, 17683, 17713, 17744, 17775, 17805, 17836, 17866, 17897, 17928,
17956, 17987), class = "Date"), valor = c(76559, 76326, 76063, 77081,
78112, 77943, 78139, 78199, 77586, 77982, 76529, 77223, 78269, 79307,
79513, 80566, 81020, 80885, 80051, 78587, 77015, 76857, 75408, 77122,
75639, 74987, 74479, 74068)), class = c("tbl_df", "tbl", "data.frame"),
row.names = c(NA, -28L))
Em formato de tabela:
knitr::kable(s10_2016seq)
modelo | marca | ano | data_referencia | valor |
---|---|---|---|---|
S10 Pick-Up LT 2.5 Flex 4x2 CD | GM - Chevrolet | 2016 | 2017-01-01 | 76559 |
S10 Pick-Up LT 2.5 Flex 4x2 CD | GM - Chevrolet | 2016 | 2017-02-01 | 76326 |
S10 Pick-Up LT 2.5 Flex 4x2 CD | GM - Chevrolet | 2016 | 2017-03-01 | 76063 |
S10 Pick-Up LT 2.5 Flex 4x2 CD | GM - Chevrolet | 2016 | 2017-04-01 | 77081 |
S10 Pick-Up LT 2.5 Flex 4x2 CD | GM - Chevrolet | 2016 | 2017-05-01 | 78112 |
S10 Pick-Up LT 2.5 Flex 4x2 CD | GM - Chevrolet | 2016 | 2017-06-01 | 77943 |
S10 Pick-Up LT 2.5 Flex 4x2 CD | GM - Chevrolet | 2016 | 2017-07-01 | 78139 |
S10 Pick-Up LT 2.5 Flex 4x2 CD | GM - Chevrolet | 2016 | 2017-08-01 | 78199 |
S10 Pick-Up LT 2.5 Flex 4x2 CD | GM - Chevrolet | 2016 | 2017-09-01 | 77586 |
S10 Pick-Up LT 2.5 Flex 4x2 CD | GM - Chevrolet | 2016 | 2017-10-01 | 77982 |
S10 Pick-Up LT 2.5 Flex 4x2 CD | GM - Chevrolet | 2016 | 2017-11-01 | 76529 |
S10 Pick-Up LT 2.5 Flex 4x2 CD | GM - Chevrolet | 2016 | 2017-12-01 | 77223 |
S10 Pick-Up LT 2.5 Flex 4x2 CD | GM - Chevrolet | 2016 | 2018-01-01 | 78269 |
S10 Pick-Up LT 2.5 Flex 4x2 CD | GM - Chevrolet | 2016 | 2018-02-01 | 79307 |
S10 Pick-Up LT 2.5 Flex 4x2 CD | GM - Chevrolet | 2016 | 2018-03-01 | 79513 |
S10 Pick-Up LT 2.5 Flex 4x2 CD | GM - Chevrolet | 2016 | 2018-04-01 | 80566 |
S10 Pick-Up LT 2.5 Flex 4x2 CD | GM - Chevrolet | 2016 | 2018-05-01 | 81020 |
S10 Pick-Up LT 2.5 Flex 4x2 CD | GM - Chevrolet | 2016 | 2018-06-01 | 80885 |
S10 Pick-Up LT 2.5 Flex 4x2 CD | GM - Chevrolet | 2016 | 2018-07-01 | 80051 |
S10 Pick-Up LT 2.5 Flex 4x2 CD | GM - Chevrolet | 2016 | 2018-08-01 | 78587 |
S10 Pick-Up LT 2.5 Flex 4x2 CD | GM - Chevrolet | 2016 | 2018-09-01 | 77015 |
S10 Pick-Up LT 2.5 Flex 4x2 CD | GM - Chevrolet | 2016 | 2018-10-01 | 76857 |
S10 Pick-Up LT 2.5 Flex 4x2 CD | GM - Chevrolet | 2016 | 2018-11-01 | 75408 |
S10 Pick-Up LT 2.5 Flex 4x2 CD | GM - Chevrolet | 2016 | 2018-12-01 | 77122 |
S10 Pick-Up LT 2.5 Flex 4x2 CD | GM - Chevrolet | 2016 | 2019-01-01 | 75639 |
S10 Pick-Up LT 2.5 Flex 4x2 CD | GM - Chevrolet | 2016 | 2019-02-01 | 74987 |
S10 Pick-Up LT 2.5 Flex 4x2 CD | GM - Chevrolet | 2016 | 2019-03-01 | 74479 |
S10 Pick-Up LT 2.5 Flex 4x2 CD | GM - Chevrolet | 2016 | 2019-04-01 | 74068 |
s10_2016seq %>% ggplot(aes(data_referencia, valor, color = ano, group = ano)) +
geom_line(color = "grey30") + geom_point(size = 3) + facet_wrap(~modelo) +
labs(x = "Mês de refêrencia", y = "Valor (R$)", color = "Ano do \nmodelo") +
scale_y_continuous(breaks = seq(0, 1e+05, 1000), labels = scales::dollar_format(prefix = NULL,
big.mark = ".")) + scale_x_date(date_breaks = "1 year", date_labels = "%b/%y") +
scale_color_viridis_d() + theme_bw() + theme(legend.position = "top")
Ou usando o dygraphs
:
library(dygraphs)
x <- ts(s10_2016seq$valor, start = c(2017, 1), frequency = 12)
dygraph(x, main = "Preços da S10 Pick-Up LT 2.5 Flex 4x2 CD,
01/Jan/2017-01/Abr/2019, em Reais nominais",
ylab = "Reais correntes (R$)") %>% dyRangeSelector() %>% dyHighlight(highlightCircleSize = 4,
highlightSeriesBackgroundAlpha = 0.5, hideOnMouseOut = TRUE) %>% dyAxis("x",
drawGrid = TRUE) %>% dyEvent("2018-01-01", "2018", labelLoc = "bottom") %>%
dyEvent("2019-01-01", "2019", labelLoc = "bottom") %>% dyOptions(drawPoints = TRUE,
pointSize = 2) %>% dyLegend(show = "follow")
CEGATTA, Ítalo. Como um cientista de dados pesquisa o carro que quer comprar? Github/Data Science. 29 Julho 2017. Disponível em: https://italocegatta.github.io/como-um-cientista-de-dados-pesquisa-o-carro-que-quer-comprar/.