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"
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())
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())
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())
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")
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")
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())
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ó!
comments powered by Disqus