[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)
onde o valor real será obtido multiplicando o valor nominal em pela razão entre o índice de preço no período e no período . 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)
onde, é 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]