Obtendo valores deflacionados com o R

[et_pb_section admin_label="section"][et_pb_row admin_label="row"][et_pb_column type="1_2"][et_pb_text admin_label="Texto" background_layout="light" text_orientation="justified" text_font="Verdana||||" text_font_size="18" use_border_color="off" border_color="#ffffff" border_style="solid"]

Uma dúvida muito comum entre os alunos dos Cursos Aplicados em R da Análise Macro é como obter valores deflacionados ou reais. De forma a ilustrar o processo, vamos pegar os saldos de transações de crédito total, pessoa física e pessoa jurídica a partir do pacote BETS do Sistema de Séries Temporais do Banco Central. Esse foi, a propósito, o exercício 39 do Clube do Código.


total = window(BETS.get(20539), start=c(2007,03))
pj = BETS.get(20540)
pf = BETS.get(20541)

 

[/et_pb_text][/et_pb_column][et_pb_column type="1_2"][et_pb_image admin_label="Imagem" src="https://analisemacro.com.br/wp-content/uploads/2017/09/cliqueaqui.png" show_in_lightbox="off" url="https://analisemacro.com.br/cursos-de-r/" url_new_window="off" use_overlay="off" animation="off" sticky="off" align="center" force_fullwidth="off" always_center_on_mobile="on" use_border_color="off" border_color="#ffffff" border_style="solid"]

 

[/et_pb_image][/et_pb_column][/et_pb_row][et_pb_row admin_label="row"][et_pb_column type="4_4"][et_pb_text admin_label="Texto" background_layout="light" text_orientation="justified" text_font="Verdana||||" text_font_size="18" use_border_color="off" border_color="#ffffff" border_style="solid"]

Abaixo os gráficos das séries...


times = seq(as.Date('2007-03-01'), as.Date('2018-04-01'), 
by='1 month')
df = data.frame(time=times, total=total,
pj=pj, pf=pf)
ggplot(df, aes(x=time))+
geom_line(aes(y=total/1000, colour='Total'), size=.8)+
geom_line(aes(y=pj/1000, colour='Pessoa Jurídica'), size=.8)+
geom_line(aes(y=pf/1000, colour='Pessoa Física'), size=.8)+
scale_colour_manual('', values=c('Total'='blue',
'Pessoa Jurídica'='darkgreen',
'Pessoa Física'='red'))+
theme(legend.position = 'top')+
xlab('')+ylab('R$ milhões')+
labs(title='Saldo de Operações de Crédito (R$ milhões)',
subtitle='Valores Correntes',
caption='Fonte: elaboração própria com dados do BCB.')+
scale_y_discrete(limits=c(500,1000,1500,2000,2500,3000))+
scale_x_date(breaks = date_breaks("1 years"),
labels = date_format("%Y"))+
annotate("rect", fill = "lightblue", alpha = 0.3, 
xmin = as.Date('2016-01-01'), 
xmax = as.Date('2018-04-01'),
ymin = -Inf, ymax = Inf)

As séries estão, naturalmente, em valores correntes ou nominais. De forma a colocá-las em valores reais, precisamos de um deflator. Com o código abaixo, por suposto, importamos o número-índice do IPCA da base de dados SIDRA do IBGE, com o pacote SidraR.


ipca = get_sidra(api='/t/1737/n1/all/v/2266/p/all/d/v2266%2013')
ipca = ts(ipca$Valor, start=c(1979,12), freq=12)
ipca = window(ipca, start=start(total))

De posse do número-índice do IPCA, podemos aplicar a seguinte fórmula sobre as nossas séries:

(1)   \begin{align*} V_{r} = V_{t} \times \begin{pmatrix} \frac{I_{k}}{I_{t}} \end{pmatrix} \end{align*}

onde o valor real V_{r} será obtido multiplicando o valor nominal em t pela razão entre o índice de preço no período k e no período t. Em assim sendo, podemos trazer os valores das nossas séries aos preços de abril de 2018, com o código a seguir.


credito = ts.intersect(total, pf, pj)
credito.real = credito*(ipca[length(ipca)]/ipca)
colnames(credito.real) = colnames(credito)

Abaixo comparamos os valores reais e nominais do saldo de transações de crédito total.

 

[/et_pb_text][et_pb_image admin_label="Imagem" src="https://analisemacro.com.br/wp-content/uploads/2017/11/cursosaplicados.png" show_in_lightbox="off" url="https://analisemacro.com.br/cursos-de-r/" url_new_window="off" use_overlay="off" animation="off" sticky="off" align="center" force_fullwidth="off" always_center_on_mobile="on" use_border_color="off" border_color="#ffffff" border_style="solid"]

 

[/et_pb_image][et_pb_text admin_label="Texto" background_layout="light" text_orientation="justified" text_font="Verdana||||" text_font_size="18" use_border_color="off" border_color="#ffffff" border_style="solid"]

Variações Nominais vs. Variações Reais

Por suposto, podemos construir variações sobre valores reais e nominais. Caso, façamos, por exemplo, uma variação acumulada em 12 meses dos valores nominais, tudo o que teremos será uma variação nominal. Veja, por exemplo, com o código abaixo.


anual = (credito/lag(credito,-12)-1)*100
colnames(anual) = colnames(credito)

E abaixo um gráfico.

Podemos, agora, transformar essas variações nominais em reais de duas formas. Primeiro, podemos simplesmente fazer a mesma operação acima, mas utilizando as séries reais que construímos acima.


anual.real = (credito.real/lag(credito.real,-12)-1)*100
colnames(anual.real) = colnames(credito)

Ou podemos aplicar a fórmula

(2)   \begin{align*} \Delta_{real} = \begin{bmatrix} \begin{pmatrix} \frac{1 + (V_{nom}/100)}{1+ (\pi/100)} \end{pmatrix}-1 \end{bmatrix} \times 100 \end{align*}

onde, \pi é a inflação do período. O código abaixo operacionaliza.


ipca2 = window(BETS.get(13522), start=c(2008,03))
anual = (credito/lag(credito,-12)-1)*100
anual.real2 = (((1+(anual/100))/(1+(ipca2/100)))-1)*100
colnames(anual.real2) = colnames(credito)

Uma vez calculadas as variações das séries, plotamos um gráfico, como abaixo.

Update: por óbvio, para rodar o código é preciso carregar os pacotes BETS, ggplot2, sidrar e scales.

[/et_pb_text][et_pb_image admin_label="Imagem" src="https://analisemacro.com.br/wp-content/uploads/2017/11/cursosaplicados.png" show_in_lightbox="off" url="https://analisemacro.com.br/cursos-de-r/" url_new_window="off" use_overlay="off" animation="off" sticky="off" align="center" force_fullwidth="off" always_center_on_mobile="on" use_border_color="off" border_color="#ffffff" border_style="solid"]

 

[/et_pb_image][/et_pb_column][/et_pb_row][/et_pb_section]

Compartilhe esse artigo

Facebook
Twitter
LinkedIn
WhatsApp
Telegram
Email
Print

Comente o que achou desse artigo

Outros artigos relacionados

Análise exploratória para modelagem preditiva no Python

Antes de desenvolver bons modelos preditivos é necessário organizar e conhecer muito bem os dados. Neste artigo, damos algumas dicas de recursos, como gráficos, análises e estatísticas, que podem ser usados para melhorar o entendimento sobre os dados usando Python.

Como usar modelos do Sklearn para previsão? Uma introdução ao Skforecast

Prever séries temporais é uma tarefa frequente em diversas áreas, porém exige conhecimento e ferramentas específicas. Os modelos de machine learning do Sklearn são populadores, porém são difíceis de aplicar em estruturas temporais de dados. Neste sentido, introduzimos a biblioteca Skforecast, que integra os modelos do Sklearn e a previsão de séries temporais de forma simples.

Boletim AM

Receba diretamente em seu e-mail gratuitamente nossas promoções especiais e conteúdos exclusivos sobre Análise de Dados!

Boletim AM

Receba diretamente em seu e-mail gratuitamente nossas promoções especiais e conteúdos exclusivos sobre Análise de Dados!

como podemos ajudar?

Preencha os seus dados abaixo e fale conosco no WhatsApp

Boletim AM

Preencha o formulário abaixo para receber nossos boletins semanais diretamente em seu e-mail.