Tag

paulo guedes Archives - Análise Macro

Teto de Gastos: análise de sentimentos com dados do Twitter

By | Data Science

Não é qualquer dia, apesar da alta frequência do caso brasileiro, que vivenciamos uma mudança de regime fiscal da economia. A falta de novos erros e essa insistência nos velhos já traz consequências que começam a ser absorvidas pelos agentes. A repercussão do furo do teto de gastos se traduz em um claro e notório sentimento de desaprovação. Rodadas de revisão de projeções naturalmente já tomam corpo no mercado. Dessa forma, neste texto exercitamos uma forma de quantificar a repercussão do evento através de uma simples análise de sentimentos, usando dados do Twitter.

Sobre a técnica de análise de sentimentos e text mining, aqui no blog já exploramos, por exemplo, uma aplicação com as atas do COPOM e outra com detecção de plágio (códigos disponíveis em R). Para o exercício de hoje utilizaremos um framework semelhante, mas com dados diferentes.

Vamos ao código!

Pacotes

Para reproduzir os códigos de R deste exercício, certifique-se de que tenha os seguintes pacotes instalados/carregados:


library(magrittr) # CRAN v2.0.1
library(rtweet) # CRAN v0.7.0
library(lexiconPT) # CRAN v0.1.0
library(dplyr) # CRAN v1.0.7
library(tidytext) # CRAN v0.2.6
library(purrr) # CRAN v0.3.4
library(tidyr) # CRAN v1.1.3
library(ggplot2) # CRAN v3.3.5
library(ggtext) # CRAN v0.1.1
library(scales) # CRAN v1.1.1

Dados

Conforme mencionado, os dados utilizados são provenientes do Twitter, através de sua API. O objetivo é extrair tweets da rede social associados ao termo "teto de gastos", e então usar essas informações textuais no escopo da análise de sentimentos através de um léxico da língua portuguesa.

O acesso aos dados do Twitter exige que o usuário seja cadastrado e autenticado para interagir com a API. A interface em R para obter os dados é feita através do pacote rtweet, que descreve em sua documentação as opções e formas de realizar essa autenticação.

Já o léxico da língua portuguesa são provenientes de datasets do pacote {lexiconPT}.

Com essas informações em mãos, você estará apto a reproduzir os códigos do exercício. Caso tenha dificuldades, disponibilizamos neste link em formato RDS o dataset de tweets utilizado abaixo.

O código abaixo realiza a coleta dos dados, observando o que foi mencionado acima:

# Importante: coleta de dados do Twitter exige autenticação de uso da API
# Veja como em: https://docs.ropensci.org/rtweet/#usage
# Coleta dados de tweets dos últimos 6-9 dias
df_tweets <- rtweet::search_tweets(
q = '"teto de gastos"', # pesquisar termo exato
n = 20000, # número de tweets desejados
include_rts = FALSE, # não incluir retweets
retryonratelimit = TRUE # para retornar o nº desejado de tweets
)
dplyr::glimpse(df_tweets)

# Léxicos da língua portuguesa para análise de sentimentos
oplex <- lexiconPT::oplexicon_v3.0
sentilex <- lexiconPT::sentiLex_lem_PT02
dplyr::glimpse(oplex)
dplyr::glimpse(sentilex)

Observe que o dataset dos tweets traz diversas informações, contendo um identificador único de cada tweet (status_id), data e horário (created_at), mensagem de texto (text), dentre outras. E as opções de léxicos do pacote trazem uma coluna com o termo/palavra e outras informações, sendo a polaridade a principal delas pois indica se o termo está associado a um sentimento "negativo" ou "positivo", e é o que utilizaremos para fazer a análise de sentimentos.

Com esses conjuntos de informação já temos tudo que precisamos para iniciar uma simples análise de sentimentos.

Tokenização

O primeiro passo a ser feito é desagregar a informação das mensagens de texto de cada tweet de modo a separar essas mensagens em várias palavras/tokens. Esse processo é conhecido como "tokenização" e sua implementação é bastante simples, conforme abaixo:

# Separa coluna "text", que são os tweets, em n tokens/palavras
df_token <- df_tweets %>%
tidytext::unnest_tokens(output = "term", input = "text")
# Resultado é a coluna "term" com um token/palavra por linha do data frame
dplyr::glimpse(df_token)

Observe que o número de linhas aumentou consideravelmente, dada a separação dos tweets em n tokens.

Análise de sentimentos

Com esse volume de informações sobre a amostra de tweets coletada, podemos usar a classificação da polaridade (sentimento) de um dos léxicos acima para verificar por tweet quais palavras expressam sentimos mais positivos ou mais negativos:

# 1) Juntar tokens com léxicos e obter polaridade por tweet
# Juntar dados
df_sent <- purrr::reduce(
.x = list(
df_token,
oplex,
dplyr::select(sentilex, term, lex_polarity = polarity)
),
.f = dplyr::inner_join,
by = "term"
) %>%
# Agrupar por identificador único de cada tweet
dplyr::group_by(status_id) %>%
# Obter sentimento total de cada tweet de acordo com polaridade
# para saber quão negativo/positivo é um tweet
dplyr::summarise(
tweet_oplex = sum(polarity),
tweet_sentilex = sum(lex_polarity)
) %>%
dplyr::ungroup()
dplyr::glimpse(df_sent)

O resultado é um novo dataset com a identificação de cada tweet e o correspondente sentimento (soma da polaridade) obtido através dos tokens extraídos acima. Perceba que perdemos observações pois algumas palavras não estão presentes nos léxicos utilizados.

O próximo passo é um tratamento adicional dos dados de modo a obter o sentimento diário desse conjunto amostral de tweets:

# 2) Usar polaridade por tweet para obter sentimento diário
# Juntar dados de tweets e polaridades
df_sent_by_date <- dplyr::inner_join(df_tweets, df_sent, by = "status_id") %>%
# Filtrar somente polaridades positivas/negativas
dplyr::filter(tweet_oplex != 0) %>%
# Obter quantidade de tweets com sentimento "negativo/positivo" por dia
dplyr::count(
sentiment = dplyr::if_else(tweet_oplex < 0, "negativo", "positivo"),
date = as.Date(created_at)
) %>%
# Converter para formato wide
tidyr::pivot_wider(
id_cols = `date`,
names_from = `sentiment`,
values_from = `n`
) %>%
# Obter sentimento diário
dplyr::mutate(sentimento = positivo - negativo)
dplyr::glimpse(df_sent_by_date)

O resultado é um dataset que contabiliza por dia o sentimento expresso nos tweets detectado através da polaridade.

Visualização de resultados

Por fim podemos gerar um gráfico bacana para observar a evolução do sentimento ao longo do tempo. É bastante notório o sentimento negativo após as declarações do Ministro da Economia, Paulo Guedes, em 20 de outubro de 2021:

Interessante, não? A técnica de análise de sentimentos é bastante promissora, e este simples exercício já demonstra sua facilidade de aplicação.

Um ponto importante que foi ignorado é a possibilidade de haver, no conjunto amostral de tweets coletados através API, uma quantidade significativa de contas "bot" do Twitter. Quando o assunto é política, governo, etc. isso é particularmente expressivo e problemático (seja no sentido de apoio ou oposição ao governo), de modo que pode distorcer a análise acima. Pretendo abordar esse assunto em um post futuro!

Referências

Recomenda-se consultar a documentação dos pacotes utilizados para entendimento aprofundado sobre as funcionalidades.

- Exemplo de uso do lexiconPT com dados do Facebook: https://sillasgonzaga.github.io/2017-09-23-sensacionalista-pt01/

 

A mantegada de Guedes e o Banco Central

By | Comentário de Conjuntura

O título é meio cômico, eu sei. Mas o Brasil não é um país sério, então, permita-se, leitor. Escrevo essas linhas, propositalmente, antes da decisão de juros do Banco Central. O call - é mais chique falar call do que consenso ou média - do mercado mudou de aumento de 100 para 150 bps após o desastre da semana passada. Há, porém, gente que acredite em 200 bps ou mais. O mercado, às vezes, é como uma criança mimada testando o limite dos pais.

O texto é para falar sobre isso, mais especificamente sobre a sinuca de bico que o ministro colocou o Banco Central.

O que, convenhamos, é meio que um clássico na conjuntura brasileira.

O Banco Central é como a última companhia em uma guerra, que morre heroicamente tentando manter a posição. Ou, em tempos de pandemia, o remédio que entra no organismo já tomado por um vírus. E o vírus nesse caso, bom deixa para lá...

Não, por óbvio, que o Banco Central seja sempre inocente. Em tempos de ministro da fazenda (ou da economia) ruim, sempre é possível ocupar a autoridade monetária com presidentes ruins. Tombini que o diga.

Nos tempos atuais, entretanto, é difícil dizer que o Banco Central tenha culpa pelo estrago.

A inflação de dois dígitos está associada aos inúmeros choques que assolam a economia mundial, de forma geral, e o Brasil, em particular. E sobre isso, cabe ao Banco Central meio que organizar a bagunça. Dizer para o mercado que vai ficar tudo bem. Daqui a pouco, passa. Não muito mais do que isso.

E nesse momento, o mercado espera isso da autoridade monetária. 150 ou 200 bps, o mais importante é o comunicado pós reunião do Copom.

A celeuma é que o Paulo Guedes mantegou. Para os não iniciados, mantegar é verbo intransitivo. Mantegar é fazer bobagem, ponto.

Guedes mantegou ao furar o teto de gastos e disse com todas as letras que o problema da inflação é do Banco Central.

Qual o problema, leitor?

O problema é que não é bem assim.

Como eu disse, a inflação atual é fruto de muitos choques. Restrição nas cadeias produtivas, câmbio depreciado, commodities, crise hídrica, combustíveis...

E agora, adicione-se a isso a perda da âncora fiscal.

Fiscal deteriorado gera uma desancoragem das expectativas muito grande, que afeta diretamente a inflação. Ainda que o efeito líquido do tal auxílio Brasil não seja muito para afetar a atividade e gerar inflação por aí.

Como estimamos no Clube AM, o teto de gastos, em conjunto com uma série de medidas adotas no interregno Michel Temer, teve como um dos efeitos a redução do juro de equilíbrio da economia.

Assim, sem teto de gastos, o juro de equilíbrio sobe, o que vai exigir do Banco Central acomodar isso via juros nominais, a Selic.

E é tudo o que o Banco Central pode fazer nesse momento.

Além, claro, de ser meio que um terapeuta do mercado.

Calma, vai ficar tudo bem, daqui a pouco passa.

Ou seja, a mantegada do Guedes implica em um país pior para todos, com mais inflação e, portanto, mais juros.

Daqui a pouco passa e vem outro governo pior, namastê!

________________________
(*) Para entender mais sobre política fiscal e monetária, confira nossos Cursos de Macroeconomia Aplicada.

Vamos desestatizar o mercado de crédito?

By | Crédito

O novo ministro da economia, Paulo Guedes, ao tomar posse fez questão de mencionar a atual estrutura do mercado de crédito brasileiro. Guedes falou da necessidade de desestatizar o mercado. E será que faz sentido o que o ministro disse? Para mostrar, assim como fazemos em nossos Cursos Aplicados de R, podemos usar o R para ver o estoque de crédito na mão de instituições estatais e privadas. O código abaixo pega as séries de crédito para essas diferentes classes de instituições com o pacote rbcb.

library(rbcb)
privado <- get_series(2043, start_date = '2000-01-01')
estatal <- get_series(2007, start_date = '2000-01-01')

Uma vez que tenhamos esses dados, criamos um data frame dividindo as mesmas pelo total de estoque de crédito.

dates <- seq(as.Date('2000-01-01'), as.Date('2018-11-01'), by='1 month')

data <- data.frame(privado=privado$`2043`/(estatal$`2007`+privado$`2043`)*100,
                   estatal=estatal$`2007`/(estatal$`2007`+privado$`2043`)*100)

Utilizamos, então, o pacote xts para ordenar o data frame e depois a função melt para empilhar os dados.

library(xts)
library(reshape2)
data <- xts(data, order.by=dates)
data <- data.frame(time = index(data), melt(as.data.frame(data)))

Por fim, usamos o código abaixo para criar um gráfico ggplot.

library(scales)
library(ggplot2)
ggplot(data, aes(x = time, y = value)) + 
  geom_area(aes(colour = variable, fill = variable))+
  xlab('')+ylab('Participação Percentual')+
  labs(title='Crédito Estatal vs. Crédito Privado',
       caption='Fonte: analisemacro.com.br com dados do Banco Central.')+
  theme(legend.position = 'bottom',
        legend.title=element_blank())+
  scale_x_date(breaks = date_breaks("2 years"),
               labels = date_format("%Y"))

E o resultado é esse daí...

O gráfico parece dar razão a fala do novo ministro da economia. Mais da metade do estoque de operações de crédito no país está nas mãos de instituições estatais, sujeitas a incentivos distintos daqueles observados no mercado. Desestatizar o mercado de crédito parece ser, de fato, algo a se fazer, não é mesmo?

________________________________________________

Aprenda a coletar, tratar, analisar e apresentar dados reais em nossos Cursos Aplicados de R!

Mercado dá voto de confiança a novo governo

By | Comentário de Conjuntura

A julgar pelo comportamento diário da bolsa de valores de SP e pela taxa de câmbio R$/US$, o mercado parece está vivendo uma lua de mel com o novo governo. De forma unânime, o discurso de posse do novo ministro da economia, Paulo Guedes, foi bastante saudado por economistas e analistas de mercado. O tom do discurso foi firme em relação ao principal problema do país - os gastos previdênciários -, além de sinalizar medidas complementares corretas na melhoria do ambiente de negócios e na privatização de empresas estatais.

Para ver isso na prática, podemos usar o R - veja nossos Cursos Aplicados de R - para pegar o IBOVESPA a partir da base de dados yahoo finance com o pacote quantmod. Podemos também utilizar o pacote BETS para pegar a taxa de câmbio diária R$/US$. O código abaixo operacionaliza.


## Pacotes
library(quantmod)
library(ggplot2)
library(forecast)
library(BETS)
library(scales)
library(gridExtra)

## Ibovespa
env = new.env()
getSymbols("^BVSP",src="yahoo", 
env=env,
from=as.Date('2018-12-01'))
ibovespa = env$BVSP[,4]
ibovespa = ibovespa[complete.cases(ibovespa)]

g1 = autoplot(ibovespa)+
geom_line(size=.8, colour='red')+
xlab('')+ylab('Pontos')+
labs(title='Índice Bovespa')

## Câmbio 
cambio = BETS.get(1, from='2018-12-01')
cambiod = xts(cambio$value, order.by = cambio$date)

g2 = autoplot(cambiod)+
geom_line(size=.8, colour='darkblue')+
xlab('')+ylab('R$/US$')+
labs(title='Taxa de Câmbio R$/US$')+
scale_x_date(date_breaks = '7 days',
labels = date_format("%b %d"))

## Gráfico lado a lado
grid.arrange(g1, g2,
top = "Mercado reage positivamente a nova equipe econômica",
bottom = 'Fonte: analisemacro.com.br.',
layout_matrix = matrix(c(1,2), 
ncol=2, byrow=TRUE))

E o gráfico...

Os gráficos mostram IBOV pra cima e câmbio pra baixo, sinalizando que, controlado o cenário externo, há boas perspectivas domésticas se o novo governo conseguir entregar a agenda reformista que prometeu. A conferir!

_______________________________________

Aprenda a coletar, tratar, analisar e apresentar dados reais em nossos Cursos Aplicados de R. Temos turmas com inscrições abertas!

O que esperar de Paulo Guedes?

By | Comentário de Conjuntura

A economia brasileira está em compasso de espera. Passados os piores momentos da Grande Recessão iniciada em meados de 2014 e terminada no final de 2016, ainda há um longo caminho para recuperar o terreno perdido. O crescimento negativo de 2015 e 2016 foi substituído por um crescimento próximo a 1% em 2017, bastante tímido para fazer com que o estoque de desempregados se reduza com o ímpeto necessário.

Como é possível visualizar no gráfico acima, o crescimento da economia brasileira nas últimas duas décadas foi marcado por dois momentos bastante distintos. Antes da crise de 2008, houve uma aceleração da taxa média de crescimento, considerando o acumulado em quatro trimestres. Esse período é marcado pela convergência de ideias em torno de uma agenda de reformas microeconômicas, iniciada no final dos anos 80, e do tripé macroeconômico, que simbolizava a busca por superávits primários capazes de estabilizar (ou mesmo reduzir) a relação Dívida/PIB, câmbio flutuante e metas para inflação. Ideias simples, porém bastante poderosas no que tange à busca de uma política econômica guiada por regras e na primazia do mercado como indutor do crescimento econômico.

Ainda que possa haver discussão em torno do ponto de início da transição, há um forte conjunto de evidências de que a saída de Antonio Palocci do ministério da fazenda no início de 2006 modificou a economia política da política econômica. Palocci era, no final das contas, quem dava sustentação política para que a equipe econômica pudesse tocar aquela agenda de reformas e a consolidação do tripé. Sua saída daria início a uma transição lenta, gradual e segura para um novo marco teórico, patrocinado por economistas desenvolvimentistas ligados à UFRJ e à Unicamp.

As reformas microeconômicas dão lugar aos planos nacionais de desenvolvimento, cujo o maior representante seria o Programa de Aceleração do Crescimento (PAC). Já o tripé macroeconômico sofreria ao longo dos anos seguintes fortes impactos. Os superávits primários entre 3% e 4% do PIB dariam lugar a uma política fiscal anticíclica, de modo a combater os males da crise de 2008, as metas de inflação seriam relaxadas e graciosamente acomodadas no seu limite superior e sobre o câmbio diversos ataques seriam tentados, com o último consagrando a surrada ideia de uma taxa de câmbio de equilíbrio industrial.

Há, nesse contexto, uma espécie de volta aos cânones desenvolvimentistas da década de 70, que atingiriam seu ápice sob o nome de Nova Matriz Econômica no governo Dilma Rousseff. A queda brusca do crescimento desde o final de 2010, como ilustra o gráfico, mostra de forma transparente que essa transição foi um equívoco, trazendo inúmeros transtornos micro e macroeconômicos para a economia brasileira. Para além da economia, as revelações da própria operação Lava Jato dão conta das relações promíscuas que se estabeleceram entre legislativo, executivo e grandes empresários.

Como também pode ser visto no gráfico, o impeachment da ex-presidente por ingerência nas contas públicas e a consequente transição para o governo Michel Temer possibilitou uma retomada. Passamos de uma taxa de crescimento de -4.6% no segundo trimestre de 2016 para 1.4% dois anos depois. Contribuiu para isso a emergência de uma equipe econômica comprometida com os cânones da profissão, a convergência da inflação, a redução dos juros básicos, a flutuação do câmbio e, talvez o mais importante, a aprovação da PEC do Teto de Gastos, que reduziu momentaneamente o risco de dominância fiscal. Há de se destacar também a aprovação de reformas silenciosas, como a duplicata eletrônica e o cadastro positivo.

Tudo isso, porém, se mostrou insuficiente para uma retomada mais vigorosa do crescimento. O motivo é consenso entre os economistas: a não aprovação da reforma da previdência, a maior despesa do orçamento, impede que o governo volte a produzir superávits primários capazes de estabilizar a relação Dívida/PIB.

Sem a recuperação de superávits primários, a Dívida Bruta continuará subindo em relação ao PIB, o que produzirá em algum momento futuro uma discussão sobre a solvência do setor público. Os prêmios de risco se elevarão, o que tornará inevitável para o governo emitir moeda para financiar a dívida, causando com efeito um processo hiperinflacionário. Um cenário que, certamente, não é desejável por ninguém.

Tudo isso dito, o desafio que se impõe ao novo governo eleito e, em particular, ao novo ministro da economia é consolidar a transição iniciada pelo governo Michel Temer. O problema imediato é o ajuste fiscal, a transição de um déficit para um superávit primário capaz de estabilizar a relação Dívida/PIB. E esse só pode ser feito se alguma reforma da previdência for aprovada no Congresso Nacional.

Para além desse problema imediato de curto prazo, há muitas outras agendas envolvendo a melhoria do ambiente de negócios brasileiro. A privatização de empresas estatais ineficientes, a facilitação da abertura de empresas, a consolidação da reforma trabalhista, o aumento da celeridade de processos legais, a consolidação de segurança jurídica para investimentos privados em infraestrutura, etc. Em suma, caberá ao novo governo retomar a convergência perdida desde a saída de Antonio Palocci do governo Lula. Conseguirá?

Vai depender em grande medida de quantos isso não pode tem a carta em branco recebida por Paulo Guedes do novo presidente... Vamos aguardar as cenas dos próximos capítulos!

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

Assinar Gratuitamente