Dados do PNAD

Contextualização

É muito comum ouvirmos falar das dificuldades de encontrar emprego ou até mesmo sabermos as oscilações da taxa de desemprego. Mas, no geral, é mais raro ouvirmos falar de onde esses dados vêm. 

Neste post, falaremos mais a respeito dos dados encontrados na pesquisa nacional por amostra de domicílios (PNAD). Divulgada mensalmente pelo Instituto Brasileiro de Geografia e Estatística (IBGE).

Vamos realizar uma separação em 3 tópicos: Primeiro esclareceremos os conceitos do IBGE que serão utilizados aqui, explicando cada uma das variáveis, depois vamos realizar a coleta e o tratamento dos dados e por último a criação de visualizações em gráficos e tabelas referentes a PNAD contínua.

Conceitos

Quando falamos de desemprego ou quando dentro da pesquisa nacional por amostragem (PNAD), o primeiro conceito que precisamos entender é o de "população". Que nada mais é que um conceito numérico, usado para medir a quantidade de pessoas presentes no país e segmenta em grupos menores.

Esses grupos são muito importantes para realizarmos os cálculos e chegarmos aos percentuais corretos de desemprego, nível de ocupação e outros indicadores importantes.

O esquema ao lado mostra os subgrupos dentro da população, vamos às definições de cada um deles:

a) População: Número total de habitantes em determinados locais, dados levantados por meio de pesquisas gerais, no Brasil realizados pelo IBGE.

Então, seguindo o exemplo, dividimos a população em dois grupos:

b) População em idade ativa (PIA): População com idade superior a determinada pela pesquisa, que as torna aptas a trabalhar;

c) População em idade não ativa (PINA): População com idade inferior a determinada pela pesquisa, ou seja, que estão fora da força de trabalho;

d) População economicamente ativa (PEA): No Brasil, na PNAD contínua são considerados dentro da PEA, pessoas com idade superior a 14 anos e inferior a 65 anos;

e) População não economicamente ativa (PNEA):  São consideradas pessoas que estão fora das exigências da PEA, ou seja fora da força de trabalho;

E agora utilizando a PEA, temos os últimos dois conceitos:

f) População ocupada (PO): População que no determinado período da amostra tinham ou exerciam algum tipo de atividade remunerada;

g) População Desocupada (PD): População que no determinado período da amostra estavam dentro da idade ativa de trabalho e que procuraram por trabalho;

Análise

Agora que temos os conceitos realizados podemos começar nossa análise com o R e para isso usaremos os seguintes pacotes:

# pacotes


library(tidyverse)

library(ggrepel)

library(flextable)

library(xtable)

library(ggplot2)

library(sidrar)

library(scales)

library(gridExtra)

library(reshape2)

library(xts)

library(dplyr)

library(knitr)


#caption


foot <- 'Fonte: Pedro Coradete com dados do Sidra'

Agora vamos realizar a coleta da primeira parte dos dados, pegando a tabela 6022 do Sidra com os dados referentes a população e a tabela 6318 com os dados de condições de trabalho para calcularmos o desemprego a partir da PEA.

# population data


population = get_sidra(api="/t/6022/n1/all/v/606/p/all") %>%

  mutate(date = parse_date(`Trimestre Móvel (Código)`, 

                           format='%Y%m'))%>%

  dplyr::rename(value = Valor) %>%

  select(date, value) %>%

  as_tibble()

#  labor force characteristics


names = c("date", "pia", "pea", "ocupada", "desocupada", "pnea")


CPS <- get_sidra(api='/t/6318/n1/all/v/1641/p/all/c629/all') %>%

  mutate(date = parse_date(`Trimestre Móvel (Código)`,

                           format = '%Y%m')) %>%

  select(date, "Condição em relação à força de trabalho e condição de ocupação", Valor) %>%

  pivot_wider(names_from = `Condição em relação à força de trabalho e condição de ocupação`,

              values_from = Valor) %>%

  `colnames<-`(names)


CPS

> CPS

# A tibble: 134 × 6

   date          pia   pea ocupada desocupada  pnea

   <date>      <dbl> <dbl>   <dbl>      <dbl> <dbl>

 1 2012-03-01 153601 95664   88011       7653 57937

 2 2012-04-01 153791 96380   88846       7534 57411

 3 2012-05-01 153987 96823   89379       7444 57164

 4 2012-06-01 154180 97010   89647       7363 57169

 5 2012-07-01 154375 97076   89786       7290 57299

 6 2012-08-01 154566 97247   90085       7162 57319

 7 2012-09-01 154758 97261   90320       6942 57496

 8 2012-10-01 154949 97233   90467       6767 57716

 9 2012-11-01 155138 97187   90555       6632 57952

10 2012-12-01 155330 97322   90593       6730 58007

# ℹ 124 more rows

# ℹ Use `print(n = ...)` to see more rows

Agora vamos unir os dois tibbles para realizar os cálculos de população inativada, desempregados, participantes e o nível de ocupação. Depois disso criaremos as visualizações:

# aggregate tables


aggregate_pnad <- inner_join(population, CPS, by='date') %>%

  dplyr::rename(population = value) %>%

  mutate(inativos = population - pia,            # inativos

         desempregados = round(desocupada/pea*100, 2),      

         participantes = round(pea/pia*100, 2),           

         ocupacao = round(ocupada/pia*100, 2)) %>%          

  select(date, population, inativos, pia, pea, pnea, 

         ocupada, desocupada, desempregados, participantes, ocupacao)

Vamos plotar um gráfico que mostre a evolução do nível de desemprego:

## unemployments rate graph


aggregate_pnad %>%

  select(date, desempregados) %>%

  ggplot()+

  aes(x = date, y = desempregados)+

  geom_line(size=0.9, 

            color = 'darkblue')+

  geom_label_repel(data = filter(agregate_pnad, 

                                 date == max(date)), 

                   aes(label=desempregados), 

                   vjust = 0.7,

                   color = 'white',

                   fill = 'darkblue',

                   fontface = 'bold')+

  scale_x_date(breaks='1 year', 

               labels= date_format('%Y'))+

  labs(x='',

       y='%',

       title = 'Desemprego (%)',

       subtitle = 'População desocupada / População economicamente ativa',

       caption = foot)+

  theme_bw()

Depois do período de máxima histórica nos anos de 2020/2021, o desemprego apresenta uma desaceleração até o final de 2022, onde volta a apresentar aumento nos períodos posteriores a dezembro. Até chegarmos ao último mês de referência (Maio 23), com a taxa de desemprego em 8.5%.

Também iremos plotar uma tabela utilizando o flextable (Como não é muito visual usar o flextable nessa página vou mostrar a visualização com a função kable do knitr) e um gráfico mostrando os níveis de ocupação que indica a proporção da PEA que está empregada:

# employment level table


tail(aggregate_pnad, 6) %>%

  select(date, ocupacao) %>%

  flextable() %>%

  flextable::align(align='c', 

                   part='all') %>%

  flextable::width(j = 1:2, 

                   width = 1.8) %>%

  flextable::set_header_labels(date = "Período",

                               ocupacao = "Nível de Ocupação (%)") %>%

  flextable::bold(bold = TRUE, part='header')


tail(aggregate_pnad, 6) %>%

  select(date, ocupacao) %>%

  kable()


# employment level graph


aggregate_pnad %>%

  select(date, ocupacao) %>%

  ggplot()+

  aes(x = date, y = ocupacao)+

  geom_line(size=0.9,

            color='darkblue')+

  geom_label_repel(data = filter(agregate_pnad, 

                                 date == max(date)), 

                   aes(label = ocupacao),

                   vjust = 0.8,

                   color = 'white',

                   fill = 'darkblue', 

                   fontface = 'bold')+

  scale_x_date(breaks = '1 year',

               labels = date_format('%Y'))+

  labs(x = '',

       y = '%', 

       title = 'Nível de ocupação (%)',

       subtitle = 'População ocupada / População em idade ativa',

       caption = foot)+

  theme_bw()

|date       | ocupacao|

|:----------|--------:|

|2022-11-01 |    57.39|

|2022-12-01 |    57.16|

|2023-01-01 |    56.70|

|2023-02-01 |    56.36|

|2023-03-01 |    56.15|

|2023-04-01 |    56.23|

Tivemos os piores níveis de ocupação durante os anos de 2020 e 2021, com o número chegando históricamente abaixo de 50% da população economicamente ativa. Depois disso, o mercado de trabalho volta a se aquecer o número de ocupação começa a subir até encontrar mais uma vez sua baixa nos últimos 5 meses, com um pequeno acréscimo de março para abril.

Passaremos agora a olhar para os dados por categoria de emprego, para isso puxaremos a tebela 4090 do Sidra:

# Dados da PNAD: categoria do emprego

## Dados da PNAD: categoria do emprego


ocupacao_categoria <-

  get_sidra(api='/t/6320/n1/all/v/4090/p/all/c11913/allxt') %>%

  mutate(date = parse_date(`Trimestre Móvel (Código)`, 

                           format='%Y%m')) %>% 

  select(date, 

         `Posição na ocupação e categoria do emprego no trabalho principal`, 

         Valor) %>%

  pivot_wider(names_from = `Posição na ocupação e categoria do emprego no trabalho principal`,

              values_from = 'Valor')

Vamos analisar a evolução do emprego informal, ou seja, que não possue carteira assinada.

## without formal contracts


sem_carteira <-

  ocupacao_categoria %>%

  select(date, `Empregado no setor privado, exclusive trabalhador doméstico - sem carteira de trabalho assinada`) %>%

  dplyr::rename('Sem carteira' = "Empregado no setor privado, exclusive trabalhador doméstico - sem carteira de trabalho assinada") %>%

  mutate(`Sem carteira` = round(`Sem carteira`/1000, 2))


## table


tail(sem_carteira, 6) %>%

  flextable() %>%

  flextable::align(align='c', 

                   part='all') %>%

  flextable::width(j = 1:2, 

                   width = 1.8) %>%

  flextable::set_header_labels(date = "Período",

                               'Sem carteira' = "Sem carteira (Em milhões)") %>%

  flextable::bold(bold = TRUE, 

                  part='header')




## graph


sem_carteira %>%

  ggplot()+

  aes(x = date, y = `Sem carteira`)+

  geom_line(size=0.9,

            color='darkblue')+

  geom_label_repel(data = filter(sem_carteira, 

                                 date == max(date)), 

                   aes(label = `Sem carteira`),

                   vjust = 0.8,

                   color = 'white',

                   fill = 'darkblue', 

                   fontface = 'bold')+

  scale_x_date(breaks = '1 year',

               labels = date_format('%Y'))+

  labs(x = '',

       y = 'Em milhões', 

       title = 'Trabalhadores sem carteira',

       caption = foot)+

  theme_bw()

> tail(sem_carteira, 6) %>%

+  kable()



|date       | Sem carteira|

|:----------|------------:|

|2022-11-01 |        13.31|

|2022-12-01 |        13.24|

|2023-01-01 |        13.11|

|2023-02-01 |        12.96|

|2023-03-01 |        12.81|

|2023-04-01 |        12.72|

A partir de 2020 o trabalho informou aumentou consideravelmente, e apresenta diminuição no último semestre. Chegando a 12.7 milhões de pessoas no mês de referência. Na sequência veremos os dados referentes a trabalhadores por conta própria, que são aquelas que realizam atividades econômicas de maneira autônoma.

## self-employed workers


conta_propria <-

  ocupacao_categoria %>%

  select(date, `Conta própria`) %>%

  mutate(`Conta própria` = round(`Conta própria`/1000, 2))


## table


tail(conta_propria, 6) %>%

  flextable() %>%

  flextable::align(align='c', 

                   part='all') %>%

  flextable::width(j = 1:2, 

                   width = 1.8) %>%

  flextable::set_header_labels(date = "Período",

                               'Conta própria' = "Conta própria (Em milhões)") %>%

  flextable::bold(bold = TRUE, 

                  part='header')


## graph


conta_propria %>%

  ggplot()+

  aes(x = date, y = `Conta própria`)+

  geom_line(size=0.9,

            color='darkblue')+

  geom_label_repel(data = filter(conta_propria, 

                                 date == max(date)), 

                   aes(label = `Conta própria`),

                   vjust = 0.8,

                   color = 'white',

                   fill = 'darkblue', 

                   fontface = 'bold')+

  scale_x_date(breaks = '1 year',

               labels = date_format('%Y'))+

  labs(x = '',

       y = 'Em milhões', 

       title = 'Trabalhadores por conta própria',

       subtitle = 'Com CNPJ + Sem CNPJ',

       caption = foot)+

  theme_bw()

> tail(conta_propria, 6) %>%

+  kable()



|date       | Conta própria|

|:----------|-------------:|

|2022-11-01 |         25.50|

|2022-12-01 |         25.47|

|2023-01-01 |         25.30|

|2023-02-01 |         25.20|

|2023-03-01 |         25.19|

|2023-04-01 |         25.22|

A quantidade de trabalhadores por conta própria teve um aumento consistente entre 2020 e 2022, e continua andando de mandeira lateral nos últimos meses, porém se mantendo acima de 25 milhões de pessoas. Cravando 25.22 milhões no mês referência.

E por último nessa seção, podemos pegar os dados de trabalhadores com carteira assinada:

## Com carteira assinada


carteira_assinada <-

  ocupacao_categoria %>%

  mutate('Com carteira' = round(`Empregado no setor privado, exclusive trabalhador doméstico - com carteira de trabalho assinada`/1000, 2)) %>%

  mutate('proporcao' = (`Com carteira`/`Empregado`)*100) %>%

  select(date, 

         proporcao, 

         `Com carteira`)


## tabela


carteira_assinada %>%

  select(date, 

         `Com carteira`) %>%

  tail(6) %>%

  flextable() %>%

  flextable::align(align='c', 

                   part='all') %>%

  flextable::width(j = 1:2, 

                   width = 1.8) %>%

  flextable::set_header_labels(date = "Período",

                               'Com carteira' = "Com carteira/CLT (Em milhões)") %>%

  flextable::bold(bold = TRUE, 

                  part='header')


## grafico


carteira_assinada %>%

  select(date, 

         `Com carteira`) %>%

  ggplot()+

  aes(x = date, y= `Com carteira`)+

  geom_line(size=0.9,

            color='darkblue')+

  geom_label_repel(data = filter(carteira_assinada, 

                                 date == max(date)), 

                   aes(label = round(`Com carteira`, 2)),

                   vjust = 0.8,

                   color = 'white',

                   fill = 'darkblue', 

                   fontface = 'bold')+

  scale_x_date(breaks = '1 year',

               labels = date_format('%Y'))+

  labs(x = '',

       y = 'Em milhões', 

       title = 'Trabalhadores com carteira assinada',

       caption = foot)+

  theme_bw()

> carteira_assinada %>%

+  select(date, 

+         `Com carteira`) %>%

+  tail(6) %>%

+  kable()



|date       | Com carteira|

|:----------|------------:|

|2022-11-01 |        36.79|

|2022-12-01 |        36.86|

|2023-01-01 |        36.81|

|2023-02-01 |        36.81|

|2023-03-01 |        36.69|

|2023-04-01 |        36.81|

Número volta a crescer depois do período de baixa e para mais próximo da máxima histórica, no mês em questão vimos que existem 36.81 milhões de trabalhadores com a carteira assinada.

E agora, podemos partir para a próxima separação de dados, pegando a tabela de número 6390 e 6392 do Sidra, para pegarmos respectivamente o rendimento médio e a massa salarial real do período:

# CPS data: Income


pnad_rendimento =

  get_sidra(api='/t/6390/n1/all/v/5933/p/all') %>%

  mutate(date = parse_date(`Trimestre Móvel (Código)`, 

                           format='%Y%m')) %>%

  select(date, "value" = Valor) %>%

  as_tibble()


## CPS data: Income graph


t1 <- ggplot(pnad_rendimento)+ 

  aes(x = date, y= `value`)+

  geom_line(size=0.9,

            color='darkblue')+

  geom_label_repel(data = filter(pnad_rendimento, 

                                 date == max(date)), 

                   aes(label = round(`value`, 2)),

                   vjust = 0.8,

                   color = 'white',

                   fill = 'darkblue', 

                   fontface = 'bold')+

  scale_x_date(breaks = '1 year',

               labels = date_format('%Y'))+

  labs(x = '',

       y = 'R$', 

       title = 'Rendimento médio real',

       caption = foot)+

  theme_bw()



# CPS data: real wage bill


pnad_massa =

  get_sidra(api='/t/6392/n1/all/v/6293/p/all') %>%

  mutate(date = parse_date(`Trimestre Móvel (Código)`, 

                           format='%Y%m')) %>%

  select(date, "value" = Valor) %>%

  as_tibble()



## CPS data: real wage bill graph


t2 <- ggplot(pnad_massa)+

  aes(x = date, y= `value`/1000)+

  geom_line(size=0.9,

            color='darkblue')+

  geom_label_repel(data = filter(pnad_massa, 

                                 date == max(date)), 

                   aes(label = round(`value`/1000, 2)),

                   vjust = 0.8,

                   color = 'white',

                   fill = 'darkblue', 

                   fontface = 'bold')+

  scale_x_date(breaks = '1 year',

               labels = date_format('%Y'))+

  labs(x = '',

       y = 'Em milhões (R$)', 

       title = 'Massa salarial real',

       caption = foot)+

  theme_bw()

##merge


grid.arrange(t1, t2)

Como podemos ver nessa última parte, o rendimento médio apresenta uma crescente, enquanto a massa salarial tem andado lateralmente nos últimos meses com uma pequena queda nos últimos meses.