Deflacionando variáveis macroeconômicas com o R

By | Dados Macroeconômicos

Nosso objetivo no Curso de Teoria Macroeconômica com Laboratórios de R é o de fornecer uma introdução aplicada à macroeconomia. Serve tanto para alunos e professores de economia, em busca de ferramentas mais aplicadas para lidar com variáveis macroeconômicas, quanto para profissionais de outras áreas em busca de conhecimentos em macroeconomia.

Para ilustrar o que vemos no Curso, vou mostrar aqui nesse post como é possível deflacionar uma série econômica, dúvida muito comum entre nossos alunos. Sabemos todos que R$ 100 em dezembro de 1997 não é a mesma coisa que R$ 100 em dezembro de 2016, não é mesmo? Logo, para comparar valores no tempo é preciso que levemos em consideração a taxa de crescimento do nível geral de preços, ou simplesmente a inflação. Para comparar valores nominais em dois períodos distintos, é preciso que tenhamos a mesma base de preços. Para ilustrar, vamos dar um exemplo utilizando a despesa com benefícios previdenciários do governo central. Para deflacionar, vamos utilizar o Índice de Preços ao Consumidor Amplo (IPCA).


library(readxl)
library(tidyverse)
library(ggplot2)
library(magrittr)
library(lubridate)
library(sidrar)

data = read_excel("primario.xlsx")

data %>% pivot_longer(-date, names_to='Variável', values_to='valor') %>%
ggplot(aes(x=date, y=valor, color=Variável)) + geom_line() +
labs(title='Receitas e despesas com benefícios previdenciários', x='Data',
y='Valor', color='') +
theme_light()

O gráfico acima ilustra as nossas séries em valores nominais. Na sequência, fazemos o ajuste para valores reais com base no IPCA.


ipca = get_sidra(api='/t/1737/n1/all/v/2266/p/all/d/v2266%2013')

ipca %<>% mutate(date = parse_date_time(`Mês (Código)`, 'ym'))

ajuste <- left_join(ipca, data, by='date') %>%
select(date, Valor, receita, despesa) %>%
na.omit() %>%
mutate('Receita ajustada' = receita/Valor*Valor[274],
'Despesa ajustada' = despesa/Valor*Valor[274])

ajuste %>% select(date, receita, 'Receita ajustada') %>%
pivot_longer(-date, names_to = 'Variáveis', values_to = 'Valor') %>%
ggplot(aes(x=date, y=Valor, color=Variáveis)) + geom_line() +
labs(title='Receitas com benefícios previdenciários nominais e reais', x='Data',
color='') +
theme_light()

No gráfico acima, vemos os valores nominais e reais das receitas com benefícios previdenciários. A título de comparação, é necessário sempre usar valores reais.

________________

(*) Isso e muito mais você irá aprender no nosso Curso de Teoria Macroeconômica com Laboratórios de R.

Visualizando os preços de ações com o R

By | mercado financeiro

Nosso objetivo no Curso Mercado Financeiro e Gestão de Portfólios é o de proporcionar tanto uma introdução dos alunos ao mercado financeiro quanto o de munir os mesmos com ferramentas analíticas para gestão de portfólios e tratamento/visualização de dados. Para ilustrar, vamos ver como é possível coletar dados de preços de ações a partir da base de dados online do Yahoo Finance e visualizar os mesmos com o pacote ggplot2.

Com o código a seguir, nós estamos pegando os preços das ações da Petrobras, Ambev, Magazine Luíza e Via Varejo.


library(tidyverse)
library(tidyquant)
library(timetk)
library(scales)
library(quantmod)

symbols = c('PETR4.SA', 'ABEV3.SA', 'MGLU3.SA', 'VVAR3.SA')
prices = getSymbols(symbols, src='yahoo',
from='2019-01-01',
to='2020-04-20',
warning=FALSE) %>%
map(~Cl(get(.))) %>%
reduce(merge) %>%
`colnames<-` (symbols) %>%
tk_tbl(preserve_index = TRUE,
rename_index = 'date') %>%
drop_na()

Observe que o código já trata os dados, tanto colocando os mesmos em um tibble quanto eliminando os valores faltantes (missing values). Feito isso, podemos criar um gráfico de linhas com o pacote ggplot2.


filter(prices, date > '2019-09-01') %>%
ggplot(aes(x=date))+
geom_line(aes(y=PETR4.SA, colour='PETR4'))+
geom_line(aes(y=ABEV3.SA, colour='ABEV3'))+
geom_line(aes(y=MGLU3.SA, colour='MGLU3'))+
geom_line(aes(y=VVAR3.SA, colour='VVAR3'))+
scale_colour_manual('',
values=c('PETR4'='blue',
'ABEV3'='red',
'MGLU3'='orange',
'VVAR3'='green'))+
scale_x_date(breaks = date_breaks("14 days"),
labels = date_format("%d/%b"))+
theme(axis.text.x=element_text(angle=45, hjust=1),
legend.position = 'bottom')+
labs(x='', y='R$',
title='Preços de ações brasileiras selecionadas',
caption='Fonte: analisemacro.com.br com dados do Yahoo Finance')

A partir daí, podemos criar os retornos das ações e partir para a construção do nosso portfólio.

Você as colocaria no seu?

________________

(*) Isso e muito mais você irá aprender no nosso Novo Curso Mercado Financeiro e Gestão de Portfólios.

Regressões Quantílicas

By | microeconometria

No nosso Curso de Microeconometria usando o R, nosso objetivo é capacitar alunos de graduação e pós-graduação, professores e profissionais de mercado em econometria aplicada a microdados. O curso envolve tanto a apresentação teórica de modelos de regressão, quanto a aplicação no R de diversos exemplos associados a dados de corte transversal, séries de tempo e dados em painel. Espera-se que ao final do Curso o aluno tenha facilidade em desenvolver trabalhos empíricos empregando microdados.

Para ilustrar, vamos considerar hoje uma das aulas do Curso, envolvendo Regressões Quantílicas.

Regressões que utilizam o método de mínimos quadrados modelam a média condicional de uma variável de interesse. Isto é, E(Y|X), o valor esperado de y dado um vetor x. Às vezes, entretanto, podemos estar interessados em outras características da distribuição condicional, como por exemplo a mediana ou, de forma mais geral, os quantis.

O modelo de regressão quantílica pela função quantílica condicional

(1)   \begin{align*} Q_y (\tau|x) = x_{i}^{T} \beta ; \end{align*}

i.e., Q_y (\tau|x) denota o quantil \tau de y condicionado a x. As estimativas são então obtidas minimizando \sum_{i} \varrho_{\tau} (y_i - x_{i}^{T} \beta) com respeito a \beta, onde para \tau \in (0,1), \varrho_{\tau} denota a função linear por partes \varrho_{\tau} = u {\tau - I (u < 0)}, sendo I a função indicativa.

De modo a ilustrar a aplicação da regressão quantílica no R, vamos estimar o seguinte modelo:

(2)   \begin{align*} Q_{log(wage)} (\tau|x) = \beta_1 + \beta_2 experience + \beta_3 experience^2 + \beta_4 education  \end{align*}

Para estimar 2, nós recorremos à função `rq` do pacote `quantreg` e ao dataset **CPS1988**, como abaixo. Por default, `rq` seta \tau = 0.5, isto é, a mediana de y.


library(quantreg)
library(AER)
data('CPS1988')
cps_f <- log(wage) ~ experience + I(experience^2) + education
cps_lad <- rq(cps_f, data = CPS1988)

A seguir, o output da regressão.

Dependent variable:
log(wage)
experience 0.077***
(0.001)
I(experience2) -0.001***
(0.00003)
education 0.094***
(0.001)
Constant 4.241***
(0.022)
Observations 28,155
Note: *p<0.1; **p<0.05; ***p<0.01

A regressão quantílica é particularmente interessante quanto modelamos vários quantis de forma simultânea, como abaixo. Para isso, basta setar o argumento tau da função.


cps_rq <- rq(cps_f, tau = c(0.25, 0.75), data = CPS1988)

Uma questão natural derivada desse tipo de análise é se as linhas ou superfícies de regressão são paralelas; ou seja, se os efeitos dos regressores são uniformes nos quantis. Existe o método `anova()` para explorar esta questão.


cps_rq25 <- rq(cps_f, tau = 0.25, data = CPS1988)
cps_rq75 <- rq(cps_f, tau = 0.75, data = CPS1988)
anova(cps_rq25, cps_rq75, joint = FALSE)

Observamos que o efeito não é uniforme ao longo dos quantis, com as diferenças estando associadas ao coeficiente da **experiência**. Podemos ver essa diferença de modo gráfico com o código a seguir.


cps_rqbig <- rq(cps_f, tau = seq(0.05, 0.95, by = 0.05), data = CPS1988)
cps_rqbigs <- summary(cps_rqbig)
plot(cps_rqbigs)

Com isso, visualizamos a variação dos coeficientes em função de \tau, sendo bastante claro que a influência das covariáveis está longe de ser uniforme. As áreas sombreadas representam intervalos de confiança pontuais de 90% (por padrão) para as estimativas da regressão quantílica. Para comparação, as linhas horizontais sólidas e tracejadas mostradas em cada gráfico representam a estimativa do OLS e um intervalo de confiança de 90% associado.

_________

(*) Cadastre-se aqui na nossa Lista VIP para receber um super desconto na abertura das Turmas 2021.

Definindo o hiato do produto

By | PIB

No nosso Curso de Análise de Conjuntura usando o R, fazemos uma incursão pelo mundo da macroeconomia de um jeito completamente distinto daquele visto nas faculdades de economia. Lá, nós definimos conceitos teóricos sempre tendo a preocupação de mostrar para os alunos como é possível coletar e tratar os dados reais associados. Para ilustrar, vamos mostrar aqui hoje como é possível definir e mostrar na prática um conceito muitas vezes desconhecido pelos alunos (e mesmo profissionais) da área: o hiato do produto. Para começar, vamos fazer uma pequena introdução à macroeconomia e ao seu conceito mais relevante, o Produto Interno Bruto.

A macroeconomia nasce da soma de milhões de decisões diárias de indivíduos descentralizados. Tais indivíduos, com necessidades ilimitadas, decidem todos os dias o que produzir, como produzir e como distribuir esse esforço produtivo.

A variável macroeconômica que representa esse esforço de forma mais completa é o que chamamos de produto interno bruto, ou simplesmente PIB, a soma de todos os bens e serviços finais produzidos por um país ao longo de um determinado período de tempo.

O PIB é, nesse contexto, uma medida, expressa em valores correntes ou números-índices, do quanto um país utilizando recursos escassos, como trabalho e capital, gerou de produção e, consequentemente, de renda em um determinado período.

Não por outro motivo, a taxa de crescimento do PIB fornece uma boa medida sobre o quão rápido ou devagar um determinado país está se tornando mais desenvolvido.

De forma a definir o PIB em termos um pouco mais precisos, Considere que o PIB efetivamente observado (de agora em diante chamado de PIB efetivo) possa ser decomposto em duas partes, a saber:

(1)   \begin{align*}Y_{t} = Y^P_{t} + h_{t} \end{align*}

Onde Y_{t} é o PIB em t, Y^P_{t} é a tendência de longo prazo do PIB, chamada de produto potencial e h_{t} é um componente cíclico, chamado de hiato do produto.

O PIB Potencial, Y^P_{t}, a tendência do PIB Efetivo ao longo do tempo, reflete condições estruturais da economia, como a população em idade ativa, o estoque de capital, qualidade da educação, qualidade das instituições, etc. O hiato do produto, h_{t}, o componente cíclico, por sua vez, reflete questões conjunturais, como incentivos de política econômica, condições climáticas, choques externos, incertezas políticas, etc.

Em outros termos, no curto prazo o PIB Efetivo pode crescer mais ou menos do que o PIB Potencial, aquela tendência. No longo prazo, entretanto, o crescimento da economia está limitado pela disponibilidade de fatores e pela forma como esses fatores são combinados.

Isto é, supondo que a estrutura da economia possa ser representada por uma função do tipo Cobb-Douglas, com retornos constantes de escala, temos que:

(2)   \begin{align*} Y_{t} = A_{t} K_{t}^{\alpha_{t}} L_{t}^{1-\alpha_{t}}\end{align*}

Onde K_{t} e L_{t} são, respectivamente, a quantidade de capital e trabalho, A_{t} mede a eficiência tecnológica ou a produtividade total dos fatores e \alpha_{t}, por fim, mede a participação do capital na renda nacional.

Nesse contexto, Y_{t}, a soma de bens e serviços finais produzidos em determinado período de tempo, será dado pela combinação entre uma determinada quantidade de estoque de capital com outra de trabalho, moderada pela tecnologia disponível. Em última instância, portanto, Y_{t} estará limitado pela disponibilidade de fatores de produção e pela forma como esses fatores são combinados a produtividade total dos fatores. Os economistas gostam de chamar essa limitação de produto potencial, ou simplesmente Y^P_{t}.

No curto prazo, a diferença entre Y_{t} e Y^P_{t} será assim dada pelo hiato do produto, h_{t}, que, por construção, irá medir o grau de ociosidade da economia. Calcular o hiato do produto, entretanto, não é uma tarefa trivial, uma vez que o PIB potencial não é uma variável observável. Precisamos estimar o produto potencial e, depois, calcular o hiato.

Para ilustrar o comportamento do hiato do produto no Brasil, vamos considerar o cálculo feito pela Instituição Fiscal Independente, ligada ao Senado Federal. O código de R a seguir baixa os dados do site da IFI e lê a planilha que contém os dados que queremos.


library(tidyverse)
library(readxl)
library(zoo)
library(scales)

url = 'https://www12.senado.leg.br/ifi/dados/arquivos/estimativas-do-hiato-do-produto-ifi/at_download/file'
download.file(url, destfile = 'hiato.xlsx', mode="wb")

hiato = read_excel('hiato.xlsx', sheet = 3, skip=1) %>%
mutate(trimestre = as.yearqtr(`...1`)) %>%
rename(date = `...1`, PIB = `...2`)

Uma vez lidos os dados, podemos gerar primeiro um gráfico com o PIB efetivo (em número índice) e a sua tendência, que representa o PIB potencial.

Como vimos, o hiato do produto será então a diferença entre o PIB efetivo e o PIB potencial. A seguir, um gráfico da variável.

O acompanhamento do hiato do produto faz parte da rotina dos economistas de mercado, uma vez que ele representa o grau de ociosidade da economia, tendo assim impacto em diversas outras variáveis econômicas.

________________

(*) Cadastre-se aqui na nossa Lista VIP para receber um super desconto na abertura das Turmas 2021.

Policiais mortos vs. mortes por policiais no Rio de Janeiro

By | Clube do Código

No mês de dezembro, iremos lançar uma nova versão do Clube do Código, que se chamará Clube AM. O projeto de compartilhamento de códigos da Análise Macro vai avançar para uma versão 2.0, que incluirá a existência de um grupo fechado no Whatsapp, de modo a reunir os membros do Novo Clube, compartilhando com eles todos os códigos dos nossos posts feitos aqui no Blog, exercícios de análise de dados de maior fôlego, bem como tirar dúvidas sobre todos os nossos projetos, exercícios e nossos Cursos e Formações.

Para ilustrar o que vamos compartilhar lá nesse novo ambiente, estou publicando nesse espaço alguns dos nossos exercícios de análise de dados. Esses exercícios fazem parte do repositório atual do Clube do Código, que deixará de existir. Além de todos os exercícios existentes no Clube do Código, vamos adicionar novos exercícios e códigos toda semana, mantendo os membros atualizados sobre o que há de mais avançado em análise de dados, econometria, machine learning, forecasting e R.

Hoje, dando sequência a análise da base de dados do Instituto de Segurança Pública (ISP) que comecei no post anterior, fiquei curioso para ver a relação entre duas séries: a de homicídios por intervenção policial e a de policiais militares mortos em serviço.

Como de praxe, o script começa com os pacotes que vamos utilizar.


library(readr)
library(forecast)
library(ggplot2)
library(scales)
library(vars)
library(aod)

A partir disso, nós importamos e tratamos os dados disponíveis no site do ISP.


data = read_csv2('DOMensalEstadoDesde1991.csv')

data = ts(data, start=c(1991,01), freq=12)
hip = window(data[,6], start=c(1998,01))
pmms = window(data[,50], start=c(2003,01))

subdata = ts.intersect(hip, pmms)

Um gráfico das séries que vamos utilizar é colocado abaixo.

Há uma leve correlação positiva entre as séries. De forma a investigar uma relação de causalidade no sentido de Granger, apliquei o procedimento proposto por Toda e Yamamoto (1995) às mesmas. Os resultados encontrados sugerem que existe uma causalidade no sentido de policiais militares mortos em serviços para homicídios por intervenção policial, considerando o nível de 5% de significância. Em outras palavras, policiais mortos em serviços tem precedência temporal sobre o número de homicídios por intervenção policial.

______________

Toda H.Y.; Yamamoto T. (1995). Statistical inference in vector autoregressions with possibly integrated processes. Journal of Econometrics, 66, 225–250. 

(*) Cadastre-se aqui na nossa Lista VIP para receber um super desconto na abertura das Turmas 2021.

Cadastre-se em nossa lista VIP para descontos e conteúdos exclusivos!

Quero me inscrever
{"cart_token":"","hash":"","cart_data":""}