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.')
A Tabela \@ref(tab:maiorA) mostra os 20 assuntos com maior valor agregado. Note que dano ao erário soma mais de 1 bilhão de reais. Tambem temos alguns assuntos genéricos que deveriam ser filtrados.
tidy_cnc %>% filter(teve_multa == 'sim', vl_multa < 1e9) %>% select(starts_with('assunto_nm'), vl_multa) %>% gather(key, val, -vl_multa) %>% filter(!is.na(val)) %>% group_by(val) %>% summarise(soma = sum(vl_multa)) %>% arrange(desc(soma)) %>% mutate(soma = scales::dollar(soma)) %>% head(20) %>% knitr::kable(booktabs = TRUE, caption = 'Assuntos com maior valor de multas agregado (valores de multas em processos com mais de um assunto foram contados duas vezes)')
A Figura \@ref(fig:mapa3) mostra as UFs com maior soma de multas por habitante. Acre e Distrito Federal estão no topo com mais de 30 reais por habitante, seguidos por Rondônia e Maranhão, com mais de 10 reais por habitante.
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 %>% filter(teve_multa == 'sim', vl_multa < 1e9) %>% mutate(id = uf) %>% group_by(id) %>% summarise(soma = sum(vl_multa)) %>% inner_join(pnud_uf, 'id') %>% mutate(tx = soma / popt) %>% mutate(tx = cut(tx, c(0, 1, 5, 10, 20, 30, 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
A Tabela \@ref(tab:multa-esfera) mostra estatísticas descritivas dos valores das multas por esfera. Observe que a mediana da esfera estadual é menor que a da federal, mas a média é maior.
dol <- scales::dollar tidy_cnc %>% filter(teve_multa == 'sim', vl_multa < 1e9) %>% group_by(esfera_processo) %>% summarise(n = n(), media = mean(vl_multa), mediana = median(vl_multa), soma = sum(vl_multa)) %>% mutate_if(is_double, funs(dol(.))) %>% knitr::kable(booktabs = TRUE, caption = 'Estatísticas descritivas dos valores das multas por esfera do processo.')
Podemos identificar a comarca somente dos processos estaduais de primeiro grau. A Tabela \@ref(tab:coma) mostra as 30 comarcas com maior taxa de processos por 100 mil habitantes.
# data(cadmun, package = 'abjutils') data(pnud_muni, package = 'abjutils') pnud_muni %<>% as_tibble() %>% filter(ano == 2010) %>% select(ufn, municipio, popt) %>% mutate(municipio = toupper(abjutils::rm_accent(municipio))) # pnud_muni %>% # filter(stringr::str_detect(municipio, 'TRES RIOS')) # a %>% # count(tribunal, comarca_secao) %>% # anti_join(pnud_muni, c('tribunal' = 'ufn', 'comarca_secao' = 'municipio')) %>% # arrange(desc(n)) tr <- 'Tribunal de Justiça d[eo]|Estado d[eoa]|e dos Territórios' tidy_cnc_coma <- tidy_cnc %>% filter(esfera_processo == 'Estadual', instancia == '1 grau') %>% mutate(tribunal = stringr::str_replace_all(tribunal, tr, ''), tribunal = stringr::str_trim(tribunal), comarca_secao = toupper(abjutils::rm_accent(comarca_secao))) %>% mutate(comarca_secao = with(., case_when( comarca_secao == 'CAPITAL' ~ 'RIO DE JANEIRO', comarca_secao == 'GAMA' ~ 'BRASILIA', comarca_secao == 'TRES RIOS/AREAL/LEVY GASPARIAN' ~ 'TRES RIOS', comarca_secao == 'CAMPO GRANDE' & tribunal == 'Rio Grande do Norte' ~ 'AUGUSTO SEVERO', comarca_secao == 'MOJI-MIRIM' ~ 'MOJI MIRIM', comarca_secao == 'SANTO ANTONIO DE PADUA/APERIBE' ~ 'SANTO ANTONIO DE PADUA', comarca_secao == 'ELDORADO PAULISTA' & tribunal == 'São Paulo' ~ 'ELDORADO', comarca_secao == 'CAMBUCI/SAO JOSE DE UBA' ~ 'CAMBUCI', comarca_secao == 'AREZ' ~ 'ARES', comarca_secao == 'NATIVIDADE/VARRE-SAI' ~ 'NATIVIDADE', comarca_secao == 'CARAPEBUS/QUISSAMA' ~ 'CARAPEBUS', comarca_secao == 'EMBU DAS ARTES' ~ 'EMBU', comarca_secao == 'NOVA IGUACU/MESQUITA' ~ 'NOVA IGUACU', comarca_secao == 'JABUTICATUBAS' ~ 'JABOTICATUBAS', comarca_secao == 'IPAUCU' ~ 'IPAUSSU', comarca_secao == 'NUCLEO BANDEIRANTE' ~ 'BRASILIA', comarca_secao == 'ITAPAJE' ~ 'ITAPAGE', comarca_secao == 'PORTO REAL / QUATIS' ~ 'PORTO REAL', comarca_secao == 'CEILANDIA' ~ 'BRASILIA', is.na(comarca_secao) ~ NA_character_, TRUE ~ comarca_secao ))) %>% filter(!is.na(comarca_secao)) %>% inner_join(pnud_muni, c('tribunal' = 'ufn', 'comarca_secao' = 'municipio')) %>% distinct(arq_processo, .keep_all = TRUE) %>% group_by(tribunal, comarca_secao) %>% summarise(nprocs = n(), pop = first(popt)) tidy_cnc_coma %>% ungroup() %>% mutate(tx = nprocs / pop * 100000) %>% # filter(pop > 100000) %>% arrange(desc(tx)) %>% mutate(tx = round(tx, 2)) %>% head(30) %>% knitr::kable(booktabs = TRUE, caption = '30 comarcas com maior taxa de processos por 100 mil habitantes.')
A Tabela \@ref(tab:coma2) mostra as 30 comarcas com mais de 100 mil habitantes com as maiores taxas. Podemos notar uma grande concentração de comarcas do Paraná.
tidy_cnc_coma %>% ungroup() %>% mutate(tx = nprocs / pop * 100000) %>% # filter(pop > 100000) %>% arrange(desc(tx)) %>% mutate(tx = round(tx, 2)) %>% filter(pop > 100000) %>% head(30) %>% knitr::kable(booktabs = TRUE, caption = '30 comarcas com mais de 100 mil habitantes e maiores taxa de processos por 100 mil habitantes.')
A Tabela \@ref(tab:coma3) mostra as duas comarcas com maior taxa de processos por 100 mil habitantes em cada estado.
tidy_cnc_coma %>% ungroup() %>% mutate(tx = nprocs / pop * 100000) %>% # filter(pop > 100000) %>% arrange(desc(tx)) %>% mutate(tx = round(tx, 2)) %>% filter(nprocs >= 5) %>% group_by(tribunal) %>% slice(1:2) %>% arrange(tribunal, desc(tx)) %>% knitr::kable(booktabs = TRUE, caption = 'Comarcas com maiores taxa de processos por 100 mil habitantes em cada estado (somente comarcas com 5 processos ou mais).')
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.