library(tidyverse) library(janitor) devtools::load_all()
No relatório preliminar 01, mostramos como a base de dados foi baixada e o conteúdo da base depois após a fase de arrumação de dados. Neste documento, apresentaremos análises preliminares sobre duas quantidades de interesse na pesquisa: i) perfil dos condenados do CNC e ii) valores envolvidos nos processos (desagregado por divesos critérios).
\clearpage
A Tabela \@ref(tab:pfpj) mostra a quantidade de pessoas e processos por tipo de pessoa. Podemos observar que é bem maior a quantidade de pessoas físicas na base.
tidy_cnc %>% mutate(tipo_pessoa = if_else(tipo_pessoa == 'F', 'Física', 'Jurídica')) %>% group_by(tipo_pessoa) %>% summarise(n_pessoas = n_distinct(id_pessoa), n_processos = n_distinct(id_processo)) %>% janitor::add_totals_row() %>% knitr::kable(booktabs = TRUE, caption = 'Quantidade de pessoas jurídicas e físicas e processos envolvidos.')
Agora vamos estudar a distribuição geográfica das pessoas. A Figura \@ref(fig:mapa1) mostra o volume de pessoas por estado. Obsevamos uma concentração maior em São Paulo, Minas Gerais e nos estados da região sul, além de Rondônia. Exceto por Rondônia, o resultado é esperado, já que grande parte da população fica nos estados citados.
data(br_uf_map, package = 'abjutils') p <- tidy_cnc %>% distinct(id_pessoa, .keep_all = TRUE) %>% count(id = uf) %>% mutate(n = cut(n, c(0, 100, 200, 300, 800, max(n)), dig.lab=5)) %>% inner_join(br_uf_map) %>% { ggplot(.) + geom_map(aes(x = long, y = lat, map_id = id, fill = n), colour = 'gray30', size = .1, alpha = .8, map = ., data = .) + coord_equal() + scale_fill_brewer(palette = 'PuRd') + theme_void() } p
A Figura \@ref(fig:mapa2) mostra a taxa de pessoas por cem mil habitantes em cada estado. O resultado é surpreendente. Destacam-se o estados do Acre e Rondônia, concentrando 17 e 24 pessoas por cem mil habitantes, respectivamente. Outros estados com alta taxa são Roraima, Amapá, Tocantins, Rio Grande do Norte, Sergipe, Espírito Santo, Distrito Federal e Santa Catarina.
data(pnud_uf, package = 'abjutils') data(cadmun, package = 'abjutils') cadmun %<>% distinct(cod, uf) %>% mutate_all(as.character) pnud_uf %<>% filter(ano == 2010) %>% select(uf, popt) %>% mutate(uf = as.character(uf)) %>% inner_join(cadmun, c('uf' = 'cod')) %>% select(id = uf.y, popt) p <- tidy_cnc %>% distinct(id_pessoa, .keep_all = TRUE) %>% count(id = uf) %>% inner_join(pnud_uf, 'id') %>% mutate(tx = n / popt * 100000) %>% mutate(tx = cut(tx, c(0, 1, 3, 5, 10, max(tx)), dig.lab = 3, ordered_result = TRUE)) %>% inner_join(br_uf_map) %>% { ggplot(.) + geom_map(aes(x = long, y = lat, map_id = id, fill = tx), colour = 'gray30', size = .1, alpha = .8, map = ., data = .) + scale_fill_brewer(palette = 'PuRd') + coord_equal() + theme_void() } p
Na base de dados temos três variáveis sobre valores: i) pagamento de multas, ii) ressarcimento integral do dano e iii) perda de bens ou valores acrescidos ilicitamente ao patrimônio. Vamos analisar cada um desses valores separadamente.
A Tabela \@ref(tab:tab1) mostra a proporção de condenações em que houve multa. Obseve que tivemos multas em aproximadamente um terço dos casos. No entanto, somente 9.817 casos possuem valores de multa maiores ou iguais a zero ou menores que um bilhão.
tidy_cnc %>% replace_na(list(teve_multa = 'não')) %>% janitor::tabyl(teve_multa, sort = TRUE) %>% janitor::add_totals_row() %>% mutate(percent = scales::percent(percent)) %>% knitr::kable(booktabs = TRUE, caption = 'Proporção de multas na base.')
Como o valor é uma variável bastante assimétrica, é necessário elaborar algumas estatísticas especiais para comparação de valores. A Figura \@ref(fig:perc) compara os percentis[^percentil] dos valores das multas para pessoas físicas e jurídicas. É possível observar que os valores envolvidos para pessoas jurídicas é sistematicamente maior que os valores envolvidos para pessoas físicas. No futuro, vamos realizar esse tipo de comparação para diversas subpopulações da base de dados.
[^percentil]: um percentil de $x$% é uma quantidade que faz com que $x$% das observações da amostra esteja abaixo desse valor.
p <- tidy_cnc %>% filter(teve_multa == 'sim', vl_multa < 1e9, vl_multa > 10) %>% group_by(tipo_pessoa) %>% do(n = nrow(.), r = quantile(.$vl_multa, probs = 0:100 / 100)) %>% unnest(n) %>% unnest(r) %>% group_by(tipo_pessoa) %>% mutate(id = 1:n()) %>% ungroup() %>% mutate(tipo_pessoa = if_else(tipo_pessoa == 'F', paste0('Física (n = ', n, ')'), paste0('Jurídica (n = ', n, ')'))) %>% select(-n) %>% spread(tipo_pessoa, r) %>% ggplot(aes_(x = as.name(names(.)[2]), y = as.name(names(.)[3]))) + geom_point() + geom_abline(slope = 1, intercept = 0) + scale_x_log10(labels = scales::dollar) + scale_y_log10(labels = scales::dollar) + theme_bw() plotly::ggplotly(p)
A tabela \@ref(tab:maiorN) mostra as 20 pessoas com maior quantidade de multas. Observe que apesar de observarmos pessoas com pelo menos 12 multas cada, 97% do valor de multas está concentrado nas multas restantes.
tidy_cnc %>% filter(teve_multa == 'sim', vl_multa < 1e9) %>% mutate(nome = sprintf('%06s / %s', id_pessoa, toupper(nm_pessoa))) %>% mutate(nome = forcats::fct_infreq(nome), nome = forcats::fct_lump(nome, n = 20)) %>% group_by(nome) %>% summarise(n_multas = n(), vl_total = sum(vl_multa)) %>% mutate(`% total` = n_multas / sum(n_multas)) %>% mutate(`% valor total` = vl_total / sum(vl_total)) %>% # arrange(desc(n_multas)) %>% add_totals_row() %>% mutate(`% valor total` = scales::percent(`% valor total`)) %>% mutate(`% total` = scales::percent(`% total`)) %>% mutate(vl_total = scales::dollar(vl_total)) %>% knitr::kable(booktabs = TRUE, caption = 'Pessoas com maiores quantidade de multas, valor agregado e proporção do total.')
A tabela \@ref(tab:maiorV) mostra os 20 casos com maior valor de multas. Observe que somente esses casos concentram quase metade do valor total das multas.
tidy_cnc %>% filter(teve_multa == 'sim', vl_multa < 1e9) %>% select(nome = nm_pessoa, tipo_pessoa, vl_multa) %>% mutate(nome = toupper(nome)) %>% arrange(desc(vl_multa)) %>% mutate(`% acu. vl total` = cumsum(vl_multa) / sum(vl_multa)) %>% # mutate(nome = forcats::fct_reorder(nome, fun = sum, vl_multa), # nome = forcats::fct_lump(nome, n = 20)) %>% unite(aux, nome, tipo_pessoa) %>% add_totals_row() %>% separate(aux, c('nome', 'tipo_pessoa'), sep = '_', fill = 'right') %>% mutate(`% acu. vl total` = if_else(nome == 'Total', NA_real_, `% acu. vl total`)) %>% mutate(`% acu. vl total` = scales::percent(`% acu. vl total`)) %>% mutate(vl_multa = scales::dollar(vl_multa)) %>% slice(c(1:20, nrow(.))) %>% replace_na(list(tipo_pessoa = '')) %>% mutate(`% acu. vl total` = if_else(`% acu. vl total` == 'NA%', '', `% acu. vl total`)) %>% knitr::kable(booktabs = TRUE, caption = 'Condenações com multas de maior valor com informação do tipo de pessoa e proporção acumulada da soma dos valores.')
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.