Category

Clube do Código

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.

Violência no Rio: a economia importa?

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, graças à excelente base de dados do Instituto de Segurança Pública (ISP), vamos falar da relação entre violência e desemprego. Quando se trata de violência carioca, uma pergunta imediata é quais seriam os fatores relevantes para explicar os diversos aspectos da criminalidade no Rio de Janeiro. Pensando nisso, resolvemos fazer um exercício empírico no âmbito do Clube do Código.

Becker (1968) define a decisão de cometer um crime como um processo racional, onde o potencial criminoso calcularia custos e benefícios para então decidir se vai em frente ou não. A partir desse trabalho seminal, uma extensa literatura teórica e empírica tem sido desenvolvida, relacionando diversos fatores econômicos que impactam nos custos e benefícios da decisão de cometer um crime.

O script, então, começa com alguns pacotes.


library(readr)
library(lubridate)
library(magrittr)
library(dplyr)
library(ggplot2)
library(scales)
library(sidrar)
library(corrplot)
library(forecast)
library(dplyr)
library(dynlm)
library(lmtest)
library(CADFtest)
library(gridExtra)
library(stargazer)

Na sequência, nós importamos os dados que precisaremos. Vamos basicamente importar uma planilha disponível no ISP que contém diversas séries temporais envolvendo crimes no Rio de Janeiro. Além disso, vamos importar a taxa de desemprego, disponível no site do SIDRA/IBGE.


url = 'http://www.ispdados.rj.gov.br/Arquivos/DOMensalEstadoDesde1991.csv'
download.file(url, destfile='basededados.csv', mode='wb')
data = read_csv2('basededados.csv') %>%
mutate(date = make_datetime(ano, mes))

desemprego = ts(get_sidra(api='/t/6381/n1/all/v/4099/p/all/d/v4099%201')$Valor,
start=c(2012,03), freq=12)

Uma vez que pegamos os dados que precisamos, nós podemos fazer algum tratamento dos mesmos.


data_ts = ts(data[,-c(1,2,57)], start=c(1991,01), freq=12)
data_ts = ts.intersect(data_ts, desemprego)
colnames(data_ts) = c(colnames(data[,-c(1,2,57)]), 'desemprego')

Com os dados tratados, podemos fazer um gráfico de correlação entre a série de desemprego e as séries de total de roubos e homicídios dolosos.

Os gráficos acima relacionam o total de roubos e os homicídios dolosos no Rio de Janeiro à taxa de desemprego medida pela PNAD Contínua. O desemprego funciona como uma proxy para a situação econômica do país. Como é possível ver, há uma diferença importante na correlação entre os dois tipos de crimes. Enquanto os homicídios são apenas levemente correlacionados com o desemprego, há uma correlação mais forte entre esta e o total de roubos.

Com base nessas variáveis, nós podemos criar um modelo de regressão linear que relaciona as variáveis de crime à taxa de desemprego. A tabela abaixo traz, por seu turno, os resultados das regressões do total de roubos e dos homicídios dolosos contra a taxa de desemprego. De modo a prevenir regressões espúrias, no exercício completo disponível no repositório do Clube do Código, nós testamos as especificações usando o teste CADF, de onde conseguimos rejeitar a hipótese nula de ausência de cointegração. Os modelos, contudo, são bastante distintos em termos de ajuste. Enquanto o desemprego (e mais uma dummy) explicam parte importante da variação do total de roubos, ele explica muito pouco da variação dos homicídios dolosos. Esses resultados, a propósito, estão em linha com Levitt (1997), que mostrou que a taxa de desemprego afeta os crimes contra a propriedade, mas não os crimes violentos.

Dependent variable:
total_roubos hom_doloso
(1) (2)
desemprego 1,116.398*** 1.425
(125.847) (2.420)
dummy -8,374.023**
(3,193.210)
Constant 3,351.565** 368.084***
(1,294.057) (24.961)
Observations 102 102
R2 0.450 0.003
Adjusted R2 0.439 -0.007
Residual Std. Error 3,151.768 (df = 99) 61.098 (df = 100)
F Statistic 40.484*** (df = 2; 99) 0.347 (df = 1; 100)
Note: *p<0.1; **p<0.05; ***p<0.01

 

__________________

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

Expectativas do Focus subestimam a inflação

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, nós verificamos se as expectativas de inflação relatadas pelo boletim Focus sofrem de viés sistemático, contrariando assim a hipótese de expectativas racionais. Os resultados encontrados sugerem que as expectativas de inflação do boletim Focus subestimam a inflação efetivamente observada.

Para isso, nós basicamente estimamos a equação abaixo, com base em Kohlscheen (2012):

(1)   \begin{align*} \pi_{t} - E_{t-1}[\pi_{t}] = \alpha_0 + \eta_t \end{align*}

onde \pi_{t} é a inflação mensal em t e E_{t-1}[\pi_{t}] é a expectativa para a inflação em t. A estimação dessa equação visa verificar a ausência de viés sistemático nas projeções contidas no boletim Focus.

Abaixo, carregamos os pacotes necessários para o exercício.


library(rbcb)
library(tidyverse)
library(lubridate)
library(scales)
library(latex2exp)
library(scales)
library(lmtest)
library(sandwich)

Na sequência, nós usamos o pacote rbcb para coletar os dados de expectativas de inflação contidas no boletim Focus e os dados da inflação efetiva.


## Coletar as expectativas de inflação diárias e mensalizar os dados
expectativa = get_monthly_market_expectations('IPCA') %>%
mutate(reference_month = ymd(parse_date_time(reference_month,
orders = '%Y-%m')),
diff_months = round(time_length(reference_month - date,
unit='month'),2)) %>%
filter(base == 0 & diff_months > 0 & diff_months < 1) %>%
group_by(mes=floor_date(date, "month")) %>%
summarize(media=mean(mean))

expectativa$mes = expectativa$mes %m+% months(1)

## Coletar os dados de inflação mensal
inflacao = get_series(433, start_date = '2000-04-01') %>%
rename(mes = date, value=`433`)

## Juntar os dados
names = c('date', 'expectativa', 'inflacao')
data = inner_join(expectativa, inflacao, by='mes') %>%
`colnames<-`(names) %>%
mutate(erro = inflacao - expectativa)

Abaixo, um gráfico que contém o erro nas previsões contidas no boletim Focus em relação à inflação mensal efetiva.

Na sequência, nós verificamos se o erro de previsão contém viés, conforme a equação acima.

Dependent variable:
erro
Constant 0.067***
(0.020)
Observations 247
R2 0.000
Adjusted R2 0.000
Residual Std. Error 0.310 (df = 246)
Note: *p<0.1; **p<0.05; ***p<0.01

Isto é, as expectativas do boletim Focus subestimam a inflação mensal em 7 pontos-base, mostrando assim presença de viés nas mesmas. Os resultados encontrados, diga-se, estão em linha com Kohlscheen (2012).

_________________

Kohlscheen, E. 2012. “Uma Nota Sobre Erros de Previsão Da Inflação de Curto Prazo.” Revista Brasileira de Economia 66 (3): 289–97.

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

Volatilidade da taxa de câmbio e o índice VIX

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, vou mostrar um exercício que fizemos  que buscava relacionar o índice VIX com a volatilidade da taxa de câmbio. Como de praxe, o script começa com alguns pacotes que utilizamos no exercício.


library(BETS)
library(xts)
library(fGarch)
library(scales)
library(quantmod)
library(xts)
library(gridExtra)
library(tidyverse)
library(timetk)

Na sequência, pegamos os dados do câmbio diretamente do site do Banco Central e estimamos a volatilidade da mesma a partir de um modelo GARCH.


cambio = BETSget(1, from='2014-01-01')
cambiod = xts(cambio$value, order.by = cambio$date)
dcambio = diff(log(cambiod))
dcambio = dcambio[complete.cases(dcambio)]
m1=garchFit(~1+garch(1,1),data=dcambio,trace=F)
vol = fBasics::volatility(m1)
vol = xts(vol, order.by = cambio$date[-1])
volatilidade = tk_tbl(vol,
preserve_index = TRUE, rename_index = 'date')

Na sequência, pegamos o índice VIX, utilizando para isso o pacote quantmod. Com as duas séries em mãos, nós podemos juntá-las em um único tibble.


getSymbols('VIXCLS', src='FRED')
vix = tibble(date=as.Date(time(VIXCLS)),
vix = VIXCLS)

data = inner_join(vix, volatilidade, by='date') %>%
drop_na()
colnames(data) = c('date', 'vix', 'volcambio')

De posse dos dados, podemos gerar um gráfico como abaixo.

As séries costumam apresentar alguma correlação positiva. Mas é possível observar na ponta um descolamento das mesmas. Enquanto o VIX está indo para baixo, a volatilidade da taxa de câmbio USD/BRL apresentou uma alta considerável nos últimos dias.

_________________

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

Medindo o efeito da incerteza sobre o nível de atividade

By | Clube do Código

No mês de dezembro, iremos lançar uma nova versão do Clube do Código. 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 uma comunidade no Telegram/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 e Cursos Aplicados de R.

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, que irá migrar para o novo projeto. Além de todos os exercícios existentes, 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, vou mostrar um exercício que fizemos no Clube que buscava capturar o efeito da incerteza sobre o nível de atividade. A motivação para o exercício é, claro, o aumento da incerteza econômica como fruto da pandemia que estamos vivendo. Os gráficos a seguir ilustram o comportamento do hiato do produto (diferença entre o produto potencial e o produto efetivo) e da incerteza econômica. A primeira é uma série produzida pelo IPEA e a segunda é um índice fornecido pela FGV.

O aumento da incerteza tem efeitos diversos sobre o organismo econômico, como a redução do consumo pelas famílias e do investimento pelas empresas. Podemos, por suposto, capturar o seu efeito sobre o nível de atividade, de forma geral, estimando uma Curva IS que adiciona esse componente de incerteza, como na equação abaixo:

(1)   \begin{align*} h_t = \beta_0 + \beta_{1} h_{t-1} + \beta_{2} (r_{t-1} - r_{t-1}^{n}) + \beta_{3} \Delta sup_t + \beta_{4} incerteza_t + u_t \end{align*}

Basicamente, a Curva IS estimada irá descrever a dinâmica do hiato do produto com base em **suas próprias defasagens**, da **taxa de juros real**, da **variação do superávit primário** e de um **índice de incerteza econômica**. A tabela abaixo resume a estimação dessa Curva considerando o método de mínimos quadrados como benchmark e os métodos TSLS e GMM como referências mais robustas para o exercício.

Efeito da Incerteza sobre o Hiato do Produto
Variável Dependente: Hiato do Produto
OLS TSLS GMM
(1) (2) (3)
Intercepto 6.17*** (1.37) 12.01*** (3.74) 17.35*** (2.81)
Hiato (-1) 0.70*** (0.06) 0.56*** (0.09) 0.47*** (0.08)
Juro Real -0.07* (0.04) -0.17*** (0.06) -0.25*** (0.04)
Variação do SPrimário -0.71* (0.36) -0.10 (0.97) 1.03 (0.85)
Incerteza -0.06*** (0.01) -0.11*** (0.03) -0.16*** (0.03)
J-Test 5.95
J-Test (p-valor) 0.43
Observations 70 67 67
R2 0.86 0.89
Adjusted R2 0.85 0.89
Residual Std. Error 0.84 (df = 65) 0.74 (df = 62)
F Statistic 99.99*** (df = 4; 65) 121.38*** (df = 4; 62)
Nota: *p<0.1; **p<0.05; ***p<0.01

 

Os resultados preliminares encontrados sugerem que existe um efeito negativo da incerteza sobre o hiato do produto. Isto é, mais incerteza afeta as decisões de consumo e investimento, que fazem com que o PIB da economia seja menor, reduzindo assim o hiato do produto.

Com base nesses resultados, é possível verificar que a "estabilização" da incerteza em patamares elevados tem efeitos negativos sobre a recuperação do nível de atividade.

______________________

(*) 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":""}