<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Paixão por Dados</title>
    <link>http://www.sillasgonzaga.com/tags/servidores-publicos/index.xml</link>
    <description>Recent content on Paixão por Dados</description>
    <generator>Hugo -- gohugo.io</generator>
    <language>en-us</language>
    <copyright>&amp;copy; 2016. All rights reserved.</copyright>
    <atom:link href="http://www.sillasgonzaga.com/tags/servidores-publicos/index.xml" rel="self" type="application/rss+xml" />
    
    <item>
      <title>Transparência (7): Os famosos Cargos Comissionados</title>
      <link>http://www.sillasgonzaga.com/post/transparencia-07/</link>
      <pubDate>Wed, 03 Feb 2016 00:00:00 +0000</pubDate>
      
      <guid>http://www.sillasgonzaga.com/post/transparencia-07/</guid>
      <description>

&lt;h1 id=&#34;transparência-7-os-famosos-cargos-comissionados&#34;&gt;Transparência (7): Os famosos Cargos Comissionados&lt;/h1&gt;

&lt;p&gt;No &lt;a href=&#34;http://sillasgonzaga.github.io/blog/transparenciaParte4/&#34;&gt;quarto post&lt;/a&gt; da minha série sobre dados do Portal da Transparência, eu introduzi um tema interessante a ser olhado a fundo: os servidores cujo vínculo com o Estado é descrito como cargo comissionado. Vimos que, no Ceará, o salário médio de um servidor é muito alto. E nos outros estados?&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;library(ggplot2)
library(dplyr)
library(ggthemes)
library(ggrepel)
library(reshape2)
df &amp;lt;- read.csv2(&amp;quot;/home/sillas/R/data/transparenciaComSalarios.csv&amp;quot;, stringsAsFactors = FALSE, fileEncoding = &amp;quot;ISO-8859-15&amp;quot;)

cor1 &amp;lt;- &amp;quot;#C10534&amp;quot; #cor das barras
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Para começar, quais são os 10 tipos de vínculo mais comuns?&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;df %&amp;gt;%
  group_by(SITUACAO_VINCULO) %&amp;gt;%
  summarise(servidores = n()) %&amp;gt;%
  arrange(desc(servidores)) %&amp;gt;%
  top_n(10)
&lt;/code&gt;&lt;/pre&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;## Source: local data frame [10 x 2]
## 
##        SITUACAO_VINCULO servidores
##                   (chr)      (int)
## 1      ATIVO PERMANENTE     461963
## 2   CONTRATO TEMPORARIO      11946
## 3  CONT.PROF.SUBSTITUTO      10512
## 4  NOMEADO CARGO COMIS.       7445
## 5           REQUISITADO       6459
## 6           SEM VINCULO       4117
## 7  EXERC DESCENT CARREI       3870
## 8  EXERC.÷7º ART93 8112       2475
## 9            APOSENTADO       2294
## 10 REQ.DE OUTROS ORGAOS       1570
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Felizmente, a maioria é composta por servidores ativos, enquanto que cargo comissionado é o quarto vínculo mais comum.&lt;/p&gt;

&lt;p&gt;Antes de adentrarmos a questão dos CCs, vamos ver qual o tipo de vínculo que possui os maiores salários:&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;df %&amp;gt;%
  group_by(SITUACAO_VINCULO) %&amp;gt;%
  summarise(servidores = n(),
            salario = median(SALARIO)) %&amp;gt;%
  arrange(desc(salario)) %&amp;gt;%
  top_n(10, salario)
&lt;/code&gt;&lt;/pre&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;## Source: local data frame [10 x 3]
## 
##        SITUACAO_VINCULO servidores  salario
##                   (chr)      (int)    (dbl)
## 1     NATUREZA ESPECIAL         40 30934.70
## 2  QUADRO ESPEC.-QE/MRE         44 21961.89
## 3  EXERC DESCENT CARREI       3870 20429.09
## 4                CEDIDO        102 19946.32
## 5            APOSENTADO       2294 17923.85
## 6      RESERVA CBM / PM          1 17348.72
## 7  APOSENTADO TCU733/94          1 11650.25
## 8   EXCEDENTE A LOT/MRE          8 11005.08
## 9   CELETISTA/EMPREGADO        408 10796.80
## 10      COLABORADOR ICT         46 10208.36
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Temos algumas surpresas aqui. Alguns termos são novos para mim, por isso postei a definição deles abaixo:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href=&#34;https://pt.wikipedia.org/wiki/Cargo_de_Natureza_Especial&#34;&gt;NATUREZA ESPECIAL&lt;/a&gt;: Cargo de Natureza Especial (CNE) são cargos públicos que dispensam concursos públicos para sua efetivação. No Brasil estes cargos estão vinculados a entidades públicas que têm o direito de contratar funcionários de sua confiança, podendo os salários variarem de 1.200 reais a mais de 8.000 reais. Segue um exemplo: o Presidente da Câmara dos Deputados do Congresso Nacional tem o direito a contratar 46 pessoas na forma de CNE, e cada um dos 7 membros da mesa diretora da Câmara tem direito a 33 cargos, além de 11 cargos para cada um dos 4 suplentes da mesa, perfazendo um total de 321 CNEs. Com base neste exemplo fica evidente a importância da sociedade fiscalizar os critérios de nomeação, a justificativa dos gastos e o desempenho dos CNEs, pois infelizmente ainda são muito utilizados para atender a interesses restritos de quem nomeia e do pequeno grupo favorecido, ao invés de suprirem alguma demanda técnica da administração pública.&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;QUADRO ESPEC.-QE/MRE: Não encontrei uma definição precisa mas aparentam ser algo relacionados a diplomacia.&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;EXERC DESCENT CARREI: 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.&lt;br /&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&#34;https://jus.com.br/artigos/21640/cessao-e-requisicao-de-servidor-publico-federal&#34;&gt;CEDIDO&lt;/a&gt;: O servidor da Administração Pública Federal poderá ser cedido a outro órgão ou entidade de qualquer ente federativo, incuindo as empresas públicas e sociedades de economia mista, para o exercício de cargo em comissão ou função de confiança e, ainda, nos termos de leis específicas.&lt;/li&gt;
&lt;li&gt;COLABORADOR ICT: Também não encontrei informações sobre, mas parece estar relacionado à Inovação, Ciência e Tecnologia.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Voltando aos nossos CCs: existe diferença na distribuição de salários entre CCs e servidores ativos?&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;df2 &amp;lt;- filter(df, SITUACAO_VINCULO %in% c(&amp;quot;ATIVO PERMANENTE&amp;quot;, &amp;quot;NOMEADO CARGO COMIS.&amp;quot;))
  
ggplot(df2, aes(SALARIO)) +
  geom_histogram(binwidth = 1000, fill = cor1) +
  facet_grid(SITUACAO_VINCULO ~ ., scales = &amp;quot;free_y&amp;quot;) +
  xlim(0, 35000) +
  labs(title = &amp;quot;Distribuição dos salários de acordo com o vínculo&amp;quot;, x = &amp;quot;Salário&amp;quot;, y = &amp;quot;Frequência&amp;quot;) +
  theme_bw()
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;img src=&#34;http://www.sillasgonzaga.com/figs/transparenciaParte7/unnamed-chunk-4-1.png&#34; alt=&#34;center&#34; /&gt;&lt;/p&gt;

&lt;p&gt;O interessante aqui é que, sob nenhuma hipótese, é possível afirmar que a distribuição dos salários para os CCs é normal.&lt;/p&gt;

&lt;p&gt;Próxima pergunta: existe uma relação entre o número de cargos comissionados e o número total de servidores por estado?&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;df2 %&amp;gt;%
  group_by(UF_EXERCICIO, SITUACAO_VINCULO) %&amp;gt;%
  summarise(quantidade = n()) %&amp;gt;%
  ggplot(aes(x = UF_EXERCICIO, y = quantidade)) +
    geom_bar(stat = &amp;quot;identity&amp;quot;, fill = cor1) +
    facet_grid(SITUACAO_VINCULO ~ ., scales = &amp;quot;free_y&amp;quot;) +
    labs(title = &amp;quot;Quantidade de servidores por estado e por vínculo&amp;quot;, x = &amp;quot;&amp;quot;, y = &amp;quot;Quantidade de servidores&amp;quot;)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;img src=&#34;http://www.sillasgonzaga.com/figs/transparenciaParte7/unnamed-chunk-5-1.png&#34; alt=&#34;center&#34; /&gt;&lt;/p&gt;

&lt;p&gt;Deu para perceber a aberração que existe no Distrito Federal, não deu? O DF possui mais de 5000 CCs, enquanto que o segundo estado com mais servidores do tipo, o RJ, tem cerca de 500.&lt;/p&gt;

&lt;p&gt;E em relação aos salários?&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;df2 %&amp;gt;%
  group_by(REGIAO, UF_EXERCICIO, SITUACAO_VINCULO) %&amp;gt;%
  summarise(salario = median(SALARIO)) %&amp;gt;%
  ggplot(aes(x = UF_EXERCICIO, y = salario, fill = REGIAO)) +
    geom_bar(stat = &amp;quot;identity&amp;quot;) +
    facet_grid(SITUACAO_VINCULO ~ ., scales = &amp;quot;free_y&amp;quot;) +
    labs(title = &amp;quot;Salário mediano por estado\n e vínculo do servidor&amp;quot;, x = &amp;quot;&amp;quot;, y = &amp;quot;Salário (R$)&amp;quot;) +
    theme_bw() +
    theme(legend.position = &amp;quot;bottom&amp;quot;, legend.title = element_blank())
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;img src=&#34;http://www.sillasgonzaga.com/figs/transparenciaParte7/unnamed-chunk-6-1.png&#34; alt=&#34;center&#34; /&gt;&lt;/p&gt;

&lt;p&gt;Como já havia comentado no terceiro post da série, a situação dos CCs no Ceará é estranha: lá, eles têm o maior salário mediano (R$ 8554, 70) dentre os CCs do Brasil, mais de R$ 3000,00 de diferença para o segundo lugar, Sergipe.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Por hoje é só!&lt;/strong&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Transparência (6): Quem são os 1% do funcionalismo público?</title>
      <link>http://www.sillasgonzaga.com/post/transparencia-06/</link>
      <pubDate>Sun, 24 Jan 2016 00:00:00 +0000</pubDate>
      
      <guid>http://www.sillasgonzaga.com/post/transparencia-06/</guid>
      <description>

&lt;h1 id=&#34;transparência-6-quem-são-os-1-mais-ricos-do-funcionalismo-público&#34;&gt;Transparência (6): Quem são os 1% mais ricos do funcionalismo público?&lt;/h1&gt;

&lt;p&gt;&lt;a href=&#34;https://en.wikipedia.org/wiki/We_are_the_99%25&#34;&gt;Para quem não entendeu a referência.&lt;/a&gt;&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;library(ggplot2)
library(dplyr)
library(reshape2)
library(lubridate)
library(htmlTable)
df &amp;lt;- read.csv2(&amp;quot;/home/sillas/R/data/transparenciaComSalarios.csv&amp;quot;, stringsAsFactors = FALSE, fileEncoding = &amp;quot;ISO-8859-15&amp;quot;)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;p&gt;Primeiramente, quantos servidores compõem o 1%?&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;paste0(&amp;quot;O número total de servidores é: &amp;quot;, nrow(df))
&lt;/code&gt;&lt;/pre&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;## [1] &amp;quot;O número total de servidores é: 518270&amp;quot;
&lt;/code&gt;&lt;/pre&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;paste0(&amp;quot;A quantidade de servidores do 1% é: &amp;quot;, round(nrow(df)*0.01))
&lt;/code&gt;&lt;/pre&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;## [1] &amp;quot;A quantidade de servidores do 1% é: 5183&amp;quot;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;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.&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;umPorCento &amp;lt;- df[order(-df$SALARIO),]
umPorCento &amp;lt;- umPorCento[1:5183,]
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;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?&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;# Salário dos 1%
sum(umPorCento$SALARIO)
&lt;/code&gt;&lt;/pre&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;## [1] 146524625
&lt;/code&gt;&lt;/pre&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;# Salário total
sum(df$SALARIO)
&lt;/code&gt;&lt;/pre&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;## [1] 4377796333
&lt;/code&gt;&lt;/pre&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;# Porcentagem
round(100*(sum(umPorCento$SALARIO)/sum(df$SALARIO)),2)
&lt;/code&gt;&lt;/pre&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;## [1] 3.35
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;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.&lt;/p&gt;

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

&lt;h2 id=&#34;1-onde-eles-estão&#34;&gt;1. Onde eles estão?&lt;/h2&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;temp &amp;lt;- umPorCento %&amp;gt;%
  group_by(UF_EXERCICIO, REGIAO) %&amp;gt;%
  summarise(quantidade = n())

ggplot(temp, aes(x = reorder(UF_EXERCICIO, -quantidade), y = quantidade, fill = REGIAO)) +
    geom_bar(stat = &amp;quot;identity&amp;quot;) +
    labs(title = &amp;quot;Quantidade de\n servidores por estado&amp;quot;, x = &amp;quot;&amp;quot;, y = &amp;quot;&amp;quot;) +
   theme(legend.position = &amp;quot;bottom&amp;quot;, legend.title = element_blank())
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;img src=&#34;http://www.sillasgonzaga.com/figs/transparenciaParte6/unnamed-chunk-5-1.png&#34; alt=&#34;center&#34; /&gt;&lt;/p&gt;

&lt;p&gt;Melhor do que apresentar esses resultados isolados é comparar com os resultados apresentados no &lt;a href=&#34;http://sillasgonzaga.github.io/blog/transparencia1/&#34;&gt;primeiro post&lt;/a&gt; desta série. Para isso, ao invés de trabalhar com quantidade, veremos o porcentual de servidores que está alocado em cada UF.&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;temp2 &amp;lt;- df %&amp;gt;%
  group_by(UF_EXERCICIO, REGIAO) %&amp;gt;%
  summarise(quantidadeNormal = n())

# transformar quantidade em porcentagem do total
temp$quantidade &amp;lt;- 100*temp$quantidade/sum(temp$quantidade)
temp2$quantidadeNormal &amp;lt;- 100*temp2$quantidadeNormal/sum(temp2$quantidadeNormal)


comparacao &amp;lt;- merge(temp, temp2, by = &amp;quot;UF_EXERCICIO&amp;quot;)


temp3 &amp;lt;- select(comparacao, UF_EXERCICIO, REGIAO = REGIAO.x, quantidade1 = quantidade, quantidadeNormal)

temp3 &amp;lt;- melt(temp3, id.vars = c(&amp;quot;UF_EXERCICIO&amp;quot;, &amp;quot;REGIAO&amp;quot;))

#mudar nome do fator para aparecer bonito no gráfico
levels(temp3$variable) &amp;lt;- c(&amp;quot;Grupo dos 1%&amp;quot;, &amp;quot;Total geral&amp;quot;)

ggplot(temp3, aes(x = UF_EXERCICIO, y = value, fill = variable)) +
  geom_bar(stat = &amp;quot;identity&amp;quot;, position = &amp;quot;dodge&amp;quot;) +
  labs(title = &amp;quot;Porcentual da quantidade de\n servidores por estado&amp;quot;, x = &amp;quot;&amp;quot;, y = &amp;quot;%&amp;quot;) +
  theme(legend.position = &amp;quot;bottom&amp;quot;, legend.title = element_blank())
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;img src=&#34;http://www.sillasgonzaga.com/figs/transparenciaParte6/unnamed-chunk-6-1.png&#34; alt=&#34;center&#34; /&gt;&lt;/p&gt;

&lt;p&gt;Mais uma vez o DF desponta como anomalia, onde mais de 35% dos servidores mais ricos estão alocados.&lt;/p&gt;

&lt;h2 id=&#34;2-em-quais-cargos-trabalham&#34;&gt;2. Em quais cargos trabalham?&lt;/h2&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;temp &amp;lt;- umPorCento %&amp;gt;%
  group_by(ORG_LOTACAO) %&amp;gt;%
  summarise(quantidade = n())


temp2 &amp;lt;- df %&amp;gt;%
  group_by(ORG_LOTACAO) %&amp;gt;%
  summarise(quantidadeNormal = n())
  


# transformar quantidade em porcentagem do total
temp$quantidade &amp;lt;- 100*temp$quantidade/sum(temp$quantidade)
temp2$quantidadeNormal &amp;lt;- 100*temp2$quantidadeNormal/sum(temp2$quantidadeNormal)

# filtrar 20 maiores de cada
temp &amp;lt;- temp %&amp;gt;%
  top_n(20)

temp2 &amp;lt;- temp2 %&amp;gt;%
  top_n(20)

comparacao &amp;lt;- merge(temp, temp2, by = &amp;quot;ORG_LOTACAO&amp;quot;)
temp3 &amp;lt;- select(comparacao, ORG_LOTACAO, quantidade1 = quantidade, quantidadeNormal)

temp3 &amp;lt;- melt(temp3, id.vars = &amp;quot;ORG_LOTACAO&amp;quot;)

#mudar nome do fator para aparecer bonito no gráfico
levels(temp3$variable) &amp;lt;- c(&amp;quot;Grupo dos 1%&amp;quot;, &amp;quot;Total geral&amp;quot;)

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

&lt;p&gt;&lt;img src=&#34;http://www.sillasgonzaga.com/figs/transparenciaParte6/unnamed-chunk-7-1.png&#34; alt=&#34;center&#34; /&gt;&lt;/p&gt;

&lt;p&gt;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%.&lt;/p&gt;

&lt;h2 id=&#34;3-qual-cargo-desempenham&#34;&gt;3. Qual cargo desempenham?&lt;/h2&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;umPorCento %&amp;gt;%
  group_by(DESCRICAO_CARGO) %&amp;gt;%
  summarise(quantidade = n()) %&amp;gt;%
  mutate(percentual = 100*quantidade/sum(quantidade)) %&amp;gt;%
  na.omit() %&amp;gt;%
  top_n(20) %&amp;gt;%
  ggplot(aes(x = reorder(DESCRICAO_CARGO, percentual), y = percentual)) +
    labs(title = &amp;quot;Porcentual da quantidade de\n servidores por cargo&amp;quot;, x = &amp;quot;&amp;quot;, y = &amp;quot;%&amp;quot;) +
    coord_flip() +
    geom_bar(stat = &amp;quot;identity&amp;quot;)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;img src=&#34;http://www.sillasgonzaga.com/figs/transparenciaParte6/unnamed-chunk-8-1.png&#34; alt=&#34;center&#34; /&gt;&lt;/p&gt;

&lt;p&gt;Curiosamente, a maioria dos 1% são professores de universidades federais. Pelo visto não é todo professor que ganha pouco&amp;hellip;&lt;/p&gt;

&lt;h2 id=&#34;4-a-quanto-tempo-estão-no-cargo&#34;&gt;4. A quanto tempo estão no cargo?&lt;/h2&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;CalcAnos &amp;lt;- function(t0, t=today()) {
    x &amp;lt;- interval(t0, t)
    x &amp;lt;- as.period(x)
    x &amp;lt;- ceiling(year(x) + month(x)/12)
    return(x)
}


umPorCento$anos &amp;lt;- umPorCento$DATA_DIPLOMA_INGRESSO_SERVICOPUBLICO %&amp;gt;% dmy() %&amp;gt;% CalcAnos
df$anos &amp;lt;- df$DATA_DIPLOMA_INGRESSO_SERVICOPUBLICO %&amp;gt;% dmy() %&amp;gt;% CalcAnos

par(mfrow=c(2,2))
hist(umPorCento$anos, main = &amp;quot;Tempo trabalhando para o Estado\n(Grupo dos 1%)&amp;quot;, xlab = &amp;quot;Anos&amp;quot;)
hist(df$anos, main = &amp;quot;Tempo trabalhando para o Estado\n(Geral)&amp;quot;, xlab = &amp;quot;Anos&amp;quot;)
boxplot(umPorCento$anos, main = &amp;quot;Tempo trabalhando para o Estado\n(Grupo dos 1%)&amp;quot;, ylab = &amp;quot;Anos&amp;quot;)
boxplot(df$anos, main = &amp;quot;Tempo trabalhando para o Estado\n(Geral)&amp;quot;, ylab = &amp;quot;Anos&amp;quot;)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;img src=&#34;http://www.sillasgonzaga.com/figs/transparenciaParte6/unnamed-chunk-9-1.png&#34; alt=&#34;center&#34; /&gt;&lt;/p&gt;

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

&lt;h2 id=&#34;5-qual-a-natureza-de-seus-vínculos-com-o-estado&#34;&gt;5. Qual a natureza de seus vínculos com o Estado?&lt;/h2&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;temp &amp;lt;- umPorCento %&amp;gt;%
  group_by(SITUACAO_VINCULO) %&amp;gt;%
  summarise(quantidade = n()) 


temp2 &amp;lt;- df %&amp;gt;%
  group_by(SITUACAO_VINCULO) %&amp;gt;%
  summarise(quantidadeNormal = n())
  


# transformar quantidade em porcentagem do total
temp$quantidade &amp;lt;- 100*temp$quantidade/sum(temp$quantidade)
temp2$quantidadeNormal &amp;lt;- 100*temp2$quantidadeNormal/sum(temp2$quantidadeNormal)

# filtrar 20 maiores de cada
temp &amp;lt;- temp %&amp;gt;%
  top_n(20)

temp2 &amp;lt;- temp2 %&amp;gt;%
  top_n(20)

comparacao &amp;lt;- merge(temp, temp2, by = &amp;quot;SITUACAO_VINCULO&amp;quot;)
temp3 &amp;lt;- select(comparacao, SITUACAO_VINCULO, quantidade1 = quantidade, quantidadeNormal)

temp3 &amp;lt;- melt(temp3, id.vars = &amp;quot;SITUACAO_VINCULO&amp;quot;)

#mudar nome do fator para aparecer bonito no gráfico
levels(temp3$variable) &amp;lt;- c(&amp;quot;Grupo dos 1%&amp;quot;, &amp;quot;Total geral&amp;quot;)

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

&lt;p&gt;&lt;img src=&#34;http://www.sillasgonzaga.com/figs/transparenciaParte6/unnamed-chunk-10-1.png&#34; alt=&#34;center&#34; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Mais uma grande descoberta&lt;/strong&gt;: O porcentual de servidores das categorias &lt;em&gt;&amp;ldquo;APOSENTADO&amp;rdquo;&lt;/em&gt;, &lt;em&gt;&amp;ldquo;EXERC DESCENT CARREI&amp;rdquo;&lt;/em&gt; (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 &lt;em&gt;&amp;ldquo;REQUISITADO&amp;rdquo;&lt;/em&gt; (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.&lt;sup&gt;112&lt;/sup&gt;&amp;frasl;&lt;sub&gt;90&lt;/sub&gt;) é muito maior no grupo dos 1% do que no geral.&lt;/p&gt;

&lt;p&gt;É só ver o resultado acima para o grupo dos aposentados para saber o que tem de errado com nossa previdência.&lt;/p&gt;

&lt;h2 id=&#34;6-afinal-de-contas-quem-é-o-que-ganha-mais&#34;&gt;6. Afinal de contas, quem é o que ganha mais?&lt;/h2&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;umPorCento %&amp;gt;% select(-ID_SERVIDOR_PORTAL, -V1, -x) %&amp;gt;% top_n(1, SALARIO) %&amp;gt;% t %&amp;gt;% htmlTable()
&lt;/code&gt;&lt;/pre&gt;

&lt;table class=&#39;gmisc_table&#39; style=&#39;border-collapse: collapse; margin-top: 1em; margin-bottom: 1em;&#39; &gt;
&lt;tbody&gt;
&lt;tr style=&#39;border-top: 2px solid grey;&#39;&gt;
&lt;td style=&#39;border-top: 2px solid grey; text-align: left;&#39;&gt;UF_EXERCICIO&lt;/td&gt;
&lt;td style=&#39;border-top: 2px solid grey; text-align: center;&#39;&gt;DF&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#39;text-align: left;&#39;&gt;NOME&lt;/td&gt;
&lt;td style=&#39;text-align: center;&#39;&gt;MANOEL DIAS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#39;text-align: left;&#39;&gt;DESCRICAO_CARGO&lt;/td&gt;
&lt;td style=&#39;text-align: center;&#39;&gt;MINISTRO DE ESTADO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#39;text-align: left;&#39;&gt;ATIVIDADE&lt;/td&gt;
&lt;td style=&#39;text-align: center;&#39;&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#39;text-align: left;&#39;&gt;UORG_LOTACAO&lt;/td&gt;
&lt;td style=&#39;text-align: center;&#39;&gt;MINISTERIO DO TRABALHO E EMPREGO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#39;text-align: left;&#39;&gt;ORG_LOTACAO&lt;/td&gt;
&lt;td style=&#39;text-align: center;&#39;&gt;MINISTERIO DO TRABALHO E EMPREGO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#39;text-align: left;&#39;&gt;ORGSUP_LOTACAO&lt;/td&gt;
&lt;td style=&#39;text-align: center;&#39;&gt;MINISTERIO DO TRABALHO E EMPREGO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#39;text-align: left;&#39;&gt;UORG_EXERCICIO&lt;/td&gt;
&lt;td style=&#39;text-align: center;&#39;&gt;MINISTERIO DO TRABALHO E EMPREGO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#39;text-align: left;&#39;&gt;ORG_EXERCICIO&lt;/td&gt;
&lt;td style=&#39;text-align: center;&#39;&gt;MINISTERIO DO TRABALHO E EMPREGO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#39;text-align: left;&#39;&gt;ORGSUP_EXERCICIO&lt;/td&gt;
&lt;td style=&#39;text-align: center;&#39;&gt;MINISTERIO DO TRABALHO E EMPREGO&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#39;text-align: left;&#39;&gt;SITUACAO_VINCULO&lt;/td&gt;
&lt;td style=&#39;text-align: center;&#39;&gt;NATUREZA ESPECIAL&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#39;text-align: left;&#39;&gt;REGIME_JURIDICO&lt;/td&gt;
&lt;td style=&#39;text-align: center;&#39;&gt;NATUREZA ESPECIAL&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#39;text-align: left;&#39;&gt;JORNADA_DE_TRABALHO&lt;/td&gt;
&lt;td style=&#39;text-align: center;&#39;&gt;40 HORAS SEMANAIS&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#39;text-align: left;&#39;&gt;DATA_INGRESSO_CARGOFUNCAO&lt;/td&gt;
&lt;td style=&#39;text-align: center;&#39;&gt;16/03/2013&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#39;text-align: left;&#39;&gt;DATA_INGRESSO_ORGAO&lt;/td&gt;
&lt;td style=&#39;text-align: center;&#39;&gt;15/03/2013&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#39;text-align: left;&#39;&gt;DATA_DIPLOMA_INGRESSO_SERVICOPUBLICO&lt;/td&gt;
&lt;td style=&#39;text-align: center;&#39;&gt;15/03/2013&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#39;text-align: left;&#39;&gt;REGIAO&lt;/td&gt;
&lt;td style=&#39;text-align: center;&#39;&gt;Centro-Oeste&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#39;text-align: left;&#39;&gt;SALARIO&lt;/td&gt;
&lt;td style=&#39;text-align: center;&#39;&gt;52808.24&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&#39;border-bottom: 2px solid grey; text-align: left;&#39;&gt;anos&lt;/td&gt;
&lt;td style=&#39;border-bottom: 2px solid grey; text-align: center;&#39;&gt;3&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;

&lt;p&gt;&lt;strong&gt;Por hoje, é só!&lt;/strong&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Transparência (5): Trabalhando com datas</title>
      <link>http://www.sillasgonzaga.com/post/transparencia-05/</link>
      <pubDate>Mon, 18 Jan 2016 00:00:00 +0000</pubDate>
      
      <guid>http://www.sillasgonzaga.com/post/transparencia-05/</guid>
      <description>

&lt;h1 id=&#34;transparência-5-trabalhando-com-datas&#34;&gt;Transparência (5): Trabalhando com datas&lt;/h1&gt;

&lt;p&gt;O dataset do Portal da Transparência traz três colunas relacionadas com datas: &lt;em&gt;DATA_INGRESSO_CARGOFUNCAO&lt;/em&gt;, &lt;em&gt;DATA_INGRESSO_ORGAO&lt;/em&gt; e &lt;em&gt;DATA_DIPLOMA_INGRESSO_SERVICOPUBLICO&lt;/em&gt;, as quais geram umas análises curiosas, principalmente se relacionadas com a variável salário.&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;library(treemap)
library(dplyr)
library(ggplot2)
library(ggrepel)
library(ggthemes)
library(lubridate)
df &amp;lt;- read.csv2(&amp;quot;/home/sillas/R/data/transparenciaComSalarios.csv&amp;quot;, stringsAsFactors = FALSE, fileEncoding = &amp;quot;ISO-8859-15&amp;quot;)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Primeiro, as datas vêm neste formato:&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;df %&amp;gt;%
  select(DATA_INGRESSO_CARGOFUNCAO, DATA_INGRESSO_ORGAO, DATA_DIPLOMA_INGRESSO_SERVICOPUBLICO) %&amp;gt;%
  head()
&lt;/code&gt;&lt;/pre&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;##   DATA_INGRESSO_CARGOFUNCAO DATA_INGRESSO_ORGAO
## 1                01/07/2006          01/01/1984
## 2                22/10/2014          20/10/2014
## 3                      &amp;lt;NA&amp;gt;          01/08/2015
## 4                30/11/2014          03/09/2014
## 5                19/05/2010          19/05/2010
## 6                02/02/2009          30/12/2008
##   DATA_DIPLOMA_INGRESSO_SERVICOPUBLICO
## 1                           01/06/1984
## 2                           17/02/2010
## 3                           01/08/2015
## 4                           28/06/2006
## 5                           19/05/2010
## 6                           30/12/2008
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;O R, nativamente, não reconhece este formato como data e sim como texto. O formato de datas que o R aceita é o americano, YYYYMMDD. Felizmente, o package &lt;em&gt;lubridate&lt;/em&gt; torna muito fácil converter as datas:&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;df &amp;lt;- df %&amp;gt;%
  mutate(dataCargo = dmy(DATA_INGRESSO_CARGOFUNCAO),
         dataOrgao = dmy(DATA_INGRESSO_ORGAO),
         dataServico = dmy(DATA_DIPLOMA_INGRESSO_SERVICOPUBLICO))
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Essas três variáveis nos dão o dia em que os servidores começaram a trabalhar. Para termos a quantidade de tempo que se passou desde então, criei duas funções que fazem esse cálculo:&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;CalcMeses &amp;lt;- function(t0, t=today()) {
    x &amp;lt;- interval(t0, t)
    x &amp;lt;- as.period(x)
    x &amp;lt;- year(x)*12 + month(x)
    return(x)
}

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

df$meses.no.cargo &amp;lt;- CalcMeses(df$dataCargo)
df$meses.no.orgao &amp;lt;- CalcMeses(df$dataOrgao)
df$meses.como.servidor &amp;lt;- CalcMeses(df$dataServico)

df$anos.no.cargo &amp;lt;- CalcAnos(df$dataCargo)
df$anos.no.orgao &amp;lt;- CalcAnos(df$dataOrgao)
df$anos.como.servidor &amp;lt;- CalcAnos(df$dataServico)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Agora podemos começar a fazer algumas perguntas aos nossos dados:&lt;/p&gt;

&lt;h3 id=&#34;1-qual-o-tempo-médio-em-meses-dos-servidores-no-brasil&#34;&gt;1. Qual o tempo médio (em meses) dos servidores no Brasil?&lt;/h3&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;ggplot(df, aes(x=anos.como.servidor)) +
  geom_histogram(binwidth=1) +
  scale_x_continuous(breaks=c(1, seq(5, max(df$anos.como.servidor, na.rm=T)+1, by=5))) +
  theme_bw() +
  labs(title = &amp;quot;Tempo em que os servidores federais estão trabalhando no Estado&amp;quot;,
       x = &amp;quot;Tempo no serviço público em anos&amp;quot;, y = &amp;quot;Número de servidores&amp;quot;)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;img src=&#34;http://www.sillasgonzaga.com/figs/transparenciaParte5/unnamed-chunk-4-1.png&#34; alt=&#34;center&#34; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Observações&lt;/strong&gt;:&lt;br /&gt;
* A maioria dos servidores tomou posse há 3 anos.&lt;br /&gt;
* Existe um número absurdamente grande de servidores com mais de 30 anos no serviço público. Na verdade, é mais comum encontrar um servidor que tenha mais de 30 anos de serviço do que entre 15 a 25.&lt;br /&gt;
* Existem alguns outliers que têm mais de 55 anos que causaram a distorção do histograma.&lt;/p&gt;

&lt;p&gt;Separado por região e excluindo os outliers:&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;escala = c(1, seq(5, max(df$anos.como.servidor, na.rm=T)+1, by=5))

ggplot(subset(df, anos.como.servidor &amp;lt;= 50), aes(x=anos.como.servidor)) +
  geom_histogram(binwidth=1) +
  scale_x_continuous(breaks = escala) +
  facet_grid(REGIAO~., scales=&amp;quot;free&amp;quot;) +
  theme_bw() +
  labs(title = &amp;quot;Tempo em que os servidores federais estão trabalhando no Estado&amp;quot;,
       x = &amp;quot;Tempo no serviço público em anos&amp;quot;, y = &amp;quot;Número de servidores&amp;quot;)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;img src=&#34;http://www.sillasgonzaga.com/figs/transparenciaParte5/unnamed-chunk-5-1.png&#34; alt=&#34;center&#34; /&gt;&lt;/p&gt;

&lt;p&gt;Fica muito fácil detectar a anomalia nos dados: o número de servidores que são funcionários do governo há mais de 35 anos na região Norte é assustador. São mais de 6000, muito mais do que em qualquer região. Na verdade, essa é a faixa de idade com mais pessoas dessa região.&lt;/p&gt;

&lt;p&gt;Separado por região, mas mostrado por boxplots:&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;#Boxplot
# Regiões
ggplot(data=df, aes(x=REGIAO, y=anos.como.servidor, fill=REGIAO)) +
    geom_boxplot() +
    scale_fill_brewer(palette=&amp;quot;Set1&amp;quot;) +
    guides(fill=FALSE) +
    scale_y_continuous(breaks=escala) +
    labs(title = &amp;quot;Distribuição do tempo no serviço público de acordo com a região&amp;quot;, x = &amp;quot;Região&amp;quot;, y = &amp;quot;Anos como servidor&amp;quot;) +
    theme_bw()
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;img src=&#34;http://www.sillasgonzaga.com/figs/transparenciaParte5/unnamed-chunk-6-1.png&#34; alt=&#34;center&#34; /&gt;&lt;/p&gt;

&lt;p&gt;Depois do gráfico acima, acredito que não restam mais dúvidas que o Boxplot é uma ferramenta muito superior ao histograma quando o objetivo é comparar a distribuição de uma mesma variável numérica de acordo com outra variável categórica. Aqui, é muito mais fácil detectar que existe algo muito estranho no Norte: Os servidores de lá têm, em média, 25 anos de serviço público. A diferença para as outras regiões é colossal.&lt;/p&gt;

&lt;p&gt;As diferenças ficam ainda mais gritantes quando se faz a estratificação por estado. A linha verde horizontal representa a mediana geral do tempo em que as pessoas do dataset estão trabalhando para o governo:&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;#: Agrupar estados por região
 
#Vetor de cores:
coresEstados &amp;lt;- c(
  #Norte
  &amp;quot;AM&amp;quot; = &amp;quot;#8dd3c7&amp;quot;, &amp;quot;AP&amp;quot;=&amp;quot;#ffffb3&amp;quot;, &amp;quot;AC&amp;quot; = &amp;quot;#bebada&amp;quot;,
  &amp;quot;PA&amp;quot; = &amp;quot;#fb8072&amp;quot;, &amp;quot;RO&amp;quot; = &amp;quot;#80b1d3&amp;quot;, &amp;quot;RR&amp;quot; = &amp;quot;#fdb462&amp;quot;,
  #Nordeste
  &amp;quot;AL&amp;quot; = &amp;quot;#8dd3c7&amp;quot;, &amp;quot;BA&amp;quot; = &amp;quot;#ffffb3&amp;quot;, &amp;quot;CE&amp;quot; = &amp;quot;#bebada&amp;quot;,
  &amp;quot;MA&amp;quot; = &amp;quot;#fb8072&amp;quot;, &amp;quot;PB&amp;quot; = &amp;quot;#80b1d3&amp;quot;, &amp;quot;PE&amp;quot; = &amp;quot;#fdb462&amp;quot;,
  &amp;quot;PI&amp;quot; = &amp;quot;#b3de69&amp;quot;, &amp;quot;RN&amp;quot; = &amp;quot;#fccde5&amp;quot;, &amp;quot;SE&amp;quot; = &amp;quot;#d9d9d9&amp;quot;, &amp;quot;TO&amp;quot; = &amp;quot;#bc80bd&amp;quot;,
  #CO
  &amp;quot;DF&amp;quot; = &amp;quot;#8dd3c7&amp;quot;, &amp;quot;GO&amp;quot; = &amp;quot;#ffffb3&amp;quot;, &amp;quot;MS&amp;quot; = &amp;quot;#bebada&amp;quot;, &amp;quot;MT&amp;quot; = &amp;quot;#fb8072&amp;quot;,
  #SUDESTE
  &amp;quot;SP&amp;quot; = &amp;quot;#8dd3c7&amp;quot;, &amp;quot;RJ&amp;quot; = &amp;quot;#ffffb3&amp;quot;, &amp;quot;ES&amp;quot; = &amp;quot;#bebada&amp;quot;, &amp;quot;MG&amp;quot; = &amp;quot;#fb8072&amp;quot;,
  #SUL
  &amp;quot;PR&amp;quot; = &amp;quot;#b3de69&amp;quot;, &amp;quot;SC&amp;quot; = &amp;quot;#fccde5&amp;quot;, &amp;quot;RS&amp;quot; = &amp;quot;#d9d9d9&amp;quot;
  )


ggplot(data=df, aes(x=UF_EXERCICIO, y=anos.como.servidor, fill=UF_EXERCICIO)) +
  geom_boxplot() +
  facet_grid(. ~ REGIAO, scales=&amp;quot;free&amp;quot;) +
  scale_y_continuous(breaks=escala) +
  labs(title=&amp;quot;Tempo médio dos servidores no\n funcionalismo público por estado&amp;quot;, x=&amp;quot;Estado&amp;quot;, y=&amp;quot;Tempo como servidor em anos&amp;quot;) +
  scale_fill_manual(values= coresEstados) +
  guides(fill=FALSE) + 
  geom_hline(aes(yintercept = median(df$anos.como.servidor, na.rm = TRUE)), color = &amp;quot;green&amp;quot;) +
  theme(axis.text.x=element_text(angle=45)) +
  theme_bw()
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;img src=&#34;http://www.sillasgonzaga.com/figs/transparenciaParte5/unnamed-chunk-7-1.png&#34; alt=&#34;center&#34; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Parem e percebam o quão absurda é a situação em Amapá&lt;/strong&gt;, que merece dois comentários a parte:&lt;br /&gt;
* A mediana é igual a cerca de 37 anos. Na verdade, a distribuição é tão bagunçada que a mediana deixa de fazer sentido aqui nesse contexto.&lt;br /&gt;
* Os servidores com menos de 11 anos, que é a mediana geral, são considerados anomalia no estado.&lt;br /&gt;
* Em comparação, Tocantins parece ser uma situação oposta ao estado do Norte.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Transparência(4): Análise de salários usando Treemaps</title>
      <link>http://www.sillasgonzaga.com/post/transparencia-04/</link>
      <pubDate>Sun, 17 Jan 2016 00:00:00 +0000</pubDate>
      
      <guid>http://www.sillasgonzaga.com/post/transparencia-04/</guid>
      <description>

&lt;h1 id=&#34;transparência-4-análise-de-salários-usando-treemaps&#34;&gt;Transparência(4): Análise de salários usando Treemaps&lt;/h1&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;library(treemap)
library(dplyr)
library(ggplot2)
library(ggrepel)
library(ggthemes)
df &amp;lt;- read.csv2(&amp;quot;/home/sillas/R/data/transparenciaComSalarios.csv&amp;quot;, stringsAsFactors = FALSE, fileEncoding = &amp;quot;ISO-8859-15&amp;quot;)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Para este post, continuaremos analisando os salários dos servidores federais, mas agora usando uma visualização chamada Treemap ou Mapa de árvores.&lt;/p&gt;

&lt;p&gt;Por exemplo, o gráfico abaixo compara diferentes órgãos públicos de acordo com a quantidade de servidores e o salário médio dos mesmos.&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;aggSetor &amp;lt;-df %&amp;gt;%
  group_by(ORG_LOTACAO) %&amp;gt;%
  summarise(quantidade = n(),
            salarioMedio = median(SALARIO))

aggSetor$escala &amp;lt;- scale(aggSetor$salarioMedio) #necessário para criar valores negativos para deixar as disparidades mais evidentes

x &amp;lt;- treemap(aggSetor, index = &amp;quot;ORG_LOTACAO&amp;quot;, vSize = &amp;quot;quantidade&amp;quot;, vColor = &amp;quot;escala&amp;quot;,
        type = &amp;quot;value&amp;quot;, palette = &amp;quot;-RdGy&amp;quot;, lowerbound.cex.labels = 0.3,
        title  =  &amp;quot;Treemap dos salários dos órgãos federais brasileiros&amp;quot;)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;img src=&#34;http://www.sillasgonzaga.com/figs/transparenciaParte4/unnamed-chunk-2-1.png&#34; alt=&#34;center&#34; /&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Interpretação&lt;/strong&gt;: Com o gráfico acima, aprendemos que:&lt;br /&gt;
* O Ministério da Saúde tem muitos servidores mas salários muito baixos.&lt;br /&gt;
* O Ministério da Fazenda, a Advocacia-Geral da União e o Banco Central do Brasil são os que possuem os maiores salários.&lt;/p&gt;

&lt;p&gt;O treemap é chamado assim por permitir uma visualização fácil de hierarquias, isto é, de variáveis categóricas e seus respectivos subníveis. Além disso, ele é excelente para representar visualmente relações entre duas ou mais variáveis categóricas.
Por exemplo, será que existe alguma relação interessante entre o UF e o vínculo do servidor?&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;treemap(df, index = c(&amp;quot;UF_EXERCICIO&amp;quot;, &amp;quot;SITUACAO_VINCULO&amp;quot;), vSize = &amp;quot;x&amp;quot;)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;img src=&#34;http://www.sillasgonzaga.com/figs/transparenciaParte4/unnamed-chunk-3-1.png&#34; alt=&#34;center&#34; /&gt;&lt;/p&gt;

&lt;p&gt;Aparentemente, tem sim! O número de servidores de Contrário Temporário no RJ e de Cargo Comissionado no DF parecem ser muito grandes. Podemos ratificar isso filtrando fora os servidores ativos:&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;treemap(subset(df, SITUACAO_VINCULO != &amp;quot;ATIVO PERMANENTE&amp;quot;), index = c(&amp;quot;UF_EXERCICIO&amp;quot;, &amp;quot;SITUACAO_VINCULO&amp;quot;), vSize = &amp;quot;x&amp;quot;)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;img src=&#34;http://www.sillasgonzaga.com/figs/transparenciaParte4/unnamed-chunk-4-1.png&#34; alt=&#34;center&#34; /&gt;&lt;/p&gt;

&lt;p&gt;Vamos conferir essa informação com um gráfico de dispersão:&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;df %&amp;gt;%
  filter(SITUACAO_VINCULO == &amp;quot;NOMEADO CARGO COMIS.&amp;quot;) %&amp;gt;%
  group_by(UF_EXERCICIO) %&amp;gt;%
  summarise(servidores = n(),
            salario = median(SALARIO))  %&amp;gt;%
  ggplot(aes(servidores, salario)) +
    geom_point() +
    geom_text_repel(aes(label = UF_EXERCICIO)) +
    labs(title = &amp;quot;Cargos comissionados de cada estado&amp;quot;, x = &amp;quot;Quantidade de servidores&amp;quot;, y = &amp;quot;Salário médio&amp;quot;) +
    theme_few()
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;img src=&#34;http://www.sillasgonzaga.com/figs/transparenciaParte4/unnamed-chunk-5-1.png&#34; alt=&#34;center&#34; /&gt;&lt;/p&gt;

&lt;p&gt;Duas grandes descobertas aqui:&lt;br /&gt;
* O &lt;strong&gt;DF&lt;/strong&gt; tem um número assustadoramente grande de CCs (5384), tanto que chega a distorcer o gráfico.&lt;br /&gt;
* Os CCs do &lt;strong&gt;CE&lt;/strong&gt; tem um salário médio assustadoramente alto (R$8554,70).&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Por hoje é só!&lt;/strong&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Transparência (3): Em quais estados os salários são mais mal distribuídos?</title>
      <link>http://www.sillasgonzaga.com/post/transparencia-03/</link>
      <pubDate>Mon, 11 Jan 2016 00:00:00 +0000</pubDate>
      
      <guid>http://www.sillasgonzaga.com/post/transparencia-03/</guid>
      <description>

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;library(ggplot)
library(ggrepel)
library(ggthemes)
library(dplyr)
&lt;/code&gt;&lt;/pre&gt;

&lt;h5 id=&#34;aviso&#34;&gt;Aviso&lt;/h5&gt;

&lt;p&gt;Este post funciona como um adendo ao anterior, portanto recomendo o ler antes de prosseguir com a leitura.&lt;/p&gt;

&lt;p&gt;Assim que eu publiquei o último post, percebi que perdi a oportunidade de analisar o quão diferente são as distribuições dos salários nos estados brasileiros e não só nas regiões. Voltando ao nosso dataset, que dessa vez carrego apenas as colunas de salários e UFs:&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;df &amp;lt;- read.csv2(&amp;quot;/home/sillas/R/data/transparenciaComSalarios.csv&amp;quot;, stringsAsFactors = FALSE) %&amp;gt;%
  select(uf = UF_EXERCICIO, salario = SALARIO)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Quais são, então, os estados com as maiores assimetria e curtoses em sua distribuição de salário?&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;temp &amp;lt;- df %&amp;gt;%
  group_by(uf) %&amp;gt;%
  summarise(assimetria = skewness(salario),
            curtose = kurtosis(salario))

ggplot(temp, aes(x = assimetria, y = curtose)) +
  geom_point() +
  geom_text_repel(aes(label = uf)) +
  theme_few()
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;img src=&#34;http://www.sillasgonzaga.com/figs/transparenciaParte3/unnamed-chunk-3-1.png&#34; alt=&#34;center&#34; /&gt;&lt;/p&gt;

&lt;p&gt;Do gráfico de cima tiramos duas conclusões:&lt;br /&gt;
* A disparidade do Amapá e, principalmente, de Roraima em relação aos outros estados é colossal.
* Existe uma correlação linear entre assimetria e curtose, algo que eu não esperava muito. Podemos checar este dado:&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;cor(temp$assimetria, temp$curtose)
&lt;/code&gt;&lt;/pre&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;## [1] 0.9850373
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Realmente, a correlação é muito alta.&lt;/p&gt;

&lt;p&gt;Voltando aos estados, nada melhor do que plotar uma comparação entre os estados mais díspares e os que a distribuição mais se aproxima do normal (SP e DF):&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;temp &amp;lt;- filter(df, uf %in% c(&amp;quot;RR&amp;quot;, &amp;quot;AP&amp;quot;, &amp;quot;DF&amp;quot;, &amp;quot;SP&amp;quot;))

# Necessário para mudar a ordem dos estados no gráfico
temp$uf &amp;lt;- factor(temp$uf, levels = c(&amp;quot;RR&amp;quot;, &amp;quot;AP&amp;quot;, &amp;quot;DF&amp;quot;, &amp;quot;SP&amp;quot;))  


ggplot(temp, aes(salario)) +
  geom_histogram() +
  facet_grid(uf ~., scales = &amp;quot;free&amp;quot;) +
  scale_x_continuous(breaks=seq(0, 50000, by=5000)) +
  theme_few() +
  labs(title = &amp;quot;Distribuição do salário dos servidores em certas UFs&amp;quot;, x = &amp;quot;Faixa salarial&amp;quot;, y = &amp;quot;Frequência&amp;quot;)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;img src=&#34;http://www.sillasgonzaga.com/figs/transparenciaParte3/unnamed-chunk-5-1.png&#34; alt=&#34;center&#34; /&gt;&lt;/p&gt;

&lt;p&gt;Agora fica tudo muito claro: Existe uma concentração estranhamente grande de pessoas que ganham cerca de R$5000,00 mensais em comparação com o resto dos servidores do estado.&lt;/p&gt;

&lt;p&gt;A presença de outliers que ganha mais de 25000 reais distorce o gráfico, então vale a pena olhar para a mesma distribuição sem eles:&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;ggplot(subset(temp, salario &amp;lt;= 25000), aes(salario)) +
  geom_histogram(binwidth = 1000) +
  facet_grid(uf ~., scales = &amp;quot;free&amp;quot;) +
  scale_x_continuous(breaks=seq(0, 50000, by=5000))  +
  theme_few() +
  labs(title = &amp;quot;Distribuição do salário dos servidores em certas UFs&amp;quot;, x = &amp;quot;Faixa salarial&amp;quot;, y = &amp;quot;Frequência&amp;quot;)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;img src=&#34;http://www.sillasgonzaga.com/figs/transparenciaParte3/unnamed-chunk-6-1.png&#34; alt=&#34;center&#34; /&gt;&lt;/p&gt;

&lt;p&gt;Temos agora ainda mais evidência de um fenômeno muito interessante: os salários em RR e AP são muito mais distribuídos. Na verdade, o que acontece é que a grande maioria dos servidores roraimenses e amapaenses ganham até R$5000,00 e muito poucos ganham mais de R$15000,00.&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Transparência (2): Qual o salário médio dos servidores federais?</title>
      <link>http://www.sillasgonzaga.com/post/transparencia-2-qual-o-sal%C3%A1rio-m%C3%A9dio-dos-servidores-federais/</link>
      <pubDate>Sun, 10 Jan 2016 00:00:00 +0000</pubDate>
      
      <guid>http://www.sillasgonzaga.com/post/transparencia-2-qual-o-sal%C3%A1rio-m%C3%A9dio-dos-servidores-federais/</guid>
      <description>

&lt;h1 id=&#34;transparência-2-qual-o-salário-médio-dos-servidores-federais&#34;&gt;Transparência (2): Qual o salário médio dos servidores federais?&lt;/h1&gt;

&lt;p&gt;Este é o segundo post da série de artigos sobre dados do Portal Transparência relativos a de servidores federais. Agora, o foco são os salários.&lt;br /&gt;
Outra pequena mudança é que, para os gráficos deste post, ao invés de usar o tema &lt;em&gt;theme_economist()&lt;/em&gt;, usarei o &lt;em&gt;theme_wsj()&lt;/em&gt;, também incluso no package &lt;em&gt;ggthemes&lt;/em&gt;.&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;library(ggplot2)
library(stringr)
library(ggthemes)
library(dplyr)
library(ggrepel)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Por alguma razão além do meu entendimento, o Portal da Transparência arquiva os dados de salários em um arquivo separado do principal. Iremos agora importá-lo e juntá-lo com o data frame principal, criado no &lt;a href=&#34;http://sillasgonzaga.github.io/blog/transparencia1/&#34;&gt;post anterior&lt;/a&gt;.&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;# Basicamente as únicas colunas que importam são a 3ª (ID do servidor) e a 6ª (remuneração bruta)
df &amp;lt;- read.csv2(&amp;quot;/home/sillas/R/data/transparencia.csv&amp;quot;, fileEncoding = &amp;quot;ISO-8859-15&amp;quot;)

salarios &amp;lt;- read.csv2(&amp;quot;/home/sillas/Downloads/20150831_Remuneracao.csv&amp;quot;,
                      sep=&amp;quot;\t&amp;quot;, stringsAsFactors=FALSE) %&amp;gt;%  select(3, 6) 


names(salarios) &amp;lt;- c(&amp;quot;ID_SERVIDOR_PORTAL&amp;quot;, &amp;quot;SALARIO&amp;quot;)

names(df) &amp;lt;- str_to_upper(names(df))
df &amp;lt;- merge(df, salarios, by=&amp;quot;ID_SERVIDOR_PORTAL&amp;quot;)
df$x &amp;lt;- 1


rm(salarios)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Primeiramente, vamos olhar como é a distribuição dos salários dos servidores federais.&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;ggplot(data=df, aes(x=SALARIO)) +
    geom_histogram(binwidth=1000) +
    scale_x_continuous(breaks=seq(0, 50000, by=5000)) +
    labs(title=&amp;quot;Histograma dos salários\n dos servidores&amp;quot;,
         x=&amp;quot;Salário&amp;quot;, y=&amp;quot;Quantidade de servidores&amp;quot;) +
  theme_wsj()
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;img src=&#34;http://www.sillasgonzaga.com/figs/transparenciaParte2/unnamed-chunk-3-1.png&#34; alt=&#34;center&#34; /&gt;&lt;/p&gt;

&lt;p&gt;Com o gráfico acima, é possível aprender que:
* Estranhamente, existe uma quantidade anormal (fora da curva) de servidores que ganham aproximadamente entre R$22.000 a RS$24.000,00.&lt;br /&gt;
* Percebeu que existe um &amp;ldquo;breu&amp;rdquo; após a faixa dos 35000? É porque existem alguns poucos servidores que ganham acima disso, o que distorce o gráfico. Eles são nossos outliers.&lt;br /&gt;
* Os salários dos servidores não seguem uma distribuição normal (ver comparação abaixo);&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;ggplot(data=df, aes(x=SALARIO)) +
    geom_histogram(binwidth=1000, aes(y=..density..)) +
    scale_x_continuous(breaks=seq(0, 50000, by=5000)) +
    labs(title=&amp;quot;Distribuição dos salários\n dos servidores&amp;quot;,
         x=&amp;quot;Salário&amp;quot;, y=&amp;quot;Proporção&amp;quot;) +
    stat_function(fun=dnorm, color=&amp;quot;red&amp;quot;, arg=list(mean=mean(df$SALARIO), sd=sd(df$SALARIO)))+
    theme_wsj()
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;img src=&#34;http://www.sillasgonzaga.com/figs/transparenciaParte2/unnamed-chunk-4-1.png&#34; alt=&#34;center&#34; /&gt;&lt;/p&gt;

&lt;p&gt;Será que os salários variam de acordo com a região? Existem diferentes visualizações que podem ser usadas para fazer essa comparação.&lt;/p&gt;

&lt;h2 id=&#34;histogramas&#34;&gt;Histogramas&lt;/h2&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;ggplot(data=df, aes(x=SALARIO)) +
  geom_histogram(binwidth=1000) +
  facet_grid(REGIAO~., scales = &amp;quot;free_y&amp;quot;) +  #TESTE
  scale_x_continuous(breaks=seq(0, 50000, by=5000)) +
  theme_wsj() +
  labs(title = &amp;quot;Distribuição dos salários\n por região&amp;quot;)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;img src=&#34;http://www.sillasgonzaga.com/figs/transparenciaParte2/Histogramas-1.png&#34; alt=&#34;center&#34; /&gt;&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;ggplot(data=df, aes(x=SALARIO)) +
    geom_histogram(binwidth=1000, aes(y=..density..)) +
    facet_grid(REGIAO~., scales = &amp;quot;free_y&amp;quot;) + 
    scale_x_continuous(breaks=seq(0, 50000, by=5000)) +
    stat_function(fun=dnorm, color=&amp;quot;red&amp;quot;, arg=list(mean=mean(df$SALARIO), sd=sd(df$SALARIO)))+
    scale_y_continuous(breaks=NULL) +
    theme_wsj()
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;img src=&#34;http://www.sillasgonzaga.com/figs/transparenciaParte2/Histogramas-2.png&#34; alt=&#34;center&#34; /&gt;&lt;/p&gt;

&lt;p&gt;Com os gráficos acima, é possível inferir que:
* A diferença entre as distribuições dos salários se mantém constante nas diferentes faixas salariais.&lt;br /&gt;
* Na região Norte, existe uma quantidade anormalmente alta de pessoas que ganham por volta de 5000 reais.&lt;br /&gt;
* No geral, os salários no Norte são bem baixos. A proporção de servidores que ganham acima de 10000 reais nessa região é muito menor que nas outras.&lt;/p&gt;

&lt;p&gt;A distribuição dos salários da região Norte aparenta ser a que mais difere de uma distribuição normal. É possível quantificar essa diferença por meio de duas métricas:&lt;/p&gt;

&lt;h3 id=&#34;assimateria-skewness&#34;&gt;Assimateria (skewness)&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;De acordo com Fonseca (2011) dá-se a nomenclatura de assimetria ao grau de afastamento de uma distribuição da unidade de assimetria. Uma Distribuição é Simétrica quando seus valores de Média, Mediana e Moda coincidem. A comparação entre o valor da Média e o valor da Moda, dá, portanto, uma indicação da inclinação da distribuição.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h3 id=&#34;curtose-kurtoses&#34;&gt;Curtose (kurtoses).&lt;/h3&gt;

&lt;blockquote&gt;
&lt;p&gt;Dá-se o nome de curtose ao grau de achatamento da distribuição:
(a)  Quando a distribuição apresenta uma curva de frequência mais fechada (mais aguda em sua parte superior), ela é denominada Leptocúrtica (Lepto = Delgado, Alongado, Magro, etc.)
(b)  A distribuição de referência (Distribuição Normal) é denominada Mesocúrtica (Meso = Meio, Central, etc.).
&amp;copy;  Quando a distribuição apresenta uma curva de frequência mais aberta (mais achatada em sua parte superior), ela é denominada Platicúrtica (Plato = Chato, Plano, Largo, etc.).&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Leia mais &lt;a href=&#34;http://alexandreprofessor.blogspot.com.br/p/assimetria-e-curtose.html&#34;&gt;aqui&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Em suma:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Assimetria é, como se pode inferir pelo seu nome, a medida da falta de assimetria de uma distribuição. Uma distribuição é simétrica se parece a mesma à esquerda ou à direita de seu ponto médio. Valores negativos de assimetria indicam que a distribuição é distorcida para a esquerda e positivos para a direita. A assimetria de uma distribuição normal é próxima a zero:&lt;/li&gt;
&lt;/ul&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;library(moments)
skewness(rnorm(100))
&lt;/code&gt;&lt;/pre&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;## [1] -0.1254035
&lt;/code&gt;&lt;/pre&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;skewness(rnorm(10000))
&lt;/code&gt;&lt;/pre&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;## [1] 0.02134943
&lt;/code&gt;&lt;/pre&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;skewness(rnorm(100000))
&lt;/code&gt;&lt;/pre&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;## [1] -0.003966336
&lt;/code&gt;&lt;/pre&gt;

&lt;ul&gt;
&lt;li&gt;Curtose é uma medida que verifica se a distribuição possui picos ou se é plana em relação a uma distribuição normal. As distribuições com alta curtose tendem a ter um pico distinto próximo à média. A curtose de uma distribuição normal é igual a 3:&lt;/li&gt;
&lt;/ul&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;kurtosis(rnorm(100))
&lt;/code&gt;&lt;/pre&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;## [1] 2.383941
&lt;/code&gt;&lt;/pre&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;kurtosis(rnorm(10000))
&lt;/code&gt;&lt;/pre&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;## [1] 3.008551
&lt;/code&gt;&lt;/pre&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;kurtosis(rnorm(100000))
&lt;/code&gt;&lt;/pre&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;## [1] 3.008823
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;a href=&#34;http://www.itl.nist.gov/div898/handbook/eda/section3/eda35b.htm&#34;&gt;Fonte&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;Vamos agora computar a assimetria e curtose dos salários para cada região:&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;df %&amp;gt;%
  group_by(REGIAO) %&amp;gt;%
  summarise(assimetria = skewness(SALARIO),
            curtose = kurtosis(SALARIO))
&lt;/code&gt;&lt;/pre&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;## Source: local data frame [5 x 3]
## 
##         REGIAO assimetria  curtose
##         (fctr)      (dbl)    (dbl)
## 1 Centro-Oeste   1.035474 3.571747
## 2     Nordeste   1.462003 5.578107
## 3        Norte   1.712028 6.447419
## 4      Sudeste   1.214714 4.225232
## 5          Sul   1.100610 3.936279
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;Interpretação&lt;/strong&gt;: De fato, a assimetria e a curtose dos salários na região Norte são muito mais altos que nas outras regiões. Uma investigação mais detalhada desses resultados provavelmente resultaria em descobertas, no mínimo, interessantes.
Outra observação interessante é que todos as regiões possuem uma assimetria positiva, o que é um efeito direto da presença dos outliers no nosso dataset.&lt;/p&gt;

&lt;h2 id=&#34;gráfico-ou-diagrama-de-caixas-boxplots&#34;&gt;Gráfico ou Diagrama de caixas (Boxplots)&lt;/h2&gt;

&lt;p&gt;Outra maneira de visualizar a variação da distribuição de uma variável contínua em diferentes categorias é por meio de gráficos de caixas.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;O diagrama de caixa é uma ferramenta para localizar e analisar a variação de uma variável dentre diferentes grupos de dados. O diagrama de caixa procura obter as seguintes informações:&lt;br /&gt;
* Calcular a mediana e os quartis ( o quartil inferior contém 25% ( &lt;sup&gt;1&lt;/sup&gt;&amp;frasl;&lt;sub&gt;4&lt;/sub&gt;) das menores medidas e o quartil superior contém 75 ( &lt;sup&gt;3&lt;/sup&gt;&amp;frasl;&lt;sub&gt;4&lt;/sub&gt;) de todas as medidas);&lt;br /&gt;
* Plotar um símbolo onde se localiza a mediana e uma caixa, daí o nome de diagrama de caixas, onde a base representa o quartil inferior ( 25% ou &lt;sup&gt;1&lt;/sup&gt;&amp;frasl;&lt;sub&gt;4&lt;/sub&gt;) dos menores valores), e o topo da caixa o quartil superior (75% ou &lt;sup&gt;3&lt;/sup&gt;&amp;frasl;&lt;sub&gt;4&lt;/sub&gt;) dos valores observados. A caixa portanto representa 50% de todos os os valores observados ,concentrados na tendência central dos valores, eliminando os 25% menores valores e 25% maiores valores ( 75% - 25% = 50%);&lt;br /&gt;
* Um segmento de reta vertical conecta o topo da caixa ao maior valor observado e outro segmento conecta a base da caixa ao menor valor observado, este segmento denomina-se Whisker, ou fio de bigode.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;a href=&#34;https://pt.wikipedia.org/wiki/Diagrama_de_caixa&#34;&gt;Fonte&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Vamos analisar a distribuição de salários dos servidores de acordo com as regiões e os estados.&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;#1: Regiões
ggplot(data=df, aes(x=REGIAO, y=SALARIO, fill=REGIAO)) +
  geom_boxplot() +
  scale_fill_brewer(palette=&amp;quot;Set1&amp;quot;) +
  guides(fill=FALSE) +
  theme_wsj() +
  labs(title = &amp;quot;Distribuição dos salários por região&amp;quot;)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;img src=&#34;http://www.sillasgonzaga.com/figs/transparenciaParte2/Boxplots-1.png&#34; alt=&#34;center&#34; /&gt;&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;#2: Agrupar estados por região
# Defini um vetor de cores para cada estado para facilitar a visualização
coresEstados &amp;lt;- c(#Norte
                  &amp;quot;AM&amp;quot; = &amp;quot;#8dd3c7&amp;quot;, &amp;quot;AP&amp;quot;=&amp;quot;#ffffb3&amp;quot;, &amp;quot;AC&amp;quot; = &amp;quot;#bebada&amp;quot;,
                  &amp;quot;PA&amp;quot; = &amp;quot;#fb8072&amp;quot;, &amp;quot;RO&amp;quot; = &amp;quot;#80b1d3&amp;quot;, &amp;quot;RR&amp;quot; = &amp;quot;#fdb462&amp;quot;,
                   #Nordeste
                  &amp;quot;AL&amp;quot; = &amp;quot;#8dd3c7&amp;quot;, &amp;quot;BA&amp;quot; = &amp;quot;#ffffb3&amp;quot;, &amp;quot;CE&amp;quot; = &amp;quot;#bebada&amp;quot;,
                  &amp;quot;MA&amp;quot; = &amp;quot;#fb8072&amp;quot;, &amp;quot;PB&amp;quot; = &amp;quot;#80b1d3&amp;quot;, &amp;quot;PE&amp;quot; = &amp;quot;#fdb462&amp;quot;,
                  &amp;quot;PI&amp;quot; = &amp;quot;#b3de69&amp;quot;, &amp;quot;RN&amp;quot; = &amp;quot;#fccde5&amp;quot;, &amp;quot;SE&amp;quot; = &amp;quot;#d9d9d9&amp;quot;,
                  &amp;quot;TO&amp;quot; = &amp;quot;#bc80bd&amp;quot;,
                  #CO
                  &amp;quot;DF&amp;quot; = &amp;quot;#8dd3c7&amp;quot;, &amp;quot;GO&amp;quot; = &amp;quot;#ffffb3&amp;quot;, &amp;quot;MS&amp;quot; = &amp;quot;#bebada&amp;quot;, &amp;quot;MT&amp;quot; = &amp;quot;#fb8072&amp;quot;,
                  #SUDESTE
                  &amp;quot;SP&amp;quot; = &amp;quot;#8dd3c7&amp;quot;, &amp;quot;RJ&amp;quot; = &amp;quot;#ffffb3&amp;quot;, &amp;quot;ES&amp;quot; = &amp;quot;#bebada&amp;quot;, &amp;quot;MG&amp;quot; = &amp;quot;#fb8072&amp;quot;,
                  #SUL
                  &amp;quot;PR&amp;quot; = &amp;quot;#b3de69&amp;quot;, &amp;quot;SC&amp;quot; = &amp;quot;#fccde5&amp;quot;, &amp;quot;RS&amp;quot; = &amp;quot;#d9d9d9&amp;quot;
                  )

ggplot(data=df, aes(x=UF_EXERCICIO, y=SALARIO, fill=UF_EXERCICIO)) + geom_boxplot() + facet_grid(. ~ REGIAO, scales=&amp;quot;free_x&amp;quot;) +
    scale_y_continuous(breaks=seq(0, 50000, by=5000)) + 
    scale_fill_manual(values= coresEstados) +
  theme_wsj() +
  labs(title = &amp;quot;Distribuição dos salários por estado&amp;quot;) +
  guides(fill = FALSE)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;img src=&#34;http://www.sillasgonzaga.com/figs/transparenciaParte2/Boxplots-2.png&#34; alt=&#34;center&#34; /&gt;&lt;/p&gt;

&lt;p&gt;Por meio dos dois gráficos acima, aprendemos que:&lt;br /&gt;
* A grande maioria dos outliers pertence ao Centro-Oeste, onde estão os três maiores salários de servidores do Brasil.&lt;br /&gt;
* A &amp;ldquo;caixa&amp;rdquo; referente ao Norte é a mais achatada, o que mostra, mais uma vez, o quão anormalmente concentrada é a distribuição dos salários na região.&lt;br /&gt;
* São Paulo aparenta ter o maior salário médio (calculado pela mediana), enquanto que Roraima e Amapá possuem os menores. Além disso, o salário médio paulista difere muito do observado em outros estados no Sudeste. De fato:&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;df %&amp;gt;%
  group_by(UF_EXERCICIO, REGIAO) %&amp;gt;%
  summarise(salarioMedio = round(median(SALARIO),0)) %&amp;gt;%
  ggplot(aes(x = salarioMedio, y = reorder(UF_EXERCICIO, salarioMedio))) +
  geom_point() +
  geom_segment(aes(yend = UF_EXERCICIO, xend = 0)) +
  facet_grid(REGIAO ~., drop = TRUE, scales = &amp;quot;free_y&amp;quot;) +
  geom_text(aes(label = salarioMedio, hjust = -0.3)) +
  labs(title = &amp;quot;Salário médio por UF&amp;quot;) +
  theme_wsj()
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;img src=&#34;http://www.sillasgonzaga.com/figs/transparenciaParte2/unnamed-chunk-8-1.png&#34; alt=&#34;center&#34; /&gt;&lt;/p&gt;

&lt;p&gt;Será que existe alguma correlação entre o salário médio e o número de servidores do estado? Vamos tentar responder isso com um gráfico de dispersão comum, onde eu uso um recurso do package recém criado &lt;em&gt;ggrepel&lt;/em&gt;:&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;temp &amp;lt;- df %&amp;gt;%
  group_by(UF_EXERCICIO) %&amp;gt;%
  summarise(salarioMedio = round(median(SALARIO),2),
            numeroDeServidores = n())

ggplot(temp, aes(numeroDeServidores, salarioMedio)) +
  geom_point() +
  geom_text_repel(aes(label = UF_EXERCICIO)) +
  geom_vline(xintercept = median(temp$numeroDeServidores)) +
  geom_hline(yintercept = median(df$SALARIO)) +
  labs(title = &amp;quot;Salário médio e número\n de servidores\n por estado&amp;quot;, x = &amp;quot;Número de Servidores&amp;quot;, y = &amp;quot;Salário Médio&amp;quot;) +
  theme_wsj()
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;img src=&#34;http://www.sillasgonzaga.com/figs/transparenciaParte2/unnamed-chunk-9-1.png&#34; alt=&#34;center&#34; /&gt;&lt;/p&gt;

&lt;p&gt;Não é possível detectar nenhum padrão muito significativo.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Nos vemos no próximo post!&lt;/strong&gt;&lt;/p&gt;
</description>
    </item>
    
    <item>
      <title>Transparência (1): Qual estado brasileiro tem o maior número de servidores federais?</title>
      <link>http://www.sillasgonzaga.com/post/transparencia-01/</link>
      <pubDate>Sun, 15 Nov 2015 00:00:00 +0000</pubDate>
      
      <guid>http://www.sillasgonzaga.com/post/transparencia-01/</guid>
      <description>

&lt;h1 id=&#34;transparência-1-qual-estado-brasileiro-tem-o-maior-número-de-servidores-federais&#34;&gt;Transparência (1): Qual estado brasileiro tem o maior número de servidores federais?&lt;/h1&gt;

&lt;h2 id=&#34;1-introdução&#34;&gt;1 - Introdução&lt;/h2&gt;

&lt;p&gt;Alguns dos datasets brasileiros mais interessantes podem ser encontrados no &lt;strong&gt;&lt;a href=&#34;http://transparencia.gov.br/&#34;&gt;Portal da Transparência&lt;/a&gt;&lt;/strong&gt;, no qual é possível obter dados sobre:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;gastos diretos do Governo Federal (desde 2004 - exceto Cartão de Pagamentos - desde 2002)&lt;/li&gt;
&lt;li&gt;transferências de recursos a Estados e Municípios (desde 2004)&lt;/li&gt;
&lt;li&gt;convênios com pessoas físicas, jurídicas ou entes governamentais (desde 1996)&lt;/li&gt;
&lt;li&gt;previsão e arrecadação de receitas (desde 2009)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;servidores do Governo Federal.&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;É por esse último item que mais me interessei no momento e sobre o qual publicarei uma série de posts nos próximos dias.&lt;/p&gt;

&lt;p&gt;Os dados foram baixados &lt;a href=&#34;http://transparencia.gov.br/downloads/servidores.asp&#34;&gt;deste endereço&lt;/a&gt; e correspondem ao mês de Agosto, que era a opção mais recente disponível até então.&lt;/p&gt;

&lt;p&gt;A pasta zipada baixada contém cinco arquivos, dentre os quais só usaremos dois: &lt;em&gt;20150831-Cadastro.csv&lt;/em&gt;  e &lt;em&gt;20150831-Remuneracao.csv&lt;/em&gt;. Ambos contem 44 variáveis e cerca de 700 mil linhas, mais a maioria delas não são muito importantes neste contexto.&lt;/p&gt;

&lt;h2 id=&#34;2-importação-e-limpeza-dos-dados&#34;&gt;2. Importação e limpeza dos dados&lt;/h2&gt;

&lt;p&gt;Após carregar as bibliotecas que serão usadas, hora de carregar os dados. Essa foi a primeira vez que eu trabalhei com um dataset tão grande no R. O arquivo pesa mais de 370 MB e demorou mais de um minuto para ser carregado. Imagina se fosse no Excel..&lt;/p&gt;

&lt;p&gt;Ao notar que o carregamento dos dados demorava muito, usei uma solução que aprendi em fóruns sobre o R: importar apenas as colunas necessárias usando dplyr. Menos da metade das colunas presentes no arquivo csv original serão usadas na análise e o ato de filtrá-las fora agiliza em muito a importação para o R. Confira a comparação:&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;# Teste 1: Importar tudo
system.time(df &amp;lt;- read.csv(&amp;quot;C:/R/data/201508_Servidores/20150831_Cadastro.csv&amp;quot;, sep=&amp;quot;\t&amp;quot;, stringsAsFactors = FALSE))
&lt;/code&gt;&lt;/pre&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;##    user  system elapsed 
##   42.68    0.70   43.93
&lt;/code&gt;&lt;/pre&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;# Teste 2: importar apenas colunas importantes
system.time(df &amp;lt;- read.csv(&amp;quot;C:/R/data/201508_Servidores/20150831_Cadastro.csv&amp;quot;,
                           sep=&amp;quot;\t&amp;quot;, stringsAsFactors = FALSE) %&amp;gt;%
              select(-DIPLOMA_INGRESSO_CARGOFUNCAO, -DATA_NOMEACAO_CARGOFUNCAO,
             -REFERENCIA_CARGO, -COD_AFASTAMENTO, -COD_GRUPO_AFASTAMENTO,
             -NIVEL_CARGO, -COD_UORG_EXERCICIO, -COD_UORG_LOTACAO, -OPCAO_PARCIAL,
             -DIPLOMA_INGRESSO_SERVICOPUBLICO, -DIPLOMA_INGRESSO_ORGAO,
             -DOCUMENTO_INGRESSO_SERVICOPUBLICO, -DATA_INICIO_AFASTAMENTO,
             -DATA_TERMINO_AFASTAMENTO, -TIPO_VINCULO, -COD_ORGSUP_EXERCICIO,
             -COD_ORG_EXERCICIO, -COD_ORGSUP_LOTACAO, -COD_ORG_LOTACAO,
             -CPF, -MATRICULA, -FUNCAO, -CLASSE_CARGO, -PADRAO_CARGO,
             -SIGLA_FUNCAO, -NIVEL_FUNCAO, -CODIGO_ATIVIDADE)
)
&lt;/code&gt;&lt;/pre&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;##    user  system elapsed 
##   37.34    0.56   38.31
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Cada linha do df corresponde a um servidor e cada uma das variáveis corresponde a um atributo do mesmo.&lt;/p&gt;

&lt;p&gt;Primeiro ponto a ser analisado: qual a qualidade dos dados? Quantas variáveis tem muitos valores vazios ou nulos?&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;##                   Id_SERVIDOR_PORTAL                                 NOME 
##                                    0                                    0 
##                        ORG_EXERCICIO                     ORGSUP_EXERCICIO 
##                                    4                                    4 
##                     SITUACAO_VINCULO                      REGIME_JURIDICO 
##                                    4                                    4 
##                  JORNADA_DE_TRABALHO DATA_DIPLOMA_INGRESSO_SERVICOPUBLICO 
##                                    4                                    4 
##                          ORG_LOTACAO                       ORGSUP_LOTACAO 
##                                   14                                   14 
##                  DATA_INGRESSO_ORGAO            DATA_INGRESSO_CARGOFUNCAO 
##                                 2799                                47192 
##                         UORG_LOTACAO                      DESCRICAO_CARGO 
##                               120819                               154017 
##                       UORG_EXERCICIO                         UF_EXERCICIO 
##                               165589                               189437 
##                            ATIVIDADE 
##                               688290
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Visto que é possível que um mesmo servidor tenha mais de um cargo público (por exemplo, uma pessoa pode ser professora de universidade federal e chefe de seu departamento), é necessário excluir os servidores repetidos.&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;length(df$Id_SERVIDOR_PORTAL) #Quantidade de IDs de servidores no arquivo
&lt;/code&gt;&lt;/pre&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;## [1] 795107
&lt;/code&gt;&lt;/pre&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;length(unique(df$Id_SERVIDOR_PORTAL)) #Quantidade de IDs únicas
&lt;/code&gt;&lt;/pre&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;## [1] 681266
&lt;/code&gt;&lt;/pre&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;100 * length(unique(df$Id_SERVIDOR_PORTAL)) / 605670 # Porcentual de IDs únicas
&lt;/code&gt;&lt;/pre&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;## [1] 112.4814
&lt;/code&gt;&lt;/pre&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;df &amp;lt;- df[!duplicated(df$Id_SERVIDOR_PORTAL), ]
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Uma informação não presente no relatório é a região do Servidor. Isso é facilmente inserido manualmente pelo R (aliás, um bom exercício seria a criação de uma library com datasets brasileiros).&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;UF_EXERCICIO = sort(unique(na.omit(df$UF_EXERCICIO)))
br &amp;lt;- data.frame(UF_EXERCICIO)
br$REGIAO &amp;lt;- c(&#39;Norte&#39;, &#39;Nordeste&#39;, &#39;Norte&#39;, &#39;Norte&#39;, &#39;Nordeste&#39;, &#39;Nordeste&#39;, &#39;Centro-Oeste&#39;, &#39;Sudeste&#39;, &#39;Centro-Oeste&#39;, &#39;Nordeste&#39;, &#39;Sudeste&#39;, &#39;Centro-Oeste&#39;, &#39;Centro-Oeste&#39;, &#39;Norte&#39;, &#39;Nordeste&#39;, &#39;Nordeste&#39;, &#39;Nordeste&#39;, &#39;Sul&#39;, &#39;Sudeste&#39;, &#39;Nordeste&#39;, &#39;Norte&#39;, &#39;Norte&#39;, &#39;Sul&#39;, &#39;Sul&#39;, &#39;Nordeste&#39;, &#39;Sudeste&#39;, &#39;Nordeste&#39;)

df &amp;lt;- merge(df, br, by=&amp;quot;UF_EXERCICIO&amp;quot;)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;strong&gt;Observação:&lt;/strong&gt; notei um comportamento estranho do R. Ao fazer o merge(), ele automaticamente deleta todas as linhas onde o valor da variável UF_EXERCÍCIO é nulo. Como isso não implica um grande prejuízo para a análise, iremos proseguir mesmo assim.&lt;/p&gt;

&lt;p&gt;Vamos agora à exploração básica de dados. Primeira pergunta: qual estado tem o maior número de servidores públicos?&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;temp &amp;lt;- df %&amp;gt;%
    select(UF_EXERCICIO, REGIAO) %&amp;gt;%
    mutate(Estado = UF_EXERCICIO) %&amp;gt;%
    group_by(Estado, REGIAO) %&amp;gt;%
    summarise(numero.servidores = n())

    ggplot(data=temp, aes(x=reorder(Estado, numero.servidores), y=numero.servidores, fill=REGIAO)) +
        geom_bar(stat=&amp;quot;identity&amp;quot;) + coord_flip() +
        labs(title=&amp;quot;Número de servidores por Estado&amp;quot;, x=&amp;quot;&amp;quot;, y=&amp;quot;Número de servidores&amp;quot;) +
        theme_economist() +
        scale_fill_economist()
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;img src=&#34;http://www.sillasgonzaga.com/figs/transparencia01/unnamed-chunk-4-1.png&#34; alt=&#34;aaa&#34; /&gt;&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;#Gráfico por região
df %&amp;gt;%
    select(REGIAO) %&amp;gt;%
    group_by(REGIAO) %&amp;gt;%
    summarise(numero.servidores = n()) %&amp;gt;%
     ggplot(aes(x=reorder(REGIAO, numero.servidores) , y=numero.servidores)) +
        geom_bar(stat=&amp;quot;identity&amp;quot;) + coord_flip() +
        labs(title=&amp;quot;Número de servidores por Estado&amp;quot;, x=&amp;quot;&amp;quot;, y=&amp;quot;Número de servidores&amp;quot;) +
        theme_economist()
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;img src=&#34;http://www.sillasgonzaga.com/figs/transparencia01/unnamed-chunk-4-2.png&#34; alt=&#34;center&#34; /&gt;&lt;/p&gt;

&lt;p&gt;É claro que a população de cada estado tem uma grande influência no resultado anterior&amp;hellip; será?
Para tirar a dúvida, aqui vai um gráfico de proporção de servidores em cada estado. A tabela com a população de cada estado foi extraída manualmente da Wikipedia.&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;pop &amp;lt;- read.csv2(&amp;quot;C:/R/data/201508_Servidores/populacao.csv&amp;quot;, stringsAsFactors = FALSE)
names(pop) &amp;lt;- c(&amp;quot;Estado&amp;quot;, &amp;quot;População&amp;quot;)
temp &amp;lt;- merge(temp, pop, by=&amp;quot;Estado&amp;quot;)
temp$Proporcao = round(1000*(temp$numero.servidores/temp$População),2)

    ggplot(data=temp, aes(x=reorder(Estado, temp$Proporcao), y=temp$Proporcao, fill=REGIAO)) +
        geom_bar(stat=&amp;quot;identity&amp;quot;) + coord_flip() +
        labs(title=&amp;quot;Proporção de servidores por Estado&amp;quot;, x=&amp;quot;Estado&amp;quot;, y=&amp;quot;Proporção da população \n que é funcionário público&amp;quot;) +
        theme_economist()
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;img src=&#34;http://www.sillasgonzaga.com/figs/transparencia01/unnamed-chunk-5-1.png&#34; alt=&#34;center&#34; /&gt;&lt;/p&gt;

&lt;p&gt;Os resultados são muito interessantes. Mais de um quarto dos habitantes do Distrito Federal são funcionários públicos. Roraima, Amapá e Rio de Janeiro também parecem ter máquinas públicas inchadas.&lt;/p&gt;

&lt;p&gt;Para finalizar, vou salvar o data frame criado para posteriores análises.&lt;/p&gt;

&lt;pre&gt;&lt;code class=&#34;language-r&#34;&gt;df %&amp;gt;% as.data.frame() %&amp;gt;% write.csv2(file = &amp;quot;C:/R/data/201508_Servidores/transparencia.csv&amp;quot;, row.names = FALSE)
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;O novo arquivo tem 191 MB, 48% a menos que o original.&lt;/p&gt;
</description>
    </item>
    
  </channel>
</rss>