Skip to content

Instantly share code, notes, and snippets.

@sergiospagnuolo
Last active March 2, 2020 20:01
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save sergiospagnuolo/c68c1fa1e2c23e97c9ef1e69f296952a to your computer and use it in GitHub Desktop.
Save sergiospagnuolo/c68c1fa1e2c23e97c9ef1e69f296952a to your computer and use it in GitHub Desktop.
Extrai e analisa dados sobre Bolsa Família de 2004 a 2019
library(tidyverse)
library(scales)
library(clipr)
library(ggthemes)
# total de famílias recipientes, por mes
benf_mes_pessoas <- total %>%
drop_na() %>%
filter(data > "2011-01-01") %>%
group_by(data) %>%
summarise(soma = sum(qtd_familias_beneficiarias_bolsa_familia)) %>%
mutate(var_mes = ((soma/lag(soma) - 1) * 100)) %>%
#summarise(soma = mean(soma)) %>%
ggplot(aes(data,var_mes)) + geom_line() +
geom_smooth(method = "lm", se = FALSE) +
scale_y_continuous(labels=function(x) format(x, big.mark = ",", scientific = FALSE))
# percentual de crescimento em numero de familias
pct_benf_mes_pessoas <- total %>%
drop_na() %>%
filter(ano > "2009" & mes != 12) %>%
group_by(ano, mes) %>%
summarise(soma = sum(qtd_familias_beneficiarias_bolsa_familia)) %>%
summarise(soma = mean(soma)) %>%
mutate(var_mes = ((soma/lag(soma) - 1) * 100)) %>%
drop_na() %>%
#summarise(soma = mean(soma)) %>%
ggplot(aes(ano,var_mes)) + geom_line() +
geom_smooth(method = "lm", se = FALSE) +
scale_y_continuous(labels=function(x) format(x, big.mark = ",", scientific = FALSE))
total %>%
drop_na() %>%
#filter(data > "2009-01-01") %>%
group_by(ano, mes) %>%
summarise(soma = sum(qtd_familias_beneficiarias_bolsa_familia)) %>%
summarise(soma = mean(soma)) %>%
ggplot(aes(ano,soma)) + geom_line() +
geom_smooth(method = "loess", se = FALSE) +
scale_y_continuous(labels=function(x) format(x, big.mark = ",", scientific = FALSE))
# valores médios, por ano
valores_medios <- total %>%
drop_na() %>%
#filter(data > "2009-01-01") %>%
group_by(ano, mes) %>%
# summarise(familias = sum(qtd_familias_beneficiarias_bolsa_familia)) %>%
summarise(familias = mean(sum(qtd_familias_beneficiarias_bolsa_familia)), valores = sum(ajustado)) %>%
mutate(valor_medio = valores/familias ) %>%
group_by(ano) %>%
summarise(valor_medio = mean(valor_medio)) %>%
#summarise(soma = mean(soma)) %>%
ggplot(aes(ano, valor_medio, label = round(valor_medio, 1))) + geom_line() + geom_label() +
#geom_smooth(method = "loess", se = FALSE) +
#scale_x_date(breaks = scales::pretty_breaks(n = 10)) +
scale_y_continuous(labels=function(x) format(x, big.mark = ",", scientific = FALSE)) +
labs( title = "Bolsa Família",
subtitle = "Valor médio mensal de benefícios do Bolsa Família, agrupado por ano",
caption = "Fonte: Ministério da Cidadania/MDS",
x = "",
y = "valor em R$")
# total R$ desembolsado por ano
desembolsos <- total %>%
drop_na() %>%
#filter(data > "2009-01-01") %>%
filter(mes != 12) %>%
group_by(ano) %>%
summarise(soma = sum(ajustado)) %>%
mutate(soma = soma/1000000000) %>%
#summarise(soma = mean(soma)) %>%
ggplot(aes(ano, soma, label = round(soma, 1))) + geom_line() + geom_label() +
geom_smooth(method = "loess", se = FALSE) +
#scale_x_date(breaks = scales::pretty_breaks(n = 10)) +
scale_y_continuous(labels=function(x) format(x, big.mark = ",", scientific = FALSE)) +
labs( title = "Desembolsos do Bolsa Família",
subtitle = "Total anual desembolsado no programa Bolsa Família - valores deflacinados pelo IPCA",
caption = "Fonte: Portal da Transparência",
x = "",
y = "em bilhões de R$")

Código por Sérgio Spagnuolo

Fonte de dados: API do Ministério da Cidadania, na rubricado do Ministério do Desenvolvimento Social - MDS, conforme descrito no Portal de Dados Abertos do governo federal.

Valores reajustados usando pacote R deflateBR

library(tidyverse)
library(jsonlite)
library(lubridate)
library(deflateBR)
library(scales)
library(clipr)
# referencia de dados: http://www.dados.gov.br/dataset/bolsa-familia-misocial
url <- "http://aplicacoes.mds.gov.br/sagi/servicos/misocial?q=*&fq=anomes_s:"
url2 <- "*&fq=tipo_s:mes_mu&wt=csv&fl=ibge:codigo_ibge,anomes:anomes_s,qtd_familias_beneficiarias_bolsa_familia,valor_repassado_bolsa_familia&rows=10000000&sort=anomes_s%20asc,%20codigo_ibge%20asc"
anos <- c(2004:2020)
bf <- list()
for(p in seq_along(anos)){
# monta a URL
url0 <- paste0(url, p, url2)
# puxa os dados
dfa <- read.csv(url0, header = T)
# preenche a lista
bf[[p]] = dfa
}
# cria o data frame
total <- bind_rows(bf)
# organiza e limpa tabela e cria coluna com valores ajustados
total$ano <- as.numeric(str_sub(total$anomes, 1,4))
total$mes <- str_sub(total$anomes, 5,6)
total$data <- as.Date(paste0(total$ano, "-", total$mes, "-01"))
total$ajustado <- deflate(total$valor_repassado_bolsa_familia, total$data, "12/2019", "ipca")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment