Analisando dados da RAIS

By curso-r e Tainá

9/12/2021

Nesse relatório estamos interessados em responder a pergunta:

“Quanto ganha um cientista de dados?”

Para isso vamos utilizar a base da RAIS anonimizada

Acessando os dados da RAIS

Vamos utilizar o datalake da iniciativa base dos dados.

A base de dados que queremos analisar aqui é a base de pessoas que (potencialmente) trabalham com ciência de dados. Existe um Código Brasileiro de Ocupações (CBO), que tem um cadastro de todas as ocupações formais no Brasil. Vamos pegar alguns códigos que são relacionados a ciência de dados e filtrar a base da RAIS para obter os dados dessas pessoas.

library(bigrquery)
library(dplyr)

Abaixo está o código que carrega as primeiras 5 linhas da tabela de microdados.

Vamos fazer a mesma coisa utilizando o pipe!

primeiras_cinco_linhas_com_pipe <- tbl(conexao, "microdados_vinculos") |>  
  select(everything()) |>  
  head(5) |>  
  collect()
# atalho: ctrl+shift+M
# antes e atualmente: {magrittr}: %>%
# atualmente (4.1 ou +): |>
primeiras_cinco_linhas_com_pipe

Pergunta principal de pesquisa: Quem trabalha com ciência de dados ganha quanto?

codigos_cbo <- c(
  "252515", "252525", "211110",
  # pesquisa/cientista
  "211205", "211210","411035",
  "211210", "131120","211215"
  # ocupações estatísticas
)
microdados_tbl <- tbl(conexao, "microdados_vinculos") |>  
  select(everything()) |>  
  filter(
    ano >= 2013,
    cbo_2002 %in% codigos_cbo
  ) |>  
  head(5000)
tabela_microdados_vinculos <- collect(microdados_tbl)
View(tabela_microdados_vinculos)

Agora vamos rodar com a base completa!

microdados_tbl <- tbl(conexao, "microdados_vinculos") |>  
  select(everything()) |>  
  filter(
    ano >= 2013,
    cbo_2002 %in% codigos_cbo
  )
tabela_microdados_vinculos <- collect(microdados_tbl)
saveRDS(tabela_microdados_vinculos, "tabela_microdados_vinculos.rds")

Perguntas de pesquisa

  • Quanto ganha uma pessoa que trabalha com ciência de dados

Perguntas mais específicas

  • Quanto o valor médio varia no tempo?

  • Quanto o valor médio varia regionalmente?

  • Quanto o valor médio varia por características das pessoas?

    • Gênero
    • Raça/cor
    • Idade
  • [Desafio] Qual cargo tem a maior taxa de crescimento dentro daquele setor da economia (CNAE) proporcionalmente a municípios com mais pessoas empregadas naquela CBO

Como variam os salários médios no tempo?

tabela_microdados_vinculos <- readRDS("tabela_microdados_vinculos.rds")
library(ggplot2)
### Comentários:
## ctrl+shift+c
tabela_medias <- tabela_microdados_vinculos |> 
  group_by(ano) |>  
  summarise(media_salario = mean(valor_remuneracao_media))
## Funções do {dplyr} que vamos usar:
# filter: filtra linhas
# select: seleciona colunas
# mutate: cria colunas
# group_by + summarise: summariza a base
# arrange: ordena a base
ggplot(tabela_medias) +
  aes(x = ano, y = media_salario) +
  geom_col() +
  scale_x_continuous(breaks = 2013:2019)

Agora vamos ver os números exatos:

library(knitr)
tabela_medias %>% 
  kable()
ano media_salario
2013 3457.553
2014 3702.131
2015 4229.452
2016 4409.327
2017 4969.977
2018 4886.116
2019 4969.408

Quanto o salário médio varia regionalmente?

tabela_media_uf <- tabela_microdados_vinculos %>% 
  group_by(sigla_uf) |>  
  summarise(
    media = mean(valor_remuneracao_media)
  )

Essa visualização a princípio é melhor em tabela:

knitr::kable(tabela_media_uf)
sigla_uf media
AC 2213.220
AL 1921.249
AM 4003.298
AP 2488.921
BA 3444.450
CE 3583.833
DF 6290.945
ES 2289.896
GO 3053.561
MA 1518.701
MG 3373.300
MS 2671.339
MT 2520.127
PA 4239.167
PB 1852.823
PE 4014.886
PI 1556.301
PR 2835.612
RJ 7303.597
RN 2495.838
RO 1943.391
RR 2780.840
RS 3434.072
SC 3033.095
SE 3733.273
SP 5053.901
TO 1981.932

Agora olhando em gráfico:

tabela_media_uf |> 
  ggplot(aes(x = sigla_uf, y = media)) +
  geom_col()

Esse gráfico é legal até pra colocar na análise explicativa! DF e RJ aparentemente estão muito acima dos demais estados, conforme destaca o gráfico abaixo:

library(forcats)
tabela_media_uf |>  
  mutate(
    sigla_uf_fator = fct_reorder(sigla_uf, media)
  ) |>  
  ggplot(aes(y = sigla_uf_fator, x = media)) + 
  geom_col() +
  labs(y = "Unidade da Federação", x = "Média Salarial (R$)")

Será que essa mesma conclusão permanece quando escolhemos a mediana como medida resumo dos salários?

tabela_mediana_uf <- tabela_microdados_vinculos %>% 
  group_by(sigla_uf) %>% 
  summarise(
    mediana = median(valor_remuneracao_media)
  )
tabela_mediana_uf %>% 
  arrange(desc(mediana)) %>% 
  knitr::kable()
sigla_uf mediana
RJ 7528.560
DF 4715.790
SP 3862.090
AM 3276.510
PE 2540.750
PA 2255.790
RS 2211.380
MS 2199.530
SE 2134.990
MG 2124.070
RN 2050.670
RR 2000.000
BA 1923.050
MT 1872.510
GO 1858.930
SC 1833.685
CE 1790.210
PR 1728.040
AP 1473.145
ES 1450.890
TO 1352.080
RO 1347.035
AC 1334.445
AL 1279.175
PB 1222.690
PI 1093.530
MA 1008.330
tabela_mediana_uf %>% 
  mutate(
    sigla_uf = fct_reorder(sigla_uf, mediana)
  ) %>% 
  ggplot(aes(x = mediana, y = sigla_uf)) +
  geom_col()
tabela_media_uf %>% 
  mutate(
    sigla_uf_fator = fct_reorder(sigla_uf, media)
  ) %>% 
  ggplot(aes(y = sigla_uf_fator, x = media)) + 
  geom_col() +
  labs(y = "Unidade da Federação", x = "Média Salarial (R$)")

Os salários variam por sexo?

tabela_resumo_sexo <- tabela_microdados_vinculos |>  
  group_by(sexo) |>  
  summarise(
    media = mean(valor_remuneracao_media),
    mediana = median(valor_remuneracao_media)
  )
tabela_resumo_sexo |>  
  knitr::kable()
sexo media mediana
1 5331.746 3905.72
2 3600.132 2300.71

Os salários variam por Raça/Cor?

tabela_resumo_raca_cor <- tabela_microdados_vinculos |>  
  group_by(raca_cor) |>  
  summarise(
    media = mean(valor_remuneracao_media),
    mediana = median(valor_remuneracao_media)
  )
tabela_resumo_raca_cor |>  
  knitr::kable()
raca_cor media mediana
1 3085.090 2748.890
2 4287.588 2888.915
4 3014.454 2072.205
6 6783.212 5338.735
8 2732.073 1749.345
9 5656.755 4888.030
tabela_resumo_sexo_raca_cor <- tabela_microdados_vinculos |>  
  group_by(cbo_2002, raca_cor, sexo) |>  
  summarise(
    media = mean(valor_remuneracao_media),
    mediana = median(valor_remuneracao_media)
  )
## `summarise()` has grouped output by 'cbo_2002', 'raca_cor'. You can override using the `.groups` argument.
tabela_resumo_sexo_raca_cor |>  
  knitr::kable()
cbo_2002 raca_cor sexo media mediana
131120 1 1 3044.484 2846.390
131120 1 2 3711.533 2894.720
131120 2 1 5754.384 3710.660
131120 2 2 4713.267 3547.830
131120 4 1 4070.667 3482.140
131120 4 2 4139.647 3632.360
131120 6 1 4749.999 2720.095
131120 6 2 4527.754 2914.305
131120 8 1 4222.106 3094.520
131120 8 2 3949.073 3288.460
131120 9 1 2756.113 1969.710
131120 9 2 2504.534 1911.410
211110 1 1 4977.286 2252.620
211110 1 2 4179.436 2012.500
211110 2 1 7404.453 6095.230
211110 2 2 5222.835 4156.200
211110 4 1 4865.089 2888.650
211110 4 2 4005.826 2958.860
211110 6 1 7008.334 5988.050
211110 6 2 7416.892 6036.220
211110 8 1 4204.910 2527.780
211110 8 2 3517.021 2640.690
211110 9 1 6269.211 4172.000
211110 9 2 6317.404 5708.750
211205 1 1 2452.480 2596.560
211205 1 2 4670.118 5284.330
211205 2 1 9739.266 7073.535
211205 2 2 7194.206 6024.610
211205 4 1 6618.641 5911.410
211205 4 2 3582.730 3000.000
211205 6 1 12634.457 9633.100
211205 6 2 9791.802 8536.310
211205 8 1 5586.215 4226.040
211205 8 2 4479.939 3499.990
211205 9 1 11754.928 11684.510
211205 9 2 10258.871 10730.140
211210 2 1 6223.349 5000.000
211210 2 2 5006.268 4205.330
211210 4 1 5751.621 5383.535
211210 4 2 2229.416 2174.430
211210 6 1 20459.611 7901.545
211210 6 2 9277.978 9206.500
211210 8 1 5563.023 4211.365
211210 8 2 4324.135 3893.330
211210 9 1 6854.247 4244.570
211210 9 2 3512.073 2655.990
211215 2 1 5207.926 4540.070
211215 2 2 3800.894 3267.630
211215 4 1 4066.597 2441.385
211215 4 2 3845.828 1640.805
211215 6 2 4565.443 4568.040
211215 8 1 3819.912 3360.800
211215 8 2 3867.480 3613.510
211215 9 1 7037.869 6487.440
211215 9 2 5029.161 3673.585
252515 1 1 4785.281 3355.735
252515 1 2 1983.550 1797.470
252515 2 1 4657.551 3647.480
252515 2 2 3300.008 2541.730
252515 4 1 3349.139 2789.920
252515 4 2 2794.911 2231.555
252515 6 1 5347.074 4500.000
252515 6 2 4647.427 3869.710
252515 8 1 3324.709 2330.370
252515 8 2 2253.579 1679.805
252515 9 1 3502.275 2436.540
252515 9 2 2537.900 1929.530
252525 1 1 3106.797 2347.750
252525 1 2 2949.537 2703.485
252525 2 1 5237.162 4103.680
252525 2 2 3358.031 2288.415
252525 4 1 3774.552 2752.570
252525 4 2 2280.888 1571.345
252525 6 1 7953.548 6846.910
252525 6 2 5427.499 4656.830
252525 8 1 2949.831 1933.715
252525 8 2 1993.650 1336.285
252525 9 1 2657.023 1561.455
252525 9 2 1749.925 1172.880
411035 1 1 1680.846 1369.315
411035 1 2 1470.052 1024.120
411035 2 1 1572.291 1277.860
411035 2 2 1534.250 1260.000
411035 4 1 1404.462 1269.740
411035 4 2 1359.977 1200.860
411035 6 1 2173.909 1835.260
411035 6 2 1862.322 1560.500
411035 8 1 1477.781 1254.150
411035 8 2 1392.285 1198.305
411035 9 1 6775.978 7615.605
411035 9 2 6044.256 7461.230
ggplot(tabela_resumo_sexo_raca_cor,
       aes(x = raca_cor, y = media, fill = sexo)) +
  geom_col(position = 'dodge')

License

Content is available under the Creative CommonsAttribution-ShareAlike (CC BY-SA) license. You can share and adapt it, but you must attribute the credits to the authors, adding a link to the original content. , and your sharing must also have this same type of license.

More info: Creative Commons

Posted on:
9/12/2021
Length:
6 minute read, 1248 words
See Also: