Escolar Documentos
Profissional Documentos
Cultura Documentos
Sumário
1 Introdução 2
2 Dados 2
3 Pacotes 2
4 Importação de dados 3
5 Análise exploratória 3
1
1 Introdução
Quantos artigos na área de economia são publicados por ano? Quais são os tópicos mais abordados?
E as linguagens e softwares mais utilizados? R vs. Python? Descubra as respostas destas perguntas
neste texto que faz uma análise exploratória de cerca de 9000 papers econômicos que disponibilizam
códigos/dados de 16 revistas/journals, no período de 2005 a 2021.
2 Dados
Os dados são provenientes do trabalho incrível realizado por Sebastian Kranz da Ulm University,
encontre os detalhes e mais informações neste link. Em resumo, foi criado um banco de dados de
informações sobre papers que disponibilizam códigos/dados. Essa informações incluem ano, título,
número de autores, abstract, URL, informações sobre arquivos disponíveis, etc., possibilitando uma
pequena análise exploratória de dados. Vale frisar que apesar de ser uma base de dados interessante,
os dados representam apenas uma amostra.
Os dados são proveniente de papers publicados nos journals da American Economic Association
(AEA), The Review of Economic Studies (REStud) e The Review of Economics and Statistics
(REST), além de uma parcela menor (conforme política disponibilidade de dados) proveniente de
QJE, JPE, JEEA, Econometrica e JAERE.
Além disso, para quem se interessar, é possível utilizar uma ferramenta online de pesquisa por
palavras chave, título, etc. para encontrar papers com código/dados disponíveis.
3 Pacotes
Para reproduzir os códigos de R do exercício, certifique-se de que tenha os seguintes pacotes insta-
lados/carregados:
library(magrittr) # CRAN v2.0.1
library(RSQLite) # CRAN v2.2.1
library(dbmisc) # github.com/skranz/dbmisc
library(dplyr) # CRAN v1.0.7
library(ggplot2) # CRAN v3.3.5
library(ggtext) # CRAN v0.1.1
library(stringr) # CRAN v1.4.0
library(scales) # CRAN v1.1.1
library(tm) # CRAN v0.7-8
library(wordcloud) # CRAN v2.6
2
4 Importação de dados
Para importar os dados para o R, siga os seguintes comandos (não execute caso não queira arquivos
temporários baixados para seu computador):
# Descompactar
unzip(
zipfile = paste0(temp_folder, "\\", basename(url_db)),
exdir = temp_folder
)
## [1] TRUE
# Conexão com o banco de dados no R
db <- RSQLite::dbConnect(
RSQLite::SQLite(),
list.files(getwd(), pattern = "sqlite")
) %>%
dbmisc::set.db.schemas(
schema.file = system.file(
"schema/articles.yaml",
package = "EconJournalData"
)
)
class(db)
## [1] "SQLiteConnection"
## attr(,"package")
## [1] "RSQLite"
# Ler tabela com informações sobre os papers
df_articles <- dbmisc::dbGet(db, "article") %>%
dplyr::as_tibble()
df_articles
## # A tibble: 9,051 x 22
## id year date journ title vol issue artnum article_url has_data
## <chr> <int> <int> <chr> <chr> <int> <int> <int> <chr> <int>
## 1 aer_108_11_1 2018 17836 aer Firm~ 108 11 1 https://ww~ 1
## 2 aer_108_11_2 2018 17836 aer Near~ 108 11 2 https://ww~ 1
## 3 aer_108_11_3 2018 17836 aer The ~ 108 11 3 https://ww~ 1
## 4 aer_108_11_4 2018 17836 aer The ~ 108 11 4 https://ww~ 1
## 5 aer_108_11_5 2018 17836 aer Stra~ 108 11 5 https://ww~ 1
## 6 aer_108_11_6 2018 17836 aer Meas~ 108 11 6 https://ww~ 1
## 7 aer_108_11_7 2018 17836 aer Mism~ 108 11 7 https://ww~ 1
## 8 aer_108_11_8 2018 17836 aer Temp~ 108 11 8 https://ww~ 1
## 9 aer_108_11_9 2018 17836 aer The ~ 108 11 9 https://ww~ 1
## 10 aer_108_11_10 2018 17836 aer BKK ~ 108 11 10 https://ww~ 1
## # ... with 9,041 more rows, and 12 more variables: data_url <chr>, size <dbl>,
## # unit <chr>, files_txt <chr>, downloaded_file <chr>, num_authors <int>,
## # file_info_stored <int>, file_info_summarized <dbl>, abstract <chr>,
## # readme_file <chr>, repo <chr>, repo_info <chr>
5 Análise exploratória
A primeira pergunta que queremos responder se trata da quantidade de papers na área da economia
que são publicados por ano, nesta amostra de dados. Geramos a visualização abaixo que mostra a
evolução anual do nº de papers por journal, assim como o total do ano. Caso tenha dúvidas sobre
as siglas, confira este link.
3
Seria a queda de publicações nos anos recentes um impacto da pandemia da COVID-19?
# Texto de legenda
am_caption <- "**Dados**: Sebastian Kranz/Ulm University | **Elaboração**: analisemacro.com.br"
4
EconPapers: Evolução do nº de publicações
Amostra de papers publicados com códigos/dados
ECTA
400 JAERE
JEEA
323
JEP
JOLE
JPE
200 196 202 208 208 PANDP
QJE
RESTAT
RESTUD
2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021
Dados: Sebastian Kranz/Ulm University | Elaboração: analisemacro.com.br
Também podemos obter a informação da evolução do número de coautores, em média, nos papers.
5
EconPapers: nº médio de coautores
Amostra de papers publicados com códigos/dados
2,60
2,40
2,20
2,00
1,80
2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021
Dados: Sebastian Kranz/Ulm University | Elaboração: analisemacro.com.br
Dentro dessa amostra de dados, que traz somente informações de papers que são publicados com
disponibilização de códigos/dados de replicação, podemos também obter a informação da quanti-
dade de papers que têm dados para download. Perceba que as barras em azul estão (felizmente)
predominando:
# Artigos com dados disponíveis
df_articles %>%
dplyr::group_by(year) %>%
dplyr::count(has_data) %>%
dplyr::ungroup() %>%
dplyr::mutate(
has_data = dplyr::if_else(has_data == 0L, "Indisponível", "Disponível")
) %>%
ggplot2::ggplot(
ggplot2::aes(
x = year,
y = n,
fill = has_data
)
) +
ggplot2::geom_col() +
ggplot2::scale_fill_manual(values = unname(colors)) +
ggplot2::scale_x_continuous(breaks = unique(df_articles$year)) +
ggplot2::labs(
title = "EconPapers: nº artigos por disponibilidade<br>de dados de replicação",
subtitle = "<br>Amostra de papers publicados com códigos/dados<br>",
y = "Quantidade",
x = NULL,
fill = "Dados",
caption = am_caption
)
6
EconPapers: nº artigos por disponibilidade
de dados de replicação
Amostra de papers publicados com códigos/dados
800
600
Quantidade
Dados
400 Disponível
Indisponível
200
2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021
Dados: Sebastian Kranz/Ulm University | Elaboração: analisemacro.com.br
Quais são os principais tópicos abordados nesses papers? Como só temos acesso nessa base de
dados ao abstract (o que costuma ser uma boa visão geral do paper), podemos montar um núvem
de palavras mais frequentes:
# Palavras mais frequentes nos Abstracts
abstract_txt <- df_articles$abstract[is.na(df_articles$abstract) == FALSE] %>%
tm::VectorSource() %>%
tm::Corpus()
wordcloud::wordcloud(
words = abstract_txt_clean,
scale = c(5, 0.5),
min.freq = 70,
colors = colors_aug,
random.order = FALSE,
use.r.layout = FALSE,
rot.per = 0.35
)
7
reserve contracts households observed present
paid
reduce child
program local
war
late womens
analysis
house bidders chinas
suggest
increase within
types
total
search
hold
finding
relative economy
affect women poor rise empirical act
half
period
strong
jobs set best average production
article drugs initial
part public workers
led
examine
peers
entry education aid increases leads
private third
fall
top male differential
must
capital
far
growth countries individuals
allow
financial students
lead
key
points
return
claims
associated
taken
political test
health
benefits plan
detailed
networks
across economic holds
new
still distribution important
second
wagessince
induce unit
network terms
result
market
statistical
free losses stock ones firm
skill iii
equilibrium
markets
versus
can
treated
three
rate productivity
sets
resultscosts form
income
home based
taxes
tests
different
small
using higher
indicate
effective
fact consistent
counties share
city little
obtain
percent
math
rule action
firmswill
decline world
choose field
find show
used
investment design value
idea
aggregate years
post
debt
risk
lower
impact
– need
loss
end
likely
face several full
use
modeleffect
uses levels
study
vertical
apply
natural large born
oil
theory
policy
whether ideas
well
job
internal line
bias illustrate
first
arises
data
effects
decisions robustchange
consumption
largest start
tfp
tradetime
turn
low
zero demand
social life
air
insurance information
models
rates
now discount
due
prices
school
others main
even cycles
standard power
estimate also
price jel
net
provide
paper
much
one
less
values
hence
correct
limit
great
crisis fully
evidence
error
efforts
thus drug
high
peer
fail
ante
supply care
returns play
panel
rich level
efficiency
optimal
times
student
among
current
states
causes
fuel
basic structural role
like
yet
cost
party
favor
output behavior agents stable
state
often
dynamic unitedtarget shocks
take credit
auction
choice research
changes
many
treatment
via
law
recent view
estimates welfare earnings major
loan
larger land
interest
girls flow
sector
slow
cycle
given
around per
performance outcomes
long
response future
rules
causal
takes
government unique
conditions positive incentives size number
learn human sellers correlatedfailure earlier sectors become reduces driven
Por fim, mas não menos importante, se você é do time que gosta do velho debate “R vs. Python”,
prepare-se para quebrar a cara: na área econômica o Stata e MATLAB (infelizmente) predominam,
sendo utilizados na maior parcela de papers públicados nesta amostra de dados.
A notícia boa é que parece haver uma tendência de queda do Stata, mesmo que mais 50% dos
papers atualmente ainda o utilizam.
Enquanto isso, R e Python estão em um lento crescimento, representando uma parcela muito
pequena de utilização nos papers. Suspeito que possam ser ultrapassados pela linguagem Julia nos
próximos anos.
# Ler tabela com informações sobre os arquivos dos papers
files_info <- dbmisc::dbGet(db,"files_summary") %>%
dplyr::as_tibble()
8
ggplot2::aes(
x = year,
y = share,
colour = file_type
)
) +
ggplot2::geom_line(size = 1.5) +
ggplot2::scale_colour_manual(values = unname(colors)) +
ggplot2::scale_x_continuous(breaks = unique(df_articles$year)) +
ggplot2::scale_y_continuous(breaks = scales::extended_breaks(n = 10)) +
ggplot2::labs(
title = "EconPapers: utilização de linguagens",
subtitle = "<br>Linguagens selecionadas, amostra de papers com código disponível, % do total no ano",
y = "%",
x = NULL,
caption = am_caption
) +
ggplot2::guides(
colour = ggplot2::guide_legend(title = NULL, nrow = 1)
) +
ggplot2::theme(legend.position = "top")
60
50
40
%
30
20
10
2005 2006 2007 2008 2009 2010 2011 2012 2013 2014 2015 2016 2017 2018 2019 2020 2021
Dados: Sebastian Kranz/Ulm University | Elaboração: analisemacro.com.br