Pagamentos de Conversão de Licença Prêmio em Pecúnia no Ministério Público da União (2018-2023)

Data de Publicação

21.dez.2023

Data de Modificação

21.dez.2023

Código
library(tidyverse)
library(here)
library(gt)
library(glue)
library(colorspace)
library(ggdist)
library(ggtext)
library(patchwork)

source(here("src/00-plot-aesthetics.R"), encoding = "utf-8")

my_caption <- "Fonte: DadosJusBr\nElaboração: Transparência Brasil"
my_caption_md <- "**Fonte:** DadosJusBr<br>**Elaboração:** Transparência Brasil"

## SELECIONE A BASE DE DADOS
data_extracao <- "2023-11-14"
path_mpu_data <- here(glue::glue("data/09-extracao-mps-{data_extracao}.rds"))

# funções auxiliares
reais <- function(...) scales::dollar(..., big.mark = ".", decimal.mark = ",", prefix = "R$ ")
numero <- function(...) scales::number(..., big.mark = ".", decimal.mark = ",")
perc <- function(...) scales::percent(..., big.mark = ".", decimal.mark = ",")

Metodologia

Foram extraídos os dados de remunerações dos órgãos que compôem o MPU:

  • Ministério Público Federal
  • Ministério Público do Trabalho
  • Ministério Público Militar
  • Ministério Público do Distrito Federal e Territórios

Após a extração dos dados foram aplicados os filtros para as rubricas:

  • Conversão de licença prêmio em pecúnia

Definições

O Ministério Público da União é uma instituição que acomoda quatro diferentes ramos, com áreas de atuação, organização e administração distintas: o Ministério Público Federal, o Ministério Público do Trabalho, o Ministério Público Militar e o Ministério Público do Distrito Federal e Territórios.

O MPU possui como chefe o Procurador-Geral da República, que exerce as funções do Ministério Público junto ao Supremo Tribunal Federal (STF), no Superior Tribunal de Justiça (STJ), sendo também o (a) procurador (a)-geral Eleitoral.

Conversão de Licenças-prêmio em pecúnia

Todos os MPs que integram o MPU despendem quantias significativas com licenças-prêmio convertidas em pecúnia. Nesse caso, o membro recebe um pagamento, considerado indenizatório, como compensação por deixar de usufruir das folgas que ganha após acumular 24 horas de trabalho em plantão.

Há ainda outra modalidade de licença-prêmio, que garante três meses de licença a cada cinco anos de exercício. Esta também pode ser convertida em pagamento indenizatório, mediante solicitação do membro.

Todos esses pagamentos aparecem nos contracheques sob a rubrica “conversão de licença prêmio em pecúnia” e similares. As licenças-prêmio são consideradas verbas de natureza indenizatória e também não estão sujeitas ao teto remuneratório.

Dados

São apresentadas as remunerações pagas aos membros do MPU de janeiro de 2018 até junho de 2023, por ano, mês e rubrica. Os dados são provenientes da plataforma DadosJusBr, um projeto que é fruto de uma parceria entre a Transparência Brasil, o Instituto Federal de Alagoas (IFAL) e a Universidade Federal de Campina Grande (UFCG). O projeto visa a abrir dados de remuneração do sistema de Justiça brasileiro e disponibiliza as informações em uma plataforma on-line.

Código-fonte

  • Código para consulta no banco de dados com R: link
  • Código para extrair remunerações dos magistrados do banco de dados do DadosjUsBr: link
  • Código para formatação dos gráficos: link

Tratamendo dos dados

Pré visualização do dado bruto:

Código
# mpu_raw <- readRDS(path_mpu_data)
# mpu <- readRDS(here("data/mpu.rds"))
mpu <- readRDS(path_mpu_data)
# mpu_raw
mpu
Código
glimpse(mpu)
#> Rows: 908,530
#> Columns: 15
#> $ nome            <chr> "ELINE LEVI PARANHOS ", "ANDRE LUIZ DE SA SANTOS", "DÉBORA SCATTOLINI", "ELIANE ARAQUE DOS SANTOS", "PAU…
#> $ matricula       <chr> "281", "0577-1", "432", "219", "326", "403", "981", "10105", "397", "10001", "0650-5", "0584-3", "505", …
#> $ funcao          <chr> " PROCURADOR DE JUSTIÇA", "PROMOTOR DE JUSTICA MILITAR", "PROCURADOR REGIONAL DO TRABALHO", "SUBPROCURAD…
#> $ local_trabalho  <chr> "Procuradorias de Justiça", "PROCURADORIA DE JUSTIÇA MILITAR EM CURITIBA/PR", "3º OFÍCIO GERAL DA PRT DA…
#> $ id              <int> 6, 3, 6, 7, 5, 6, 4, 3, 6, 4, 5, 4, 5, 6, 4, 4, 4, 5, 5, 5, 3, 5, 3, 3, 5, 3, 3, 4, 4, 3, 9, 3, 3, 3, 3,…
#> $ id_contracheque <int> 11, 10, 201, 213, 556, 651, 133, 346, 35, 171, 42, 53, 101, 398, 436, 523, 613, 60, 182, 624, 78, 159, 1…
#> $ orgao           <chr> "mpdft", "mpm", "mpt", "mpt", "mpt", "mpt", "mpt", "mpdft", "mpdft", "mpdft", "mpm", "mpm", "mpdft", "mp…
#> $ mes             <int> 1, 2, 2, 2, 2, 2, 6, 6, 12, 12, 5, 5, 8, 5, 5, 5, 5, 8, 8, 9, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 1,…
#> $ ano             <int> 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 2019, 20…
#> $ categoria       <chr> "contracheque", "Obrigatórios/Legais", "Obrigatórios / Legais", "Obrigatórios / Legais", "Obrigatórios /…
#> $ item            <chr> "Imposto de Renda", "Imposto de Renda", "Imposto de Renda", "Imposto de Renda", "Imposto de Renda", "Imp…
#> $ valor           <dbl> -11264.09, -8301.16, -10476.85, -12668.82, -10191.35, -11159.81, -7567.51, -7219.63, -19636.70, -16265.2…
#> $ inconsistente   <lgl> FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE, FALSE,…
#> $ tipo            <chr> "D", "D", "D", "D", "D", "D", "D", "D", "D", "D", "D", "D", "D", "D", "D", "D", "D", "D", "D", "D", "D",…
#> $ item_sanitizado <chr> "imposto de renda", "imposto de renda", "imposto de renda", "imposto de renda", "imposto de renda", "imp…

Sanitização de nome e remoção de id por item

O primeiro tratamento aplicado é a sanitização do campo nome para garantir a consistência da contagem e demais operações na granularidade de membro. O campo categoria também é sanitizado com o mesmo propósito, mas seu uso neste relatório é menor.

Optei por remover o campo id, pois este reflete uma granularidade muito alta (nível item/membro/ano/mês) para a análise que queremos. Nós perderemos a granularidade de item porque eles serão agrupados. Para referenciar os itens de forma simplificada, nós iremos calcular a soma da venda de licença-prêmio separado da soma das demais remuneração líquidas. Isso, portanto, aumenta a granularidade do dado e inutiliza o campo id.

Código
mpu <- mpu %>%
  # esse id é no padrao item-categoria-ano-mes-nome-matricula.
  # Um id nessa granularidade não é necessário nesta análise
  select(-id) %>%
  # normaliza nome e categoria
  mutate(
    nome = nome %>%
      tolower() %>%
      stringi::stri_trans_general("latin-ascii") %>%
      str_squish(),
    categoria = categoria %>%
      tolower() %>%
      stringi::stri_trans_general("latin-ascii") %>%
      str_squish()
  )

Correção de campo matrícula para o MPF

Código
contador_matricula_vazias <- function(df) {

  df <- df %>%
    count(orgao, matricula_vazia = matricula == "", name = "n_linhas") %>%
    group_by(orgao) %>%
    mutate(perc = n_linhas / sum(n_linhas)) %>%
    ungroup() %>%
    mutate(perc = scales::percent(perc)) %>%
    filter(matricula_vazia)

  return(df)

}

O MPF apresenta inconsistência na divulgação de dados de matrícula. Em 71593 linhas (16% do total entre 2019-2022), o campo matrícula está vazio e isso gera a dupla contagem no número de membros do órgão, uma vez que o identificador único de cada membro (id_membro) é a matrícula {matricula}. Para sanar esse problema, os o campo o nome do membro é agrupado para completar o preenchimento desses campos vazios.

Além disso, foram encontrados 8 casos em que a matrícula do membro se altera por exercerem funções de “PROCURADOR REQUISITADO” ou “MEMBRO APOSENTADO”. Todos os casos foram corrigidos.

Código
completa_campo_matricula <- function(df) {

  todos_os_nomes <- mpu %>%
    distinct(orgao, nome)

  nomes_sem_matricula <- df %>%
    filter(matricula == "") %>%
    distinct(orgao, nome) %>%
    mutate(possui_registro_sem_matricula = TRUE)

  nomes_com_matricula <- df %>%
    mutate(
      id_membro = case_when(
        nome == "andre alisson leal teixeira" ~ "10150",
        nome == "claiz maria pereira gunca dos santos" ~ "1135",
        nome == "ednaldo rodrigo brito da silva" ~ "747",
        nome == "eitel santiago de brito pereira" ~ "247",
        nome == "eunice pereira amorim carvalhido" ~ "371",
        nome == "natalia magalhaes wanderlei" ~ "10121",
        nome == "rodrigo lopez zilio" ~ "30411",
        nome == "tamara de santana teixeira buriti" ~ "1119",
        nome == "luiz fernando guimaraes de almeida" & orgao == "mpdft" ~ "10166",
        nome == "mauricio saliba alves branco" ~ "10167",
        (orgao == "mpdft" & str_count(matricula) == 3) ~ glue("00{matricula}"),
        .default = matricula
      )
    ) %>%
    filter(id_membro != "") %>%
    distinct(orgao, nome, id_membro) %>%
    add_count(nome, name = "qt_nome_repetido")

  todos_os_nomes_com_matricula <- nomes_com_matricula %>%
    full_join(nomes_sem_matricula) %>%
    mutate(possui_registro_sem_matricula = replace_na(
      possui_registro_sem_matricula, FALSE
    )) %>%
    mutate(id_membro = if_else(
      is.na(id_membro), nome, id_membro
    ))

  return(list(
    todos_os_nomes = todos_os_nomes,
    nomes_com_matricula = nomes_com_matricula,
    nomes_sem_matricula = nomes_sem_matricula,
    todos_os_nomes_com_matricula = todos_os_nomes_com_matricula
  ))
}

# Repõe os dados de matricula, preenchendo campos vazios
mpu <- mpu %>%
  left_join(
    mpu %>%
      completa_campo_matricula() %>%
      pluck("todos_os_nomes_com_matricula") %>%
      select(orgao, nome, id_membro)
  )

Tratando duplicidades nos dados do MPF e MPT

Código
remove_dups <- function(df) {

  `%notin%` <- \(x, y) !(x %in% y)

  # cria um id único para cada linha
  df <- df %>%
    unite(id_unico, remove = FALSE) %>%
    group_by(id_unico) %>%
    mutate(n_linhas = n()) %>%
    ungroup()

  # com o distinct descartamos as duplicidades
  df_sem_dups <- distinct(df, id_unico, .keep_all = TRUE) %>%
    select(-id_unico)

  return(df_sem_dups)

}

mpu <- remove_dups(mpu)

dups <- mpu %>%
  add_count(orgao, name = "qt_linhas") %>%
  filter(n_linhas > 1) %>%
  count(orgao, qt_linhas) %>%
  mutate(perc = n / qt_linhas)

Descrição dos casos de duplicidades:

  • 1213 casos no mpf (0,27% do total de linhas afetadas do total que o órgão possui)
  • 198 casos no mpt (0,07% do total de linhas do total que o órgão possui)

Sanitização das rubricas

Código
mpu <- mpu %>%
  # sanitiza campo de item, melhorando taxonomia
  mutate(item_sanitizado = case_when(
    item_sanitizado == "auxilioalimentacao" ~ "auxilio alimentacao",
    item_sanitizado == "auxiliocreche" ~ "auxilio creche",
    item_sanitizado == "auxilio preescolar" ~ "auxilio creche",
    item_sanitizado == "auxiliomoradia" ~ "auxilio moradia",
    item_sanitizado == "auxilio moradia isento de ir" ~ "auxilio moradia",
    item_sanitizado == "auxilionatalidade" ~ "auxilio natalidade",
    item_sanitizado == "auxilios natalidade" ~ "auxilio natalidade",
    item_sanitizado == "auxiliotransporte" ~ "auxilio transporte",
    item_sanitizado == "licenca premio pecunia" ~ "conversao de licenca premio em pecunia",
    item_sanitizado == "licenca premio em pecunia" ~ "conversao de licenca premio em pecunia",
    item_sanitizado == "licenca premio" ~ "conversao de licenca premio em pecunia",
    item_sanitizado == "outras remuneracoes retroativastemporarias" ~ "outras verbas remuneratorias retroativas ou temporarias",
    item_sanitizado == "outras verbas remuneratorias retroativastemporarias" ~ "outras verbas remuneratorias retroativas ou temporarias",
    item_sanitizado == "indenizacoes de ferias" ~ "ferias indenizatorias",
    item_sanitizado == "retteto ativo subst oficio eou fccc" ~ "retencao por teto constitucional",
    item_sanitizado == "ir s13 de ferias const" ~ "imposto de renda",
    item_sanitizado %in% c(
      "gratificacao exercicio cumulativo de oficio",
      "gratif por exercicio cumulativo de oficios l1302414"
    ) ~ "gratificacao por exercicio cumulativo de oficio",
    item_sanitizado %in% c(
      "gratif por exercicio cumulativo de oficios sem psss",
      "gratificacao de exercicio cumulativo com oficio sem psss"
    ) ~ "gratificacao por exercicio cumulativo de oficio sem psss",
    item_sanitizado == "gratificacao exercicio cumulativo com oficio com psss" ~ "gratificacao por exercicio cumulativo de oficio com psss",
    item_sanitizado %in% c(
      "grat encargo de curso e concurso",
      "gratificacao encargo de curso e concurso",
      "gratificacao por encargo de concurso",
      "gratificacao por encargo de curso"
    ) ~ "gratificacao por encargo de curso e concurso",
    item_sanitizado %in% c(
      "ferias", "ferias 13 constitucional"
    ) ~ "ferias 13 constitucional",
    str_detect(item_sanitizado, "substi") ~ "substituicao de membros",
    .default = item_sanitizado
  )) %>%
  rename(item_real = item, item = item_sanitizado)

Delimitação de período analisado

Código
# filtra período
mpu_23 <- mpu %>% filter(ano == 2023)
mpu <- mpu %>% filter(ano %in% 2019:2022)

Delimitaremos o escopo da análise para o período de 2019 até 2022. O ano de 2023 será analizado em uma seção à parte. Ao todo, o dataset possui nrow(mpu) linhas considerando o período de 2019-2022. Para o ano de 2023 o dataset possui 97978 linhas.

Nota

baixe os dados neste link

Rubricas

Benefício perfaz o quarto maior montante na folha de pagamento dos membros do MPU, atrás somente de salátios e 13°. A tabela abaixo mostra um resumo das rubricas que constam na folha de pagamento dos membros.

Código
mpu %>%
  summarise(valor = sum(valor, na.rm = TRUE), .by = item)  %>%
  arrange(-valor) %>%
  gt() %>%
  fmt_currency(
    sep_mark = ".",
    dec_mark = ",",
    currency = "BRL",
    decimals = 0,
    incl_space = TRUE
  ) %>%
  tab_header(
    title = md("**Remunerações totais por item - 2019-2022**"),
    subtitle = "Órgãos do Ministério Público da União"
  ) %>%
  cols_label(
    .fn = md,
    item = "**Item**",
    valor = "**Valor**"
  ) %>%
  tab_footnote(footnote = md(my_caption_md))
Remunerações totais por item - 2019-2022
Órgãos do Ministério Público da União
Item Valor
remuneracao do cargo efetivo R$ 3.748.684.759
gratificacao natalina R$ 887.679.404
ferias 13 constitucional R$ 501.107.008
conversao de licenca premio em pecunia R$ 438.639.687
gratificacao por exercicio cumulativo de oficio R$ 196.408.362
abono pecuniario R$ 145.853.679
abono de permanencia R$ 124.292.329
auxilio alimentacao R$ 85.630.433
outras verbas remuneratorias legais ou judiciais R$ 59.563.910
gratificacao por exercicio cumulativo de oficio sem psss R$ 53.070.947
outras verbas remuneratorias R$ 34.625.270
substituicao de membros R$ 25.248.648
funcao de confianca ou cargo em comissao R$ 23.927.730
outras verbas remuneratorias retroativas ou temporarias R$ 22.835.357
auxilio creche R$ 19.768.922
auxilio moradia R$ 16.040.168
gratificacao local de trabalho R$ 15.652.622
gratificacao por encargo de curso e concurso R$ 9.041.583
antecipacao rem mes posterior R$ 6.800.060
ajuda de custo R$ 6.622.883
ferias indenizatorias R$ 2.418.945
gratificacao de pericia e projeto R$ 1.397.356
gratificacao por exercicio cumulativo de oficio com psss R$ 1.060.741
transporte mobiliario R$ 1.053.356
hora extra R$ 204.433
auxilio natalidade R$ 110.754
substprocuradoresfc l1141506 R$ 29.909
devolucao ir R$ 24.792
devolucao planassiste R$ 7.165
auxilio transporte R$ 2.967
adicional atividade penosa R$ 2.219
retencao por teto constitucional −R$ 65.313.787
contribuicao previdenciaria −R$ 407.437.784
imposto de renda −R$ 1.050.446.382
Fonte: DadosJusBr
Elaboração: Transparência Brasil
Código
soma_rubricas <- function(df, aid) {
  orgao_lbl <- case_when(
    aid == "mpf" ~ "**MPF - Ministério Público Federal**",
    aid == "mpt" ~ "**MPT - Ministério Público do Trabalho**",
    aid == "mpm" ~ "**MPM - Ministério Público Militar**",
    aid == "mpdft" ~ "**MP-DFT - Ministério Público do Distrito Federal e Territórios**",
  )

  df %>%
    filter(orgao == aid) %>%
    count(
      item, categoria,
      wt = valor,
      name = "valor"
    ) %>%
    group_by(categoria) %>%
    mutate(
      valor_categ_max = max(valor)
    ) %>%
    ungroup() %>%
    mutate(
      categoria = fct_reorder(categoria, valor, sum),
      item = str_to_sentence(item),
      item = fct_reorder(item, valor),
    ) %>%
    select(-valor_categ_max) %>%
    arrange(desc(categoria), item) %>%
    gt(groupname_col = "categoria") %>%
    fmt_currency(
      columns = valor,
      sep_mark = ".", dec_mark = ",",
      currency = "BRL", decimals = 0,
      incl_space = TRUE
    ) %>%
    tab_style(
      style = cell_text(align = "left", indent = px(20)),
      locations = cells_body(columns = item)
    ) %>%
    summary_rows(
      columns = c(valor),
      missing_text = "",
      fns = list(label = md("**Total**"), fn = "sum"),
      fmt = ~ fmt_currency(
        .,
        sep_mark = ".",
        dec_mark = ",",
        currency = "BRL",
        decimals = 0,
        incl_space = TRUE
      )
    ) %>%
    # tab_options(row_group.as_column = TRUE) %>%
    tab_style(
      style = list(cell_text(weight = "bold")),
      locations = cells_summary()
    ) %>%
    tab_style(
      style = list(cell_text(weight = "bold"), cell_fill(color = "gray98")),
      locations = cells_row_groups()
    ) %>%
    tab_style(
      style = list(cell_text(align = "left")),
      locations = cells_column_labels(columns = c(item))
    ) %>%
    opt_row_striping() %>%
    cols_label(
      .fn = md,
      item = "**Item**",
      valor = "**Valor**"
    ) %>%
    tab_header(
      subtitle = md("Remunerações totais por item e categoria - 2019-2023"),
      title = md(orgao_lbl)
    ) %>%
    tab_style(
      style = cell_fill(color = cores_dadosjusbr[["laranja"]]),
      locations = cells_body(
        columns = c(item, valor),
        rows = item == "Conversao de licenca premio em pecunia"
    ))%>%
  tab_footnote(footnote = md(my_caption_md))
}
Código
soma_rubricas(mpu, "mpf")
MPF - Ministério Público Federal
Remunerações totais por item e categoria - 2019-2023
Item Valor
remuneracao basica
Outras verbas remuneratorias legais ou judiciais R$ 21.960.270
Remuneracao do cargo efetivo R$ 1.841.637.126
Total
R$ 1.863.597.396
verbas indenizatorias
Auxilio moradia R$ 9.370
Auxilio natalidade R$ 72.188
Transporte mobiliario R$ 1.053.356
Ferias indenizatorias R$ 2.418.945
Ajuda de custo R$ 6.622.883
Auxilio creche R$ 10.609.502
Auxilio alimentacao R$ 42.747.253
Abono pecuniario R$ 105.077.331
Conversao de licenca premio em pecunia R$ 241.206.599
Total
R$ 409.817.427
remuneracao eventual ou temporaria
Funcao de confianca ou cargo em comissao R$ 14.218.706
Abono de permanencia R$ 43.461.510
Ferias 13 constitucional R$ 122.292.033
Gratificacao natalina R$ 168.357.151
Total
R$ 348.329.400
outras remuneracoes temporarias
Gratificacao local de trabalho R$ 15.000
Gratificacao por encargo de curso e concurso R$ 2.116.266
Outras verbas remuneratorias retroativas ou temporarias R$ 3.813.246
Outras verbas remuneratorias R$ 12.137.024
Abono de permanencia R$ 22.679.856
Ferias 13 constitucional R$ 60.160.204
Gratificacao natalina R$ 83.456.384
Gratificacao por exercicio cumulativo de oficio R$ 149.190.085
Total
R$ 333.568.068
obrigatorios/legais
Imposto de renda −R$ 507.674.165
Contribuicao previdenciaria −R$ 185.061.922
Retencao por teto constitucional −R$ 43.578.108
Total
−R$ 736.314.196
Fonte: DadosJusBr
Elaboração: Transparência Brasil
Código
soma_rubricas(mpu, "mpt")
MPT - Ministério Público do Trabalho
Remunerações totais por item e categoria - 2019-2023
Item Valor
remuneracao basica
Outras verbas remuneratorias legais ou judiciais R$ 24.574.571
Remuneracao do cargo efetivo R$ 1.183.857.924
Total
R$ 1.208.432.494
remuneracao eventual ou temporaria
Funcao de confianca ou cargo em comissao R$ 5.257.789
Abono de permanencia R$ 32.810.928
Ferias 13 constitucional R$ 278.294.468
Gratificacao natalina R$ 503.836.721
Total
R$ 820.199.906
outras remuneracoes temporarias
Imposto de renda R$ 2.151
Retencao por teto constitucional R$ 20.753
Adicional atividade penosa R$ 2.219
Devolucao planassiste R$ 7.165
Devolucao ir R$ 24.792
Substprocuradoresfc l1141506 R$ 29.909
Hora extra R$ 204.433
Gratificacao de pericia e projeto R$ 1.397.356
Antecipacao rem mes posterior R$ 1.590.684
Gratificacao por encargo de curso e concurso R$ 5.659.727
Gratificacao por exercicio cumulativo de oficio sem psss R$ 9.356.199
Gratificacao local de trabalho R$ 15.637.622
Outras verbas remuneratorias retroativas ou temporarias R$ 19.022.111
Substituicao de membros R$ 19.308.051
Outras verbas remuneratorias R$ 22.488.246
Gratificacao por exercicio cumulativo de oficio R$ 37.083.038
Conversao de licenca premio em pecunia R$ 84.761.619
Total
R$ 216.596.073
verbas indenizatorias
Auxilio natalidade R$ 21.755
Auxilio alimentacao R$ 19.704.927
Auxilio creche R$ 5.727.857
Auxilio moradia R$ 1.043.525
Total
R$ 26.498.064
verba indenizatoria
Auxilio alimentacao R$ 3.102.840
Auxilio creche R$ 876.313
Auxilio moradia R$ 14.621.618
Total
R$ 18.600.771
remuneracao temporaria
Antecipacao rem mes posterior R$ 5.078.288
Total
R$ 5.078.288
verbas indenizatorias e outras remuneracoes temporarias
Antecipacao rem mes posterior R$ 131.088
Auxilio alimentacao R$ 663.448
Total
R$ 794.537
obrigatorios / legais
Imposto de renda −R$ 327.743.802
Contribuicao previdenciaria −R$ 136.854.640
Retencao por teto constitucional −R$ 11.240.210
Total
−R$ 475.838.652
Fonte: DadosJusBr
Elaboração: Transparência Brasil
Código
soma_rubricas(mpu, "mpdft")
MP-DFT - Ministério Público do Distrito Federal e Territórios
Remunerações totais por item e categoria - 2019-2023
Item Valor
contracheque
Imposto de renda −R$ 181.785.605
Contribuicao previdenciaria −R$ 68.439.913
Retencao por teto constitucional −R$ 7.064.954
Funcao de confianca ou cargo em comissao R$ 3.616.248
Outras verbas remuneratorias legais ou judiciais R$ 11.631.056
Abono de permanencia R$ 17.034.324
Ferias 13 constitucional R$ 33.857.382
Gratificacao natalina R$ 121.964.415
Remuneracao do cargo efetivo R$ 603.962.946
Total
R$ 534.775.899
indenizacoes
Auxilio natalidade R$ 13.844
Auxilio creche R$ 2.555.251
Auxilio alimentacao R$ 16.312.274
Abono pecuniario R$ 40.776.348
Conversao de licenca premio em pecunia R$ 87.232.733
Total
R$ 146.890.450
temporarias
Gratificacao por encargo de curso e concurso R$ 1.056.314
Gratificacao por exercicio cumulativo de oficio com psss R$ 1.060.741
Substituicao de membros R$ 5.933.708
Gratificacao por exercicio cumulativo de oficio sem psss R$ 43.714.748
Total
R$ 51.765.511
Fonte: DadosJusBr
Elaboração: Transparência Brasil
Código
soma_rubricas(mpu, "mpm")
MPM - Ministério Público Militar
Remunerações totais por item e categoria - 2019-2023
Item Valor
remuneracao basica
Outras verbas remuneratorias legais ou judiciais R$ 1.398.013
Remuneracao do cargo efetivo R$ 119.226.763
Total
R$ 120.624.776
verbas indenizatorias
Auxilio natalidade R$ 2.967
Auxilio transporte R$ 2.967
Auxilio moradia R$ 365.654
Auxilio alimentacao R$ 3.099.691
Conversao de licenca premio em pecunia R$ 25.438.735
Total
R$ 28.910.014
remuneracao eventual ou temporaria
Funcao de confianca ou cargo em comissao R$ 834.987
Ferias 13 constitucional R$ 6.502.921
Abono de permanencia R$ 8.305.712
Gratificacao natalina R$ 10.064.733
Total
R$ 25.708.352
outras remuneracoes temporarias
Substituicao de membros R$ 6.890
Gratificacao por encargo de curso e concurso R$ 209.276
Gratificacao por exercicio cumulativo de oficio R$ 10.135.239
Total
R$ 10.351.405
obrigatorios/legais
Imposto de renda −R$ 33.244.960
Contribuicao previdenciaria −R$ 17.081.308
Retencao por teto constitucional −R$ 3.451.268
Total
−R$ 53.777.536
Fonte: DadosJusBr
Elaboração: Transparência Brasil

O gráfico a seguir destaca a mediana dos recebimentos por rubrica, representado pelos pontos. As barras representam a distância entre o menor e o maior valor recebido, sendo que na parte mais grossa estão 75% dos recebimentos aferidos em cada rubrica e os 25% restantes estão representados pela linha mais fina.

Código
plot_rubricas <- function(df, aid) {
  orgao_lbl <- case_when(
    aid == "mpf" ~ "MPF",
    aid == "mpt" ~ "MPT",
    aid == "mpm" ~ "MPM",
    aid == "mpdft" ~ "MP-DFT",
  )

  df %>%
    filter(orgao == aid) %>%
    count(
      ano, mes,
      id_membro, item, categoria,
      wt = valor,
      name = "valor"
    ) %>%
    group_by(categoria) %>%
    mutate(
      valor_categ_max = max(valor)
    ) %>%
    ungroup() %>%
    mutate(
      categoria = fct_reorder(categoria, valor_categ_max),
      item = str_to_sentence(item),
      item = fct_reorder(item, valor),
    ) %>%
    ggplot(aes(x = valor, y = item, color = categoria)) +
    geom_vline(xintercept = 0, linewidth = .1, color = "gray30") +
    ggdist::stat_pointinterval(
      shape = 21,
      point_size = 2,
      point_color = cores_dadosjusbr[["cinza_azulado"]],
      point_fill = colorspace::lighten(cores_dadosjusbr[["cinza_azulado"]], .7),
      show.legend = FALSE,
      .width = c(.75, 1),
      interval_size_range = c(2, 4)
    ) +
    ggforce::facet_col(
      facets = vars(fct_rev(categoria)),
      scales = "free",
      space = "free"
    ) +
    scale_x_continuous(
      limits = c(-1.2e5, 5.9e5),
      labels = ~ if_else(. == 0, "0", glue("R${. / 1000}mil")),
      expand = c(0, 0)
    ) +
    scale_y_discrete(expand = c(0, 0), position = "right") +
    scale_color_manual(values = c(
      "remuneracao basica" = cores_dadosjusbr[["laranja"]],
      "contracheque" = cores_dadosjusbr[["laranja"]],
      "obrigatorios/legais" = cores_dadosjusbr[["cinza_azulado"]],
      "obrigatorios / legais" = cores_dadosjusbr[["cinza_azulado"]],
      "remuneracao eventual ou temporaria" = cores_dadosjusbr[["verde"]],
      "temporarias" = cores_dadosjusbr[["verde"]],
      "verbas indenizatorias" = cores_dadosjusbr[["lilas"]],
      "indenizacoes" = cores_dadosjusbr[["lilas"]],
      "outras remuneracoes temporarias" = cores_dadosjusbr[["cyan"]],
      "verbas indenizatorias e remuneracoes temporarias/eventuais" = cores_dadosjusbr[["cyan"]]
    )) +
    theme(
      strip.text.y = element_text(color = "transparent"),
      strip.placement = "outside",
      axis.ticks.x = element_blank(),
      axis.text.y = element_text(face = "italic"),
      axis.text.x = element_text(face = "italic", size = 8),
      axis.title.y = element_text(angle = 0),
      panel.grid.minor = element_blank(),
      panel.background = element_rect(fill = "gray98", color = "transparent")
    ) +
    labs(
      title = glue("Distribuição de remunerações no {orgao_lbl}"),
      subtitle = glue(
        "Rubricas agrupadas por categoria.\n",
        "O ponto representa a mediana dos recebimentos\n",
        "As barras representam a distância entre o menor e o maior valor recebido, sendo que na parte\n",
        "mais espessa estão 75% dos recebimentos aferidos em cada rubrica e os 25% restantes\nestão representados pela linha mais fina."
      ),
      x = NULL, y = "Rubricas",
      caption = my_caption
    )
}
Código
plot_rubricas(mpu, "mpf")

Código
plot_rubricas(mpu, "mpt")

Código
plot_rubricas(mpu, "mpdft")

Código
plot_rubricas(mpu, "mpm")

Conversão de licença prêmio em Pecúnia

Código
licenca_premio <- mpu %>%
  filter(item == "conversao de licenca premio em pecunia") %>%
  count(
    orgao,
    id_membro, mes, ano,
    item = "Licença-prêmio",
    name = "valor",
    wt = valor
  )

outras_remuneracoes <- mpu %>%
  filter(item != "conversao de licenca premio em pecunia") %>%
  count(
    orgao,
    id_membro, mes, ano,
    item = "Outras remunerações",
    name = "valor",
    wt = valor
  )

penduricalhos <- bind_rows(licenca_premio, outras_remuneracoes) %>%
  arrange(orgao, id_membro, ano, mes, valor)
Código
pend_resumo <- penduricalhos %>%
  summarise(
    total_pago = sum(valor),
    media = mean(valor),
    mediana = median(valor),
    n_membros = n_distinct(glue("{id_membro}-{orgao}")),
    n_pagamentos = n(),
    .by = item
  )

pend_mpu <- penduricalhos %>%
  filter(item == "Licença-prêmio") %>%
  count(orgao, id_membro, wt = valor, name = "valor") %>%
  summarise(
    orgao = "MPU",
    total = sum(valor),
    valor_media = mean(valor),
    valor_mediana = median(valor),
    n_membros = n())

Licença-prêmio vs. demais rendimentos

Consolidado

  • Entre 2018 e 2022 foram pagos R$ 438,64 milhões em em licença-prêmio para 2.089 de membros (113% do total de membros do MPU).
Código
penduricalhos %>%
  count(orgao, item, wt = valor, name = "valor") %>%
  mutate(
    item = fct_reorder(item, -valor, sum),
    orgao = case_when(
      orgao == "mpm" ~ "MPM",
      orgao == "mpdft" ~ "MP-DFT",
      orgao == "mpt" ~ "MPT",
      orgao == "mpf" ~ "MPF"
    ),
    orgao = fct_reorder(orgao, -valor, sum)
  ) %>%
  ggplot(aes(
    x = orgao,
    y = valor,
    fill = item,
    color = after_scale(darken(fill, .4))
  )) +
  geom_col(position = "dodge") +
  geom_text(
    aes(label = reais(valor / 1e6)),
    vjust = -1,
    position = position_dodge(width = .9)
  ) +
  scale_y_continuous(labels = ~ reais(. / 1e6)) +
  scale_fill_manual(
    values = c(
      "Outras remunerações" = alpha(cores_dadosjusbr[["verde"]], .6),
      "Licença-prêmio" = cores_dadosjusbr[["cinza_azulado"]]
    )
  ) +
  labs(
    title = "Pagamentos de venda de licença-prêmio em pecúnia - 2018 - 2022",
    x = "Órgãos do Ministério Público da União", y = "Milhões de reais",
    fill = NULL, captio = my_caption
  ) +
  theme(
    panel.grid.major.x = element_blank(),
    panel.grid.minor.x = element_blank(),
    panel.grid.minor.y = element_blank()
  )

Percentual

Percentual de pagamentos de licença-prêmio sobre as remunerações liquidas - por ano (2019 - 2022)

Código
pend_ano_orgao <- penduricalhos %>%
  summarise(
    total_pago = sum(valor),
    media = mean(valor),
    mediana = median(valor),
    n_membros = n_distinct(glue("{id_membro}-{orgao}")),
    n_pagamentos = n(),
    .by = c(orgao, item, ano)
  ) %>%
  select(orgao, item, ano, total_pago) %>%
  complete(orgao, ano, item, fill = list(total_pago = 0)) %>%
  group_by(orgao, ano) %>%
  mutate(perc = total_pago / sum(total_pago)) %>%
  ungroup()

pend_ano_orgao %>%
  mutate(
    item = fct_reorder(item, -perc, sum),
    orgao = case_when(
      orgao == "mpm" ~ "Ministério Público Militar",
      orgao == "mpdft" ~ "Ministério Público do Distrito Federal e Territórios",
      orgao == "mpt" ~ "Ministério Público do Trabalho",
      orgao == "mpf" ~ "Ministério Público Federal"
    ),
    orgao = ordered(orgao, levels = c(
      "Ministério Público Militar",
      "Ministério Público Federal",
      "Ministério Público do Distrito Federal e Territórios",
      "Ministério Público do Trabalho"
    ))
  ) %>%
  ggplot(aes(x = as.integer(ano), y = perc, fill = item)) +
  geom_col() +
  geom_text(
    data = . %>% filter(item == "Licença-prêmio" & perc > 0),
    aes(label = perc(round(perc, 4))),
    vjust = -.5
  ) +
  facet_wrap(~orgao, scales = "free") +
  scale_fill_manual(
    values = c(
      "Outras remunerações" = alpha(cores_dadosjusbr[["verde"]], .6),
      "Licença-prêmio" = cores_dadosjusbr[["cinza_azulado"]]
    )
  ) +
  scale_x_continuous(expand = c(0, .1), breaks = 2019:2022L) +
  scale_y_continuous(labels = scales::percent, breaks = c(0, .50, 1)) +
  labs(
    fill = NULL, y = NULL, x = "Ano",
    title = NULL,
    subtitle = "Percentual em relação ao total das remunerações líquidas - por ano",
    caption = my_caption
  ) +
  theme(
    panel.grid.major.x = element_blank(),
    panel.grid.minor.x = element_blank(),
    panel.grid.minor.y = element_blank(),
    legend.position = "top",
    legend.justification = "left",
    strip.text = element_text(size = 10)
  )

Código

pend_mpm_2021 <- pend_ano_orgao %>%
  filter(orgao == "mpm" & ano == 2021)
  • O desembolso do MPU com pagamentos de licença-prêmio representa apenas 9% do total da soma das remunerações líquidas pagas. Entretanto, há indícios de que o benefício é utilizado em larga escala para turbinar as remunerações dos membros.

  • Em 2021, mais de 1/4 (25%) das remunerações líquidas pagas para os membros do Ministério Público Militar se enquadraram na rubrica de venda de licença-prêmio em pecúnia. O valor desembolsado pelo MPM em 2021 para pagamento de licença-prêmio foi de R$ 8.912.885.

  • A tabela a seguir resume os valores pagos para cada membro dos órgãos do MPU. Os valores mediana e média são referentes à soma do valor anual recebido para cada membro no período de 2018 até 2023.

Código
pend_resumo %>%
  mutate(
    .after = total_pago,
    perc_total_pago = total_pago / sum(total_pago)
  ) %>%
  gt() %>%
  fmt_percent(
    columns = perc_total_pago,
    sep_mark = ".", dec_mark = ",", decimals = 1,
  ) %>%
  fmt_currency(
    columns = c(total_pago, media, mediana),
    sep_mark = ".", dec_mark = ",",
    currency = "BRL", decimals = 2,
    incl_space = TRUE
  ) %>%
  fmt_number(columns = starts_with("n_"), decimals = 0, sep_mark = ".", dec_mark = ",") %>%
  cols_label(
    item = "",
    total_pago = "**Total pago**",
    perc_total_pago = "**%**",
    media = "**Média<br>por membro**",
    mediana = "**Mediana<br>por membro**",
    n_membros = "**Quantidade<br>membros<br>beneficiados**",
    n_pagamentos = "**Quantidade de <br>pagamentos**",
    .fn = md
  ) %>%
  tab_options(table.width = pct(100)) %>%
  tab_header(
    title = md("**Venda de licença-prêmio - *por membro* (2019 - 2022)**"),
    subtitle = "Órgãos do Ministério Público da União"
  ) %>%
  tab_footnote(footnote = md(my_caption_md))
Venda de licença-prêmio - por membro (2019 - 2022)
Órgãos do Ministério Público da União
Total pago % Média
por membro
Mediana
por membro
Quantidade
membros
beneficiados
Quantidade de
pagamentos
Outras remunerações R$ 4.465.968.759,34 91,1% R$ 40.217,65 R$ 31.182,90 2.452 111.045
Licença-prêmio R$ 438.639.686,60 8,9% R$ 50.372,04 R$ 36.350,70 2.089 8.708
Fonte: DadosJusBr
Elaboração: Transparência Brasil

Tabela por órgão do MPU - total recebido por membro e órgão

Código
total_membros <- mpu %>%
  distinct(orgao, id_membro) %>%
  count(orgao, name = "total_membros") %>%
  mutate(orgao = case_when(
    orgao == "mpm" ~ "MPM",
    orgao == "mpdft" ~ "MP-DFT",
    orgao == "mpt" ~ "MPT",
    orgao == "mpf" ~ "MPF"
  )) %>%
  add_row(orgao = "MPU", total_membros = sum(.$total_membros))

total_membros %>%
  gt() %>%
  fmt_number(columns = total_membros, decimals = 0, sep_mark = ".", dec_mark = ",") %>%
  tab_header(
    title = md("**Quantidade de membros por órgão (2019-2022)**"),
    subtitle = "Órgãos do Ministério Público da União"
  ) %>%
  cols_label(
    orgao = "**Órgão**",
    total_membros = "**Número de membros**",
    .fn = md
  )
Quantidade de membros por órgão (2019-2022)
Órgãos do Ministério Público da União
Órgão Número de membros
MP-DFT 399
MPF 1.208
MPM 75
MPT 770
MPU 2.452
Código

n_contracheques <- penduricalhos %>%
  distinct(orgao, id_membro, mes, ano) %>%
  nrow()

n_contracheques_licenca_premio <- penduricalhos %>%
  filter(item == "Licença-prêmio") %>%
  distinct(orgao, id_membro, mes, ano) %>%
  nrow()

receberam_lp <- penduricalhos %>%
  filter(item == "Licença-prêmio") %>%
  distinct(orgao, id_membro) %>%
  nrow()

Os dados foram extraídos diretamente do banco de dados do DadosJusBr em putubrosetembro de 2023 e analisados em linguagem R. O dataset extraído possui 673706 lançamentos, em que cada linha é um item/rubrica associada a um contracheque de um único membro, mês e ano. Ao todo, foram observadas remunerações de 2452 membros dos quatro órgãos do MPU entre janeiro de 2019 e dezembro de 2022, perfazendo um total de 111047 contracheques coletados, dos quais 8708 continham pagamentos relativos à licença-prêmio para 2089 membros (85%).

Código
penduricalhos %>%
  filter(item == "Licença-prêmio") %>%
  mutate(orgao = case_when(
    orgao == "mpm" ~ "MPM",
    orgao == "mpdft" ~ "MP-DFT",
    orgao == "mpt" ~ "MPT",
    orgao == "mpf" ~ "MPF"
  )) %>%
  count(orgao, id_membro, wt = valor, name = "valor") %>%
  summarise(
    .by = orgao,
    total = sum(valor),
    valor_media = mean(valor),
    valor_mediana = median(valor),
    n_membros = n()) %>%
  bind_rows(pend_mpu) %>%
  left_join(total_membros) %>%
  mutate(perc = n_membros / total_membros) %>%
  select(-total_membros) %>%
  gt(rowname_col = "ano") %>%
  fmt_percent(
    columns = perc,
    sep_mark = ".", dec_mark = ",", decimals = 1,
  ) %>%
  fmt_currency(
    columns = total:valor_mediana,
    sep_mark = ".", dec_mark = ",",
    currency = "BRL", decimals = 2,
    incl_space = TRUE
  ) %>%
  fmt_number(columns = n_membros, decimals = 0, sep_mark = ".", dec_mark = ",") %>%
  cols_label(
    orgao = "**Órgão**",
    total = "**Total pago**",
    n_membros = "**Quantidade<br>membros<br>beneficiados**",
    valor_media = "**Média<br>por membro**",
    valor_mediana = "**Mediana<br>por membro**",
    perc = "**% total<br>membros**",
    .fn = md
  ) %>%
  tab_options(table.width = pct(100)) %>%
  tab_header(
    title = md("**Venda de licença-prêmio - *por membro* (2019 - 2022)**"),
    subtitle = "Órgãos do Ministério Público da União"
  ) %>%
  tab_style(
    style = cell_text(weight = "bold"),
    locations = cells_body(rows = orgao == "MPU")
  ) %>%
  tab_footnote(footnote = md(my_caption_md))
Venda de licença-prêmio - por membro (2019 - 2022)
Órgãos do Ministério Público da União
Órgão Total pago Média
por membro
Mediana
por membro
Quantidade
membros
beneficiados
% total
membros
MP-DFT R$ 87.232.733,30 R$ 245.035,77 R$ 220.944,80 356 89,2%
MPF R$ 241.206.598,57 R$ 231.706,63 R$ 213.364,36 1.041 86,2%
MPM R$ 25.438.735,34 R$ 348.475,83 R$ 330.932,66 73 97,3%
MPT R$ 84.761.619,39 R$ 136.933,15 R$ 102.787,78 619 80,4%
MPU R$ 438.639.686,60 R$ 209.975,92 R$ 184.647,37 2.089 85,2%
Fonte: DadosJusBr
Elaboração: Transparência Brasil

Série histórica de pagamentos de 2019 a 2022.

Venda de licença-prêmio - Ministério Público da União (2019 - 2022)

Código
valor_penduricalhos_yoy_orgaos <- penduricalhos %>%
  filter(item == "Licença-prêmio") %>%
  count(orgao, ano, id_membro, wt = valor, name = "valor") %>%
  mutate(orgao = case_when(
    orgao == "mpm" ~ "MPM",
    orgao == "mpdft" ~ "MP-DFT",
    orgao == "mpt" ~ "MPT",
    orgao == "mpf" ~ "MPF"
  )) %>%
  summarise(
    .by = c(orgao, ano),
    qt_membros = n(),
    valor = sum(valor)
  ) %>%
  mutate(ano = as.integer(ano))

valor_penduricalhos_yoy_mpu <- penduricalhos %>%
  filter(item == "Licença-prêmio") %>%
  count(orgao, ano, id_membro, wt = valor, name = "valor") %>%
  mutate(orgao = "MPU") %>%
  summarise(
    .by = c(orgao, ano),
    qt_membros = n(),
    valor = sum(valor)
  ) %>%
  mutate(ano = as.integer(ano))

p1 <- valor_penduricalhos_yoy_mpu %>%
  ggplot(aes(
    x = ano,
    y = valor,
    color = after_scale(adjust_transparency(darken(fill, .4), alpha = .6)),
    fill = orgao
  ))  +
  geom_line(show.legend = FALSE, linewidth = 1.2) +
  geom_point(size = 4, show.legend = FALSE, shape = 21)  +
  scale_fill_manual(values = c("MPU" = cores_dadosjusbr[["verde"]])) +
  scale_x_continuous(
    breaks = 2019:2022,
    expand = c(.04, .2),
    limits = c(2019, 2022)) +
  scale_y_continuous(
    labels = ~ . / 1e6,
    limits = c(0, 2.1e8)) +
  geom_text(
    size = 4, face = "bold",
    aes(label = numero(round(valor / 1e6, 1))),
    vjust = -2
  ) +
  theme(
    axis.ticks.x = element_blank(),
    panel.grid.minor.y = element_blank(),
    panel.grid.minor.x = element_blank(),
    panel.grid.major.x = element_blank()
  ) +
  coord_cartesian(xlim=c(2018.5, 2022.5), expand =  FALSE) +
  labs(
    #title = "Valores pagos em conversão de licença-prêmio em pecúnia",
    subtitle = "Valor pago por ano - em milhões de reais",
    x = NULL, y = "Milhões de reais"
  )

p2 <- valor_penduricalhos_yoy_mpu %>%
  ggplot(aes(
    x = ano, y = qt_membros,
    fill = orgao,
    color = after_scale(darken(fill, .4))
  )) +
  geom_col(show.legend = FALSE, width = .6) +
  scale_fill_manual(values = c("MPU" = cores_dadosjusbr[["verde"]])) +
  scale_y_continuous(
    limits = c(0, 2200),
    breaks = seq(0, 1500, 500)
  ) +
  scale_x_continuous(breaks = 2019:2022,
    expand = c(0.1, 0.1)) +
  geom_text(
    aes(label = numero(qt_membros)),
    vjust = -1
  ) +
  theme(
    axis.ticks.x = element_blank(),
    panel.grid.minor.y = element_blank(),
    panel.grid.minor.x = element_blank(),
    panel.grid.major.x = element_blank()
  ) +
  coord_cartesian(xlim=c(2018.5, 2022.5), expand =  FALSE) +
  labs(
    #title = "Beneficiados com pagamento de conversão de licença-prêmio em pecúnia",
    subtitle = "Quantidade de membros que receberam ao menos 1 vez",
    x = "Ano", y = "Quantidade de membros"
  )

p1 / p2 +
  plot_annotation(
    title = NULL,
    subtitle = "Somatória de todos os órgãos do MPU (2019 - 2022)",
    caption = my_caption
  ) & theme(plot.subtitle = element_text(hjust = .5))

Venda de licença-prêmio - órgãos do Ministério Público da União (2019 - 2022)

Código
p1 <- valor_penduricalhos_yoy_orgaos %>%
  ggplot(aes(
    x = ano,
    y = valor,
    color = after_scale(adjust_transparency(darken(fill, .4), alpha = .6)),
    fill = orgao
  ))  +
  geom_line(show.legend = FALSE, linewidth = 1.2) +
  geom_point(size = 4, show.legend = FALSE, shape = 21)  +
  scale_fill_manual(values = c(
      "MPM" = cores_dadosjusbr[["laranja"]],
      "MP-DFT" = cores_dadosjusbr[["cinza_azulado"]],
      "MPT" = cores_dadosjusbr[["cyan"]],
      "MPF" = cores_dadosjusbr[["lilas"]]
  )) +
  scale_x_continuous(
    breaks = 2019:2022,
    expand = c(.04, .2),
    limits = c(2019, 2022)) +
  scale_y_continuous(
    labels = ~ . / 1e6,
    limits = c(0, 9e7)
  ) +
  geom_text(
    data =. %>% filter(orgao %in% c("MPU", "MPF") & ano == 2019),
    aes(label = orgao), size = 4,
    vjust = 2, fontface = "bold"
  ) +
  geom_text(
    data =. %>% filter(orgao %in% c("MP-DFT") & ano == 2020),
    aes(label = orgao), size = 4,
    hjust = 1.5, vjust = -.2, fontface = "bold"
  ) +
  geom_text(
    data =. %>% filter(orgao %in% c("MPT") & ano == 2020),
    aes(label = orgao), size = 4,
    hjust = 1.8, vjust = 1.2, fontface = "bold"
  ) +
  geom_text(
    data = . %>% filter(orgao %in% c("MPU", "MPF")),
    aes(label = numero(round(valor / 1e6, 1))), size = 4,
    vjust = -1.5
  ) +
  geom_text(
    data = . %>% filter(orgao %in% c("MP-DFT") & ano != 2022),
    aes(label = numero(round(valor / 1e6, 1))), size = 4,
    vjust = -1.5
  ) +
  geom_text(
    data = . %>% filter(orgao %in% c("MP-DFT") & ano == 2022),
    aes(label = numero(round(valor / 1e6, 1))), size = 4,
    vjust = 1.5
  ) +
  geom_text(
    data = . %>% filter(orgao %in% c("MPT") & ano != 2022),
    aes(label = numero(round(valor / 1e6, 1))), size = 4,
    vjust = 2
  ) +
  geom_text(
    data = . %>% filter(orgao %in% c("MPT") & ano == 2022),
    aes(label = numero(round(valor / 1e6, 1))), size = 4,
    vjust = -1
  ) +
  geom_text(
    data =. %>% filter(orgao %in% c("MPM") & ano == 2019),
    aes(label = orgao), size = 4,
    hjust = 1.2, vjust = .6, fontface = "bold"
  ) +
  geom_text(
    data =. %>% filter(orgao %in% c("MPM") & ano != 2022),
    aes(label = numero(round(valor / 1e6, 1))), size = 4,
    vjust = -.9
  )  +
  geom_text(
    data =. %>% filter(orgao %in% c("MPM") & ano == 2022),
    aes(label = numero(round(valor / 1e6, 1))), size = 4,
    hjust = -.9
  ) +
  theme(
    axis.ticks.x = element_blank(),
    panel.grid.minor.y = element_blank(),
    panel.grid.minor.x = element_blank(),
    panel.grid.major.x = element_blank()
  ) +
  coord_cartesian(xlim=c(2018.5, 2022.5), expand =  FALSE) +
  labs(
    #title = "Valores pagos em conversão de licença-prêmio em pecúnia",
    subtitle = "Valor pago por ano - em milhões de reais",
    x = NULL, y = "Milhões de reais"
  )

p2 <- valor_penduricalhos_yoy_orgaos %>%
  complete(ano, orgao, fill = list(qt_membros = 0)) %>%
  mutate(orgao = fct_reorder(orgao, qt_membros)) %>%
  ggplot(aes(
    x = ano, y = qt_membros,
    fill = orgao,
    color = after_scale(darken(fill, .4))
  )) +
  geom_col(width = .6, position = "dodge") +
  scale_fill_manual(values = c(
      "MPM" = cores_dadosjusbr[["laranja"]],
      "MP-DFT" = cores_dadosjusbr[["cinza_azulado"]],
      "MPT" = cores_dadosjusbr[["cyan"]],
      "MPF" = cores_dadosjusbr[["lilas"]]
  )) +
  scale_y_continuous(
    limits = c(0, 1000),
    breaks = seq(0, 600, 300)
  ) +
  scale_x_continuous(breaks = 2019:2022,
    expand = c(0.1, 0.1)) +
  geom_text(
    position = position_dodge(width = .6),
    aes(label = if_else(qt_membros == 0, "", numero(qt_membros))),
    hjust = 0.5, vjust = -.7
  ) +
  theme(
    axis.ticks.x = element_blank(),
    panel.grid.minor.y = element_blank(),
    panel.grid.minor.x = element_blank(),
    panel.grid.major.x = element_blank(),
    legend.position = c(0.8, 0.95),
    legend.direction = "horizontal"
  ) +
  coord_cartesian(xlim=c(2018.5, 2022.5), expand =  FALSE) +
  guides(fill = guide_legend(
    title = NULL,
    label.position = "bottom",
    label.hjust = .5,
    keywidth = unit(12, "mm")
  )) +
  labs(
    #title = "Beneficiados com pagamento de conversão de licença-prêmio em pecúnia",
    subtitle = "Quantidade de membros que receberam ao menos 1 vez",
    x = "Ano", y = "Quantidade de membros"
  )

p1 / p2 +
  plot_annotation(
    title = NULL,
    subtitle = "Valores desagregados por órgãos do MPU (2019 - 2022)",
    caption = my_caption
  ) & theme(plot.subtitle = element_text(hjust = .5))

Valor pago e quantidade de membros - por órgão e ano

Código
valor_penduricalhos_yoy_orgaos %>%
  bind_rows(valor_penduricalhos_yoy_mpu) %>%
  gt(groupname_col = "orgao") %>%
  fmt_currency(
    valor,
    sep_mark = ".",
    dec_mark = ",",
    currency = "BRL"
  ) %>%
  cols_label(
    ano = "**ANO**",
    qt_membros = "**QT. MEMBROS**",
    valor = "**VALOR (R$)**",
    .fn = md
  ) %>%
  tab_options(table.width = pct(100)) %>%
  tab_header(
    title = md("**Conversão de licença-prêmio em pecúnia para membros ativos (2019 - 2022)**"),
    subtitle = "Ministério Público da União"
  ) %>%
  tab_footnote(footnote = md(my_caption_md))
Conversão de licença-prêmio em pecúnia para membros ativos (2019 - 2022)
Ministério Público da União
ANO QT. MEMBROS VALOR (R$)
MP-DFT
2020 334 R$30.552.636,08
2021 279 R$37.669.295,39
2022 203 R$19.010.801,83
MPF
2019 826 R$44.598.492,04
2020 913 R$77.036.037,54
2021 681 R$62.479.820,72
2022 648 R$57.092.248,27
MPM
2019 66 R$4.519.364,61
2020 68 R$6.673.991,98
2021 50 R$8.912.884,94
2022 50 R$5.332.493,81
MPT
2020 463 R$27.643.318,20
2021 374 R$33.883.087,05
2022 361 R$23.235.214,14
MPU
2020 1778 R$141.905.983,80
2021 1384 R$142.945.088,10
2022 1262 R$104.670.758,05
2019 892 R$49.117.856,65
Fonte: DadosJusBr
Elaboração: Transparência Brasil

Dispersão - total recebido por membro

  • O gráfico a seguir apresenta a amplitude e a distribuição dos valores recebidos pelos membros do MPU.
Código
#|
is_outlier <- function(x) {
  return(x < quantile(x, 0.25) - 1.5 * IQR(x) | x > quantile(x, 0.75) + 1.5 * IQR(x))
}

penduricalhos %>%
  filter(item == "Licença-prêmio") %>%
  count(orgao, id_membro, wt = valor, name = "valor") %>%
  mutate(
    orgao = case_when(
      orgao == "mpm" ~ "MPM",
      orgao == "mpdft" ~ "MP-DFT",
      orgao == "mpt" ~ "MPT",
      orgao == "mpf" ~ "MPF"
    ),
    orgao = fct_reorder(orgao, valor, median)
  ) %>%
  group_by(orgao) %>%
  mutate(outlier = is_outlier(valor)) %>%
  ungroup() %>%
  ggplot(aes(
    y = valor,
    x = "",
    fill = orgao,
    color = after_scale(darken(fill, .4))
  )) +
  facet_wrap(~orgao, ncol = 1, scales = "free_x") +
  stat_halfeye(
    alpha = .5,
    point_interval = median_qi,
    width = 1,
    expand = FALSE,
     show.legend = FALSE,
    .width = c(0.66, 0.95),
    interval_size_range = c(2, 3.5),
    fatten_point = 3,
    align = align_boundary(at = 0)
  ) +
  geom_point(data = . %>% filter(outlier), show.legend = FALSE) +
  coord_flip() +
  scale_y_continuous(
    labels = ~ . / 1e3,
    limits = c(-1e4, 8e5),
    expand = c(0, 0.1)
  ) +
  scale_fill_manual(
    values = c(
      "MPM" = cores_dadosjusbr[["laranja"]],
      "MP-DFT" = cores_dadosjusbr[["cinza_azulado"]],
      "MPT" = cores_dadosjusbr[["cyan"]],
      "MPF" = cores_dadosjusbr[["lilas"]]
    )
  ) +
  theme(
    panel.grid.minor.x = element_blank(),
    panel.grid.major.y = element_blank(),
    axis.text.x = element_text(face = "plain")
  ) +
  labs(
    title = glue(
      "Distribuição dos pagamentos de licença-prêmio para os membros\n",
      "Valor acumulado entre 2018 e 2022"
    ),
    subtitle = glue(
      "O ponto maior ao meio representa a mediana dos pagamentos\n",
      "Os pontos menores representam outliers\n"
    ),
    x = NULL, y = "Milhares de reais",
    caption = my_caption
  )

Distribuição da soma dos valores recebidos por venda de licença-prêmio por membro entre 2019 e 2022.

Código
pend_400k <- penduricalhos %>%
  filter(item == "Licença-prêmio") %>%
  count(orgao, id_membro, wt = valor, name = "valor") %>%
  filter(valor > 399999.99)
  • Ao todo, 201 membros reeberam acima de R$ 400 mil reais em licença-prêmio, considerando a soma dos pagamentos.
Código
make_html_tag <- \(vec, cor) glue("<span style='color: {cor}'>{vec}</span>")

penduricalhos %>%
  filter(item == "Licença-prêmio") %>%
  mutate(
    cor = case_when(
      orgao == "mpm" ~ cores_dadosjusbr[["laranja"]],
      orgao == "mpdft" ~ cores_dadosjusbr[["cinza_azulado"]],
      orgao == "mpt" ~ cores_dadosjusbr[["cyan"]],
      orgao == "mpf" ~ cores_dadosjusbr[["lilas"]]
    ),
    orgao = case_when(
      orgao == "mpm" ~ "Ministério Público Militar | MPM",
      orgao == "mpdft" ~ "Ministério Público do Distrito Federal e Territórios | MP-DFT",
      orgao == "mpt" ~ "Ministério Público do Trabalho | MPT",
      orgao == "mpf" ~ "Ministério Público Federal | MPF"
    )
  ) %>%
  count(id_membro, orgao, cor, wt = valor, name = "valor") %>%
  mutate(
    fx_valor = case_when(
      valor < 50000 ~ "Até R$ 49.999",
      valor <= 1e5 ~ "Entre R$ 50.000 e 149.999",
      valor <= 3e5 ~ "Entre R$ 150.000 e 299.999",
      .default = "Acima de R$ 300.000"
    ) %>%
      ordered(levels = c(
        "Até R$ 49.999",
        "Entre R$ 50.000 e 149.999",
        "Entre R$ 150.000 e 299.999",
        "Acima de R$ 300.000"
      ))
  ) %>%
  count(fx_valor, orgao, cor) %>%
  mutate(orgao = fct_reorder(orgao, -n)) %>%
  complete(orgao, fx_valor, fill = list(n = 0)) %>%
  mutate(orgao = make_html_tag(orgao, darken(cor, .4))) %>%
  ggplot(aes(
    y = fx_valor,
    x = n,
    fill = cor,
    color = after_scale(colorspace::darken(fill, .4))
  )) +
  geom_col(show.legend = FALSE, alpha = .8) +
  geom_text(hjust = -.7, aes(
    label = scales::number(n, big.mark = ".", decimal.mark = ",", accuracy = 1)
  )) +
  facet_wrap(~orgao, nrow = 4, strip.position = "top") +
  scale_fill_identity() +
  # scale_fill_manual(
  #   values = c(
  #     "Ministério Público Militar | MPM" = cores_dadosjusbr[["laranja"]],
  #     "Ministério Público do Distrito Federal e Territórios | MP-DFT" = cores_dadosjusbr[["cinza_azulado"]],
  #     "Ministério Público do Trabalho | MPT" = cores_dadosjusbr[["cyan"]],
  #     "Ministério Público Federal | MPF" = cores_dadosjusbr[["lilas"]]
  #   )
  # ) +
  scale_x_continuous(
    expand = c(0.01, 0),
    limits = c(0, 700),
    labels = ~ scales::number(., big.mark = ".", decimal.mark = ",", accuracy = 1)
  ) +
  theme(
    axis.ticks.x = element_blank(),
    axis.title.y = element_text(),
    axis.text.y = element_text(face = "plain", size = 10),
    axis.title.x = element_text(face = "plain", size = 10, hjust = .5),
    strip.text = element_markdown(),
    panel.grid.minor = element_blank(),
    panel.grid.major.y = element_blank()
  ) +
  labs(
    title = NULL,
    subtitle = "Órgãos do Ministério Público da União",
    x = "Quantidade de membros que receberam indenizações de licença-prêmio",
    y = NULL,
    caption = my_caption
  )

Parcelas

  • Os pagamentos não são feitos em uma única parcela e é comum os membros receberem mais de uma vez. A tabela a seguir resume os valores médios e medianos de cada pagamento entre o ano de 2018 e 2023.
Código
pend_pagtos <- penduricalhos %>%
  summarise(
    .by = item,
    media = mean(valor),
    mediana = median(valor),
    total = sum(valor),
    n_pagamentos = n(),
    n_membros = n_distinct(glue("{id_membro}-{orgao}"))
  )

qtd_membro_ano <- penduricalhos %>%
  filter(item == "Licença-prêmio") %>%
  summarise(
    .by = ano,
    n_membros = n_distinct(glue("{id_membro}-{orgao}"))
  )

pend_pagtos_ano_orgao <- penduricalhos %>%
  summarise(
    .by = c(orgao, item, ano),
    media = mean(valor),
    mediana = median(valor)
  ) %>%
  arrange(ano)

penduricalhos %>%
  filter(item == "Licença-prêmio") %>%
  summarise(
    .by = ano,
    total = sum(valor),
    valor_media = mean(valor),
    valor_mediana = median(valor),
    n_pagamentos = n()
  ) %>%
  arrange(ano) %>%
  left_join(qtd_membro_ano) %>%
  gt(rowname_col = "ano") %>%
  fmt_currency(
    columns = total:valor_mediana,
    sep_mark = ".", dec_mark = ",",
    currency = "BRL", decimals = 0,
    incl_space = TRUE
  ) %>%
  fmt_number(
    columns = c(n_pagamentos, n_membros),
    decimals = 0,
    sep_mark = ".",
    dec_mark = ","
  ) %>%
  cols_label(
    total = "**Total pago**",
    n_pagamentos = "**Quantidade<br>pagamentos**",
    n_membros = "**Qtde. de membros<br>que receberam**",
    valor_media = "**Média de<br>cada pagamento**",
    valor_mediana = "**Mediana de<br>cada pagamento**",
    .fn = md
  ) %>%
  tab_options(table.width = pct(100)) %>%
  tab_header(
    title = md("**Venda de licença-prêmio - *parcelas* (2019 - 2022)**"),
    subtitle = "Órgãos do Ministério Público da União - membros ativos"
  ) %>%
  grand_summary_rows(
    columns = c(valor_media),
    fns = list(
      label = md("**Total**"),
      fn = ~ reais(pend_pagtos$media[2]),
      id = "Total"
    ),
    fmt = list(~ fmt_currency(.,
      sep_mark = ".", dec_mark = ",",
      currency = "BRL", decimals = 0,
      incl_space = TRUE
    ))
  ) %>%
  grand_summary_rows(
    columns = c(total),
    fns = list(
      label = md("**Total**"),
      fn = ~ reais(pend_pagtos$total[2]),
      id = "Total"
    ),
    fmt = list(~ fmt_currency(.,
      sep_mark = ".", dec_mark = ",",
      currency = "BRL", decimals = 0,
      incl_space = TRUE
    ))
  ) %>%
  grand_summary_rows(
    columns = c(valor_mediana),
    fns = list(
      label = md("**Total**"),
      fn = ~ reais(pend_pagtos$mediana[2]),
      id = "Total"
    ),
    fmt = list(~ fmt_currency(.,
      sep_mark = ".", dec_mark = ",",
      currency = "BRL", decimals = 0,
      incl_space = TRUE
    ))
  ) %>%
  grand_summary_rows(
    columns = c(n_pagamentos),
    fns = list(label = md("**Total**"), fn = ~ numero(pend_pagtos$n_pagamentos[2]), id = "Total"),
    fmt = list(~ fmt_number(.,
      sep_mark = ".", dec_mark = ",",
      decimals = 0
    ))
  ) %>%
  grand_summary_rows(
    columns = c(n_membros),
    fns = list(label = md("**Total**"), fn = ~ numero(pend_mpu$n_membros), id = "Total"),
    fmt = list(~ fmt_number(.,
      sep_mark = ".", dec_mark = ",",
      decimals = 0
    ))
  ) %>%
  tab_footnote(footnote = md(my_caption_md))
Venda de licença-prêmio - parcelas (2019 - 2022)
Órgãos do Ministério Público da União - membros ativos
Total pago Média de
cada pagamento
Mediana de
cada pagamento
Quantidade
pagamentos
Qtde. de membros
que receberam
2019 R$ 49.117.857 R$ 55.065 R$ 50.534 892 892
2020 R$ 141.905.984 R$ 34.969 R$ 33.689 4.058 1.778
2021 R$ 142.945.088 R$ 103.284 R$ 83.866 1.384 1.384
2022 R$ 104.670.758 R$ 44.090 R$ 35.462 2.374 1.262
Total R$ 438.639.687 R$ 50.372,04 R$ 36.350,70 8.708 2.089
Fonte: DadosJusBr
Elaboração: Transparência Brasil

Parcelas por ano e órgão

Código
penduricalhos %>%
  filter(item == "Licença-prêmio") %>%
  mutate(orgao = case_when(
      orgao == "mpm" ~ "MPM",
      orgao == "mpdft" ~ "MP-DFT",
      orgao == "mpt" ~ "MPT",
      orgao == "mpf" ~ "MPF"
  )) %>%
  summarise(
    .by = c(orgao, id_membro, ano),
    n_parcelas = n(),
    valor = sum(valor)
  ) %>%
  ggplot(aes(
    x = n_parcelas,
    y = valor,
    fill = orgao,
    color = after_scale(darken(fill, .4))
  )) +
  geom_jitter(show.legend = FALSE, shape = 21, alpha = .4) +
  facet_grid(orgao ~ ano) +
  scale_y_continuous(labels = ~ . /1e3) +
  scale_fill_manual(
    name = "Órgãos",
    values = c(
      "MPM" = cores_dadosjusbr[["laranja"]],
      "MP-DFT" = cores_dadosjusbr[["cinza_azulado"]],
      "MPT" = cores_dadosjusbr[["cyan"]],
      "MPF" = cores_dadosjusbr[["lilas"]]
  )) +
  labs(
    title = "Conversão de licença-prêmio em pecúnia",
    subtitle = "Número de parcelas e valor anual recebido",
    caption = my_caption,
    x = "Número de parcelas", y = "Soma do valor recebido no ano\n(milhares de reais)"
  )

Parcelas por órgão

Código
penduricalhos %>%
  filter(item == "Licença-prêmio") %>%
  add_count(orgao, id_membro, name = "parcelas_recebidas") %>%
  count(orgao, id_membro, parcelas_recebidas, wt = valor, name = "valor_total") %>%
  mutate(
    orgao = case_when(
      orgao == "mpm" ~ "MPM",
      orgao == "mpdft" ~ "MP-DFT",
      orgao == "mpt" ~ "MPT",
      orgao == "mpf" ~ "MPF"
    )
  ) %>%
  ggplot(aes(
    x = parcelas_recebidas,
    y = valor_total,
    fill = factor(orgao), color = after_scale(darken(fill, .4))
  )) +
  facet_wrap(~orgao, scales = "free_x") +
  geom_jitter(shape = 21, size = 2, alpha = .6) +
  scale_y_continuous(labels = ~ reais(. / 1e3)) +
  scale_x_continuous(breaks = 1:7L) +
  scale_fill_manual(
    name = "Órgãos",
    values = c(
      "MPM" = cores_dadosjusbr[["laranja"]],
      "MP-DFT" = cores_dadosjusbr[["cinza_azulado"]],
      "MPT" = cores_dadosjusbr[["cyan"]],
      "MPF" = cores_dadosjusbr[["lilas"]]
  )) +
  theme(
    axis.ticks.x = element_blank(),
    panel.grid.minor = element_blank()
  ) +
  labs(
    title = "Relação positiva entre o número de parcelas e o total recebido",
    subtitle = "cada ponto no gráfico representa um procurador do MPU que recebeu conversão\nde licença-prêmio em pecúnia",
    x = "Quantidade de parcelas recebidas", y = "Milhares de reais",
    caption = my_caption
  )

Pagamentos por ano - membros receram em 4 anos consecutivos

Código
anos_recebendo_penduricalhos <- penduricalhos %>%
  filter(item == "Licença-prêmio") %>%
  distinct(id_membro = glue("{orgao}-{id_membro}"), ano) %>%
  count(id_membro) %>%
  add_count(n, name = "n_membros_anos")

resume_anos_recebendo_penduricalhos <- anos_recebendo_penduricalhos %>%
  count(n, name = "n_membros")

Observa-se que entre 2019 e 2022, 1734 membros solicitaram e receberam a venda de licença-prêmio por pelo menos duas vezes. NA membros no MPF e MPU fizeram a venda de licença-prêmio por quatro anos consecutivos e, evidentemente, acumularam os maiores valores recebidos. Apenas uma minoria (355) acabou recebendo uma única vez no quadriênio.

Venda de licença-prêmio como rotina anual: quantidade de vezes em que o benefício foi pago por membro e órgão no quadriênio (2019 - 2022)

Código
penduricalhos %>%
  filter(item == "Licença-prêmio") %>%
  mutate(id_membro = glue("{orgao}-{id_membro}")) %>%
  left_join(anos_recebendo_penduricalhos) %>%
  mutate(
    recebeu_quantos_anos = case_when(
      n == 1 ~ glue("<p style:'line-height:0.7'>1 vez <br> <b style='font-size:10px'>{n_membros_anos} membros</b></p>" ),
      n == 2 ~ glue("<p style:'line-height:0.7'>2 vezes<br><b style='font-size:10px'>{n_membros_anos} membros</b></p>"),
      n == 3 ~ glue("<p style:'line-height:0.7'>3 vezes<br><b style='font-size:10px'>{n_membros_anos} membros</b></p>"),
      n == 4 ~ glue("<p style:'line-height:0.7'>4 vezes<br><b style='font-size:10px'>{n_membros_anos} membros</b></p>"),
    ),
    recebeu_quantos_anos = fct_reorder(recebeu_quantos_anos, -n)
  ) %>%
  # add_count(orgao, id_membro, name = "parcelas_recebidas") %>%
  count(orgao, id_membro, recebeu_quantos_anos, wt = valor, name = "valor_total") %>%
  mutate(
    orgao = case_when(
      orgao == "mpm" ~ "MPM",
      orgao == "mpdft" ~ "MP-DFT",
      orgao == "mpt" ~ "MPT",
      orgao == "mpf" ~ "MPF"
    ),
    orgao = fct_reorder(orgao, -valor_total, sum)
  ) %>%
  group_by(orgao, recebeu_quantos_anos) %>%
  mutate(
    valor_total_mediana = median(valor_total)
  ) %>%
  ungroup() %>%
  ggplot(aes(
    y = recebeu_quantos_anos,
    x = valor_total,
    fill = orgao,
    color = after_scale(darken(fill, .6))
  )) +
  facet_wrap(orgao ~ ., nrow = 1) +
  geom_jitter(
    shape = 21,
    size = 1.8,
    alpha = .6,
    show.legend = FALSE,
    width = .6,
    height = .25
  ) +
  geom_point(
    aes(x = valor_total_mediana),
    size = 15, shape = 108, show.legend = FALSE
  ) +
  scale_x_continuous(labels = ~ . / 1e3, expand = c(0, 0.1), limits = c(-1e5, 8e5)) +
  scale_fill_manual(
    name = "Órgãos",
    values = c(
      "MPM" = darken(cores_dadosjusbr[["laranja"]], .2),
      "MP-DFT" = cores_dadosjusbr[["cinza_azulado"]],
      "MPT" = cores_dadosjusbr[["cyan"]],
      "MPF" = cores_dadosjusbr[["lilas"]]
    )
  ) +
  theme(
    axis.ticks.x = element_blank(),
    panel.grid.minor = element_blank(),
    panel.grid.major.y = element_blank(),
    axis.text.x = element_text(size = 10, hjust = .5),
    axis.text.y = element_markdown(size = 10, hjust = 0),
    axis.title.x = element_text(hjust = .5, vjust = -5),
    axis.title.y = element_text(hjust = .5, vjust = 5)
  ) +
  labs(
    title = NULL,
    subtitle = glue(
      "Cada ponto representa um membro e a quantidade de anos em que o benefício foi concedido (eixo y)\n",
      "no quadriênio (2019-2022). O valor somado do benefício recebido está representado no eixo x e os\n",
      "traços representam a mediana desses valores."
    ),
    caption = my_caption,
    y = "Número de vezes que um membro\nvendeu licença-prêmio entre 2019 e 2022",
    x = glue(
      "Soma do valor recebido por cada procurador do MPU",
      " em conversão de licença-prêmio em pecúnia",
      "\nMilhares de reais (2019 - 2022)",
    )
  )

Tabela com pagamentos médios por ano

Código
total_membros_ano <- mpu %>%
  distinct(ano, id_membro) %>%
  count(ano, name = "total_membros_ano")

pend_mpu <- penduricalhos %>%
  filter(item == "Licença-prêmio") %>%
  left_join(anos_recebendo_penduricalhos) %>%
  count(orgao, id_membro, ano, wt = valor, name = "valor") %>%
  mutate(ano = "2019 - 2022") %>%
  summarise(
    .by = ano,
    total_pago = sum(valor),
    media_anual = mean(valor),
    mediana_anual = median(valor),
    qt_membros_receberam = n_distinct(glue("{id_membro}-{orgao}")))

penduricalhos %>%
  filter(item == "Licença-prêmio") %>%
  left_join(anos_recebendo_penduricalhos) %>%
  count(orgao, id_membro, ano, wt = valor, name = "valor") %>%
  summarise(
    .by = ano,
    total_pago = sum(valor),
    media_anual = mean(valor),
    mediana_anual = median(valor),
    qt_membros_receberam = n_distinct(id_membro)
  ) %>%
  left_join(total_membros_ano) %>%
  mutate(perc_membros = qt_membros_receberam / total_membros_ano) %>%
  select(-total_membros_ano) %>%
  arrange(ano) %>%
  mutate(ano = as.character(ano)) %>%
  bind_rows(pend_mpu) %>%
  gt() %>%
  fmt_currency(
    c(total_pago, media_anual, mediana_anual),
    sep_mark = ".",
    dec_mark = ",",
    currency = "BRL", decimals = 0,
      incl_space = TRUE
  ) %>%
  fmt_percent(
    perc_membros,
    decimals = 1,
    dec_mark = ",",
    sep_mark = "."
  )  %>%
  fmt_number(
    qt_membros_receberam,
    decimals = 0,
    dec_mark = ",",
    sep_mark = "."
  ) %>%
  cols_label(
    ano = "**Ano**",
    qt_membros_receberam = "**Qtd. de membros<br>que receberam**",
    total_pago = "**Valor pago (R$)**",
    media_anual = "**Média**",
    mediana_anual = "**Médiana**",
    perc_membros = "**%**",
    .fn = md
  ) %>%
  tab_options(table.width = pct(100)) %>%
  tab_header(
    title = md("**Conversão de licença-prêmio em pecúnia (2019 - 2022)**"),
    subtitle = "Ministério Público da União - membros ativos"
  ) %>%
  tab_style(
    style = cell_text(weight = "bold"),
    locations = cells_body(rows = ano == "2019 - 2022")
  ) %>%
  tab_style(
    style = cell_text(align = "center"),
    locations = cells_column_labels(columns = c(ano, qt_membros_receberam))
  ) %>%
  tab_style(
    style = cell_text(align = "center"),
    locations = cells_body(columns = c(ano, qt_membros_receberam))
  ) %>%
  sub_missing(
    perc_membros,
    missing_text = ""
  ) %>%
  tab_footnote(footnote = md(my_caption_md))
Conversão de licença-prêmio em pecúnia (2019 - 2022)
Ministério Público da União - membros ativos
Ano Valor pago (R$) Média Médiana Qtd. de membros
que receberam
%
2019 R$ 49.117.857 R$ 55.065 R$ 50.534 892 49,7%
2020 R$ 141.905.984 R$ 79.812 R$ 82.516 1.489 84,3%
2021 R$ 142.945.088 R$ 103.284 R$ 83.866 1.186 66,6%
2022 R$ 104.670.758 R$ 82.940 R$ 94.335 1.105 62,2%
2019 - 2022 R$ 438.639.687 R$ 82.513 R$ 72.715 2.089
Fonte: DadosJusBr
Elaboração: Transparência Brasil

Venda de licença-prêmio no MPF - dados obtidos via Lei de Acesso a Informação

Código
mpf_lai <- tibble(
  ano = 2015:2023,
  qt_membros = c(49, 85, 696, 731, 851, 923, 716, 732, 739),
  valor = c(
    6973177.51,
    6087050.82,
    21412906.25,
    8516236.77,
    49735083.2,
    79983959.29,
    68995113.58,
    68333973.6,
    22437218.1
  ),
  orgao = "MPF"
)

mpf_lai <- mpf_lai %>% filter(ano != 2023)

p1 <- mpf_lai %>%
  ggplot(aes(
    x = ano,
    y = valor,
    fill = orgao,
    color = after_scale(darken(fill, .4))
  )) +
  geom_line(show.legend = FALSE, linewidth = 1.5) +
  geom_point(size = 3, show.legend = FALSE) +
  scale_x_continuous(breaks = 2015:2022) +
  scale_y_continuous(
    labels = ~ . / 1e6,
    limits = c(0, max(mpf_lai$valor) * 1.15)
  ) +
  scale_fill_manual(values = c("MPF" = cores_dadosjusbr[["lilas"]])) +
  geom_text(
    aes(label = numero(round(valor / 1e6, 1))),
    vjust = -2
  ) +
  theme(
    axis.ticks.x = element_blank(),
    panel.grid.minor.y = element_blank(),
    panel.grid.minor.x = element_blank()
  ) +
  coord_cartesian(xlim=c(2015,2022)) +
  labs(
    #title = "Valores pagos em conversão de licença-prêmio em pecúnia",
    subtitle = "Valor anual pago para membros ativos e inativos - em milhões de reais - (2015 - 2023)",
    x = "Ano", y = "Milhões de reais"
  )
Código
p2 <- mpf_lai %>%
  ggplot(aes(
    x = ano,
    y = qt_membros,
    fill = orgao,
    color = after_scale(darken(fill, .4))
  )) +
  geom_col(alpha = .6,  show.legend = FALSE, width = .7) +
  scale_x_continuous(breaks = 2015:2022) +
  scale_y_continuous(
    limits = c(0, max(mpf_lai$qt_membros) * 1.15)
  ) +
  scale_fill_manual(values = c("MPF" = cores_dadosjusbr[["lilas"]])) +
  geom_text(
    aes(label = numero(qt_membros)),
    vjust = -1
  ) +
  theme(
    axis.ticks.x = element_blank(),
    panel.grid.minor.y = element_blank(),
    panel.grid.minor.x = element_blank(),
    panel.grid.major.x = element_blank()
  ) +
  coord_cartesian(xlim=c(2015,2022), expand = TRUE) +
  labs(
    #title = "Beneficiados com pagamento de conversão de licença-prêmio em pecúnia",
    subtitle = "Quantidade de membros ativos e inativos que receberam",
    x = "Ano", y = "Quantidade de membros do MPF",
  )
Código
p1 / p2 +
  plot_annotation(
    title = NULL,
    subtitle = "Pagamentos de licença Prêmio - Ministério Público Federal (2015 - 2023)",
    caption = "Fonte: MPF via Lei de Acesso a Informação\nElaboração: Transparência Brasil"
  ) & theme(plot.subtitle = element_text(hjust = .5))

Comparativo entre as bases

Código
49962784 + 274
#> [1] 49963058
77036038 + 1495271
#> [1] 78531309


mpf_agosto_ativos <- tibble(
  ano = 2019:2022,
  qt_membros = c(826, 826, 681, 649),
  valor_ativos = c(
    44598492.04,
    49962784.08,
    62479820.72,
    57092248.27
  ),
  orgao = "MPF",
  fonte = "Coleta do DadosJusBr em Agosto - 2023"
)

lp_12_2021 <- sum(
  262024.19,
  432926.93,
  606199.83,
  341894.85,
  309825.18,
  35462.22,
  70924.44,
  61668.61
)

lp_03_2022 <- sum(
  64104.12
)

lp_12_2022 <- sum(
  42909.99,
  25705.04,
  10379.78,
  175778.61,
  15692.67,
  114210.29,
  35857.43,
  85225.48,
  54986.59,
  109447.96,
  19499.65,
  62225.25,
  79963.40,
  41006.29
)

mpf_inativos_agosto <- tibble::tribble(
  ~orgao, ~ano, ~mes, ~valor_inativos,
  "MPF", 2020, 11, 152217.53,
  "MPF", 2020, 12, 122148.06,
  "MPF", 2019, 12, 2750047.76,
  "MPF", 2021, 12, lp_12_2021,
  "MPF", 2022, 03, lp_03_2022,
  "MPF", 2022, 08, 131562.52,
  "MPF", 2022, 10, 67378.22,
  "MPF", 2022, 12, lp_12_2022
)

mpf_agosto <- mpf_inativos_agosto %>%
  summarise(.by = c(orgao, ano), valor_inativos = sum(valor_inativos)) %>%
  left_join(mpf_agosto_ativos) %>%
  mutate(valor = valor_ativos + valor_inativos) %>%
  select(-valor_ativos, -valor_inativos)

total_membros_orgao_ano <- penduricalhos %>%
  filter(item != "Outras remunerações") %>%
  distinct(ano, orgao, id_membro) %>%
  count(orgao, ano, name = "qt_membros")

mpf_inativos_novembro <- tribble(
  ~orgao, ~ano, ~valor_inativos,
  "MPF", 2019, 2750047.76,
  "MPF", 2020, 1495271.24,
  "MPF", 2021, 2148441.67,
  "MPF", 2022, 1583571.69
) %>% mutate(fonte = "Coleta do DadosJusBr em Novembro - 2023")

mpu %>%
  filter(orgao == "mpf") %>%
  filter(item == "conversao de licenca premio em pecunia") %>%
  count(ano, orgao, wt = valor, name = "valor") %>%
  left_join(total_membros_orgao_ano) %>%
  mutate(orgao = "MPF", fonte = "Coleta do DadosJusBr em Novembro - 2023") %>%
  bind_rows(mpf_agosto) %>%
  left_join(mpf_inativos_novembro) %>%
  mutate(
    valor_inativos = replace_na(valor_inativos, 0),
    valor = valor + valor_inativos
  ) %>%
  bind_rows(mpf_lai) %>%
  mutate(fonte = replace_na(fonte, "Dados obtidos via LAI")) %>%
  filter(ano >= 2019) %>%
  select(-valor_inativos) %>%
  ggplot(aes(
    x = ano,
    y = valor,
    fill = fonte,
    color = after_scale(darken(fill, .4))
  )) +
  geom_col(position = "dodge", width = .8) +
  geom_text(
    aes(label = numero(valor / 1e5)),
    vjust = -1, size = 4, fontface = "bold",
    position = position_dodge(width = .8)
  ) +
  scale_fill_manual(values = c(
    "Coleta do DadosJusBr em Agosto - 2023" = lighten(cores_dadosjusbr[["lilas"]], .4),
    "Coleta do DadosJusBr em Novembro - 2023" = cores_dadosjusbr[["lilas"]],
    "Dados obtidos via LAI" = cores_dadosjusbr[["cyan"]]
  )) +
  scale_linetype_identity() +
  scale_y_continuous(
    expand = c(0, 0.01),
    limits = c(0, 12e7),
    name = "Milhões de reais",
    labels = ~ . / 1e6
  ) +
  theme(
    plot.subtitle = element_markdown(),
    panel.grid.minor.y = element_blank(),
    panel.grid.minor.x = element_blank(),
    axis.text.x = element_text(size = 18, vjust = -3),
    axis.line.x = element_line(),
    legend.position = c(.75, .9)
  ) +
  labs(
    title = "Conversão de licença-prêmio em pecúnia - Ministério Público Federal (2019 - 2022)",
    subtitle = "Em milhões de reais, por fonte de coleta dos dados. Membros ***ativos*** e ***inativos***", ,
    x = "Ano", color = "Fonte dos dados:"
  ) +
  guides(color = guide_legend(reverse = TRUE))

Código

total_mpf <- read_csv(here("data/09-extracao-mps-28-08-2023.csv")) %>%
  filter(name == "mpf") %>%
  filter(ano != 2018) %>%
  filter(ano != 2023) %>%
  mutate(orgao = "MPF") %>%
  count(orgao, ano, wt = valor, name = "valor_total_agosto") %>%
  left_join(transmute(mpf_agosto, ano = ano, orgao = "MPF", orgao = orgao, valor_lp_agosto = valor)) %>%
  left_join(
    pend_ano_orgao %>%
      filter(orgao == "mpf") %>%
      mutate(orgao = "MPF") %>%
      select(-perc) %>%
      pivot_wider(names_from = item, values_from = total_pago) %>%
      rename(valor_lp_novembro = `Licença-prêmio`, valor_total_novembro = `Outras remunerações`)
  ) %>%
  mutate(
    diferenca_total = valor_total_novembro - valor_total_agosto,
    diferenca_lp = valor_lp_novembro - valor_lp_agosto
  )

Em resposta a pedido de acesso à informação protocolado pela Transparência Brasil, o MPF encaminhou a série histórica de pagamentos em pecúnia da licença-prêmio de 2015 a 2022 de membros ativos e inativos. Os dados, entretanto, apresentaram divergência em relação aos disponibilizados no portal de transparência. A diferença mais gritante foi verificada em 2020: enquanto via LAI foi informado um total de R$ 80 mIlhões, na transparência ativa constam R$ 0 milhões para ativos e $ 274 mil para inativos. Ou seja: os dados publicizados para consulta pública estavam subnotificados em R$ numero((mpf_lai[6, 3][[1]] - mpf_agosto[2, 3][[1]])/1e6)` mIlhões milhões, considerando apenas um ano.

A Transparência Brasil requisitou, novamente via LAI, esclarecimentos do MPF sobre a diferença encontrada. Em resposta, a Secretaria-Geral da PGR apenas informou que “os dados foram ajustados no Portal da Transparência”. O DadosJusBR recoletou todos os contracheques dos membros ativos do MPF, de 2019 a 2023. Apenas os de 2020 apresentaram mudanças, com uma inclusão de R$ 55 milhões em relação ao que era disponibilizado até então, sendo R$ -27 milhões relativos a licença-prêmio.

Ou seja: por três anos, o pagamento de pecúnia de licença-prêmio informado pelo MPF foi ao menos 9.326.297% menor do que o realmente despendido em 2020, e atualizado apenas após a intervenção da Transparência Brasil para a formulação deste relatório. Isso suscita dúvidas sobre a integridade e completude das informações disponibilizadas pelos órgãos do Ministério Público no Portal de Transparência, com a possibilidade de recorrência de subnotificação dos valores.

Venda de licença-prêmio no MPT - dados obtidos via Lei de Acesso a Informação

Código
mpt_lai <- tribble(
  ~ ano, ~ qt_membros, ~ valor,
  2015,  32, 4392018.57,
  2016,  74, 6232833.01,
  2017, 397, 14104946.71,
  2018, 421, 4768886.42,
  2019, 526, 32503591.58,
  2020, 558, 46781334.95,
  2021, 392, 37443835.34,
  2022, 525, 44099127.03,
  2023, 495, 16790230.55
) %>%
  mutate(
    orgao = "MPT",
    fonte = "Dados obtidos via LAI"
  )

mpt_lai <- mpt_lai %>% filter(ano != 2023)

p1 <- mpt_lai %>%
  ggplot(aes(
    x = ano,
    y = valor,
    fill = orgao,
    color = after_scale(darken(fill, .4))
  )) +
  geom_line(show.legend = FALSE, linewidth = 1.5) +
  geom_point(size = 3, show.legend = FALSE) +
  scale_x_continuous(breaks = 2015:2022) +
  scale_y_continuous(
    labels = ~ . / 1e6,
    limits = c(0, max(mpf_lai$valor) * 1.15)
  ) +
  scale_fill_manual(values = c("MPT" = cores_dadosjusbr[["cyan"]])) +
  geom_text(
    aes(label = numero(round(valor / 1e6, 1))),
    vjust = -2
  ) +
  theme(
    axis.ticks.x = element_blank(),
    panel.grid.minor.y = element_blank(),
    panel.grid.minor.x = element_blank()
  ) +
  coord_cartesian(xlim=c(2015,2022)) +
  labs(
    #title = "Valores pagos em conversão de licença-prêmio em pecúnia",
    subtitle = "Valor anual pago para membros ativos e inativos - em milhões de reais - (2015 - 2023)",
    x = "Ano", y = "Milhões de reais"
  )
Código
p2 <- mpt_lai %>%
  ggplot(aes(
    x = ano,
    y = qt_membros,
    fill = orgao,
    color = after_scale(darken(fill, .4))
  )) +
  geom_col(alpha = .6,  show.legend = FALSE, width = .7) +
  scale_x_continuous(breaks = 2015:2022) +
  scale_y_continuous(
    limits = c(0, max(mpf_lai$qt_membros) * 1.15)
  ) +
  scale_fill_manual(values = c("MPT" = cores_dadosjusbr[["cyan"]])) +
  geom_text(
    aes(label = numero(qt_membros)),
    vjust = -1
  ) +
  theme(
    axis.ticks.x = element_blank(),
    panel.grid.minor.y = element_blank(),
    panel.grid.minor.x = element_blank(),
    panel.grid.major.x = element_blank()
  ) +
  coord_cartesian(xlim=c(2015,2022), expand = TRUE) +
  labs(
    #title = "Beneficiados com pagamento de conversão de licença-prêmio em pecúnia",
    subtitle = "Quantidade de membros ativos e inativos que receberam",
    x = "Ano", y = "Quantidade de membros do MPT",
  )
Código
p1 / p2 +
  plot_annotation(
    title = NULL,
    subtitle = "Pagamentos de licença Prêmio - Ministério Público do Trabalho (2015 - 2023)",
    caption = "Fonte: MPF via Lei de Acesso a Informação\nElaboração: Transparência Brasil"
  ) & theme(plot.subtitle = element_text(hjust = .5))

Comparativo entre as bases

Código
mpt_agosto <- tibble(
  ano = 2019:2022,
  qt_membros = c(NA, 463, 374, 361),
  valor = c(
    NA,
    27643318.20,
    33883087.05,
    23235214.14
  ),
  orgao = "MPT",
  fonte = "Coleta do DadosJusBr em Agosto - 2023"
)

mpu %>%
  filter(orgao == "mpt") %>%
  filter(item == "conversao de licenca premio em pecunia") %>%
  count(ano, orgao, wt = valor, name = "valor") %>%
  left_join(total_membros_orgao_ano) %>%
  mutate(fonte = "Coleta do DadosJusBr em Novembro - 2023") %>%
  bind_rows(mpt_lai) %>%
  # bind_rows(mpt_agosto) %>%
  mutate(fonte = replace_na(fonte, "Dados obtidos via LAI")) %>%
  filter(ano >= 2019) %>%
  complete(ano, orgao, fill = list(valor = 0, fonte = "Coleta do DadosJusBr em Novembro - 2023")) %>%
  ggplot(aes(
    x = ano,
    y = valor,
    fill = fonte,
    color = after_scale(darken(fill, .4))
  )) +
  geom_col(position = "dodge", width = .8) +
  geom_text(
    aes(label = numero(valor / 1e5)),
    vjust = -1, size = 4, fontface = "bold",
    position = position_dodge(width = .8)
  ) +
  scale_fill_manual(values = c(
    "Coleta do DadosJusBr em Agosto - 2023" = lighten(cores_dadosjusbr[["lilas"]], .4),
    "Coleta do DadosJusBr em Novembro - 2023" = cores_dadosjusbr[["lilas"]],
    "Dados obtidos via LAI" = cores_dadosjusbr[["cyan"]]
  )) +
  scale_linetype_identity() +
  scale_y_continuous(
    expand = c(0, 0.01),
    limits = c(0, 12e7),
    name = "Milhões de reais",
    labels = ~ . / 1e6
  ) +
  theme(
    plot.subtitle = element_markdown(),
    panel.grid.minor.y = element_blank(),
    panel.grid.minor.x = element_blank(),
    axis.text.x = element_text(size = 18, vjust = -3),
    axis.line.x = element_line(),
    legend.position = c(.75, .9)
  ) +
  labs(
    title = "Conversão de licença-prêmio em pecúnia - Ministério Público do Trabalho (2019 - 2022)",
    subtitle = "Em milhões de reais, por fonte de coleta dos dados. Somente membros ***ativos***.",
    x = "Ano", color = "Fonte dos dados:"
  ) +
  guides(color = guide_legend(reverse = TRUE))

Dispersão por ano e órgão

Distribuição dos valores pagos por venda de licença-prêmio por ano e órgãos do MPU (2019 - 2022)

Código
penduricalhos %>%
  filter(item == "Licença-prêmio") %>%
  mutate(
    orgao = case_when(
      orgao == "mpm" ~ "MPM",
      orgao == "mpdft" ~ "MP-DFT",
      orgao == "mpt" ~ "MPT",
      orgao == "mpf" ~ "MPF"
    ),
    cor = case_when(
      orgao == "MPM" ~ cores_dadosjusbr[["laranja"]],
      orgao == "MP-DFT" ~ cores_dadosjusbr[["cinza_azulado"]],
      orgao == "MPT" ~ cores_dadosjusbr[["cyan"]],
      orgao == "MPF" ~ cores_dadosjusbr[["lilas"]]
    ),
    orgao = make_html_tag(orgao, darken(cor, .4))
  ) %>%
  count(id_membro, orgao, cor, ano, wt = valor, name = "valor") %>%
  mutate(orgao = fct_reorder(orgao, valor, sum)) %>%
  ggplot(aes(
    x = orgao, y = valor,
    fill = cor, color = after_scale(colorspace::darken(fill, .6))
  )) +
  geom_jitter(shape = 21, size = 2, alpha = .6, show.legend = FALSE) +
  scale_y_continuous(
    expand = c(0, .15),
    labels = ~ . / 1e3,
    limits = c(-2e4, 7e5),
    breaks = c(0, 1.5e5, 3e5, 4.5e5, 6e5)
  ) +
  scale_fill_identity() +
  facet_wrap(~ano, nrow = 1, strip.position = "bottom") +
  theme(
    legend.position = "top",
    legend.direction = "horizontal",
    legend.justification = "left",
    strip.text.x = element_text(hjust = .5),
    strip.placement = "outside",
    axis.ticks.x = element_blank(),
    axis.title.y = element_text(),
    panel.spacing = unit(5, "mm"),
    panel.grid.minor = element_blank(),
    axis.text.x = element_markdown(angle = 45, hjust = 1, face = "italic", size = 10)
  ) +
  labs(
    title = NULL,
    subtitle = "Cada ponto no gráfico representa um membro e o valor que recebeu por venda de licença-prêmio\nno órgão e ano correspondente",
    x = "Órgão/Ano", y = "Milhares de reais",
    caption = my_caption
  )

O peso da licença-prêmio nos 150 maiores supersalários (2019-2022)

Código
penduricalhos_rank <- penduricalhos %>%
  add_count(orgao, id_membro, mes, ano, wt = valor, name = "remuneracao_total") %>%
  group_nest(remuneracao_total, id_membro, mes, ano) %>%
  arrange(-remuneracao_total, id_membro, mes, ano) %>%
  mutate(rank = row_number()) %>%
  unnest(data)

penduricalhos_rank %>%
  filter(rank <= 150) %>%
  mutate(item = if_else(
    item == "Licença-prêmio",
    glue("<b style='color:{darken(cores_dadosjusbr[['cinza_azulado']], .4)}'>licença-prêmio</b>"),
    glue("<b style='color:{darken(cores_dadosjusbr[['verde']], .4)}'>outras remunerações</b>")
  )) %>%
  ggplot(aes(
    x = rank,
    y = valor,
    fill = item,
    color = after_scale(colorspace::darken(fill, .4))
  )) +
  geom_col() +
  scale_fill_manual(
    values = c(
      cores_dadosjusbr[["cinza_azulado"]], alpha(cores_dadosjusbr[["verde"]], .3)
    ),
    labels = c(
      glue("<b style='color:{darken(cores_dadosjusbr[['cinza_azulado']], .4)}'>licença-prêmio</b>"),
      glue("<b style='color:{darken(cores_dadosjusbr[['verde']], .4)}'>outras remunerações</b>")
    )) +
  theme(
    plot.subtitle = element_markdown(),
    legend.position = c(.85, .85),
    legend.text = element_markdown(),
    axis.title.x = element_text(hjust = .5),
    panel.grid.minor.y = element_blank(),
    panel.grid.minor.x = element_blank()
  ) +
  scale_y_continuous(labels = ~ . / 1e3, expand = c(0.01, 0)) +
  scale_x_continuous(
    labels = ~ paste0(., "°"),
    expand = c(0.01, 0),
    breaks = c(1, 25, 50, 75, 100, 125, 150)
  ) +
  labs(
    x = "150 maiores contracheques mensais por membro - ordenado pelo valor líquido total",
    fill = NULL,
    y = "Milhares de reais",
    title = NULL,
    caption = my_caption,
    subtitle = glue(
      "Cada barra representa uma remuneração mensal líquida recebida",
      " por um único membro<br>dividida em ",
      "<b style='color:{darken(cores_dadosjusbr[['cinza_azulado']], .4)}'>licença-prêmio</b>", " e ",
      "<b style='color:{darken(cores_dadosjusbr[['verde']], .4)}'>outras remunerações</b>"
  ))

por um único membro dividida em licença prêmio e outras remunerações, que incluem salário base e todos demais benefícios

Código
penduricalhos_rank %>%
  filter(rank <= 150)

Tabela - participação da LP no salário mensal dos membros

Código
penduricalhos_rank %>%
  pivot_wider(names_from = item, values_from = valor) %>%
  mutate(recebeu_lp = !is.na(`Licença-prêmio`)) %>%
  filter(recebeu_lp) %>%
  mutate(
    perc = `Licença-prêmio` / (`Outras remunerações` + `Licença-prêmio`)
  ) %>%
  mutate(
    fx_perc = case_when(
      perc <= .25 ~ "Até 25% da remuneração mensal",
      perc <= .50 ~ "entre 25% e 50% da remuneração mensal",
      perc <= .75 ~ "entre 50% e 75% da remuneração mensal",
      perc <= 1 ~ "Acima de 75% da remuneração mensal",
      is.na(perc) & is.na(`Outras remunerações`) & !is.na(`Licença-prêmio`) ~ "Acima de 75% da remuneração mensal"
    )
  ) %>%
  count(orgao, fx_perc, name = "qtd_membros") %>%
  pivot_wider(names_from = orgao, values_from = qtd_membros) %>%
  mutate(mpu = mpdft+mpf+mpm+mpt) %>%
  add_row(
    fx_perc = "Total de pagamentos de Licença-prêmio",
    mpdft = sum(.$mpdft),
    mpf = sum(.$mpf),
    mpm = sum(.$mpm),
    mpt = sum(.$mpt),
    mpu = sum(.$mpu)
  ) %>%
  mutate(
    fx_perc = ordered(fx_perc, c(
      "Total de pagamentos de Licença-prêmio",
      "Acima de 75% da remuneração mensal",
      "entre 50% e 75% da remuneração mensal",
      "entre 25% e 50% da remuneração mensal",
      "Até 25% da remuneração mensal"
  ))) %>%
  arrange(desc(fx_perc)) %>%
  select(fx_perc, mpm, mpt, mpdft, mpf, mpu) %>%
  gt() %>%
  tab_header(
    title = md("**Participação da licença-prêmio na remuneração mensal (2019 - 2022)<br>Nos meses em que os membros do MPU receberam o benefício**")
  ) %>%
  cols_label(
    fx_perc = " ",
    mpdft = "**MP-DFT**",
    mpf = "**MPF**",
    mpm = "**MPM**",
    mpt = "**MPT**",
    mpu = "**MPU (Total)**",
    .fn = md
  ) %>%
  tab_options(table.width = pct(100)) %>%
  tab_spanner(
    label = "Quantidade de pagamentos realizados",
    columns = -c(fx_perc, mpu),
    id = "qtd_pagtos"
  ) %>%
  tab_style(
    style = cell_text(weight = "bold"),
    locations = cells_body(rows = fx_perc == "Total de pagamentos de Licença-prêmio")
  ) %>%
  fmt_number(
    sep_mark = ".", dec_mark = ",", decimals = 0
  ) %>%
  tab_footnote(
    footnote = "Cada membro pode ter recebido até 7 vezes entre 2019 e 2022",
    locations = cells_column_spanners(spanners = "qtd_pagtos")
  ) %>%
  tab_footnote(footnote = md(my_caption_md))
Participação da licença-prêmio na remuneração mensal (2019 - 2022)
Nos meses em que os membros do MPU receberam o benefício
Quantidade de pagamentos realizados1 MPU (Total)
MPM MPT MP-DFT MPF
Até 25% da remuneração mensal 15 416 304 846 1.581
entre 25% e 50% da remuneração mensal 36 364 311 1.392 2.103
entre 50% e 75% da remuneração mensal 232 712 965 2.669 4.578
Acima de 75% da remuneração mensal 65 140 88 153 446
Total de pagamentos de Licença-prêmio 348 1.632 1.668 5.060 8.708
Fonte: DadosJusBr
Elaboração: Transparência Brasil
1 Cada membro pode ter recebido até 7 vezes entre 2019 e 2022

Aumento médio na remuneração mensal dos membros do MPU

Código
membros_receberam_lp <- penduricalhos_rank %>%
  pivot_wider(names_from = item, values_from = valor) %>%
  mutate(recebeu_lp = !is.na(`Licença-prêmio`)) %>%
  filter(recebeu_lp) %>%
  distinct(id_membro) %>%
  pull()

penduricalhos_medias <- penduricalhos_rank %>%
  pivot_wider(names_from = item, values_from = valor) %>%
  filter(id_membro %in% membros_receberam_lp) %>%
  mutate(data = my(glue("{mes}-{ano}"))) %>%
  complete(id_membro, data) %>%
  ungroup() %>%
  group_nest(orgao, id_membro, ano = year(data)) %>%
  mutate(

    remuneracao_total_media = map_dbl(data, ~sum(.x$remuneracao_total, na.rm = TRUE)),
    licenca_premio_media = map_dbl(data, ~sum(.x$`Licença-prêmio`, na.rm = TRUE)),
    outras_remuneracoes_media = map_dbl(data, ~sum(.x$`Outras remunerações`, na.rm = TRUE)),
    # teste_t = map2(remuneracao_total_media, outras_remuneracoes_media, ~t.test(.x ~ .y))

  ) %>%
  mutate(recebeu_lp = licenca_premio_media != 0) %>%
  filter(licenca_premio_media != 0) %>%
  summarise(
    .by = c(orgao, ano),
    remuneracao_total_media = mean(remuneracao_total_media),
    licenca_premio_media = mean(licenca_premio_media),
    outras_remuneracoes_media = mean(outras_remuneracoes_media),

  ) %>%
  pivot_longer(-c(orgao, ano), names_to = "tipo_remuneracao", values_to = "valor") %>%
  complete(orgao, ano, tipo_remuneracao) %>%
  mutate(ord = if_else(tipo_remuneracao == "remuneracao_total_media", valor, NA_real_)) %>%
  group_by(ano, orgao) %>%
  fill(ord, .direction = "up") %>%
  ungroup()

penduricalhos_medias %>%
  filter(tipo_remuneracao != "remuneracao_total_media") %>%
  mutate(
    ymin = case_when(
      is.na(valor) ~ 0,
      tipo_remuneracao == "outras_remuneracoes_media" ~ 0,
      tipo_remuneracao == "licenca_premio_media" ~ lead(valor)
    ),
    ymax = case_when(
      is.na(valor) ~ 0,
      tipo_remuneracao == "outras_remuneracoes_media" ~ valor,
      tipo_remuneracao == "licenca_premio_media" ~ valor + ymin
    ),
    orgao = case_when(
      orgao == "mpm" ~ "Ministério Público Militar | MPM",
      orgao == "mpdft" ~ "Ministério Público do Distrito Federal e Territórios | MP-DFT",
      orgao == "mpt" ~ "Ministério Público do Trabalho | MPT",
      orgao == "mpf" ~ "Ministério Público Federal | MPF"
    )
  ) %>%
  ggplot(aes(
    x = ano,
    y = valor,
    fill = tipo_remuneracao,
    color = after_scale(darken(fill, .4)),
    shape = tipo_remuneracao
  )) +
  geom_linerange(
    data = . %>% filter(tipo_remuneracao != "licenca_premio_media"),
    aes(ymin = ymin, ymax = ymax), linewidth = 1.5, alpha = .1
    ) +
  geom_linerange(
    data = . %>% filter(tipo_remuneracao == "licenca_premio_media"),
    aes(ymin = ymin, ymax = ymax), linewidth = 1.5, alpha = .3
    ) +
  geom_point(data =  . %>% filter(tipo_remuneracao != "licenca_premio_media"), size = 4) +
  geom_point(
    data =  . %>% filter(tipo_remuneracao == "licenca_premio_media" & valor > 0),
    aes(y = ymax), nudge_y = 1e3,
    size = 4
    ) +
  geom_text(
    data =  . %>% filter(tipo_remuneracao != "licenca_premio_media"),
    aes(label = numero(valor / 1e3, accuracy = 1.1)),
    hjust = 1.3
  ) +
  geom_text(
    data =  . %>% filter(tipo_remuneracao == "licenca_premio_media" & valor > 0),
    aes(label = numero(ymax / 1e3, accuracy = 1.1), y = ymax),
    hjust = -.6
  ) +
  facet_wrap(orgao ~ ., nrow = 4, strip.position = "top", scales = "free_y") +
  coord_flip() +
    theme(
    legend.position = "top",
    legend.direction = "vertical",
    legend.justification = "left",
    strip.text.x = element_text(hjust = 0),
    strip.placement = "outside",
    axis.ticks.x = element_blank(),
    panel.spacing = unit(5, "mm"),
    axis.text.x = element_text(face = "plain", size = 10),
    axis.text.y = element_text(face = "plain", size = 10),
    axis.title.x = element_text(hjust = .5),
    axis.title.y = element_text(hjust = .5),
    # panel.grid.major.x = element_blank(),
    panel.grid.major.y = element_blank(),
    panel.grid.minor.x = element_blank(),
    panel.grid.minor.y = element_blank()

    ) +
  scale_y_continuous(labels = ~ . / 1e3, limits = c(0, 9e5), expand = c(0, 0.1)) +
  scale_x_continuous(trans = "reverse", expand = c(0.25, 0.15)) +
  scale_shape_manual(
    values = c(
      "licenca_premio_media" = 21,
      "outras_remuneracoes_media" = 21
  ),labels = c(
     "Remuneração líquida total",
     "Soma das demais remunerações líquidas\n(exceto conversão de licença prêmio em pecúnia)"
   )) +
  scale_fill_manual(
    values = c(
      "licenca_premio_media" = cores_dadosjusbr[["lilas"]],
      "outras_remuneracoes_media" = cores_dadosjusbr[["verde"]]
   ),
   labels = c(
     "Remuneração líquida total",
     "Soma das demais remunerações líquidas\n(exceto conversão de licença prêmio em pecúnia)"
   )
  ) +
  labs(
    title = "Aumento médio na remuneração anual quando há conversão\nde licença-prêmio em pecúnia",
    subtitle = "Valores médios recebidos por membro, ano e órgão - em milhares de reais",
    x = "Ano", y = "Milhares de reais", fill = NULL, shape = NULL, caption = my_caption
  )

Código
penduricalhos_media_mpu_geral <- penduricalhos_medias %>%
  filter(ano == 2022) %>%
  summarise(
    .by = c(tipo_remuneracao),
    valor_medio_anual = mean(valor, na.rm = TRUE)
  ) %>%
  pivot_wider(names_from = tipo_remuneracao, values_from = valor_medio_anual) %>%
  mutate(
    perc = licenca_premio_media / remuneracao_total_media,
    orgao = "MPU",
    descricao = "Valor médio anual da remuneração de membros que receberam por conversão de Licença-prêmio em pecúnia"
  )

penduricalhos_media_mpu_geral %>%
  select(
    orgao,
    licenca_premio_media,
    outras_remuneracoes_media,
    remuneracao_total_media,
    perc
  ) %>%
  gt() %>%
  fmt_currency(
    columns = c(licenca_premio_media, outras_remuneracoes_media, remuneracao_total_media),
    currency = "BRL", sep_mark = ".", dec_mark = ",", decimals = 2
  ) %>%
  fmt_percent(
    columns = perc,
    sep_mark = ".", dec_mark = ",", decimals = 2
  ) %>%
  cols_label(
    orgao = "**Órgãos**",
    licenca_premio_media = "**Licença-prêmio**",
    outras_remuneracoes_media = "**Outras remunerações**",
    remuneracao_total_media = "**Remuneração total**",
    perc = "**% licença-prêmio sobre<br>remuneração total**",
    .fn = md
  ) %>%
  tab_options(table.width = pct(100)) %>%
  tab_spanner(
    label = md("**Médias (2022)**"),
    columns = -orgao
  ) %>%
  tab_header(
    title = md("**Valor médio anual da remuneração de membros que receberam por conversão de Licença-prêmio em pecúnia**")
  )
Valor médio anual da remuneração de membros que receberam por conversão de Licença-prêmio em pecúnia
Órgãos Médias (2022)
Licença-prêmio Outras remunerações Remuneração total % licença-prêmio sobre
remuneração total
MPU R$88.191,99 R$439.239,44 R$527.431,42 16,72%

Em 2022, os membros do MPU tiveram uma remuneração líquida anual média de 5.2743142^{5}. Esse valor cai para 4.3923944^{5} mil quando excluímos a licença-prêmio, uma redução de 17%.

Sazonalidade dos pagamentos de licença-prêmio - órgãos do MPU (2019 - 2022)

Código
completude <- mpu %>%
  distinct(ano, mes, orgao, prestou_contas = TRUE) %>%
  mutate(ano = as.integer(ano), mes = as.integer(mes)) %>%
  left_join(crossing(orgao = c("mpf", "mpm", "mpdft", "mpt"), ano = 2019:2022, mes = 1:12), .) %>%
  mutate(prestou_contas = replace_na(prestou_contas, FALSE))

penduricalhos %>%
  filter(item == "Licença-prêmio") %>%
  mutate(ano = as.integer(ano), mes = as.integer(mes)) %>%
  left_join(completude, .) %>%
  mutate(possui_dado = !is.na(id_membro)) %>%
  group_by(
    orgao,
    # ano = fct_reorder(as.character(ano), ano),
    # mes = fct_reorder(as.character(mes), mes)
    data = my(glue("{mes}-{ano}")),
    possui_dado, prestou_contas
  ) %>%
  summarise(
    total = sum(valor, na.rm = TRUE),
    .groups = "drop"
  ) %>%
  mutate(
    orgao = fct_reorder(orgao, -total, sum),
    total = case_when(
      prestou_contas & possui_dado ~ total,
      prestou_contas & !possui_dado ~ 0,
      orgao == "mpt" & data == dmy("01-12-2019") ~ 0,
      .default = NA_real_
    )
  ) %>%
  group_by(orgao, year(data)) %>%
  mutate(total_ano = sum(total)) %>%
  ungroup() %>%
  mutate(perc = case_when(
      prestou_contas & possui_dado ~ total / total_ano,
      prestou_contas & !possui_dado ~ 0,
      orgao == "mpt" & data == dmy("01-12-2019") ~ 0,
      .default = NA_real_
    )) %>%
  ggplot(aes(
    x = data, y = orgao,
    fill = perc, color = total
  )) +
  geom_tile(na.rm = TRUE, color = "gray30") +
  scale_x_date(NULL,
    breaks = scales::breaks_width("3 months"),
    labels = scales::label_date_short(), expand = c(0, 0)
  ) +
  facet_wrap(~ year(data), nrow = 1, scales = "free_x") +
  scale_y_discrete(
    expand = c(0, .01),
    labels = c("mpt" = "MPT", "mpm" = "MPM", "mpdft" = "MP-DFT", "mpf" = "MPF")
  ) +
  scale_fill_gradientn(
    colors = c(
      "white",
      colorspace::darken(cores_dadosjusbr[["lilas"]], .5)
    ),
    na.value = "gray65",
    labels = ~ perc(.)
  ) +
  theme(
    axis.text.y = element_text(hjust = 0),
    panel.grid.major = element_blank(),
    panel.grid.minor = element_blank(),
    legend.position = "top",
    legend.justification = "left",
    strip.text = element_text(color = "transparent")
  ) +
  guides(fill = guide_legend(
    nrow = 1,
    direction = "horizontal",
    label.position = "bottom",
    title = "% em um mês dos pagamentos realizados em um ano",
    title.position = "top"
  )) +
  labs(
    title = NULL,
    #subtitle = "Órgãos do Ministério Público da União",
    y = NULL, x = NULL,
    subtitle = "Cada célula representa um mês do ano, as cores indicam o percentual do valor gasto\nem um ano,uma vez que em 2020 e 2022 os pagamentos foram realizados de forma parcelada.",
    caption = "Fonte: DadosJusBr\nElaboração: Transparência Brasil"
  )

Código
penduricalhos %>%
  filter(item == "Licença-prêmio") %>%
  mutate(ano = as.integer(ano), mes = as.integer(mes)) %>%
  left_join(completude, .) %>%
  mutate(possui_dado = !is.na(id_membro)) %>%
  group_by(
    orgao,
    # ano = fct_reorder(as.character(ano), ano),
    # mes = fct_reorder(as.character(mes), mes)
    data = my(glue("{mes}-{ano}")),
    possui_dado, prestou_contas
  ) %>%
  summarise(
    total = sum(valor, na.rm = TRUE),
    .groups = "drop"
  ) %>%
  mutate(
    orgao = fct_reorder(orgao, -total, sum),
    total = case_when(
      prestou_contas & possui_dado ~ total,
      prestou_contas & !possui_dado ~ 0,
      orgao == "mpt" & data == dmy("01-12-2019") ~ 0,
      .default = NA_real_
    )
  ) %>%
  group_by(orgao, year(data)) %>%
  mutate(total_ano = sum(total)) %>%
  ungroup() %>%
  mutate(
    perc = case_when(
      prestou_contas & possui_dado ~ total / total_ano,
      prestou_contas & !possui_dado ~ 0,
      orgao == "mpt" & data == dmy("01-12-2019") ~ 0,
      .default = NA_real_
    ),
    fx_perc = case_when(
      perc == 0 ~ "0",
      is.na(perc) ~ "0",
      perc <=.25 ~ " até 25%",
      perc <= .5 ~ "de 25% a 50%",
      perc <= .75 ~ "de 50% a 75%",
      perc <= 1 ~ "de 75% até 100%"
    ) %>% ordered(levels = c(
      "0", "25%"
    )),
    cor = case_when(
      orgao == "mpm" ~ cores_dadosjusbr[["laranja"]],
      orgao == "mpdft" ~ cores_dadosjusbr[["cinza_azulado"]],
      orgao == "mpt" ~ cores_dadosjusbr[["cyan"]],
      orgao == "mpf" ~ cores_dadosjusbr[["lilas"]]
    ),
    orgao = case_when(
      orgao == "mpm" ~ "Ministério Público Militar | MPM",
      orgao == "mpdft" ~ "Ministério Público do Distrito Federal e Territórios | MP-DFT",
      orgao == "mpt" ~ "Ministério Público do Trabalho | MPT",
      orgao == "mpf" ~ "Ministério Público Federal | MPF"
    )
  ) %>%
  # filter(orgao == "mpf") %>%
  # filter(possui_dado) %>%
  mutate(orgao = make_html_tag(orgao, darken(cor, .4))) %>%
  ggplot(aes(
    x = data,
    y = "",
    color = cor,
    fill = after_scale(darken(color, .4))
  )) +
  geom_segment(aes(
    x = dmy("01-01-2019"),
    xend = dmy("01-01-2023"),
    y = "",
    yend = ""
  ), linewidth = 4, alpha = .025, show.legend = FALSE, lineend = "round") +
  geom_point(
    data = . %>% filter(possui_dado),
    aes(size = perc), color = "white", show.legend = FALSE
  ) +
  geom_point(
    data = . %>% filter(possui_dado),
    aes(size = perc),
    shape = 21, alpha = .5, show.legend = TRUE
  ) +
  geom_point(data = . %>% filter(possui_dado), size = 1.6, color = "black") +
  geom_point(
    data = . %>% filter(!possui_dado), shape = 21, show.legend = FALSE,
    size = 1.6# aes(size = perc)
  ) +
  geom_text(
    data = . %>% filter(possui_dado),
    aes(label = format(ISOdate(2000, 1:12, 1)[month(data)], "%b")),
    color = "black", fontface = "bold",
    hjust = 1.8,
    angle = 45
  ) +
  geom_text(
    data = . %>% filter(month(data) %in% c(1, 7)),
    aes(label = format(ISOdate(2000, 1:12, 1)[month(data)], "%b")),
    color = "gray60",
    hjust = .5, vjust = -1.6
  ) +
  facet_wrap(~orgao, ncol = 1, scales = "free") +
  scale_y_discrete(guide = "none") +
  scale_x_date(
    position = "top",
    breaks = scales::breaks_width("year"),
    date_labels = "%Y",
    limits = c(dmy("01-01-2019"), dmy("01-01-2023"))
  ) +
  scale_size_binned(
    n.breaks = 5,
    breaks = c(0, .25, .5, .75, 1),
    range = c(3, 11),
    nice.breaks = TRUE,
    limits = c(0, 1),
    labels = scales::percent
  ) +
  theme(
    axis.title.x.top = element_blank(),
    axis.text.x.top = element_text(face = "plain", size = 10),
    axis.ticks.x.top = element_blank(),
    panel.grid.major.y = element_blank(),
    panel.grid.major.x = element_line(color = "gray30"),
    panel.grid.minor = element_blank(),
    strip.text.x = element_markdown(),
    strip.placement = "outside",
    legend.position = "top",
    legend.justification = "left"
  ) +
  scale_color_identity() +
  labs(
    title = "Linha do tempo de pagamentos de licença-prêmio",
    subtitle = "Anos e meses em destaque são referentes aos pagamentos de licença-prêmio,\no tamanho da bolha representa o valor pago pelo órgão na data e quanto maior tamanho,\nmaior o valor pago pelo órgão",
    y = NULL,
    x = "Ano e mês do contracheque",
    caption = my_caption
  ) +
  guides(size =  guide_bins(
    title = "% do valor anual pago",
    nrow = 1,
    title.position = "top",
    label.position = "bottom",
    override.aes=list(fill = cores_dadosjusbr[["cinza_claro"]])
  ))

Quantidade de membros que converteram licença-prêmio em pecúnia

Código
total_membros_ano <- mpu %>%
  distinct(orgao, ano, id_membro) %>%
  count(orgao, ano, name = "total_membros_ano") %>%
  add_row(orgao = "mpu", total_membros_ano = sum(.$total_membros_ano)) %>%
  mutate(ano = as.integer(ano))

penduricalhos_ano <- penduricalhos %>%
  filter(item == "Licença-prêmio") %>%
  # summarise(
  #   .by = c(id_membro, orgao, ano),
  #   valor = sum(valor)
  # )
  group_by(orgao, ano) %>%
  summarise(
    n_membros = n_distinct(id_membro),
    .groups = "drop"
  ) %>%
  complete(ano, orgao) %>%
  mutate(orgao = fct_reorder(orgao, -n_membros, .na_rm = TRUE)) %>%
  mutate(ano = as.integer(ano)) %>%
  left_join(total_membros_ano)

#perc <- \(...) scales::percent(..., big.mark = ".", decimal.mark = ",", accuracy = 1.01)

penduricalhos_ano %>%
  transmute(
    ano,
    orgao = case_when(
      orgao == "mpdft" ~ "Ministério Público do Distrito Federal e Territórios | MP-DFT",
      orgao == "mpf" ~ "Ministério Público Federal | MPF",
      orgao == "mpt" ~ "Ministério Público do Trabalho | MPT",
      orgao == "mpm" ~ "Ministério Público Militar | MPM",
    ),
    receberam = replace_na(n_membros, 0),
    nao_receberam = total_membros_ano - replace_na(n_membros, 0)
  ) %>%
  pivot_longer(-c(ano, orgao), names_to = "catg", values_to = "valor") %>%
  group_by(ano, orgao) %>%
  mutate(perc = valor / sum(valor)) %>%
  ungroup() %>%
  mutate(orgao = reorder(orgao, -valor, sum)) %>%
  ggplot(aes(
    x = ano,
    y = valor,
    fill = catg,
    color = after_scale(colorspace::darken(fill, .4))
  )) +
  geom_col(position = "dodge", width = .5) +
  facet_wrap(. ~ orgao, nrow = 4, scales = "free_x") +
  scale_y_continuous(
    limits = c(0, 1300),
    breaks = seq(0, 1000, 400),
    labels = ~ scales::number(. , decimal.mark = ",", big.mark = ".")
  ) +
  scale_x_continuous(breaks = 2018:2023) +
  scale_fill_manual(
    name = "Recebeu\nbenefício",
    values = c(
      "nao_receberam" = cores_dadosjusbr[["cinza_claro"]],
      "receberam" = cores_dadosjusbr[["laranja"]]
    ),
    labels = c("nao_receberam" = "Não", "receberam" = "Sim")
  ) +
  geom_text(
    aes(label = if_else(valor == 0, "0", glue("{valor}\n({perc(perc)})"))),
    position = position_dodge(width = .5),
    vjust = -.5
  ) +
  theme(
    panel.grid.minor = element_blank(),
    panel.grid.major.x = element_blank(),
    axis.title.y = element_text(hjust = .5, vjust = .5)
  ) +
  labs(
    title = "Total de Membros lotados no Ministério Público da União",
    subtitle = "Por ano, órgão e se recebeu ou não por Conversão de Licença Prêmio em Pecúnia",
    x = "Ano", y = "Quantidade de membros lotados em cada órgão",
    caption = my_caption
  )

Proporção dos membros que já receberam a conversão de-prêmio em pecúnia pelo menos uma vez entre 2019 e 2022

Código
proporcoes <- penduricalhos %>%
  filter(item == "Licença-prêmio") %>%
  mutate(orgao = case_when(
    orgao == "mpm" ~ "MPM",
    orgao == "mpdft" ~ "MP-DFT",
    orgao == "mpt" ~ "MPT",
    orgao == "mpf" ~ "MPF"
  )) %>%
  count(orgao, id_membro, wt = valor, name = "valor") %>%
  summarise(.by = orgao, n_membros = n_distinct(glue("{id_membro}-{orgao}"))) %>%
  left_join(total_membros) %>%
  add_row(orgao = "MPU", n_membros = sum(.$n_membros), total_membros = sum(.$total_membros)) %>%
  transmute(
    orgao,
    # orgao = case_when(
    #   orgao == "mpdft" ~ "Ministério Público do Distrito Federal e Territórios | MP-DFT",
    #   orgao == "mpf" ~ "Ministério Público Federal | MPF",
    #   orgao == "mpt" ~ "Ministério Público do Trabalho | MPT",
    #   orgao == "mpm" ~ "Ministério Público Militar | MPM",
    # ),
    receberam = n_membros,
    nao_receberam = total_membros - n_membros
  ) %>%
  pivot_longer(-orgao, names_to = "catg", values_to = "valor") %>%
  group_by(orgao) %>%
  mutate(perc = valor / sum(valor)) %>%
  ungroup() %>%
  mutate(
    ord = if_else(catg == "receberam", perc, lag(perc)),
    orgao = fct_reorder(orgao, ord, sum),
    catg = catg,
    orgao_grp = if_else(orgao == "MPU", "Ministério Público da União", "Desagregado por órgão")
  )

p1 <- proporcoes %>%
  filter(orgao != "MPU") %>%
  ggplot(aes(
    x = orgao,
    y = perc,
    fill = catg,
    color = after_scale(colorspace::darken(fill, .4))
  )) +
  ggchicklet::geom_chicklet(position = ggplot2::position_stack(reverse = FALSE), alpha = .8, show.legend = FALSE) +
  coord_flip() +
  scale_y_continuous(
    labels = perc,
    expand = c(0.02, 0)
  ) +
  scale_x_discrete(expand = c(0, .5)) +
  scale_fill_manual(
    values = c(
      "nao_receberam" = cores_dadosjusbr[["cinza_claro"]],
      "receberam" = cores_dadosjusbr[["laranja"]]
    ),
    labels = c("nao_receberam" = "Não recebeu", "receberam" = "Recebeu")
  ) +
  geom_text(
    data = . %>% filter(catg == "receberam"),
    aes(label = if_else(valor == 0, "0", glue("{perc(perc, accuracy = 1)}\n({numero(valor)})"))),
    position = position_stack(vjust = .95),
    fontface = "bold"
  ) +
  theme(
    panel.grid.minor = element_blank(),
    panel.grid.major.x = element_blank(),
    panel.grid.major.y = element_blank(),
    axis.title.x = element_text(hjust = .5, vjust = .5)
  ) +
  labs(
    title = NULL,
    subtitle = "Órgãos do MPU",
    x = NULL, y = NULL, fill = NULL,
    caption = NULL
  )

p2 <- proporcoes %>%
  filter(orgao == "MPU") %>%
  ggplot(aes(
    x = orgao,
    y = perc,
    fill = catg,
    color = after_scale(colorspace::darken(fill, .4))
  )) +
  ggchicklet::geom_chicklet(position = ggplot2::position_stack(reverse = FALSE), alpha = .5, show.legend = FALSE) +
  coord_flip() +
  scale_y_continuous(
    labels = perc,
    expand = c(0.02, 0)
  ) +
  scale_x_discrete(expand = c(0, .49)) +
  scale_fill_manual(
    values = c(
      "nao_receberam" = cores_dadosjusbr[["cinza_claro"]],
      "receberam" = cores_dadosjusbr[["cyan"]]
    ),
    labels = c("nao_receberam" = "Não recebeu", "receberam" = "Recebeu")
  ) +
  geom_text(
    data = . %>% filter(catg == "receberam"),
    aes(label = if_else(valor == 0, "0", glue("{perc(perc, accuracy = 1)}\n({numero(valor)})"))),
    position = position_stack(vjust = .95),
    fontface = "bold"
  ) +
  theme(
    panel.grid.minor = element_blank(),
    panel.grid.major.x = element_blank(),
    panel.grid.major.y = element_blank(),
    axis.title.x = element_text(hjust = .5, vjust = .5)
  ) +
  labs(
    title = NULL,
    subtitle = "Ministério Público da União",
    x = NULL, y = NULL, fill = NULL,
    caption = NULL
  )

p_patch <- p2 / p1 &
  theme(plot.margin = margin(5.5, 5.5, 5.5, 5.5))


p_patch +
  plot_annotation(caption = my_caption) +
  labs(
    tag = "% de membros com pelo menos um registro em contracheque\nda rubrica de Conversão de Licença-Prêmio em pecúnia\n(2019 - 2022)") +
  theme(
    plot.tag = element_text(size = rel(1), hjust = .5, vjust = -8, face = "bold"),
    plot.tag.position = "bottom",
    plot.caption.position = "plot"
  ) +
  plot_layout(
    nrow = 2,
    heights = unit(c(2, 8), c('cm', 'cm')), tag_level = "new")

Quantos membros poderiam ser contratados pelo MPU com os pagtos de LP?

Somente 2021

Quanto custa um membro?

Código
# média da remuneração bruta no ano de 2021
#
#

remuneracao_bruta_exceto_lp <- mpu %>%
  mutate(tipo = if_else(tipo == "retencao por teto constitucional", "Teto", tipo)) %>%
  filter(tipo != "D") %>%
  count(
    orgao,
    id_membro, mes, ano,
    # item = "Remuneração bruta (exceto Licença-prêmio)",
    name = "valor",
    wt = valor
  ) %>%
  filter(ano == 2021)

total_membros_2021 <- mpu %>%
  filter(ano == 2021) %>%
  distinct(orgao, id_membro) %>%
  count(orgao, name = "total_membros") %>%
  mutate(orgao = case_when(
    orgao == "mpm" ~ "MPM",
    orgao == "mpdft" ~ "MP-DFT",
    orgao == "mpt" ~ "MPT",
    orgao == "mpf" ~ "MPF"
  )) %>%
  add_row(orgao = "MPU", total_membros = sum(.$total_membros))

custo_por_membro_exceto_lp <- remuneracao_bruta_exceto_lp %>%
  count(orgao, wt = valor, name = "remuneracao_bruta_exceto_lp") %>%
  mutate(orgao = case_when(
    orgao == "mpt" ~ "MPT",
    orgao == "mpf" ~ "MPF",
    orgao == "mpm" ~ "MPM",
    orgao == "mpdft" ~ "MP-DFT"
  )) %>%
  add_row(orgao = "MPU", remuneracao_bruta_exceto_lp = sum(.$remuneracao_bruta_exceto_lp)) %>%
  left_join(total_membros_2021) %>%
  mutate(custo_anual_por_membro_exceto_lp = (remuneracao_bruta_exceto_lp / total_membros))

custo_da_licenca_premio <- penduricalhos %>%
  filter(item == "Licença-prêmio") %>%
  filter(ano == 2021) %>%
  count(orgao, wt = valor, name = "licenca_premio") %>%
  mutate(orgao = case_when(
    orgao == "mpt" ~ "MPT",
    orgao == "mpf" ~ "MPF",
    orgao == "mpm" ~ "MPM",
    orgao == "mpdft" ~ "MP-DFT"
  )) %>%
  add_row(orgao = "MPU", licenca_premio = sum(.$licenca_premio))

contratacoes_possiveis_com_dinheiro_de_lp <- custo_por_membro_exceto_lp %>%
  left_join(custo_da_licenca_premio) %>%
  mutate(
    qtd_contratacoes = (licenca_premio) / custo_anual_por_membro_exceto_lp,
    perc_membros_efetivos = qtd_contratacoes / total_membros
  )

A licença-prêmio bateu recorde em 2021. Naquele ano, as remunerações brutas de todos os membros MPU, desconsiderando apenas a própria licença-prêmio, somaram R$ 1.730.478.152. Considerando o número de integrantes ativos naquele ano, chega-se a um custo médio anual de R$ 734.187 por membro. Por outro lado, a somatória dos pagamentos de licença-prêmio em pecúnia custou R$ 142.945.088 em 2021. O valor, portanto, seria suficiente para arcar com as remunerações de 8% novos membros durante todo aquele ano, considerando o custo médio anual. Isso representaria um aumento de 2357 no quadro de membros ativos do MPU.

Código

tbl_title <- glue("**Valores gastos com licença-prêmio equivalem à<br>",
                  "remuneração bruta de ",
                  "{numero(contratacoes_possiveis_com_dinheiro_de_lp$qtd_contratacoes[5])} ",
                  "membros ativos em 2021**")

contratacoes_possiveis_com_dinheiro_de_lp %>%
  select(
    orgao,
    remuneracao_bruta_exceto_lp, custo_anual_por_membro_exceto_lp,
    licenca_premio, total_membros,
    qtd_contratacoes, perc_membros_efetivos
  ) %>%
  arrange(total_membros) %>%
  gt() %>%
  fmt_currency(
    columns = c(remuneracao_bruta_exceto_lp,    custo_anual_por_membro_exceto_lp, licenca_premio),
    currency = "BRL", sep_mark = ".", dec_mark = ",", decimals = 2
  ) %>%
  fmt_number(
    columns = c(total_membros, qtd_contratacoes),
    sep_mark = ".", dec_mark = ",", decimals = 0
  ) %>%
  fmt_percent(
    columns = perc_membros_efetivos,
    sep_mark = ".", dec_mark = ",", decimals = 2
  ) %>%
  cols_label(
    orgao = "**Órgãos**",
    remuneracao_bruta_exceto_lp = "Total",
    custo_anual_por_membro_exceto_lp = "Média",
    licenca_premio = "**Pagtos. de<br> licença-prêmio<br>em 2021**",
    total_membros = "**Qtd.<br>membros**",
    qtd_contratacoes = "**Contratações<br>possíveis**",
    perc_membros_efetivos = "**%<br>efetivo**",
    .fn = md
  ) %>%
  tab_options(table.width = pct(100)) %>%
  tab_footnote(
    footnote = "Exceto licença-prêmio e inclusive desconto por teto remuneratório",
    locations = cells_column_labels(columns = c(
      remuneracao_bruta_exceto_lp,
      custo_anual_por_membro_exceto_lp
    ))
  ) %>%
  tab_spanner(
    label = md("**Remuneração bruta em 2021**"),
    columns = c(
      remuneracao_bruta_exceto_lp,
      custo_anual_por_membro_exceto_lp
    )
  ) %>%
  tab_header(
    title = md(tbl_title)
  ) %>%
  tab_footnote(footnote = md(my_caption_md))
Valores gastos com licença-prêmio equivalem à
remuneração bruta de 195 membros ativos em 2021
Órgãos Remuneração bruta em 2021 Pagtos. de
licença-prêmio
em 2021
Qtd.
membros
Contratações
possíveis
%
efetivo
Total1 Média1
MPM R$48.950.592,77 R$679.869,34 R$8.912.884,94 72 13 18,21%
MP-DFT R$270.518.225,39 R$719.463,37 R$37.669.295,39 376 52 13,92%
MPT R$617.460.719,98 R$827.695,34 R$33.883.087,05 746 41 5,49%
MPF R$793.548.613,99 R$682.328,99 R$62.479.820,72 1.163 92 7,87%
MPU R$1.730.478.152,13 R$734.186,74 R$142.945.088,10 2.357 195 8,26%
Fonte: DadosJusBr
Elaboração: Transparência Brasil
1 Exceto licença-prêmio e inclusive desconto por teto remuneratório
Código
mpu %>%
  filter(ano == 2021) %>%
  # filter(orgao == "mpf") %>%
  summarise(valor = sum(valor, na.rm = TRUE), .by = item)  %>%
  arrange(-valor) %>%
  gt() %>%
  fmt_currency(
    sep_mark = ".",
    dec_mark = ",",
    currency = "BRL",
    decimals = 0,
    incl_space = TRUE
  ) %>%
  tab_header(
    title = md("**Remunerações totais por item - 2019-2022**"),
    subtitle = "Órgãos do Ministério Público da União"
  ) %>%
  cols_label(
    .fn = md,
    item = "**Item**",
    valor = "**Valor**"
  ) %>%
  tab_footnote(footnote = md(my_caption_md))
Remunerações totais por item - 2019-2022
Órgãos do Ministério Público da União
Item Valor
remuneracao do cargo efetivo R$ 955.031.310
gratificacao natalina R$ 239.948.654
ferias 13 constitucional R$ 172.790.396
conversao de licenca premio em pecunia R$ 142.945.088
abono pecuniario R$ 54.576.343
gratificacao por exercicio cumulativo de oficio R$ 46.510.785
abono de permanencia R$ 36.204.929
auxilio alimentacao R$ 25.488.496
outras verbas remuneratorias legais ou judiciais R$ 15.043.091
outras verbas remuneratorias R$ 12.825.784
gratificacao por exercicio cumulativo de oficio sem psss R$ 10.844.472
funcao de confianca ou cargo em comissao R$ 6.339.744
auxilio creche R$ 5.554.356
substituicao de membros R$ 1.496.871
ajuda de custo R$ 1.209.523
gratificacao por encargo de curso e concurso R$ 1.177.177
ferias indenizatorias R$ 978.430
outras verbas remuneratorias retroativas ou temporarias R$ 595.818
auxilio moradia R$ 406.584
transporte mobiliario R$ 262.467
gratificacao por exercicio cumulativo de oficio com psss R$ 213.364
auxilio natalidade R$ 28.018
devolucao planassiste R$ 4.050
gratificacao local de trabalho R$ 2.400
retencao por teto constitucional −R$ 15.156.508
contribuicao previdenciaria −R$ 113.637.462
imposto de renda −R$ 268.517.209
Fonte: DadosJusBr
Elaboração: Transparência Brasil

Período 2020-2022

Quanto custa um membro?

Código
# média da remuneração bruta no período 2020-2022
#
#

remuneracao_bruta_exceto_lp <- mpu %>%
  mutate(tipo = if_else(tipo == "retencao por teto constitucional", "Teto", tipo)) %>%
  filter(tipo != "D") %>%
  count(
    orgao,
    id_membro, mes, ano,
    # item = "Remuneração bruta (exceto Licença-prêmio)",
    name = "valor",
    wt = valor
  ) %>%
  filter(ano %in% c(2020, 2021, 2022))

total_membros_2020_22 <- mpu %>%
  filter(ano %in% c(2020, 2021, 2022)) %>%
  distinct(orgao, id_membro) %>%
  count(orgao, name = "total_membros") %>%
  mutate(orgao = case_when(
    orgao == "mpm" ~ "MPM",
    orgao == "mpdft" ~ "MP-DFT",
    orgao == "mpt" ~ "MPT",
    orgao == "mpf" ~ "MPF"
  )) %>%
  add_row(orgao = "MPU", total_membros = sum(.$total_membros))

custo_por_membro_exceto_lp <- remuneracao_bruta_exceto_lp %>%
  count(orgao, wt = valor, name = "remuneracao_bruta_exceto_lp") %>%
  mutate(orgao = case_when(
    orgao == "mpt" ~ "MPT",
    orgao == "mpf" ~ "MPF",
    orgao == "mpm" ~ "MPM",
    orgao == "mpdft" ~ "MP-DFT"
  )) %>%
  add_row(orgao = "MPU", remuneracao_bruta_exceto_lp = sum(.$remuneracao_bruta_exceto_lp)) %>%
  left_join(total_membros_2020_22) %>%
  mutate(custo_anual_por_membro_exceto_lp = (remuneracao_bruta_exceto_lp / total_membros) / 3)

custo_da_licenca_premio <- penduricalhos %>%
  filter(item == "Licença-prêmio") %>%
  filter(ano %in% c(2020, 2021, 2022)) %>%
  count(orgao, wt = valor, name = "licenca_premio") %>%
  mutate(orgao = case_when(
    orgao == "mpt" ~ "MPT",
    orgao == "mpf" ~ "MPF",
    orgao == "mpm" ~ "MPM",
    orgao == "mpdft" ~ "MP-DFT"
  )) %>%
  add_row(orgao = "MPU", licenca_premio = sum(.$licenca_premio))

contratacoes_possiveis_com_dinheiro_de_lp <- custo_por_membro_exceto_lp %>%
  left_join(custo_da_licenca_premio) %>%
  mutate(
    qtd_contratacoes = (licenca_premio / 3) / custo_anual_por_membro_exceto_lp,
    perc_membros_efetivos = qtd_contratacoes / total_membros
  )

Entre 2020 e 2022, as remunerações brutas de todos os membros MPU, desconsiderando apenas a própria licença-prêmio, somaram R$ 4.989.417.412. Considerando o número de integrantes ativos naquele ano, chega-se a um custo médio anual de R$ 690.386 por membro. Por outro lado, a somatória dos pagamentos de licença-prêmio em pecúnia custou R$ 389.521.830 em 2021. O valor, portanto, seria suficiente para arcar com as remunerações de 8% novos membros durante todo aquele ano, considerando o custo médio anual. Isso representaria um aumento de 2409 no quadro de membros ativos do MPU.

Código
tbl_title <- glue("**Valores gastos com licença-prêmio equivalem à<br>",
                  "remuneração bruta de ",
                  "{numero(contratacoes_possiveis_com_dinheiro_de_lp$qtd_contratacoes[5])} ",
                  "membrosativos  no período de 2020 até 2022**")

contratacoes_possiveis_com_dinheiro_de_lp %>%
  select(
    orgao,
    remuneracao_bruta_exceto_lp, custo_anual_por_membro_exceto_lp,
    licenca_premio, total_membros,
    qtd_contratacoes, perc_membros_efetivos
  ) %>%
  arrange(total_membros) %>%
  gt() %>%
  fmt_currency(
    columns = c(remuneracao_bruta_exceto_lp,    custo_anual_por_membro_exceto_lp, licenca_premio),
    currency = "BRL", sep_mark = ".", dec_mark = ",", decimals = 2
  ) %>%
  fmt_number(
    columns = c(total_membros, qtd_contratacoes),
    sep_mark = ".", dec_mark = ",", decimals = 0
  ) %>%
  fmt_percent(
    columns = perc_membros_efetivos,
    sep_mark = ".", dec_mark = ",", decimals = 2
  ) %>%
  cols_label(
    orgao = "**Órgãos**",
    remuneracao_bruta_exceto_lp = "Total",
    custo_anual_por_membro_exceto_lp = "Média",
    licenca_premio = "**Pagtos. de<br> licença-prêmio<br>(2020-2022)**",
    total_membros = "**Qtd.<br>membros**",
    qtd_contratacoes = "**Contratações<br>possíveis**",
    perc_membros_efetivos = "**%<br>efetivo**",
    .fn = md
  ) %>%
  tab_options(table.width = pct(100)) %>%
  tab_footnote(
    footnote = "Exceto licença-prêmio e inclusive desconto por teto remuneratório",
    locations = cells_column_labels(columns = c(
      remuneracao_bruta_exceto_lp,
      custo_anual_por_membro_exceto_lp
    ))
  ) %>%
  tab_spanner(
    label = md("**Remuneração bruta em (2020-2022)**"),
    columns = c(
      remuneracao_bruta_exceto_lp,
      custo_anual_por_membro_exceto_lp
    )
  ) %>%
  tab_header(
    title = md(tbl_title)
  ) %>%
  tab_footnote(footnote = md(my_caption_md))
Valores gastos com licença-prêmio equivalem à
remuneração bruta de 188 membrosativos no período de 2020 até 2022
Órgãos Remuneração bruta em (2020-2022) Pagtos. de
licença-prêmio
(2020-2022)
Qtd.
membros
Contratações
possíveis
%
efetivo
Total1 Média1
MPM R$140.425.937,46 R$641.214,33 R$20.919.370,73 73 11 14,90%
MP-DFT R$757.122.986,56 R$652.130,05 R$87.232.733,30 387 45 11,52%
MPT R$1.772.809.417,23 R$767.449,96 R$84.761.619,39 770 37 4,78%
MPF R$2.319.059.070,40 R$655.657,07 R$196.608.106,53 1.179 100 8,48%
MPU R$4.989.417.411,65 R$690.385,69 R$389.521.829,95 2.409 188 7,81%
Fonte: DadosJusBr
Elaboração: Transparência Brasil
1 Exceto licença-prêmio e inclusive desconto por teto remuneratório

Média salarial no sistema de justiça

Código
library(httr2)

#' @title Base das consultas na API do DadosJusBr
#' @param endp endpoint da API DadosJusBr
#'
consulta_basica <- function(endp, ...) {
  endp %>%
    request() %>%
    req_method("GET") %>%
    req_headers(accept = "application/json") %>%
    req_perform() %>%
    resp_body_json(...)
}

general_remuneration_from_year <- consulta_basica(
  endp = "https://api.dadosjusbr.org/uiapi/v2/geral/remuneracao/2022",
  simplifyVector = TRUE
) %>% as_tibble()


general_remuneration_from_year %>%
  select(num_membros, remuneracoes) %>%
  summarise(
    num_membros_media = mean(num_membros),
    num_membros = sum(num_membros),
    remuneracoes = sum(remuneracoes)
  ) %>%
  mutate(remuneracao_media = remuneracoes / num_membros) %>%
  mutate(
    renda_brasileiro_pnad_continua = 2533,
    razao = remuneracao_media / renda_brasileiro_pnad_continua
  ) %>% gt() %>%
  fmt_currency(
    columns = c(remuneracoes, remuneracao_media, renda_brasileiro_pnad_continua),
    currency = "BRL", sep_mark = ".", dec_mark = ",", decimals = 2
  ) %>%
  tab_footnote(footnote = md(my_caption_md))
num_membros_media num_membros remuneracoes remuneracao_media renda_brasileiro_pnad_continua razao
32498.83 389986 R$14.859.796.101,63 R$38.103,41 R$2.533,00 15.0428
Fonte: DadosJusBr
Elaboração: Transparência Brasil
Código
penduricalhos %>%
  filter(ano == 2022) %>%
  summarise(
    .by = c(orgao, id_membro),
    valor = sum(valor)
  ) %>%
  summarise(
    valor = sum(valor),
    n_membros = n()
  ) %>%
  mutate(media_valor = (valor / n_membros)/12) %>%
  mutate(
    renda_brasileiro_pnad_continua = 2533,
    razao = media_valor / renda_brasileiro_pnad_continua
  ) %>%
  gt() %>%
  fmt_currency(
    c(valor, media_valor),
    currency = "BRL", sep_mark = ".", dec_mark = ",", decimals = 2
  )
valor n_membros media_valor renda_brasileiro_pnad_continua razao
R$1.162.776.848,44 2369 R$40.902,52 2533 16.14786

Panorama em 2023

Código
total_membros <- mpu_23 %>%
  distinct(orgao, id_membro) %>%
  count(orgao, name = "total_membros") %>%
  mutate(orgao = case_when(
    orgao == "mpm" ~ "MPM",
    orgao == "mpdft" ~ "MP-DFT",
    orgao == "mpt" ~ "MPT",
    orgao == "mpf" ~ "MPF"
  )) %>%
  add_row(orgao = "MPU", total_membros = sum(.$total_membros))


licenca_premio <- mpu_23 %>%
  filter(item == "conversao de licenca premio em pecunia") %>%
  count(
    orgao,
    id_membro, mes, ano,
    item = "Licença-prêmio",
    name = "valor",
    wt = valor
  )

outras_remuneracoes <- mpu_23 %>%
  filter(item != "conversao de licenca premio em pecunia") %>%
  count(
    orgao,
    id_membro, mes, ano,
    item = "Outras remunerações",
    name = "valor",
    wt = valor
  )

penduricalhos <- bind_rows(licenca_premio, outras_remuneracoes) %>%
  arrange(orgao, id_membro, ano, mes, valor)

pend_resumo <- penduricalhos %>%
  summarise(
    total_pago = sum(valor),
    media = mean(valor),
    mediana = median(valor),
    n_membros = n_distinct(glue("{id_membro}-{orgao}")),
    n_pagamentos = n(),
    .by = item
  )

pend_mpu <- penduricalhos %>%
  filter(item == "Licença-prêmio") %>%
  count(orgao, id_membro, wt = valor, name = "valor") %>%
  summarise(
    orgao = "MPU",
    total = sum(valor),
    valor_media = mean(valor),
    valor_mediana = median(valor),
    n_membros = n())


penduricalhos %>%
  filter(item == "Licença-prêmio") %>%
  mutate(orgao = case_when(
    orgao == "mpm" ~ "MPM",
    orgao == "mpdft" ~ "MP-DFT",
    orgao == "mpt" ~ "MPT",
    orgao == "mpf" ~ "MPF"
  )) %>%
  count(orgao, id_membro, wt = valor, name = "valor") %>%
  summarise(
    .by = orgao,
    total = sum(valor),
    valor_media = mean(valor),
    valor_mediana = median(valor),
    n_membros = n_distinct(id_membro)
  ) %>%
  bind_rows(pend_mpu) %>%
  left_join(total_membros) %>%
  mutate(perc = n_membros / total_membros) %>%
  select(-total_membros) %>%
  gt(rowname_col = "ano") %>%
  fmt_percent(
    columns = perc,
    sep_mark = ".", dec_mark = ",", decimals = 1,
  ) %>%
  fmt_currency(
    columns = total:valor_mediana,
    sep_mark = ".", dec_mark = ",",
    currency = "BRL", decimals = 0,
    incl_space = TRUE
  ) %>%
  fmt_number(columns = n_membros, decimals = 0, sep_mark = ".", dec_mark = ",") %>%
  cols_label(
    orgao = "**Órgão**",
    total = "**Total pago**",
    n_membros = "**Quantidade<br>membros<br>beneficiados**",
    valor_media = "**Média<br>por membro**",
    valor_mediana = "**Mediana<br>por membro**",
    perc = "**% total<br>membros**",
    .fn = md
  ) %>%
  tab_options(table.width = pct(100)) %>%
  tab_header(
    title = md("**Venda de licença-prêmio - *por membro* (2018 - 2023)**"),
    subtitle = "Órgãos do Ministério Público da União"
  ) %>%
  tab_style(
    style = cell_text(weight = "bold"),
    locations = cells_body(rows = orgao == "MPU")
  )
Venda de licença-prêmio - por membro (2018 - 2023)
Órgãos do Ministério Público da União
Órgão Total pago Média
por membro
Mediana
por membro
Quantidade
membros
beneficiados
% total
membros
MP-DFT R$ 3.545.221 R$ 36.176 R$ 35.710 98 24,5%
MPF R$ 18.995.596 R$ 56.200 R$ 71.421 338 28,6%
MPM R$ 2.221.042 R$ 56.950 R$ 71.421 39 49,4%
MPT R$ 68.598 R$ 34.299 R$ 34.299 2 0,3%
MPU R$ 24.830.457 R$ 52.055 R$ 47.614 477 19,6%

Remunerações dos Procuradores Geral da República

Código
pgrs <- mpu %>%
  filter(orgao == "mpf") %>%
  filter(str_detect(nome, "janot|gonet|dodge| aras")) %>%
  filter(nome %in% c(
    "rodrigo janot monteiro de barros",
    "paulo gustavo gonet branco",
    "raquel elias ferreira dodge",
    "antonio augusto brandao de aras"
  )) %>%
  distinct(nome, id_membro)

penduricalhos %>%
  inner_join(pgrs) %>%
  mutate(nome = stringr::str_to_title(nome)) %>%
  summarise(
    .by = c(nome, id_membro, item, ano),
    valor = sum(valor)
  ) %>%
  complete(item, nesting(ano, id_membro, nome), fill = list(valor = 0)) %>%
  ggplot(aes(
    x = ano,
    y = valor,
    fill = item
  )) +
  geom_col(position = "dodge") +
  geom_text(
    vjust= -1,
    position = position_dodge(width = .9),
    aes(label = numero(valor/1e3, accuracy = 0.01))
  ) +
  facet_wrap(~ nome) +
  scale_fill_manual(values = c(cores_dadosjusbr[["cinza_azulado"]], cores_dadosjusbr[["verde"]])) +
  scale_y_continuous(labels = numero, limits = c(0, 750000)) +
  labs(
    title = "Venda de Licença-Prêmio e outras remunerações dos últimos quatro PGR's",
    subtitle = "Valores em milhares de reais, por ano",
    fill = "Rubrica",
    y = "valor (milhares de reais)", x = "Ano"

  )

Código
penduricalhos %>%
  inner_join(pgrs) %>%
  mutate(nome = stringr::str_to_title(nome)) %>%
  summarise(
    .by = c(nome, id_membro, item, ano),
    valor = sum(valor)
  ) %>%
  complete(item, nesting(ano, id_membro, nome), fill = list(valor = 0)) %>%
  # filter(item == "Licença-prêmio") %>%
  pivot_wider(names_from = ano, values_from = valor) %>%
  googlesheets4::write_sheet("https://docs.google.com/spreadsheets/d/1kCtZSp8T8jfM-gEUIpWBPJPys76bELJ3553nmt3bFYw/edit#gid=0", sheet = "PGRs")
Código
mpu %>%
  inner_join(pgrs) %>%
  select(
    orgao, ano, mes, nome, matricula,
    funcao, local_trabalho, tipo,
    categoria, item = item_real,
    valor
  ) %>%
  googlesheets4::write_sheet("https://docs.google.com/spreadsheets/d/1kCtZSp8T8jfM-gEUIpWBPJPys76bELJ3553nmt3bFYw/edit#gid=0", sheet = "Remunerações dos PGR's detalhadas")