O IBC-Br é um bom preditor do PIB?

[et_pb_section admin_label="section"][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"]

Antes de todo o tsunami político que o Brasil se envolveu na semana passada, vínhamos experimentando uma gradual retomada do nível de atividade. Uma das formas possíveis de capturar isso é através do Índice de Nível de Atividade do Banco Central, o IBC-Br. Abaixo, baixamos os números índices do mesmo a partir do Sistema de Séries Temporais do BCB com o pacote BETS.

library(BETS)
ibc = BETS.get(24363)
ibc.sa = BETS.get(24364)
ibc = ts.intersect(ibc, ibc.sa)

Uma vez que tenhamos baixado as séries, podemos agora criar algumas métricas, de forma a avaliar o crescimento do índice no período recente.

## Variação mensal
vmensal = (ibc[,2]/lag(ibc[,2],-1)-1)*100
## Interanual
interanual = (ibc[,1]/lag(ibc[,1],-12)-1)*100
## Anual
anual = ibc[,1]
anual = (((anual+lag(anual,-1)+lag(anual,-2)+lag(anual,-3)+lag(anual,-4)+lag(anual,-5)+lag(anual,-6)+lag(anual,-7)+lag(anual,-8)+lag(anual,-9)+lag(anual,-10)+lag(anual,-11))/12)/
 ((lag(anual,-12)+lag(anual,-13)+lag(anual,-14)+lag(anual,-15)+lag(anual,-16)+lag(anual,-17)+lag(anual,-18)+lag(anual,-19)+lag(anual,-20)+lag(anual,-21)+lag(anual,-22)+lag(anual,-23))/12)-1)*100
# Trimestral Marginal
trimestral = (((ibc[,2]+lag(ibc[,2],-1)+lag(ibc[,2],-2))/3)/ 
 ((lag(ibc[,2],-3)+lag(ibc[,2],-4)+lag(ibc[,2],-5))/3)-1)*100

De posse dessas métricas, podemos agora criar uma tabela resumo com os dados dos últimos meses.

library(xtable)
table.vmensal = tail(vmensal, n=3)
table.trimestral = tail(trimestral, n=3)
table.interanual = tail(interanual, n=3)
table.anual = tail(anual, n=3)
table = cbind(table.vmensal, table.trimestral, table.interanual,
 table.anual)
colnames(table) = c('Mensal', 'Trimestral', 'Interanual', '12 meses')
rownames(table) = c('Jan/17', 'Fev/17', 'Mar/17')
print(xtable(table, digits=2,
 caption='Variação do IBC-Br (%)'), 
 format.args=list(decimal.mark=','),
 font.size='footnotesize', type='html')

Abaixo, a tabela...

[/et_pb_text][et_pb_code admin_label="Código"]<!-- html table generated in R 3.2.3 by xtable 1.8-2 package --> <!-- Tue May 23 20:16:24 2017 --> <table border=1> <caption align="bottom"> Variação do IBC-Br (%) </caption> <tr> <th> </th> <th> Mensal </th> <th> Trimestral </th> <th> Interanual </th> <th> 12 meses </th> </tr> <tr> <td align="right"> Jan/17 </td> <td align="right"> 0,37 </td> <td align="right"> 0,16 </td> <td align="right"> 0,42 </td> <td align="right"> -3,59 </td> </tr> <tr> <td align="right"> Fev/17 </td> <td align="right"> 1,37 </td> <td align="right"> 0,69 </td> <td align="right"> -0,65 </td> <td align="right"> -3,28 </td> </tr> <tr> <td align="right"> Mar/17 </td> <td align="right"> -0,44 </td> <td align="right"> 1,12 </td> <td align="right"> 1,05 </td> <td align="right"> -2,63 </td> </tr> </table>[/et_pb_code][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"]

Também podemos construir alguns gráficos para ver a evolução das métricas no período recente.

library(forecast)
library(ggplot2)
library(gridExtra)

g1 = autoplot(window(vmensal, start=c(2014,06)))+
 xlab('')+ylab('%')+
 labs(title='Variação mensal',
 subtitle='Mês t/Mês t-1')+geom_line(colour='red', size=.8)+
 scale_x_discrete(limits=2014:2017)

g2 = autoplot(window(trimestral, start=c(2014,06)))+
 xlab('')+ylab('%')+
 labs(title='Variação trimestral',
 subtitle='3 meses contra 3 meses anteriores',
 caption='IBC-Br é o índice de atividade do Banco Central.')+
 geom_line(colour='darkblue', size=.8)+
 scale_x_discrete(limits=2014:2017)

g3 = autoplot(window(interanual, start=c(2014,06)))+
 xlab('')+ylab('%')+
 labs(title='Variação interanual',
 subtitle='Mês t/Mês t-12')+
 geom_line(colour='darkgreen', size=.8)+
 scale_x_discrete(limits=2014:2017)

g4 = autoplot(window(anual, start=c(2014,06)))+
 xlab('')+ylab('%')+
 labs(title='Variação em 12 meses',
 subtitle='12 meses contra 12 meses anteriores',
 caption='Fonte: analisemacro.com.br com dados do BCB.')+
 geom_line(colour='blue', size=.8)+
 scale_x_discrete(limits=2014:2017)

grid.arrange(g1, g3, g2, g4, 
 top = "Evolução do IBC-Br ao longo do tempo",
 layout_matrix = matrix(c(1,2,3,4), 
 ncol=2, byrow=TRUE))

Abaixo, os gráficos...

[/et_pb_text][et_pb_image admin_label="Imagem" src="https://analisemacro.com.br/wp-content/uploads/2017/05/ibc.png" show_in_lightbox="off" url_new_window="off" use_overlay="off" animation="left" 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"]

Os dados na ponta do índice parecem indicar uma retomada. O quanto dessa retomada pode ser visto no PIB a ser divulgado na próxima semana? Em outras palavras, de que forma o IBC-Br e o PIB estão associados? É o que procuramos fazer na 31ª edição do Clube do Código. Abaixo, mostramos um resumo do exercício.

Avaliando o IBC-Br como preditor do PIB

Antes de mais nada, precisaremos pegar os dados do PIB, da mesma forma que coletamos os dados do IBC-Br.

pib = BETS.get(22109)

Um gráfico dos dois índices é posto abaixo.

 

 

[/et_pb_text][et_pb_image admin_label="Imagem" src="https://analisemacro.com.br/wp-content/uploads/2017/05/ibcpib.png" show_in_lightbox="off" url_new_window="off" use_overlay="off" animation="left" 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"]

De modo a tornar os dados do PIB e do IBC-Br comparáveis, precisaremos fazer alguns ajustes. Nesse exercício, vamos comparar a variação marginal dos dois índices. Isto é, estamos interessados em

(1)   \begin{equation*} vm = \frac{I_t}{I_{t-1}} \end{equation*}

 Já calculamos acima a variação trimestral do IBC-Br. Uma vez calculada essa métrica, agora nós vamos trimestralizar os dados. Para fazer isso, vamos pegar apenas as variações trimestrais nos meses de março, junho, setembro e dezembro. O código abaixo faz isso.

trimestral = window(trimestral, start=c(2004,01))
dates = as.Date(time(trimestral))
ibc.tri = xts(trimestral, dates)
ibc.tri = ibc.tri[.indexmon(ibc.tri) %in% c(1,4,7,10)]
ibc.tri = ts(ibc.tri, start=c(2004,01), freq=4)

Obtida a variação trimestral do IBC-Br, agora devemos obter a do PIB. Feito isso, juntamos os dados em uma mesma matriz, como no código abaixo.

# Obter a Variação Trimestral Marginal do PIB
pib.tri = (pib/lag(pib,-1)-1)*100
# Juntar os dois
data = ts.intersect(pib.tri, ibc.tri)
colnames(data) = c('pib', 'ibc')

Abaixo, um gráfico das séries.

[/et_pb_text][et_pb_image admin_label="Imagem" src="https://analisemacro.com.br/wp-content/uploads/2017/05/plot3-1.png" show_in_lightbox="off" url_new_window="off" use_overlay="off" animation="left" 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"]

Com os dados devidamente prontos, podemos agora construir um modelo linear simples, como abaixo:

(2)   \begin{equation*} pib_t = \alpha + \beta ibc_t + \varepsilon_t  \end{equation*}

O código abaixo operacionaliza.

# Modelo
modelo = lm(pib~ibc, data=data)

A Tabela abaixo traz os dados da regressão. Pelo modelo, observamos que uma mudança de um ponto percentual no IBC-BR equivale a uma variação de 0.79 no PIB.

[/et_pb_text][/et_pb_column][/et_pb_row][et_pb_row admin_label="Linha"][et_pb_column type="2_3"][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"]

Com o modelo em mãos, podemos avaliar o erro de previsão do mesmo. A tabela abaixo resume.

 

[/et_pb_text][et_pb_code admin_label="Código"]<!-- html table generated in R 3.2.3 by xtable 1.8-2 package --> <!-- Tue May 23 21:03:03 2017 --> <table border=1> <tr> <th> </th> <th> ME </th> <th> RMSE </th> <th> MAE </th> <th> MPE </th> <th> MAPE </th> <th> MASE </th> <th> ACF1 </th> <th> Theil's U </th> </tr> <tr> <td align="right"> Training set </td> <td align="right"> -0.00 </td> <td align="right"> 0.66 </td> <td align="right"> 0.53 </td> <td align="right"> 196.04 </td> <td align="right"> 375.08 </td> <td align="right"> 0.62 </td> <td align="right"> </td> <td align="right"> </td> </tr> <tr> <td align="right"> Test set </td> <td align="right"> -0.49 </td> <td align="right"> 0.60 </td> <td align="right"> 0.52 </td> <td align="right"> -42.43 </td> <td align="right"> 136.98 </td> <td align="right"> 0.61 </td> <td align="right"> 0.17 </td> <td align="right"> 0.96 </td> </tr> </table>[/et_pb_code][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"]

O modelo proposto pela equação tende a superestimar a variação marginal do PIB em 0.49 pontos percentuais. O IBC-Br, nas palavras do Banco Central, tem como objetivo refletir a evolução contemporânea da atividade econômica do país. Por ter frequência mensal, tem sido frequentemente apontado como uma espécie de prévia do PIB. Nesse exercício, por suposto, vimos que os resultados do IBC-Br devem ser vistos com cautela, se associados ao PIB.

[/et_pb_text][et_pb_button admin_label="Botão" button_url="https://analisemacro.com.br/cursos-de-r/macroeconometria/" url_new_window="off" button_text="Gostou do Exercício? Conheça nosso Curso de Macroeconometria usando o R" button_alignment="left" background_layout="light" custom_button="off" button_letter_spacing="0" button_use_icon="default" button_icon_placement="right" button_on_hover="on" button_letter_spacing_hover="0"]
[/et_pb_button][et_pb_image admin_label="Imagem" src="https://analisemacro.com.br/wp-content/uploads/2017/11/datascience2.png" show_in_lightbox="off" url="https://analisemacro.com.br/cursos-de-r" url_new_window="off" use_overlay="off" animation="left" 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_column type="1_3"][et_pb_code admin_label="Código"]<table style="text-align:center"><tr><td colspan="2" style="border-bottom: 1px solid black"></td></tr><tr><td style="text-align:left"></td><td><em>Dependent variable:</em></td></tr> <tr><td></td><td colspan="1" style="border-bottom: 1px solid black"></td></tr> <tr><td style="text-align:left"></td><td>pib</td></tr> <tr><td colspan="2" style="border-bottom: 1px solid black"></td></tr><tr><td style="text-align:left">ibc</td><td>0.790<sup>***</sup></td></tr> <tr><td style="text-align:left"></td><td>(0.060)</td></tr> <tr><td style="text-align:left"></td><td></td></tr> <tr><td style="text-align:left">Constant</td><td>0.165<sup>*</sup></td></tr> <tr><td style="text-align:left"></td><td>(0.095)</td></tr> <tr><td style="text-align:left"></td><td></td></tr> <tr><td colspan="2" style="border-bottom: 1px solid black"></td></tr><tr><td style="text-align:left">Observations</td><td>52</td></tr> <tr><td style="text-align:left">R<sup>2</sup></td><td>0.775</td></tr> <tr><td style="text-align:left">Adjusted R<sup>2</sup></td><td>0.770</td></tr> <tr><td style="text-align:left">Residual Std. Error</td><td>0.641 (df = 50)</td></tr> <tr><td style="text-align:left">F Statistic</td><td>171.960<sup>***</sup> (df = 1; 50)</td></tr> <tr><td colspan="2" style="border-bottom: 1px solid black"></td></tr><tr><td style="text-align:left"><em>Note:</em></td><td style="text-align:right"><sup>*</sup>p<0.1; <sup>**</sup>p<0.05; <sup>***</sup>p<0.01</td></tr> </table>[/et_pb_code][/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

FED Speeches: Quantificando a Incerteza da Política Monetária com IA e Python

Os discursos dos membros do FED podem dar indicativos relevantes sobre a condução da política monetária, como a percepção de incerteza na fala e na escolha das palavras. Sendo assim, monitorar e interpretar não é suficiente, é necessário quantificar a incerteza nos discursos. Neste exercício mostramos o caminho para construir um indicador de incerteza da política monetária, usando métodos inovadores de IA com o Python.

Medindo o Hiato do Produto do Brasil usando Python

Uma medida extremamente importante para a avaliação econômica de um país é o Hiato do Produto. Neste post, realizamos uma comparação das diferentes formas de estimação dessa variável não observável utilizando o Python como ferramenta de análise de dados.

Como analisar a contribuição para a Volatilidade de uma carteira de ações usando Python

A contribuição para a volatilidade fornece uma decomposição ponderada da contribuição de cada elemento do portfólio para o desvio padrão de todo o portfólio. Em termos formais, é definida pelo nome de contribuição marginal, que é basicamente a derivada parcial do desvio padrão do portfólio em relação aos pesos dos ativos. A interpretação da fórmula da contribuição marginal, entretanto, não é tão intuitiva, portanto, é necessário obter medidas que possibilitem analisar os componentes. Veremos portanto como calcular os componentes da contribuição e a porcentagem da contribuição. Vamos criar as respectivas medidas usando a linguagem de programação Python.

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.