Category

Dicas de R

Brasil: a cigarra que quer viver como formiga

By | Dicas de R

Dia desses, publiquei aqui no Blog um post sobre o projeto maddison, que busca publicar dados de pib per capita de todos os países do mundo para tempos remotos. Um baita trabalho de história econômica, diga-se de passagem. Com base no respectivo pacote maddison no R, a propósito, é possível fazer comparações de pib per capita entre diversos países...

Por exemplo, muitas pessoas gostam de falar do sistema de proteção social da Suécia e, indubitavelmente, querem ter esse sistema aqui no Brasil. O problema desse tipo de coisa é que ela não leva em conta, justamente, o tal do pib capita. Abaixo, fazendo uso do pacote maddison, nós pegamos o dado para os dois países.


library(maddison)
df = subset(maddison, year >= '1870-01-01' &
iso2c %in% c('BR', 'SE'))

E a seguir, colocamos um gráfico.


ggplot(df, aes(x=year, y=gdp_pc, colour=country))+
geom_line(size=.8)+
scale_colour_manual('',values=c('Brazil'='darkblue',
'Sweden'='orange'))+
scale_x_date(breaks='10 years',
date_labels = '%Y')+
labs(x=NULL, y='PIB per capita (GK dólar int, 1990)',
title='PIB per capita: Brasil vs. Suécia',
subtitle='Fonte: Maddison Project Dataset')+
theme(panel.background = element_rect(fill='#acc8d4',
colour='#acc8d4'),
plot.background = element_rect(fill='#8abbd0'),
axis.line = element_line(colour='black',
linetype = 'dashed'),
axis.line.x.bottom = element_line(colour='black'),
panel.grid.major = element_blank(),
panel.grid.minor = element_blank(),
legend.position = c(.4,.5),
legend.background = element_rect((fill='#acc8d4')),
legend.key = element_rect(fill='#acc8d4',
colour='#acc8d4'),
plot.margin=margin(5,5,15,5))+
annotation_custom(g,
xmin=as.Date('1870-01-01'),
xmax=as.Date('1893-01-01'),
ymin=15000, ymax=25000)

No início da série, 1870, a Suécia tinha um pib per capita cerca de 1.9 maior do que o Brasil. No último dado da série, 2010, o pib per capita da Suécia é cerca de 3.7 maior do que o nosso. Em outras palavras, houve um processo de divergência entre os dois países.

Coletando dados do Banco Mundial com o R

By | Dicas de R

Ontem, divulguei o pacote OECD de modo que é possível coletar dados da OCDE diretamente para o RStudio. Hoje, a dica é o pacote WDI, que faz coleta de dados do Banco Mundial. Para ilustrar, pego os dados da taxa de poupança e taxa de juros para 2017.


library(WDI)

interest = WDI(country='all',
indicator = 'FR.INR.RINR',
start=2017, end=2017)

saving = WDI(country = 'all',
indicator = 'NY.GNS.ICTR.ZS',
start=2017, end=2017)

Uma vez coletado os dados e depois de algum tratamento, podemos gerar o gráfico abaixo...

Impressiona que em diversas comparações que tenho mostrado por aqui, o Brasil está sempre como um outlier, não é mesmo?

Quer saber mais sobre como usar o R para analisar dados? Conheça o nosso curso de Introdução ao R para Análise de Dados que abriu inscrições ontem, 06/05. O 1º lote está com 30% de desconto, mas deve acabar logo...

Interessados no código do gráfico, basta rolar a barra à direita e colocar o e-mail na nossa newsletter semanal. Toda segunda, envio o código de um dos posts mais comentados e curtidos da semana para a lista!

Coletando dados da OCDE com o R

By | Dicas de R

Como tenho dito há muito tempo nesse espaço, uma das grandes vantagens de se utilizar o R no dia a dia é poder centralizar o processo de análise de dados em um único ambiente. Desde a coleta até a comunicação dos resultados, via uma apresentação ou relatório. Para ilustrar, vou dar um exemplo real aqui. Recentemente, tive de produzir uma palestra sobre educação e uma das necessidades que tinha era comparar o gasto com educação básica e superior do Brasil com outros países. Para isso, recorri à base de dados da OCDE.

Sem o R, eu teria que acessar o site da OCDE, fazer uma pesquisa por lá até encontrar os dados que eu queria. Depois exportar para o Excel e por fim construir o gráfico que ilustraria minha apresentação no Power Point, por exemplo.

Tedioso, não é mesmo? Bom, com o R a coisa fica mais simples. Eu abri um .Rmd no RStudio e comecei a produzir a minha apresentação. No slide onde iria plotar o gráfico que eu queria, eu recorri ao pacote OECD, onde pude então coletar os dados que queria:


library(OECD)
df = get_dataset(dataset="EAG_FIN_RATIO_CATEGORY",
filter='AUS+AUT+BEL+CAN+CHL+CZE+DNK+EST+FIN+FRA+DEU+GRC+HUN+ISL+IRL+ISR+ITA+JPN+KOR+LVA+LTU+LUX+MEX+NLD+NZL+NOR+POL+PRT+SVK+SVN+ESP+SWE+CHE+TUR+GBR+USA+NMEC+ARG+BRA+COL+CRI+IND+IDN+RUS+ZAF.L1+L2T3+L5T8.FIN_PERSTUD.T.T.INST_T+INST_PUB+INST_PRIV',
start_time = '2015',
end_time = '2015')

O data frame df contém então os dados de gastos por aluno nos três níveis principais de ensino abrindo por instituições públicas, privadas e ambas. Assim, com um pouco de tratamento dos dados, cheguei ao gráfico abaixo.

Depois, foi só compilar o .Rmd e produzir a apresentação. Sem ter que abrir qualquer outro programa...

Todo esse processo, eu ensino no nosso novo Curso de Introdução ao R para Análise de Dados que abriu inscrições hoje, 06/05. O 1º lote está com 30% de desconto, mas deve acabar logo...

Interessados no código do gráfico, basta rolar a barra à direita e colocar o e-mail na nossa newsletter semanal. Toda segunda, envio o código de um dos posts mais comentados e curtidos da semana para a lista!

Dados históricos de pib per capita com o pacote maddison

By | Dicas de R

Em uma noite de insônia, navegando pelo meu feed no facebook, acabei vendo um post do professor Carlos Eduardo Gonçalves com um gráfico de renda per capita fazendo referência ao projeto Maddison; que tem o ousado objetivo de estimar essa variável para todos os países do mundo desde os anos mais remotos. Acabei fazendo o que todo R Lover faria: dei um google para ver se tinha um pacote para o projeto. E, claro, tinha...

Acabei, então, dando uma vasculhada no dataset e escrevi algumas linhas de código, após comer um sanduíche... 🙂


library(maddison)
library(ggplot2)
library(scales)
library(png)
library(grid)

script começa carregando - depois de ter instalado o mesmo, obviamente - o pacote maddison. Depois carreguei o pacote ggplot2 e alguns pacotes acessórios a ele, para produzir um gráfico mais bonitinho... Antes, claro, como o dataset é imenso - tem 45.318 observações para 9 variáveis - eu fiz um subset do que eu estava interessado para poder montar um gráfico...


df = subset(maddison, year>='1870-01-01' &
iso2c %in% c('BR', 'US', 'CL', 'JP', 'KR'))

Com o código acima, eu peguei os dados do pib per capita para Brasil, Estados Unidos, Chile, Japão e Coréia do Sul desde 1870, quando os primeiros dados para o Brasil estavam disponíveis. Com esses dados, construí o gráfico abaixo.

Algumas coisas me chamaram atenção nesse gráfico. Observe que tínhamos em 1870 a mesma renda per capita do Japão, que nos deixou para trás. Em 1980, tínhamos a mesma renda da Coreia do Sul, que também nos deixou para trás. Nesses 30 anos, diga-se, o Chile nos deu um banho de crescimento. E os EUA mantém uma linha praticamente linear de crescimento.

Fico pensando até quando o Brasil vai ficar para trás... Mas, isso já é um outro tema...

Caso queira receber o código do gráfico acima, rola a barrinha à direita e coloca seu e-mail na nossa newsletter! Na próxima segunda-feira, vou enviar algumas coisas bem legais para a lista!

Construindo belos gráficos com o pacote ggplot2

By | Dicas de R

Nos últimos anos, o R se tornou bastante popular no Brasil. Com uma sintaxe simples, download fácil e gratuito, uma comunidade pujante e crescente, uma IDE bastante poderosa e inúmeros pacotes disponíveis para lidar com análise de dados, o R tem conquistado cada vez mais adeptos no país.

Uma das coisas que o R faz bem, diga-se, é auxiliar no trabalho de visualização de dados. Algo que exploraremos bastante no nosso novíssimo curso de Introdução ao R para Análise de Dados. Com o pacote ggplot2, um dos mais poderosos da linguagem para isso, é possível construir belos gráficos. Para ilustrar, vamos considerar aqui um tema que está em bastante evidência no Brasil: a reforma do sistema previdenciário.

Para introduzir a questão, podemos nos perguntar se o Brasil gasta muito com previdência em relação à sua população idosa. Para isso, precisamos comparar o Brasil com outros países, não é mesmo?

A ideia aqui, então, é construir um gráfico de correlação entre a variável gasto com previdência e a variável população idosa para países selecionados. 

Para iniciar a produção do nosso gráfico, precisamos de dados. Para esse exemplo, eu vou utilizar os dados compilados pela revista The Economist em diversas fontes, como OCDE, Banco Mundial e a nossa Previdência Social. Você pode fazer o download dos dados aqui. De posse desses dados, podemos importá-los para o R com o código abaixo.


data = read.csv2('Economist_pensions.csv', header=TRUE, sep=',', dec='.')

Se você observar os dados, verá que o nome das colunas não é lá muito intuitivo, bem como existem três linhas no final do arquivo que não nos interessam. Podemos tratar esses problemas com o código abaixo.


data = data[-c(36:38),]
colnames(data) = c('country', 'population', 'pension')

Maravilha. Agora, o nosso arquivo tem três colunas, sendo as duas últimas relacionadas à primeira, que contém os nossos países selecionados. Podemos então começar a produzir o nosso gráfico com o ggplot2 colocando a variável population no eixo x e a variável pension no eixo y. Como estamos interessados em um gráfico de correlação, então o geom que utilizaremos será o geom_point. O código abaixo implementa.


library(ggplot2)
ggplot(data, aes(x=population, y=pension))+
geom_point()

E o resultado...

Conseguimos construir o nosso gráfico de correlação. Mas ele não está lá muito agradável aos olhos, não é mesmo? A primeira pergunta que o leitor deverá se fazer é que dados são essesesses pontos representam o quê, etc. Em outras palavras, o gráfico não traz muita informação para o leitor. De forma a melhorar o nosso gráfico, podemos adicionar o nome dos países nos pontos com o outro geom, o geom_text. O código abaixo implementa.


ggplot(data, aes(x=population, y=pension))+
geom_point()+
geom_text(aes(label=country))

E o resultado...

Bom, agora aparecem os nomes dos países. Então, o leitor saberá que o pontos do gráfico se referem às variáveis pension population para países selecionados. Mas, novamente, o gráfico não é bom porque os nomes ficam uns colados nos outros. Podemos melhorar isso, mudando a função geom_text pela função geom_text_repel do pacote ggrepel, uma espécie de extensão do ggplot2. O código abaixo implementa.


library(ggrepel)
ggplot(data, aes(x=population, y=pension))+
geom_point()+
geom_text_repel(aes(label=country))

E o resultado...

Bem melhor, não é mesmo? Bom, nós chegamos agora a um gráfico razoável. Ele traz os pontos associados às duas variáveis pension population. Para terminar o nosso trabalho, nós podemos polir o nosso gráfico, tornando-o mais informativo para o leitor final. Fazemos isso, adicionando um tema mais interessante, como o tema da própria revista The Economist. Além disso, como estamos interessados em comparar o Brasil com outros países, podemos destacá-lo no gráfico. Também podemos adicionar uma reta de regressão no gráfico, uma vez que parece existir uma correlação positiva entre as nossas variáveis population pension. O código abaixo implementa essas modificações.


library(ggthemes)
ggplot(data, aes(x=population, y=pension))+
geom_point(size=6, colour=ifelse(data$pension>=11.8, '#014d64',
'#76c0c1'),
alpha=ifelse(data$pension>=11.8&data$population<8, 1,.6))+
geom_text_repel(aes(label=country),
colour='black',
alpha=c(.4,1,rep(.4,5)),
box.padding = .2,
point.padding = .3,
data=subset(data, pension>=11.8))+
theme_economist()+
xlab('População acima de 65 anos (% do Total)')+
ylab('Gastos com Previdência Social (% PIB)')+
labs(title='Brasil: uma aberração no gasto previdenciário',
caption='Fonte: OCDE, Banco Mundial e Previdência Social')+
theme(plot.title = element_text(size=15))+
geom_smooth(method='lm', colour='black', linetype='dashed', se=FALSE)

E o resultado...

Bem melhor, não é mesmo? Observe que destacamos o Brasil da nossa amostra. Pelo nosso gráfico, podemos ver que o Brasil apesar de ter uma população idosa ainda baixa, se comparada com os demais países, gasta bastante com previdência. Isso torna o país um outlier, na linguagem dos estatísticos. Isto é, um país afastado dos demais países. Países que gastam tanto ou mais do que o Brasil - os pontos mais escuros do gráfico - têm populações idosas bem maiores. O Japão, por seu turno, tem um gasto similar ao Brasil para uma população idosa três vezes maior!

Gostou? Então dê uma olhada no nosso novíssimo Curso de Introdução ao R para Análise de Dados, onde ensinaremos além da visualização de dados com o pacote ggplot2, também a parte de coleta, tratamento, modelagem e comunicação de resultados. As inscrições para o curso começam no dia 6 de maio, com um 1º lote com 30% de desconto!

Cadastre-se na newsletter
e receba nossas novidades em primeira mão!