
O BETS é um pacote R que disponibiliza milhares de séries econômicas brasileiras de diferentes centros, como Banco Central, IBGE e FGV, através de uma interface bastante simples e flexível. O pacote também conta com ferramentas poderosas de análise e visualização de séries temporais, como relatórios automatizados da aplicação de métodos conhecidos de análise de séries (SARIMA, redes neurais e Holt-Winters), ou a criação de dashboards e gráficos de aparência profissional.
Discutiremos aqui as formas básicas de uso do pacote (busca, obtenção e armazenamento de séries) e apenas tangenciaremos os usos mais avançados, que serão temas de outros posts.
Caso o leitor se interesse, há ao final deste post um formulário para assinar a Mailing List do BETS. Através dela, informaremos o usuários acerca de atualizações do pacote e daremos dicas periódicas de como usá-lo.
Devido ao tamanho considerável da base de dados, foi necessário criar um
modo de pesquisar por séries a partir de seus metadados, isto é, uma
ferramenta de busca que utilizasse uma ou mais informações das séries
como palavras-chave. A função BETS.search realiza as pesquisas por
cada campo da tabela de metadados.
O protótipo da BETS.search tem a forma:
BETS.search(description, src, periodicity, unit, code, view = TRUE, lang = "en")
Onde os argumentos recebem, respectivamente:
description: um character. String de busca com os termos que
devem ou não estar presentes na descrição da série desejada.src: um . A fonte dos dados.periodicity um character. A frequência na qual a série
é observada.unit: um character. A unidade na qual os dados foram medidos.code: um integer. O código único da série na base do BETS.view: um boolean. Por padrão, TRUE. Se FALSE, os resultados
serão mostrados direto no console do R.lang: um character. Idioma da pesquisa. Por padrão, 'en',
para inglês. Também é possivel fazer a pesquisa em português,
bastando mudar o valor para 'pt'.Para refinar as buscas, há regras de sintaxe para o parâmetro
description:
Para procurar palavras alternativas, separe-as por espaços
em branco. Exemplo: description = 'núcleo ipca' significa que a
descrição da série deve conter 'ipca' e 'núcleo'.
Para procurar expressões inteiras, basta cercá-las com ' '.
Exemplo: description = 'índice de 'núcleo ipca'' significa que
deve conter na descrição da série 'núcleo ipca' e 'índice'.
Para excluir palavras da busca, insira um ∼ antes de cada um delas.
Exemplo: description = 'ipca $\sim$ núcleo' significa que a
descrição da série deve conter 'ipca' e não pode conter
'núcleo'.
Para excluir todas as expressões da busca, de forma semelhante ao
item anteiror, basta cercá-los com ' ' e inserir um ∼ antes de
cada uma delas. Exemplo:
description = '$\sim$ índice 'núcleo ipca'' significa que a
descrição da série deve conter 'índice' e não pode conter
'núcleo ipca'.
É possível pesquisar ou negar várias palavras ou expressões, desde que sejam respeitadas as regras precedentes.
O espaço em branco após o sinal de negação (∼) não é necessário. Mas os espaços em branco depois de expressões ou palavras são necessários.
Alguns exemplos de uso podem ser visto abaixo:
> BETS.search(description = "sales ~ retail")
> BETS.search(description = "'sales volume index' ~ vehicles")
> BETS.search(description = "'distrito federal'", periodicity = 'A', src = 'IBGE')
> BETS.search(description = "gdp accumulated", unit = "US", view = F)
## code description
## 1 4192 GDP accumulated in the last 12 months - in US$ million
## 2 4386 GDP accumulated in the year - in US$ million
## unit periodicity start last_value source
## 1 US$ (million) M 31/01/1990 may/2017 BCB-Depec
## 2 US$ (million) M 31/01/1990 may/2017 BCB-Depec
> results = BETS.search(description = "consumption ~ 'seasonally adjusted' ~ private", view = F)
> head(results)
## code description
## 1 1393 Petroleum derivatives consumption - Gasoline
## 2 1394 Petroleum derivatives consumption - GLP
## 3 1395 Petroleum derivatives consumption - Fuel oil
## 4 1396 Petroleum derivatives consumption - Diesel oil
## 5 1397 Petroleum derivatives consumption - Other derivatives
## 6 1398 Petroleum derivatives consumption - Total derivatives
## unit periodicity start last_value source
## 1 Barrels/day (thousand) M 31/01/1979 apr/2017 ANP
## 2 Barrels/day (thousand) M 31/01/1979 apr/2017 ANP
## 3 Barrels/day (thousand) M 31/01/1979 apr/2017 ANP
## 4 Barrels/day (thousand) M 31/01/1979 apr/2017 ANP
## 5 Barrels/day (thousand) M 31/01/1979 apr/2017 ANP
## 6 Barrels/day (thousand) M 31/01/1979 apr/2017 ANP
Para mais informações sobre a BETS.search, incluindo os valores
válidos em cada campo, consulte o manual de referência, digitando
?BETS.search no console do R.
A BETS.get funciona unicamente através do código de referência da
série, obtido com as consultas feita com a . Sua assinatura é:
BETS.get(code, data.frame = FALSE)
O parâmetro code é, obviamente, obrigatório. O argumento opcional
data.frame representa o tipo do objeto que será retornado. Por padrão,
seu valor é FALSE, indicando que o objeto devolvido pela função será
um ts (time series). Caso data.frame = TRUE, a série será
armazenada em um objeto do tipo data.frame.
Vamos extrair duas das séries pesquisadas anteriormente.
> # Obter a serie do PIB acumulado em 12 meses, em dolares
> gdp_accum = BETS.get(4192)
> window(gdp_accum, start = c(2014,1))
## Jan Feb Mar Apr May Jun Jul Aug
## 2014 2472533 2481284 2481924 2479634 2480629 2475636 2471898 2465860
## 2015 2403690 2349150 2301000 2246336 2189805 2141042 2085474 2029582
## 2016 1792830 1792407 1788570 1787263 1786178 1788167 1786639 1789734
## 2017 1815461 1830139 1848533 1864606 1879933 1895371
## Sep Oct Nov Dec
## 2014 2465907 2462505 2457480 2454846
## 2015 1970754 1911276 1854424 1797601
## 2016 1791403 1790562 1794418 1799436
## 2017
> # Obter a serie do PIB do Distrito Federal, a precos de mercado
> gdp_df = BETS.get(23992, data.frame = T)
> head(gdp_df)
## date value
## 1 2002-01-01 53902199799
## 2 2003-01-01 58456124319
## 3 2004-01-01 67076505202
## 4 2005-01-01 75732681210
## 5 2006-01-01 84661405538
## 6 2007-01-01 93404000766
Para conferir versatilidade às formas de armazenamento das séries do , há a possibilidade de criar arquivos com as séries em formatos proprietários, isto é, formatos que pertencem a softwares pagos.
A BETS.save extrai a série temporal da base de dados do pacote na
forma de um data.frame e cria um arquivo no formato especificado. No
arquivo, há uma tabela onde a primeira coluna conterá as datas e a
segunda, os dados.
A função possui três variações:
BETS.save.sas(code, data = NULL, file.name = "series")
BETS.save.spss(code, data = NULL, file.name = "series")
BETS.save.stata(code, data = NULL, file.name = "series")
Novamente, o parâmetro code recebe o código da série. O usuário pode
fornecer sua própria série através do argumento data, que pode ser um
data.frame ou um ts. Não é necessário acrescentar a extensão ao nome
do arquivo no parãmetro file.name.
Alguns exemplos típicos de uso seriam:
> # Salvar a série da dívida pública líquida no formato padrão do Excel
> BETS.save.stata(code = 2078, file.name = "series_stata.dta")
>
> # Salvar uma série qualquer no formato do SPSS
> BETS.save.spss(data = myseries, file.name = "series_spss")
A BETS.chart foi inicialmente projetada para ser uma função privada,
auxiliar da BETS.dashboard. No entanto, pensamos ser de grande valia
para o usuário dispor de um meio de obter os gráficos dos dashboards
separadamente, de modo a poder incorporá-los em seus trabalhos.
O protótipo da BETS.chart é o que se segue:
BETS.chart(ts, file = NULL, open = TRUE, params = NULL)
O parâmetro ts pode receber uma dentre as várias opções pré-definidas
de gráficos ou uma série do usuário. Há também a opção de salvar a saída
no working directory, definindo o nome do arquivo file. Caso o
arquivo deva ser aberto após a criação, open deve ser mantido como
TRUE. O parâmetro params é reservado para gráficos de séries do
usuário. É uma lista que pode conter o campo codace, que recebe um
booleano e indica se devem ser desenhadas áreas sombreadas representando
recessões datadas pelo CODACE (FGV/IBRE), e o campo start, que
especifica qual deve ser a data de início da série. Uma vez que se
tratam de gráficos de conjuntura, a data de fim não pode ser alterada e
é sempre o último dado disponível.
Vejamos dois exemplos de uso da BETS.chart.
> BETS.chart(ts = 'iie_br', file = "iie_br", open = TRUE)

> BETS.chart(ts = "misery_index", file = "misery_index.png", open = TRUE)

Para uma lista completa dos gráficos diponíveis, consulte o manual de
referência da BETS.chart.
O BETS possui uma poderosa ferramenta de análise de conjuntura, os
dashboards. Para criar um dashboard, chamamos a BETS.dashboard,
cuja assinatura é:
BETS.dashboard(type = "business_cycle", saveas = NA)
Assim, obtemos um arquivo .pdf. No exemplo, o usuário escolhe salvar o
arquivo com o nome de survey.pdf. Os gráficos que são exibidos também
são de escolha do usuário, selecionados através do parâmetro charts
(por default, seu valor é 'all'). O manual de referência possui uma
lista completa dos gráficos disponíveis.
> BETS.dashboard(type = "business_cycle", saveas = "survey.pdf")

Abaixo você encontra um formulário para assinar a Mailing List do BETS. Através dela você saberá muito mais sobre o BETS e suas novas versões. Se você se interessou pelo pacote, não deixe de assinar!
© 2016 - Pedro costa ferreira