Transparência (6): Quem são os 1% mais ricos do funcionalismo público?

Para quem não entendeu a referência.

library(ggplot2)
library(dplyr)
library(reshape2)
library(lubridate)
library(htmlTable)
df <- read.csv2("/home/sillas/R/data/transparenciaComSalarios.csv", stringsAsFactors = FALSE, fileEncoding = "ISO-8859-15")

Você já teve curiosidade em saber quem são os funcionários públicos mais ricos do Brasil? O sexto post da série de artigos sobre dados do Portal da Transparência será dedicado a eles.

Primeiramente, quantos servidores compõem o 1%?

paste0("O número total de servidores é: ", nrow(df))
## [1] "O número total de servidores é: 518270"
print("\n")
## [1] "\n"
paste0("A quantidade de servidores do 1% é: ", round(nrow(df)*0.01))
## [1] "A quantidade de servidores do 1% é: 5183"

Temos, então, que classificar os servidores em ordem decrescente de salário e criar um data frame separado para os servidores do 1% selecionando as primeiras 5183 linhas.

umPorCento <- df[order(-df$SALARIO),]
umPorCento <- umPorCento[1:5183,]

Todo o movimento do Occupy Wall Street começou baseado no fato que 1% da população americana detem cerca de 25% da massa salarial dos Estados Unidos. Quanto deve ser esse valor tomando no contexto do funcionalismo federal?

# Salário dos 1%
sum(umPorCento$SALARIO)
## [1] 146524625
# Salário total
sum(df$SALARIO)
## [1] 4377796333
# Porcentagem
round(100*(sum(umPorCento$SALARIO)/sum(df$SALARIO)),2)
## [1] 3.35

Os 1% dos servidores mais ricos detem 3,35% dos salários somados de todos os servidores federais. Comparado com a população americana, estamos mais distribuídos.

Estados Unidos a parte, quem são os 1%? Para traçar o perfil médio dos servidores do grupo, vamos analisar:

1. Onde eles estão?

temp <- umPorCento %>%
  group_by(UF_EXERCICIO, REGIAO) %>%
  summarise(quantidade = n())

ggplot(temp, aes(x = reorder(UF_EXERCICIO, -quantidade), y = quantidade, fill = REGIAO)) +
    geom_bar(stat = "identity") +
    labs(title = "Quantidade de\n servidores por estado", x = "", y = "") +
   theme(legend.position = "bottom", legend.title = element_blank())

center

Melhor do que apresentar esses resultados isolados é comparar com os resultados apresentados no primeiro post desta série. Para isso, ao invés de trabalhar com quantidade, veremos o porcentual de servidores que está alocado em cada UF.

temp2 <- df %>%
  group_by(UF_EXERCICIO, REGIAO) %>%
  summarise(quantidadeNormal = n())

# transformar quantidade em porcentagem do total
temp$quantidade <- 100*temp$quantidade/sum(temp$quantidade)
temp2$quantidadeNormal <- 100*temp2$quantidadeNormal/sum(temp2$quantidadeNormal)


comparacao <- merge(temp, temp2, by = "UF_EXERCICIO")


temp3 <- select(comparacao, UF_EXERCICIO, REGIAO = REGIAO.x, quantidade1 = quantidade, quantidadeNormal)

temp3 <- melt(temp3, id.vars = c("UF_EXERCICIO", "REGIAO"))

#mudar nome do fator para aparecer bonito no gráfico
levels(temp3$variable) <- c("Grupo dos 1%", "Total geral")

ggplot(temp3, aes(x = UF_EXERCICIO, y = value, fill = variable)) +
  geom_bar(stat = "identity", position = "dodge") +
  labs(title = "Porcentual da quantidade de\n servidores por estado", x = "", y = "%") +
  theme(legend.position = "bottom", legend.title = element_blank())

center

Mais uma vez o DF desponta como anomalia, onde mais de 35% dos servidores mais ricos estão alocados.

2. Em quais cargos trabalham?

temp <- umPorCento %>%
  group_by(ORG_LOTACAO) %>%
  summarise(quantidade = n())


temp2 <- df %>%
  group_by(ORG_LOTACAO) %>%
  summarise(quantidadeNormal = n())
  


# transformar quantidade em porcentagem do total
temp$quantidade <- 100*temp$quantidade/sum(temp$quantidade)
temp2$quantidadeNormal <- 100*temp2$quantidadeNormal/sum(temp2$quantidadeNormal)

# filtrar 20 maiores de cada
temp <- temp %>%
  top_n(20)

temp2 <- temp2 %>%
  top_n(20)

comparacao <- merge(temp, temp2, by = "ORG_LOTACAO")
temp3 <- select(comparacao, ORG_LOTACAO, quantidade1 = quantidade, quantidadeNormal)

temp3 <- melt(temp3, id.vars = "ORG_LOTACAO")

#mudar nome do fator para aparecer bonito no gráfico
levels(temp3$variable) <- c("Grupo dos 1%", "Total geral")

ggplot(temp3, aes(x = ORG_LOTACAO, y = value, fill = variable)) +
  geom_bar(stat = "identity", position = "dodge") +
  labs(title = "Porcentual da quantidade de\n servidores por órgão", x = "", y = "%") +
  coord_flip() +
  theme(legend.position = "bottom", legend.title = element_blank())

center

Também há uma discrepância notável aqui: Enquanto que apenas 1,5% dos servidores federais trabalha na AGU, no grupo dos 1% esse percentual sobe para 9%.

3. Qual cargo desempenham?

umPorCento %>%
  group_by(DESCRICAO_CARGO) %>%
  summarise(quantidade = n()) %>%
  mutate(percentual = 100*quantidade/sum(quantidade)) %>%
  na.omit() %>%
  top_n(20) %>%
  ggplot(aes(x = reorder(DESCRICAO_CARGO, percentual), y = percentual)) +
    labs(title = "Porcentual da quantidade de\n servidores por cargo", x = "", y = "%") +
    coord_flip() +
    geom_bar(stat = "identity")

center

Curiosamente, a maioria dos 1% são professores de universidades federais. Pelo visto não é todo professor que ganha pouco…

4. A quanto tempo estão no cargo?

CalcAnos <- function(t0, t=today()) {
    x <- interval(t0, t)
    x <- as.period(x)
    x <- ceiling(year(x) + month(x)/12)
    return(x)
}


umPorCento$anos <- umPorCento$DATA_DIPLOMA_INGRESSO_SERVICOPUBLICO %>% dmy() %>% CalcAnos
df$anos <- df$DATA_DIPLOMA_INGRESSO_SERVICOPUBLICO %>% dmy() %>% CalcAnos

par(mfrow=c(2,2))
hist(umPorCento$anos, main = "Tempo trabalhando para o Estado\n(Grupo dos 1%)", xlab = "Anos")
hist(df$anos, main = "Tempo trabalhando para o Estado\n(Geral)", xlab = "Anos")
boxplot(umPorCento$anos, main = "Tempo trabalhando para o Estado\n(Grupo dos 1%)", ylab = "Anos")
boxplot(df$anos, main = "Tempo trabalhando para o Estado\n(Geral)", ylab = "Anos")

center

Aqui temos o esperado: O tempo médio e mediano no funcionalismo público é maior para os 1% do que para o geral.

5. Qual a natureza de seus vínculos com o Estado?

temp <- umPorCento %>%
  group_by(SITUACAO_VINCULO) %>%
  summarise(quantidade = n()) 


temp2 <- df %>%
  group_by(SITUACAO_VINCULO) %>%
  summarise(quantidadeNormal = n())
  


# transformar quantidade em porcentagem do total
temp$quantidade <- 100*temp$quantidade/sum(temp$quantidade)
temp2$quantidadeNormal <- 100*temp2$quantidadeNormal/sum(temp2$quantidadeNormal)

# filtrar 20 maiores de cada
temp <- temp %>%
  top_n(20)

temp2 <- temp2 %>%
  top_n(20)

comparacao <- merge(temp, temp2, by = "SITUACAO_VINCULO")
temp3 <- select(comparacao, SITUACAO_VINCULO, quantidade1 = quantidade, quantidadeNormal)

temp3 <- melt(temp3, id.vars = "SITUACAO_VINCULO")

#mudar nome do fator para aparecer bonito no gráfico
levels(temp3$variable) <- c("Grupo dos 1%", "Total geral")

ggplot(temp3, aes(x = SITUACAO_VINCULO, y = value, fill = variable)) +
  geom_bar(stat = "identity", position = "dodge") +
  labs(title = "Porcentual da quantidade de\n servidores por situação do vínculo", x = "", y = "%") +
  coord_flip() +
  theme(legend.position = "bottom", legend.title = element_blank())

center

Mais uma grande descoberta: O porcentual de servidores das categorias “APOSENTADO”, “EXERC DESCENT CARREI” (que são servidores das carreiras típicas de Estado vinculadas aos Ministérios do Planejamento, Orçamento e Gestão e Ministério da Fazenda que exercem as suas atividades na UJ mediante exercício descentralizado de atividade) e “REQUISITADO” (servidores que exercem atividades na UJ em razão de haverem sido requisitados conforme previsão do art. 93, inciso II, da Lei n.º 8.112/90) é muito maior no grupo dos 1% do que no geral.

É só ver o resultado acima para o grupo dos aposentados para saber o que tem de errado com nossa previdência.

6. Afinal de contas, quem é o que ganha mais?

umPorCento %>% select(-ID_SERVIDOR_PORTAL, -V1, -x) %>% top_n(1, SALARIO) %>% t %>% htmlTable()
UF_EXERCICIO DF
NOME MANOEL DIAS
DESCRICAO_CARGO MINISTRO DE ESTADO
ATIVIDADE
UORG_LOTACAO MINISTERIO DO TRABALHO E EMPREGO
ORG_LOTACAO MINISTERIO DO TRABALHO E EMPREGO
ORGSUP_LOTACAO MINISTERIO DO TRABALHO E EMPREGO
UORG_EXERCICIO MINISTERIO DO TRABALHO E EMPREGO
ORG_EXERCICIO MINISTERIO DO TRABALHO E EMPREGO
ORGSUP_EXERCICIO MINISTERIO DO TRABALHO E EMPREGO
SITUACAO_VINCULO NATUREZA ESPECIAL
REGIME_JURIDICO NATUREZA ESPECIAL
JORNADA_DE_TRABALHO 40 HORAS SEMANAIS
DATA_INGRESSO_CARGOFUNCAO 16/03/2013
DATA_INGRESSO_ORGAO 15/03/2013
DATA_DIPLOMA_INGRESSO_SERVICOPUBLICO 15/03/2013
REGIAO Centro-Oeste
SALARIO 52808.24
anos 3

Por hoje, é só!