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.