Tag

pnadc Archives - Análise Macro

Previsão do Desemprego: Redes Neurais vs. Previsões do Focus

By | Data Science

Motivação

Na vida real dificilmente encontramos em séries temporais (econômicas) características desejáveis como estacionariedade e linearidade. Modelos econométricos bastante conhecidos como o ARIMA podem contornar o primeiro problema ao diferenciar a série, mas falham em capturar não linearidades. Dessa forma, modelos não lineares precisam ser empregados e um candidato natural é o modelo de redes neurais.

A arquitetura de uma rede neural simples

As redes neurais são métodos de previsão baseados em modelos matemáticos simples do cérebro, capazes de realizar aprendizado de máquina. Elas permitem relacionamentos não lineares complexos entre a variável de interesse e suas regressoras.

Uma rede neural pode ser pensada como uma rede de "neurônios" organizados em camadas. Os regressores (ou inputs) formam a camada inferior e as previsões (ou outputs) formam a camada superior. Também pode haver camadas intermediárias contendo "neurônios ocultos". As redes neurais mais simples não contêm camadas ocultas e são equivalentes a regressões lineares.

O diagrama a seguir mostra a versão de rede neural de uma regressão linear com quatro regressores. Os coeficientes associados a esses regressores são chamados de "pesos". As previsões são obtidas por uma combinação linear dos inputs. Os pesos são selecionados na estrutura da rede neural usando um "algoritmo de aprendizado" cujo objetivo é minimizar uma "função de custo" - como o EQM - e é comumente chamado de "algoritmo de aprendizagem por retropropagação do erro".

Fonte: Hyndman and Athanasopoulos (2021)

Uma rede neural com camada oculta

Uma vez que adicionamos uma camada intermediária com neurônios ocultos, a rede neural se torna não linear. Um exemplo simples é mostrado no diagrama a seguir.

Fonte: Hyndman and Athanasopoulos (2021)

Isso é conhecido como uma rede multilayer feed-forward network, onde cada camada de nós recebe entradas das camadas anteriores. As saídas dos nós em uma camada são entradas para a próxima camada. As entradas para cada nó são combinadas usando uma combinação linear ponderada. O resultado é então modificado por uma função não linear (como uma função sigmoide) antes de ser gerado. Isso tende a reduzir o efeito de valores extremos de entrada, tornando a rede um pouco robusta a outliers.

O número de camadas ocultas e o número de nós em cada camada oculta devem ser especificados.

Autoregressão de rede neural (NNAR)

Em se tratando de séries temporais, valores defasados da série podem ser usados como entradas em uma rede neural, assim como usamos valores defasados em um modelo autorregressivo (AR).

Tomando como exemplo uma rede neural com uma camada oculta, usamos a notação NNAR(p, k) para indicar que existem p entradas defasadas e k nós na camada oculta. Por exemplo, um modelo NNAR(9, 3) é uma rede neural com as últimas nove observações usadas como entradas para prever a saída yt e possui 3 neurônios na camada oculta.

Da mesma forma, podemos representar e usar o NNAR para séries sazonais, como é característico em dados que buscam representar o mercado de trabalho de uma economia, por exemplo a taxa de desocupação.

O modelo tem como vantagem a menor complexidade e maior interpretabilidade em relação a um modelo com múltiplas camadas ocultas. Para saber mais veja Hyndman e Athanasopoulos (2021) e Faraway e Chatfeld (1998).

Modelo híbrido: ARIMA + NNAR

De forma a explorar as características lineares e não lineares da série temporal da taxa de desocupação brasileira (PNADC-M/IBGE), e seguindo Chakraborty et al. (2020), propomos um algoritmo em dois estágios que constrói um modelo híbrido de previsão, assumindo que os modelos podem captar as características separadamente e então suas previsões podem ser combinadas. O diagrama abaixo sintetiza a abordagem:

Exemplo com a taxa de desocupação

Para testar empiricamente a abordagem proposta, implementamos o algoritmo usando o pacote {fable} (veja um tutorial aqui) no R e comparamos os resultados com as previsões de mercado disponibilizadas no sistema de expectativas (Focus) do Banco Central do Brasil (BCB). Há poucos dados de expectativas de mercado para a taxa de desocupação (PNADC-M), dado que a coleta dessa informação se iniciou em 2021 pelo BCB, limitando a comparação. O objetivo é verificar se o modelo híbrido ARIMA+NNAR supera em termos de acurácia as previsões de mercado.

O exercício foi implementado usando validação cruzada e considerando uma janela amostral crescente, partindo de 112 observações iniciais e adicionando 1 observação a cada iteração. As previsões foram geradas no horizonte de 6 meses (pseudo) fora da amostra a partir de cada sub amostra de validação cruzada, possibilitando o cálculo de métricas de acurácia por horizonte preditivo (1, 2, ..., 6 meses).

Os dados do Focus foram tratados de modo a filtrar a expectativa mais recente disponível para uma dada data de referência. O IBGE divulga a taxa de desocupação mensalmente com um atraso de ≈ 1 mês, dessa forma consideramos como horizonte preditivo, de forma a comparar as previsões, a diferença em meses da expectativa registrada no Focus na data j em relação a data de referência t deste indicador. Dado a assincronia/atraso de divulgação da maioria dos dados econômicos em relação as suas datas de referência, as expectativas registradas no Focus após a data de referência são tomadas como expectativas futuras (o BCB aceita expectativas para o indicador até a data anterior a sua divulgação).

Resultados

O gráfico abaixo compara, por horizonte de previsão, o modelo híbrido ARIMA+NNAR e as previsões de mercado do Focus através da métrica de erro RMSE e pelo U de Theil. Por ambas as métricas o modelo proposto apresenta resultados melhores em relação ao benchmark de mercado, superando também as previsões de um modelo de passeio aleatório nos horizontes de 1 a 2 meses.

A tabela abaixo apresenta outras métricas de acurácia calculadas:

Comentários

Os resultados apresentados estão em linha com o encontrado por Chakraborty et al. (2020) para diversas outras economias que apresentam taxas de desemprego com características semelhantes à série brasileira, como Canada, Alemanha, Japão, Holanda, Nova Zelândia, Suécia e Suíça.

Apesar disso, melhorias e aprofundamentos da abordagem podem ser objeto de futura investigação. Como exemplo, destacamos que a abordagem é intensiva computacionalmente, havendo contribuições tanto do algoritmo do ARIMA quanto do NNAR para a morosidade dos procedimentos de estimação e previsão.

Códigos de R para replicação estão disponíveis para membros do Clube AM da Análise Macro.

Referências

Chakraborty, T., Chakraborty, A. K., Biswas, M., Banerjee, S., & Bhattacharya, S. (2020). Unemployment Rate Forecasting: A Hybrid Approach. Computational Economics. doi:10.1007/s10614-020-10040-2

Faraway, J., & Chatfeld, C. (1998). Time series forecasting with neural networks: A comparative study using the air line data. Journal of the Royal Statistical Society: Series C (Applied Statistics), 47(2), 231–250.

Hyndman, R. J., & Athanasopoulos, G. (2021) Forecasting: principles and practice, 3rd edition, OTexts: Melbourne, Australia. OTexts.com/fpp3. Accessed on 2022-04-01.

Coleta de dados de mercado de trabalho com o Python

By | Indicadores

Para realizar uma análise de conjuntura completa, é crucial dominar a habilidade de coletar dados sobre o Mercado de Trabalho. Esse processo pode ser facilitado utilizando o Python, sendo possível importar os dados direto do SIDRA. No post de hoje, mostraremos como é possível realizar essa coleta de forma reprodutível e automática.

Antes de tudo, é necessário escolher as tabelas do SIDRA dos indicadores que se deseja analisar. Aqui buscaremos a tabela 6318, que diz respeito a " Pessoas de 14+ anos (Mil pessoas): ocupados/desocupados na Força de trabalho". Existem diversas outras tabelas interessantes que entregam informações preciosíssimas sobre o Mercado de Trabalho, e que podem ser coletadas utilizando o mesmo método aqui praticado.

Para coletar os dados do SIDRA utilizaremos a biblioteca {sidrapy}, que através dos códigos dos parâmetros oferecidos pela API da plataforma, permite importar os dados para o Python.

Pessoas de 14+ anos (Mil pessoas): ocupados/desocupados na Força de trabalho: "/t/6318/n1/all/v/1641/p/all/c629/all"

Realizamos essa busca na seguinte URL:  https://sidra.ibge.gov.br/tabela/6318, escolhendo os parâmetros de interesse na plataforma e buscando a API em "Links para Compartilhar" no final da página.

Com isso, construímos o código no Python.

Quer saber mais?

Veja nossos cursos de Macroeconomia através da nossa trilha de Macroeconomia Aplicada.

Acessando Microdados da PNAD Contínua com o R

By | Indicadores

A Pesquisa Nacional por Amostra de Domicílios (PNAD) é uma importante fonte de dados que descreve de modo detalhado a situação da população brasileira. Suas tabelas incluem dados de diversos temas, como instrução, trabalho, famílias e características dos domicílios, sendo assim uma fonte ampla para pesquisas e análises aprofundada. No post de hoje, mostraremos como é possível obter os dados da PNADc com o R!

PNADcIBGE

O pacote PNADcIBGE permite extrair os microdados da pesquisa direto do R, utilizando-se da função get_pnadc, que a partir de seus argumentos, define os parâmetros e quais dados da pesquisa devem ser extraídos.

Dentre os possíveis argumentos, seguem:

  • year é o ano dos dados que você está interessado;
  • quarter é o trimestre, que pode ser substituído por interview (dado anual baseado na entrevista, de 1 a 6) ou topic (dado anual para um dado tópico, de 1 a 4);
  • vars são as variáveis utilizadas, um vetor. Caso não fornecido, todas as variáveis serão incluídas;
  • defyear é o ano que é usado como base para calcular os valores deflacionados;
  • defquarter segue a mesma lógica. Os deflatores podem ser sobrescritos dadas algumas condições, há mais detalhes no manual do pacote;
  • labels indica se variáveis categóricas serão apresentadas como fatores;
  • deflator indica se será deflacionada a série;
  • design indica se os dados serão retornados como um survey.design, um tipo de objeto apropriado para análise de surveys com o pacote survey/
  • savedir indica se o objeto deve ser salvo em um diretório.

Para obter os códigos das variáveis e suas respectivas descrições, deve-se obter o arquivo .xls no seguinte link que direciona para o diretório de arquivos do IBGE sobre a PNADc. Ao entrar no link, deve-se baixar o arquivo "Dicionario_e_input.zip" e extrair a planilha de nome "dicionario_PNADC_microdados_trimestral.xls".

Abaixo, segue um exemplo de uso da retirada de dados da PNADc utilizando a função get_pnadc. Veja que escolhemos o ano de 2017 para o quarto trimestre. A variável V3009A pode ser encontrada dentro do dicionário, que tem como quesito: "Qual foi o curso mais elevado que ... frequentou anteriormente?".

Um ponto importante sobre a extração dos microdados da PNADc, deve ser o cuidado com a quantidade importada dentro do R, a depender da máquina, pode encontrar problemas devido ao grande peso da quantidade de dados.

Quer saber mais sobre a PNADc e outros microdados brasileiros?

Veja nosso curso de Microdados Brasileiros usando o R onde ensinamos nossos alunos as melhores formas de extrair os microdados com o R!

Dashboard de Mercado de Trabalho

By | Indicadores

O Mercado de trabalho configura em uma associação de relações entre demanda e oferta de trabalho e na análise de conjuntura, investigar esta área é de grande importância, devido a riqueza de informações que os indicadores passam sobre a situação socioeconômica do país. Na Análise Macro, realizamos essa investigação da forma mais facilitada possível: com um dashboard! Com base nos painéis interativos produzidos no nosso Curso de Análise de Conjuntura, conseguimos analisar por completo essa área. No post de hoje mostraremos o dashboard de mercado de trabalho.

Nas últimas semanas, realizamos demonstrações sobre os dashboards de nível de atividade econômica e de inflação, produzidos aqui na Análise Macro, no qual também ensinamos nestes posts a como realizar o deploy desses painéis. Para o dashboard de trabalho não é diferente, caso queira realizar o compartilhamento online do painel é possível seguindo os mesmo passos.

Você pode ver o resultado através do seguinte link: https://analisemacro.shinyapps.io/dashboard_trabalho/

Existem três abas no dashboard, contando com a página inicial. Na primeira, que é a página inicial, demonstra a visão geral do mercado de trabalho, exibindo gráfico temporal da variação da taxa do desemprego medida pela PNADc mensal. As caixas exibem os valores dos ocupados e desocupados em milhões, medidos pelo IBGE, bem como o último valor da taxa de desocupados.

Na segunda aba, demonstra o termômetro do PNADc, desagregando o seus principais indicadores, separando-os também por abas.  Na primeira, é medido em milhões de pessoas a População total (PIA), a Força de Trabalho (PEA), o número de Ocupados e Desocupados, as pessoas Fora da Força de Trabalho (PNEA), a Taxa de Desocupação, o Nível de Ocupação e  a Taxa de Participação.

Em Ocupação por categorias, é desagregado as categorias do tipo de emprego pelas pessoas ocupadas. mostrando em milhões o Empregado com e sem Carteira, o Trabalhador Doméstico, o Empregado do Setor Público, o Trabalhador familiar auxiliar, o Empregador e aqueles que trabalham por Conta Própria.

Também é desagregado em relação aos grupos de atividade exercidos pelo trabalhadores, medidos em milhões de pessoas, demonstrando as áreas de Agricultura, Indústria Geral, Construção, Comércio, Transporte, Alojamento e alimentação, entre outros tipos de atividade, que são medidos pela PNADc.

É também possível acompanhar o rendimento dos trabalhadores, em reais, ao longo do tempo. Vemos no dashboard o rendimento médio real e nominal em uma aba de rendimentos, bem como também é possível ver a massar de rendimentos em milhões em outra aba (também real e nominal).

Por fim, vemos ao longo do tempo o Saldo no Novo CAGED a nível nacional, em milhares.

 

Como foi possível ver, o dashboard de mercado de trabalho nos force informações importantes para analisar a conjuntura e os caminhos econômicos percorridos no país, o útil a sua fácil utilização. Aqui na Análise Macro, ensinamos a construir dashboards iguais a este com nossos Curso de Análise de Conjuntura com o R e de Produção de Dashboards.

 

Acessando microdados da PNAD Contínua no R

By | Data Science

Os microdados da Pesquisa Nacional por Amostra de Domicílios Contínua (PNADC), produzida pelo IBGE, possuem uma riqueza enorme de informação de um conjunto de indicadores relacionados à força de trabalho no país, constituindo um verdadeiro tesouro para economistas e cientistas sociais. Esse grande volume de dados exige, por consequência, o uso de ferramentas adequadas para o tratamento, análise, visualização e sua utilização em geral. Em suma, é necessário utilizar linguagens de programação para "colocar a mão" nesses dados e, neste exercício, mostraremos como fazer isso usando o R.

Para reproduzir o exercício a seguir você precisará dos seguintes pacotes:


library(PNADcIBGE) # CRAN v0.7.0
library(survey) # CRAN v4.0
library(convey) # CRAN v0.2.3
library(magrittr) # CRAN v2.0.1

1)  Importar microdados trimestrais  

Para começar o exercício, vamos importar os microdados para o environment do R usando o pacote PNADcIBGE - que foi desenvolvido pela própria equipe do IBGE. Os microdados trimestrais serão o alvo do nosso exemplo: apontamos na função get_pnadc o último período (ano/trimestre) disponível da pesquisa e, opcionalmente, as variáveis de interesse1.


# Importar online microdados do 3º trimestre de 2021
dados_pnadc <- get_pnadc(year = 2021, quarter = 3, vars = c("VD4020", "V2007"))

# Classe do objeto
class(dados_pnadc) # útil para análises de dados amostrais complexos

[1] "svyrep.design"

2)  Análise de dados

Após este simples comando de importação executado, os microdados da PNADC já estão disponíveis para fazermos uma análise. A função, inclusive, já configura o plano amostral internamente através do argumento design = TRUE - mas o usuário pode desabilitar para obter os dados brutos -, sendo assim podemos usar o pacote survey para obter, por exemplo, o total de homens e mulheres:


# Obter nº total de homens e mulheres
svytotal(x = ~V2007, design = dados_pnadc, na.rm = TRUE)

#                  total     SE
# V2007Homem   104020393 0.1207
# V2007Mulher  108787836 0.0998

Da mesma forma, e com comandos simples, o usuário pode estimar o índice de Gini a nível nacional:


# Estimar o índice de Gini
dados_pnadc %>%
convey_prep() %>%
svygini(formula = ~VD4020, na.rm = TRUE)

#           gini     SE
# VD4020 0.51625 0.0034

Diversas outras análise podem ser feitas, como esta publicada no blog da Análise Macro:

Saiba mais

Para saber mais confira os cursos aplicados de R e Python.


[1] Note que os microdados consomem espaço excepcionalmente grande na memória do computador, portanto, evite a importação sem nenhum tipo de filtro de variáveis.

 

Receba diretamente em seu e-mail gratuitamente nossas promoções especiais
e conteúdos exclusivos sobre Análise de Dados!

Assinar Gratuitamente