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

Perfil dos condenados

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

Valores envolvidos

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.

Pagamento de multas

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.')


abjur/cnc documentation built on July 15, 2022, 4:09 p.m.