- Apresentar um panorama dos indicadores socioeconômicos do mundo do trabalho disponíveis para consulta.
- Introduzir as possibilidades de análise da linguagem R para pesquisas desagregadas
library(rsconnect)
library(knitr)
library(tidyverse)
library(readxl)
library(kableExtra)
bds_trabalho = read_xlsx("./BDs_Trabalho.xlsx")
#bds_trabalho$Pesquisa = paste0("[", bds_trabalho$Pesquisa, "](", bds_trabalho$`Links para Consulta`, ")")
bds_trabalho = bds_trabalho %>%
mutate (Pesquisa = paste0("[", bds_trabalho$Pesquisa, "](", bds_trabalho$`Links para Consulta`, ")")) %>%
select (-`Links para Consulta`)
kbl(bds_trabalho, booktabs = T, longtable = F) %>%
kable_styling(full_width = F, font_size = 14, latex_options = "scale_down",
bootstrap_options = c("striped", "bordered", "hover")) %>%
column_spec(1, bold = T, color = "red", width_min = "8cm") %>%
column_spec(6, width_min = "8cm") %>%
column_spec(7, width_min = "5cm") %>%
pack_rows(index = c("Nacional" = 9, "Regional" = 3, "Internacional" = 5))
| Pesquisa | Mantenedor | Tipo | Periodicidade | Divulgação | Observações | Pacote R |
|---|---|---|---|---|---|---|
| Nacional | ||||||
| PNAD - Contínua - Pesquisa Nacional por Amostra de Domicílios | IBGE | Amostral | 2012 - Atual | Trimestral | Pesquisas adicionais aprofundadas divulgadas anualmente |
|
| PNAD - Pesquisa Nacional por Amostra de Domicílios | IBGE | Amostral | 1967 - 2015 | Descontinuada | Importante para séries históricas ou recortes temporais |
|
| PNADCOVID19 | IBGE | Amostral | 2020 (9 meses) | Descontinuada | Pesquisa específica para a pandemia com características de classificação de ocupações específica |
|
| PME - Pesquisa Mensal de Emprego | IBGE | Amostral | 1980 - 2016 | Descontinuada | Absorvida pela PNADc / Restrita a 6 (seis) regiões metropolitanas |
|
| RAIS - Relação Anual de Informações Sociais | Antigo M.TE | Censitária | 1985-2019 | Descontinuada | Principais variáveis investigadas empregos em 31 de dezembro e admitidos e desligados segundo gênero, faixa etária, grau de escolaridade, tempo de serviço e rendimentos, desagregados em nível ocupacional, geográfico e setorial. Análises Estruturais |
|
| CAGED - Cadastro Geral de Empregados e Desempregados | Antigo M.TE | Censitária | 2007-2019 | Descontinuada | Principais variáveis investigadas: um conjunto de informações que possibilita o cálculo do índice de emprego, taxa de rotatividade e a flutuação de emprego, desagregados em nível geográfico, setorial e ocupacional. Análises Conjunturais |
|
| Novo CAGED - eSocial - Sistema de Escrituração Digital das Obrigações Fiscais, Previdenciárias e Trabalhistas | ME | Censitária | 2020 - Atual | Mensal | Últimos estabelecimentos entram em novembro de 2021. Além de trabalhista é previdenciário e tributário. Mudança relevante entre CAGED e eSocial quanto a QUEM deve declarar | NA |
| Radar SIT | UnB e ME | Censitária | 1995 ou 2012 - Atual | Não Informado | Base com dados dos AFTs para Acidentes de Trabalho e Trabalho Escravo | NA |
| Migração Internacional | MJ | Diversas Bases | NA | NA | Coordenação Geral de Imigração Laboral (CGIL) / Sistema de Registro Nacional Migratório (SISMIGRA) / Sistema de Tráfego Internacional (STI) / STI-MAR (Sistema de Tráfego Internacional - Módulo de Alertas e Restrições) / CONARE | NA |
| Regional | ||||||
| PED - Pesquisa de Emprego e Desemprego | DIEESE | Amostral | A depender da região | Mensal (DF) | Diferenças metodológicas com o IBGE | NA |
| PDAD - Pesquisa Distrital por Amostra de Domicílios | CODEPLAN/DF | Amostral | 2004 - 2021 (em realização) | Trianual | Diferenças metodológicas com o IBGE | NA |
| SEADE Trabalho | SEADE/SP | Amostral | NA | NA | Somente BI | NA |
| Internacional | ||||||
| ILO Stat | OIT | Amostral (Compilação) | NA | NA | Bases da Organização Internacional do Trabalho |
|
| WLVD - World Labour Values Database | Curso no Evento | NA | NA | NA | Indicadores específicos como taxa de exploração. Utiliza o WIOD 13 e 16 com o acréscimo de 182 setores | NA |
| WIOD - World Input-Output Database | NWO - Consórcio Europeu | NA | 2013 e 2016 | NA | The database covers 28 EU countries and 15 other major countries in the world for the period from 2000 to 2014. | NA |
| World Bank Open Data | The World Bank | NA | NA | NA | NA |
|
| OECD Data | OCDE | NA | NA | NA | NA | NA |
Ambiente online (sem necessidade de instalação de programa) para prática: https://rstudio.cloud/
Programa offline: RStudio: https://www.rstudio.com/products/rstudio/download/
- Linguagem com foco em análise estatística.
- Análise de grande volume de dados.
- Comunidade ativa para busca de soluções em conjunto.
Para o minicurso serão utilizados como exemplos principais
Será utilizado como exemplo o pacote sidrar e a PNADC-T (https://sidra.ibge.gov.br/home/pnadct/brasil)
Esse é um exemplo de análise de horas trabalhadas em R a partir da API do SIDRA/IBGE utilizando o pacote sidrar.
Nessa primeira seção temos a utilização das seguintes tabelas:
Tabela 6371 - Média de horas habitualmente trabalhadas por semana e efetivamente trabalhadas na semana de referência, no trabalho principal e em todos os trabalhos, das pessoas de 14 anos ou mais de idade, por sexo
Tabela 6372 - Média de horas habitualmente trabalhadas por semana e efetivamente trabalhadas na semana de referência, no trabalho principal e em todos os trabalhos, das pessoas de 14 anos ou mais de idade, por grupos de idade
Tabela 6373 - Média de horas habitualmente trabalhadas por semana e efetivamente trabalhadas na semana de referência, no trabalho principal e em todos os trabalhos, das pessoas de 14 anos ou mais de idade, por níveis de instrução
Tabela 6374 - Média de horas habitualmente trabalhadas por semana e efetivamente trabalhadas na semana de referência, no trabalho principal, das pessoas de 14 anos ou mais de idade, por posição na ocupação
Para pegar o link de referência da API, veja os passos no vídeo abaixo:
#carrega bibliotecas
library(tidyverse)
library(sidrar)
library(zoo)
#armazena os dados da tabela escolhida
#horas efetivamente
#sexo
horas_sexo = get_sidra(api = "/t/6371/n1/all/n3/all/v/8188/p/all/c2/all/d/v8188%201")
#mostra o nome das colunas
colnames(horas_sexo)
[1] “Nível Territorial (Código)”
[2] “Nível Territorial”
[3] “Unidade de Medida (Código)”
[4] “Unidade de Medida”
[5] “Valor”
[6] “Brasil e Unidade da Federação (Código)” [7] “Brasil e Unidade da Federação”
[8] “Variável (Código)”
[9] “Variável”
[10] “Trimestre (Código)”
[11] “Trimestre”
[12] “Sexo (Código)”
[13] “Sexo”
#TABELA 1
# tratamento da tabela e redução ao recorte "Brasil" e todos
horas_sexo_df = horas_sexo %>%
mutate(data = as.yearqtr(`Trimestre (Código)`,
format='%Y%q')) %>%
rename(UF = "Brasil e Unidade da Federação", Hora = Valor) %>%
select(data, UF, Hora, Sexo) %>%
filter(UF == "Brasil") %>%
group_by(data)
#kable(head(horas_sexo_df))
kbl(tail(horas_sexo_df), booktabs = T, longtable = F) %>%
kable_styling(full_width = F, font_size = 14, latex_options = "scale_down",
bootstrap_options = c("striped", "bordered", "hover"))
| data | UF | Hora | Sexo |
|---|---|---|---|
| 2021 Q1 | Brasil | 36.8 | Total |
| 2021 Q1 | Brasil | 39.1 | Homens |
| 2021 Q1 | Brasil | 33.8 | Mulheres |
| 2021 Q2 | Brasil | 37.3 | Total |
| 2021 Q2 | Brasil | 39.3 | Homens |
| 2021 Q2 | Brasil | 34.6 | Mulheres |
#idade
horas_idade = get_sidra(api = "/t/6372/n1/all/n3/all/v/8188/p/all/c58/all/d/v8188%201")
#mostra o nome das colunas
colnames(horas_idade)
[1] “Nível Territorial (Código)”
[2] “Nível Territorial”
[3] “Unidade de Medida (Código)”
[4] “Unidade de Medida”
[5] “Valor”
[6] “Brasil e Unidade da Federação (Código)” [7] “Brasil e Unidade da Federação”
[8] “Variável (Código)”
[9] “Variável”
[10] “Trimestre (Código)”
[11] “Trimestre”
[12] “Grupo de idade (Código)”
[13] “Grupo de idade”
#TABELA 2
# tratamento da tabela e redução ao recorte "Brasil" e todos
horas_idade_df = horas_idade %>%
mutate(data = as.yearqtr(`Trimestre (Código)`,
format='%Y%q')) %>%
rename(UF = "Brasil e Unidade da Federação", Hora = Valor) %>%
select(data, UF, Hora, `Grupo de idade`) %>%
filter(UF == "Brasil") %>%
group_by(data)
#kable(head(horas_idade_df))
kbl(tail(horas_idade_df), booktabs = T, longtable = F) %>%
kable_styling(full_width = F, font_size = 14, latex_options = "scale_down",
bootstrap_options = c("striped", "bordered", "hover"))
| data | UF | Hora | Grupo de idade |
|---|---|---|---|
| 2020 Q1 | Brasil | 35.3 | Total |
| 2020 Q1 | Brasil | 25.2 | 14 a 17 anos |
| 2020 Q1 | Brasil | 35.1 | 18 a 24 anos |
| 2020 Q1 | Brasil | 36.2 | 25 a 39 anos |
| 2020 Q1 | Brasil | 35.5 | 40 a 59 anos |
| 2020 Q1 | Brasil | 31.9 | 60 anos ou mais |
#instrução
horas_instrucao = get_sidra(api = "/t/6373/n1/all/n3/all/v/8186/p/all/c1568/all/d/v8186%201")
#mostra o nome das colunas
colnames(horas_instrucao)
[1] “Nível Territorial (Código)”
[2] “Nível Territorial”
[3] “Unidade de Medida (Código)”
[4] “Unidade de Medida”
[5] “Valor”
[6] “Brasil e Unidade da Federação (Código)” [7] “Brasil e Unidade da Federação”
[8] “Variável (Código)”
[9] “Variável”
[10] “Trimestre (Código)”
[11] “Trimestre”
[12] “Nível de instrução (Código)”
[13] “Nível de instrução”
#TABELA 3
# tratamento da tabela e redução ao recorte "Brasil" e todos
horas_instrucao_df = horas_instrucao %>%
mutate(data = as.yearqtr(`Trimestre (Código)`,
format='%Y%q')) %>%
rename(UF = "Brasil e Unidade da Federação", Hora = Valor) %>%
select(data, UF, Hora, `Nível de instrução`) %>%
filter(UF == "Brasil") %>%
group_by(data)
#kable(head(horas_instrucao_df))
kbl(tail(horas_instrucao_df), booktabs = T, longtable = F) %>%
kable_styling(full_width = F, font_size = 14, latex_options = "scale_down",
bootstrap_options = c("striped", "bordered", "hover"))
| data | UF | Hora | Nível de instrução |
|---|---|---|---|
| 2020 Q1 | Brasil | 39.4 | Ensino fundamental completo ou equivalente |
| 2020 Q1 | Brasil | 38.5 | Ensino médio incompleto ou equivalente |
| 2020 Q1 | Brasil | 40.3 | Ensino médio completo ou equivalente |
| 2020 Q1 | Brasil | 38.6 | Ensino superior incompleto ou equivalente |
| 2020 Q1 | Brasil | 38.8 | Ensino superior completo ou equivalente |
| 2020 Q1 | Brasil | NA | Não determinado |
#ocupação
horas_ocupacao = get_sidra(api = "/t/6374/n1/all/n3/all/v/8186/p/all/c2399/all/d/v8186%201")
#mostra o nome das colunas
colnames(horas_ocupacao)
[1] “Nível Territorial (Código)”
[2] “Nível Territorial”
[3] “Unidade de Medida (Código)”
[4] “Unidade de Medida”
[5] “Valor”
[6] “Brasil e Unidade da Federação (Código)” [7] “Brasil e Unidade da Federação”
[8] “Variável (Código)”
[9] “Variável”
[10] “Trimestre (Código)”
[11] “Trimestre”
[12] “Posição na ocupação (Código)”
[13] “Posição na ocupação”
#TABELA 4
# tratamento da tabela e redução ao recorte "Brasil" e todos
horas_ocupacao_df = horas_ocupacao %>%
mutate(data = as.yearqtr(`Trimestre (Código)`,
format='%Y%q')) %>%
rename(UF = "Brasil e Unidade da Federação", Hora = Valor) %>%
select(data, UF, Hora, `Posição na ocupação`) %>%
filter(UF == "Brasil") %>%
group_by(data)
#kable(head(horas_ocupacao_df))
kbl(tail(horas_ocupacao_df), booktabs = T, longtable = F) %>%
kable_styling(full_width = F, font_size = 14, latex_options = "scale_down",
bootstrap_options = c("striped", "bordered", "hover"))
| data | UF | Hora | Posição na ocupação |
|---|---|---|---|
| 2019 Q4 | Brasil | 28.4 | Trabalhador familiar auxiliar |
| 2020 Q1 | Brasil | 39.1 | Total |
| 2020 Q1 | Brasil | 39.7 | Empregado |
| 2020 Q1 | Brasil | 37.3 | Empregador |
| 2020 Q1 | Brasil | 45.7 | Conta própria |
| 2020 Q1 | Brasil | 28.9 | Trabalhador familiar auxiliar |
## carregar pacotes
library(tidyverse)
library(sidrar)
library(scales)
library(ggplot2)
#GRÁFICO 1
ggplot(horas_sexo_df, aes(x=data, y = Hora, color = Sexo))+
geom_line(aes(linetype=Sexo)) +
geom_point() +
theme(axis.text.x=element_text(angle=45, hjust=1),
plot.title = element_text(size=12, face='bold', hjust = 0.5),
plot.subtitle = element_text(size=10, hjust = 0.5)) +
scale_x_yearqtr(breaks = pretty_breaks(n=8),
format = "%YQ%q")+
labs(x='Período', y='Horas',
title = 'Horas Habitualmente Trabalhadas',
subtitle='Todos os Trabalhos - Brasil',
caption = 'Gráfico 1 - Dados extraídos da PNADc - Trimestral - IBGE')
Error : The fig.showtext code chunk option must be TRUE
#GRÁFICO 2
ggplot(horas_idade_df, aes(x=data, y = Hora, color = `Grupo de idade`))+
geom_line(aes(linetype=`Grupo de idade`)) +
geom_point() +
theme(axis.text.x=element_text(angle=45, hjust=1),
plot.title = element_text(size=12, face='bold', hjust = 0.5),
plot.subtitle = element_text(size=10, hjust = 0.5)) +
scale_x_yearqtr(breaks = pretty_breaks(n=8),
format = "%YQ%q")+
labs(x='Período', y='Horas',
title = 'Horas Habitualmente Trabalhadas',
subtitle='Todos os Trabalhos - Brasil',
caption = 'Gráfico 1 - Dados extraídos da PNADc - Trimestral - IBGE')
Error : The fig.showtext code chunk option must be TRUE
#GRÁFICO 3
ggplot(horas_instrucao_df, aes(x=data, y = Hora, color = `Nível de instrução`))+
geom_line(aes(linetype=`Nível de instrução`)) +
geom_point() +
theme(axis.text.x=element_text(angle=45, hjust=1),
plot.title = element_text(size=12, face='bold', hjust = 0.5),
plot.subtitle = element_text(size=10, hjust = 0.5)) +
scale_x_yearqtr(breaks = pretty_breaks(n=8),
format = "%YQ%q")+
labs(x='Período', y='Horas',
title = 'Horas Habitualmente Trabalhadas',
subtitle='Todos os Trabalhos - Brasil',
caption = 'Gráfico 1 - Dados extraídos da PNADc - Trimestral - IBGE')
Error : The fig.showtext code chunk option must be TRUE
#GRÁFICO 4
ggplot(horas_ocupacao_df, aes(x=data, y = Hora, color = `Posição na ocupação`))+
geom_line(aes(linetype=`Posição na ocupação`)) +
geom_point() +
theme(axis.text.x=element_text(angle=45, hjust=1),
plot.title = element_text(size=12, face='bold', hjust = 0.5),
plot.subtitle = element_text(size=10, hjust = 0.5)) +
scale_x_yearqtr(breaks = pretty_breaks(n=8),
format = "%YQ%q")+
labs(x='Período', y='Horas',
title = 'Horas Habitualmente Trabalhadas',
subtitle='Todos os Trabalhos - Brasil',
caption = 'Gráfico 1 - Dados extraídos da PNADc - Trimestral - IBGE')
Error : The fig.showtext code chunk option must be TRUE
Exemplo do Vítor Wilher
#########################################################
##### CAGED vs PNAD COntínua ############################
## Pacotes
library(ecoseries)
library(sidrar)
library(xts)
library(ggplot2)
library(forecast)
library(scales)
library(astsa)
library(gridExtra)
library(seasonal)
## Baixar dados
caged = ts(series_ipeadata('231410417',
periodicity = 'M')$serie_231410417$valor,
start=c(1999,05), freq=12)
po = get_sidra(api='/t/6320/n1/all/v/4090/p/all/c11913/allxt')
carteira = po$Valor[po$`Posição na ocupação e categoria do emprego no trabalho principal (Código)`=='31722']
pnad = ts(carteira, start=c(2012,03), freq=12)
## Dessazonalizar Caged
cagedsa <- final(seas(caged))
## Window
cagedsa = window(cagedsa, start=c(2012,06))
pnad = window(pnad, end=c(2018,09))
## Juntar dados
data = ts.intersect(cagedsa, pnad)
df = data.frame(caged=data[,1], pnad=data[,2])
g1 = autoplot(data[,1]/1000)+
geom_line(size=.8, colour='red')+
xlab('')+ylab('Mil Pessoas')+
labs(title='Admitidos - CAGED/MTE')
g1
Error : The fig.showtext code chunk option must be TRUE
g2 = autoplot(data[,2]/1000)+
geom_line(size=.8, colour='darkblue')+
xlab('')+ylab('Milhões Pessoas')+
labs(title='População Ocupada com Carteira Assinada - PNAD Contínua (t-3)')
g2
Error : The fig.showtext code chunk option must be TRUE
## Gráfico lado a lado
grid.arrange(g1, g2,
top = "CAGED vs. PNAD",
layout_matrix = matrix(c(2,1),
ncol=1, byrow=TRUE))
Error : The fig.showtext code chunk option must be TRUE
ggplot(df, aes(pnad, caged/1000))+
geom_point(size=3, colour='darkblue')+
geom_smooth(method = 'auto')+
xlab('População Ocupada com Carteira Assinada - PNAD Contínua (t-3) - Mil Pessoas')+
ylab('Fluxo de Admitidos - CAGED/MTE - Mil Pessoas')+
labs(title='CAGED vs. PNAD Contínua')
Error : The fig.showtext code chunk option must be TRUE
O sidrar apresenta limitações quanto ao tempo de disponibilização dos dados.
A principal vantagem do pacote é a disponibilização dos microdados.
A segunda vantagem de destaque é a utilização do pacote survey que permite mostrar os erros estatísticos associados.
A desvantagem é a dificuldade de construir séries históricas de forma nativa.
Obs.: os pacotes PNADcIBGE e COVIDIBGE apresentam as mesmas funções.
- É importante conhecer as bibliotecas de perguntas que foram realizadas nas pesquisas.
Biblioteca PNADContínua - https://www.ibge.gov.br/estatisticas/sociais/populacao/9171-pesquisa-nacional-por-amostra-de-domicilios-continua-mensal.html?=&t=downloads
library(COVIDIBGE)
#data frame simples e com rótulos (labels=TRUE)
pnad_covid19_novembro_dfsimples = get_covid(year=2020, month=11, vars=c("Ano", "UF", "RM_RIDE", "UPA", "Estrato",
"posest", "V1013", "V1030", "V1031", "V1032",
"V1022", "A003", "A002", "A004", "A005", "B008",
"B009B", "B009D", "B009F", "C007B", "C007C",
"C008", "C009", "C014", "C01012", "C007", "D0051",
"E001"), labels=TRUE, deflator=TRUE,
design=FALSE,savedir=tempdir())
#teste populacional
prof = c("Motoboy,", "Entregador de mercadorias (de restaurante, de farmácia, de loja, Uber Eats, IFood, Rappy etc.)")
carteira = c("Sim, tem carteira de trabalho assinada", "Sim, é servidor público estatutário")
pnad_covid_entregadores_dfsimples = pnad_covid19_novembro_dfsimples %>%
mutate(teste_prof = C007C %in% prof) %>%
filter(teste_prof == "TRUE") %>%
mutate(teste_carteira = C007B %in% carteira,
renda_deflacionada = C01012*Efetivo,
renda_deflacionada = round(renda_deflacionada, 2)) %>%
filter(teste_carteira == "FALSE")
qtde_sexo = pnad_covid_entregadores_dfsimples %>%
group_by(A003) %>%
summarise((n = sum(V1032, na.rm = T))) %>%
rename(Qtde = '(n = sum(V1032, na.rm = T))',
Genero = A003)
kbl(qtde_sexo)
| Genero | Qtde |
|---|---|
| Homem | 644222.02 |
| Mulher | 34304.55 |
# raça
raca_entregadores_covid = pnad_covid_entregadores_dfsimples %>%
select(V1032, A004) %>%
group_by(A004) %>%
summarise((n = sum(V1032, na.rm = T))) %>%
rename(Qtde = '(n = sum(V1032, na.rm = T))',
Raça = A004) %>%
select(Raça, Qtde) %>%
mutate(Qtde = round(Qtde, 0),
Qtde = as.numeric(Qtde))
kbl(raca_entregadores_covid)
| Raça | Qtde |
|---|---|
| Branca | 271288 |
| Preta | 86714 |
| Amarela | 4474 |
| Parda | 315089 |
| Indígena | 962 |
#escolaridade
escolaridade_entregadores_covid = pnad_covid_entregadores_dfsimples %>%
select(V1032, A005) %>%
group_by(A005) %>%
summarise((n = sum(V1032, na.rm = T))) %>%
rename(Qtde = '(n = sum(V1032, na.rm = T))',
Escolaridade = A005) %>%
select(Escolaridade, Qtde) %>%
mutate(Qtde = round(Qtde, 0),
Qtde = as.numeric(Qtde))
kbl(escolaridade_entregadores_covid)
| Escolaridade | Qtde |
|---|---|
| Sem instrução | 6321 |
| Fundamental incompleto | 114667 |
| Fundamental completa | 55769 |
| Médio incompleto | 98915 |
| Médio completo | 326070 |
| Superior incompleto | 54189 |
| Superior completo | 21952 |
| Pós-graduação, mestrado ou doutorado | 642 |
#UF
uf_entregadores_covid = pnad_covid_entregadores_dfsimples %>%
select(UF, V1032) %>%
group_by(UF) %>%
summarise((n = sum(V1032, na.rm = T))) %>%
rename(Qtde = '(n = sum(V1032, na.rm = T))') %>%
mutate(Qtde = round(Qtde, 0),
Qtde = as.numeric(Qtde))
kbl(uf_entregadores_covid)
| UF | Qtde |
|---|---|
| Rondônia | 3305 |
| Acre | 2558 |
| Amazonas | 13491 |
| Roraima | 1632 |
| Pará | 20182 |
| Amapá | 3173 |
| Tocantins | 4510 |
| Maranhão | 21527 |
| Piauí | 7304 |
| Ceará | 38625 |
| Rio Grande do Norte | 6879 |
| Paraíba | 17538 |
| Pernambuco | 41940 |
| Alagoas | 10428 |
| Sergipe | 10317 |
| Bahia | 30867 |
| Minas Gerais | 73683 |
| Espírito Santo | 5911 |
| Rio de Janeiro | 61916 |
| São Paulo | 194799 |
| Paraná | 31757 |
| Santa Catarina | 7020 |
| Rio Grande do Sul | 28919 |
| Mato Grosso do Sul | 5370 |
| Mato Grosso | 7790 |
| Goiás | 19581 |
| Distrito Federal | 7504 |
library(PNADcIBGE)
library(COVIDIBGE)
library(survey)
#objeto survey
pnad_covid19_novembro = get_covid(year=2020, month=11, vars=c("Ano", "UF", "RM_RIDE", "UPA", "Estrato",
"posest", "V1013", "V1030", "V1031", "V1032",
"V1022", "A003", "A002", "A004", "A005", "B008",
"B009B", "B009D", "B009F", "C007B", "C007C",
"C008", "C009", "C014", "C01012", "C007", "D0051",
"E001"), labels=TRUE, deflator=TRUE,
design=TRUE,savedir=tempdir())
#teste populacional
totalsexo = svytotal(~A003, pnad_covid19_novembro, na.rm = T)
kbl(totalsexo)
| total | SE | |
|---|---|---|
| A003Homem | 103463417 | 0 |
| A003Mulher | 108188952 | 0 |
#TIPO SURVEY - SOMENTE ENTREGADORES SEM CARTEIRA ASSINADA - NOVEMBRO
prof = c("Motoboy,", "Entregador de mercadorias (de restaurante, de farmácia, de loja, Uber Eats, IFood, Rappy etc.)")
carteira = c("Sim, tem carteira de trabalho assinada", "Sim, é servidor público estatutário")
entregadores_survey = subset(pnad_covid19_novembro, C007C %in% prof & !(C007B %in% carteira))
#genero
total_entregadores_sexo = svytotal(~A003, entregadores_survey, na.rm = T)
kbl(total_entregadores_sexo)
| total | SE | |
|---|---|---|
| A003Homem | 644222.02 | 28088.361 |
| A003Mulher | 34304.55 | 6182.571 |
#raça
raca_entregadores_survey <- round(svytotal(~A004, entregadores_survey, na.rm = T),0)
kbl(raca_entregadores_survey)
| total | SE | |
|---|---|---|
| A004Branca | 271288 | 18391.8019 |
| A004Preta | 86714 | 11572.1088 |
| A004Amarela | 4474 | 2498.8403 |
| A004Parda | 315089 | 18770.3030 |
| A004Indígena | 962 | 742.3815 |
| A004Ignorado | 0 | 0.0000 |
#escolaridade
escolaridade_entregadores_survey <- round(svytotal(~A005, entregadores_survey, na.rm = T),0)
kbl(escolaridade_entregadores_survey)
| total | SE | |
|---|---|---|
| A005Sem instrução | 6321 | 2160.4212 |
| A005Fundamental incompleto | 114667 | 10976.7126 |
| A005Fundamental completa | 55769 | 9351.6581 |
| A005Médio incompleto | 98915 | 10211.1380 |
| A005Médio completo | 326070 | 20729.3021 |
| A005Superior incompleto | 54189 | 7412.2732 |
| A005Superior completo | 21952 | 4634.5955 |
| A005Pós-graduação, mestrado ou doutorado | 642 | 470.0868 |
Pesquisa com recorte a partir da PNADCOVID19 (março a novembro de 2020)
Entregadores por App - https://www.trabalhoemplataforma.org/post/relat%C3%B3rio-de-pesquisa-1-an%C3%A1lise-da-pnad-covid19-sobre-entregadores-por-app
Motoristas por App - https://www.trabalhoemplataforma.org/post/relat%C3%B3rio-de-pesquisa-2-an%C3%A1lise-da-pnad-covid19-sobre-motoristas-por-app
aviso <- getOption("warn")
options(warn=-1)
options(encoding="latin1")
options(warn=aviso)
rm(aviso)
aviso <- getOption("warn")
options(warn=-1)
options(scipen=999)
options(warn=aviso)
rm(aviso)
library(survey)
library(tidyverse)
library(srvyr)
library(nnet)
library(stargazer)
library(PNADcIBGE)
library(kableExtra)
variaveis_de_interesse <- c("V2007", ### Sexo
"V2009", ### Idade do morador na data de referência
"V2010", ### Cor ou raça
"V4039", ### Quantas horas ... trabalhava normalmente, por semana, nesse trabalho principal?
"VD3004", ### Nível de instrução mais elevado alcançado (pessoas de 5 anos ou mais de idade) padronizado para o Ensino fundamental com duração de 9 anos
"VD4001", ### Condição em relação à força de trabalho na semana de referência para pessoas de 14 anos ou mais de idade
"VD4002", ### Condição de ocupação na semana de referência para pessoas de 14 anos ou mais de idade
"VD4007", ### Posição na ocupação no trabalho principal da semana de referência para pessoas de 14 anos ou mais de idade
"VD4016") ### Rendimento mensal habitual do trabalho principal para pessoas de 14 anos ou mais de idade (apenas para pessoas que receberam em dinheiro, produtos ou mercadorias no trabalho principal)
pnadc_2019 <- get_pnadc (year = 2019, interview = 1, vars = c(variaveis_de_interesse), design = TRUE)
pnadc_2019 <- as_survey_design(pnadc_2019)
assalariados_2019 <- subset(pnadc_2019, V2009 %in% c(18:65) &
VD4007 == "Empregado (inclusive trabalhador doméstico)")
assalariados_2019 <- assalariados_2019 %>%
mutate(
raca = factor(
case_when(
V2010 == "Branca" ~ "Brancos",
V2010 %in% c("Preta", "Parda") ~ "Negros"
),
levels = c(
"Brancos", "Negros"
)
)
)
assalariados_2019 <- assalariados_2019 %>%
mutate(
jornadas = factor(
case_when(
V4039 <= 39 ~ "Jornadas parciais",
V4039 %in% c(40:44) ~ "Jornadas-padrão",
V4039 >= 45 ~ "Jornadas excessivas"
),
levels = c(
"Jornadas-padrão", "Jornadas parciais", "Jornadas excessivas"
)
)
)
media_renda <- svymean (~VD4016, assalariados_2019, na.rm = TRUE)
kable(as.data.frame(media_renda)) %>%
kable_styling(full_width = F, latex_options = "scale_down", bootstrap_options = c("bordered", "hover"))
| mean | VD4016 | |
|---|---|---|
| VD4016 | 2197.383 | 27.32814 |
cv(media_renda)
VD4016
VD4016 0.01243668
kable(as.data.frame(cv(media_renda))) %>%
kable_styling(full_width = F, latex_options = "scale_down", bootstrap_options = c("bordered", "hover"))
| VD4016 | |
|---|---|
| VD4016 | 0.0124367 |
confint(media_renda)
2.5 % 97.5 %
VD4016 2143.821 2250.945
kable(as.data.frame(confint(media_renda))) %>%
kable_styling(full_width = F, latex_options = "scale_down", bootstrap_options = c("bordered", "hover"))
| 2.5 % | 97.5 % | |
|---|---|---|
| VD4016 | 2143.821 | 2250.945 |
media_renda_mulheres <- svymean(~VD4016, subset(assalariados_2019, V2007 == "Mulher"), na.rm = TRUE)
kable(as.data.frame(media_renda_mulheres)) %>%
kable_styling(full_width = F, latex_options = "scale_down", bootstrap_options = c("bordered", "hover"))
| mean | VD4016 | |
|---|---|---|
| VD4016 | 1941.615 | 22.79887 |
mediarenda_homens <- svymean(~VD4016, subset(assalariados_2019, V2007 == "Homem"), na.rm = TRUE)
kable(as.data.frame(mediarenda_homens)) %>%
kable_styling(full_width = F, latex_options = "scale_down", bootstrap_options = c("bordered", "hover"))
| mean | VD4016 | |
|---|---|---|
| VD4016 | 2427.86 | 35.91201 |
media_renda_mulheres_superior <- svymean(~VD4016, subset(assalariados_2019, V2007 == "Mulher" &
VD3004 == "Superior completo"), na.rm = TRUE)
kable(as.data.frame(media_renda_mulheres_superior)) %>%
kable_styling(full_width = F, latex_options = "scale_down", bootstrap_options = c("bordered", "hover"))
| mean | VD4016 | |
|---|---|---|
| VD4016 | 3664.964 | 63.01323 |
mediarenda_homens_superior <- svymean(~VD4016, subset(assalariados_2019, V2007 == "Homem" &
VD3004 == "Superior completo"), na.rm = TRUE)
kable(as.data.frame(mediarenda_homens_superior)) %>%
kable_styling(full_width = F, latex_options = "scale_down", bootstrap_options = c("bordered", "hover"))
| mean | VD4016 | |
|---|---|---|
| VD4016 | 5860.425 | 154.4082 |
quantis = svyquantile(~VD4016, assalariados_2019, quantiles = c(0.01, 0.05, 0.10, 0.25, 0.50, 0.75, 0.90, 0.95, 0.99), na.rm = TRUE)
class(quantis) <- list("svyquantile", "list")
kable(as.data.frame(quantis)) %>%
kable_styling(full_width = F, latex_options = "scale_down", bootstrap_options = c("bordered", "hover"))
| VD4016.quantile | VD4016.ci.2.5 | VD4016.ci.97.5 | VD4016.se | |
|---|---|---|---|---|
| 0.01 | 150 | 150 | 160 | 2.5507973 |
| 0.05 | 400 | 400 | 450 | 12.7539863 |
| 0.1 | 700 | 700 | 800 | 25.5079726 |
| 0.25 | 998 | 998 | 1000 | 0.5101595 |
| 0.5 | 1400 | 1400 | 1500 | 25.5079726 |
| 0.75 | 2200 | 2200 | 2300 | 25.5079726 |
| 0.9 | 4000 | 4000 | 4500 | 127.5398631 |
| 0.95 | 6000 | 6000 | 7000 | 255.0797261 |
| 0.99 | 15000 | 15000 | 17000 | 510.1594523 |
total_jornadas <- svytotal (~jornadas, assalariados_2019, na.rm = TRUE)
kable(as.data.frame(total_jornadas)) %>%
kable_styling(full_width = F, latex_options = "scale_down", bootstrap_options = c("bordered", "hover"))
| total | SE | |
|---|---|---|
| jornadasJornadas-padrão | 37231361 | 221442.0 |
| jornadasJornadas parciais | 13195762 | 122352.4 |
| jornadasJornadas excessivas | 11447280 | 151738.6 |
freq_jornadas <- svymean (~jornadas, assalariados_2019, na.rm = TRUE)
kable(as.data.frame(freq_jornadas)) %>%
kable_styling(full_width = F, latex_options = "scale_down", bootstrap_options = c("bordered", "hover"))
| mean | SE | |
|---|---|---|
| jornadasJornadas-padrão | 0.6017248 | 0.0027768 |
| jornadasJornadas parciais | 0.2132669 | 0.0018439 |
| jornadasJornadas excessivas | 0.1850083 | 0.0022425 |
total_jornadas_raca <- svyby(~jornadas, ~raca, assalariados_2019, svytotal, na.rm = TRUE)
kable(as.data.frame(total_jornadas_raca)) %>%
kable_styling(full_width = F, latex_options = "scale_down", bootstrap_options = c("bordered", "hover"))
| raca | jornadasJornadas-padrão | jornadasJornadas parciais | jornadasJornadas excessivas | se.jornadasJornadas-padrão | se.jornadasJornadas parciais | se.jornadasJornadas excessivas | |
|---|---|---|---|---|---|---|---|
| Brancos | Brancos | 17134129 | 5392662 | 4850070 | 165743.3 | 83712.15 | 98064.61 |
| Negros | Negros | 19731464 | 7654735 | 6494897 | 172988.0 | 89949.64 | 113946.31 |
freq_jornadas_raca <- svyby(~jornadas, ~raca, assalariados_2019, svymean, na.rm = TRUE)
kable(as.data.frame(freq_jornadas_raca)) %>%
kable_styling(full_width = F, latex_options = "scale_down", bootstrap_options = c("bordered", "hover"))
| raca | jornadasJornadas-padrão | jornadasJornadas parciais | jornadasJornadas excessivas | se.jornadasJornadas-padrão | se.jornadasJornadas parciais | se.jornadasJornadas excessivas | |
|---|---|---|---|---|---|---|---|
| Brancos | Brancos | 0.6258617 | 0.1969788 | 0.1771595 | 0.0038625 | 0.0026754 | 0.0031894 |
| Negros | Negros | 0.5823739 | 0.2259294 | 0.1916968 | 0.0034395 | 0.0024115 | 0.0028318 |
svychisq(~jornadas + raca, assalariados_2019, statistic = "Chisq")
Pearson's X^2: Rao & Scott adjustment
data: NextMethod() X-squared = 901.56, df = 2, p-value < 0.00000000000000022
Obs.: rejeita-se a hipótese nula (H0), testada contra a hipótese alternativa (H1), pois o p-valor é estatisticamente significativo ao nível de 5%. Portanto, as variáveis associadas são estatisticamente independentes.
txdesocup <- svyratio(~VD4002 == "Pessoas desocupadas",~VD4001 == "Pessoas na força de trabalho", pnadc_2019, na.rm = T)
class(txdesocup) <- list("svyratio", "list")
kable(as.data.frame(txdesocup)) %>%
kable_styling(full_width = F, latex_options = "scale_down", bootstrap_options = c("bordered", "hover"))
| VD4001…..Pessoas.na.força.de.trabalho. | VD4001…..Pessoas.na.força.de.trabalho..1 | |
|---|---|---|
| VD4002 == “Pessoas desocupadas” | 0.1165897 | 0.0000015 |
library(sjPlot)
library(sjmisc)
library(sjlabelled)
linear_simples <- lm(VD4016 ~ V2007, data = assalariados_2019)
#Para visualizar o summary no console basta tirar o "#" da linha seguinte
#summary(linear_simples)
tab_model(linear_simples)
| VD 4016 | |||
|---|---|---|---|
| Predictors | Estimates | CI | p |
| (Intercept) | 2152.99 | 2134.49 – 2171.48 | <0.001 |
| V2007 [Mulher] | -412.55 | -441.38 – -383.71 | <0.001 |
| Observations | 183011 | ||
| R2 / R2 adjusted | 0.004 / 0.004 | ||
linear_multipla <- lm(VD4016 ~ V2007 + V2009 + raca + VD3004, data = assalariados_2019)
#Para visualizar o summary no console basta tirar o "#" da linha seguinte
#summary(linear_multipla)
tab_model(linear_multipla)
| VD 4016 | |||
|---|---|---|---|
| Predictors | Estimates | CI | p |
| (Intercept) | -397.80 | -493.00 – -302.60 | <0.001 |
| V2007 [Mulher] | -905.98 | -932.67 – -879.29 | <0.001 |
| V2009 | 35.14 | 34.10 – 36.18 | <0.001 |
| raca [Negros] | -567.01 | -593.63 – -540.38 | <0.001 |
|
VD3004 [Fundamental incompleto ou equivalente] |
589.83 | 511.63 – 668.03 | <0.001 |
|
VD3004 [Fundamental completo ou equivalente] |
1073.57 | 986.31 – 1160.84 | <0.001 |
|
VD3004 [Médio incompleto ou equivalente] |
1253.87 | 1162.25 – 1345.48 | <0.001 |
|
VD3004 [Médio completo ou equivalente] |
1530.13 | 1450.83 – 1609.42 | <0.001 |
|
VD3004 [Superior incompleto ou equivalente] |
2039.84 | 1945.45 – 2134.22 | <0.001 |
|
VD3004 [Superior completo] |
4121.85 | 4039.99 – 4203.71 | <0.001 |
| Observations | 181057 | ||
| R2 / R2 adjusted | 0.191 / 0.191 | ||
# Basta tirar o "#" da linha seguinte para gerar o arquivo em .doc
#stargazer(linear_simples, linear_multipla, type="html", out="Modelos_lineares.doc")
log_binario <- glm(VD4002 ~ V2007 + V2009 + raca + VD3004, data = assalariados_2019, family = "binomial")
#Para visualizar o summary no console basta tirar o "#" da linha seguinte
#summary(log_binario)
tab_model(log_binario)
| VD 4002 | |||
|---|---|---|---|
| Predictors | Odds Ratios | CI | p |
| (Intercept) | 0.74 | 0.66 – 0.84 | <0.001 |
| V2007 [Mulher] | 1.74 | 1.69 – 1.79 | <0.001 |
| V2009 | 0.95 | 0.95 – 0.95 | <0.001 |
| raca [Negros] | 1.41 | 1.36 – 1.45 | <0.001 |
|
VD3004 [Fundamental incompleto ou equivalente] |
0.82 | 0.74 – 0.90 | <0.001 |
|
VD3004 [Fundamental completo ou equivalente] |
0.81 | 0.73 – 0.90 | <0.001 |
|
VD3004 [Médio incompleto ou equivalente] |
0.86 | 0.77 – 0.96 | 0.006 |
|
VD3004 [Médio completo ou equivalente] |
0.73 | 0.66 – 0.80 | <0.001 |
|
VD3004 [Superior incompleto ou equivalente] |
0.58 | 0.52 – 0.65 | <0.001 |
|
VD3004 [Superior completo] |
0.40 | 0.36 – 0.45 | <0.001 |
| Observations | 211203 | ||
| R2 Tjur | 0.064 | ||
#exp(coef(log_binario))
kable(exp(coef(log_binario))) %>%
kable_styling(full_width = F, latex_options = "scale_down", bootstrap_options = c("bordered", "hover"))
| x | |
|---|---|
| (Intercept) | 0.7447068 |
| V2007Mulher | 1.7385447 |
| V2009 | 0.9469367 |
| racaNegros | 1.4069800 |
| VD3004Fundamental incompleto ou equivalente | 0.8161712 |
| VD3004Fundamental completo ou equivalente | 0.8093607 |
| VD3004Médio incompleto ou equivalente | 0.8594856 |
| VD3004Médio completo ou equivalente | 0.7253498 |
| VD3004Superior incompleto ou equivalente | 0.5795528 |
| VD3004Superior completo | 0.4034014 |
# Basta tirar o "#" da linha seguinte para gerar o arquivo em .doc
#stargazer(log_binario, apply.coef = exp, type="html", out="Modelo_log_binario.doc")
#log_multinomial <- multinom (jornadas ~ V2007 + V2009 + raca + VD3004, data = assalariados_2019)
print_output(log_multinomial <- multinom (jornadas ~ V2007 + V2009 + raca + VD3004, data = assalariados_2019))
Error : The fig.showtext code chunk option must be TRUE
#Para visualizar o summary no console basta tirar o "#" da linha seguinte
#summary(log_multinomial)
tab_model(log_multinomial)
| jornadas | ||||
|---|---|---|---|---|
| Predictors | Odds Ratios | CI | p | Response |
| (Intercept) | 0.82 | 0.76 – 0.88 | <0.001 | Jornadas parciais |
| V2007 [Mulher] | 2.15 | 2.10 – 2.20 | <0.001 | Jornadas parciais |
| V2009 | 1.00 | 1.00 – 1.00 | 0.955 | Jornadas parciais |
| raca [Negros] | 1.27 | 1.24 – 1.30 | <0.001 | Jornadas parciais |
|
VD3004 [Fundamental incompleto ou equivalente] |
0.65 | 0.61 – 0.69 | <0.001 | Jornadas parciais |
|
VD3004 [Fundamental completo ou equivalente] |
0.46 | 0.43 – 0.50 | <0.001 | Jornadas parciais |
|
VD3004 [Médio incompleto ou equivalente] |
0.53 | 0.49 – 0.57 | <0.001 | Jornadas parciais |
|
VD3004 [Médio completo ou equivalente] |
0.30 | 0.28 – 0.32 | <0.001 | Jornadas parciais |
|
VD3004 [Superior incompleto ou equivalente] |
0.46 | 0.43 – 0.49 | <0.001 | Jornadas parciais |
|
VD3004 [Superior completo] |
0.33 | 0.31 – 0.36 | <0.001 | Jornadas parciais |
| (Intercept) | 0.45 | 0.41 – 0.49 | <0.001 | Jornadas excessivas |
| V2007 [Mulher] | 0.73 | 0.71 – 0.75 | <0.001 | Jornadas excessivas |
| V2009 | 1.01 | 1.00 – 1.01 | <0.001 | Jornadas excessivas |
| raca [Negros] | 0.87 | 0.85 – 0.89 | <0.001 | Jornadas excessivas |
|
VD3004 [Fundamental incompleto ou equivalente] |
1.08 | 1.00 – 1.17 | 0.037 | Jornadas excessivas |
|
VD3004 [Fundamental completo ou equivalente] |
1.05 | 0.97 – 1.14 | 0.258 | Jornadas excessivas |
|
VD3004 [Médio incompleto ou equivalente] |
1.03 | 0.94 – 1.13 | 0.509 | Jornadas excessivas |
|
VD3004 [Médio completo ou equivalente] |
0.88 | 0.81 – 0.95 | 0.001 | Jornadas excessivas |
|
VD3004 [Superior incompleto ou equivalente] |
0.66 | 0.60 – 0.73 | <0.001 | Jornadas excessivas |
|
VD3004 [Superior completo] |
0.52 | 0.48 – 0.57 | <0.001 | Jornadas excessivas |
| Observations | 187770 | |||
| R2 Nagelkerke | 0.098 | |||
#exp(coef(log_multinomial))
kable(exp(coef(log_multinomial))) %>%
kable_styling(full_width = F, latex_options = "scale_down", bootstrap_options = c("bordered", "hover"))
| (Intercept) | V2007Mulher | V2009 | racaNegros | VD3004Fundamental incompleto ou equivalente | VD3004Fundamental completo ou equivalente | VD3004Médio incompleto ou equivalente | VD3004Médio completo ou equivalente | VD3004Superior incompleto ou equivalente | VD3004Superior completo | |
|---|---|---|---|---|---|---|---|---|---|---|
| Jornadas parciais | 0.8179921 | 2.1515817 | 1.000025 | 1.2722703 | 0.6473448 | 0.4620274 | 0.5312773 | 0.3028614 | 0.4586115 | 0.3330221 |
| Jornadas excessivas | 0.4510736 | 0.7275855 | 1.005819 | 0.8686788 | 1.0847341 | 1.0495799 | 1.0301935 | 0.8775556 | 0.6615155 | 0.5247825 |
# Basta tirar o "#" da linha seguinte para gerar o arquivo em .doc
#stargazer(log_multinomial, apply.coef = exp, type="html", out="Modelo_log_multinomial.doc")