Tag

renda Archives - Análise Macro

A desigualdade de renda nos microdados da PNAD: uma análise com o R

By | microeconometria

Na última terça-feira, na nossa 10ª live de análise de dados com R (clique aqui para se inscrever para a próxima), eu mostrei como analisar microdados da PNAD Contínua com o R. Em particular, mostrei alguns dados sobre renda nesse país desigual chamado Brasil. Nesse post faço um resumo da aula.

Conheça o Curso de Avaliação de Políticas Públicas usando o R

Na aula, usei os pacotes abaixo.


library(tidyverse)
library(PNADcIBGE)
library(survey)
library(geobr)

O pacote PNADcIBGE é utilizado, basicamente, para baixar e ler os dados. Você pode baixar os microdados da PNAD de forma direta para o RStudio ou pegar os dados manualmente no ftp do IBGE. Na aula, optei por usar essa última opção, posto que há uma demora para baixar/ler os dados. Assim, peguei os microdados da PNAD Contínua trimestral referente ao 4º trimestre de 2020 no ftp e importei para o R como abaixo. Além de ler os dados, também já preparei os mesmos para ser analisado com o pacote survey.


microdados_pnadc = read_pnadc('PNADC_042020.txt', 'input_PNADC_trimestral.txt')
microdados_pnadc = pnadc_labeller(microdados_pnadc,
'dicionario_PNADC_microdados_trimestral.xls')
microdados_pnadc = pnadc_design(microdados_pnadc)

Uma vez que os dados estejam prontos, nós podemos analisar alguns dados de renda e tirar algumas lições importantes. Por exemplo, qual a renda média mensal do brasileiro? Para ver isso, podemos rodar a linha de código abaixo.


renda_media = svymean(~VD4020, microdados_pnadc, na.rm=T)

Chegamos à conclusão que a renda média mensal no nosso país é de R$ 2482,40. Há diferença se a pessoa é branca ou preta? Vejamos...


svymean(~VD4020, subset(microdados_pnadc, V2010 == "Branca"), na.rm=T)
svymean(~VD4020, subset(microdados_pnadc, V2010 == "Preta"), na.rm=T)

Uma pessoa branca ganha em média R$ 3197,70 enquanto uma pessoa preta ganha em média bem menos, R$ 1845,90.

A coisa parece ficar ainda mais complicada se adicionamos o sexo. Por exemplo, um homem branco com mais de 38 anos ganha em média R$ 4075, 40. Para ver isso, basta rodar a linha de código abaixo.


svymean(~VD4020, subset(microdados_pnadc, V2007 == 'Homem' & V2010 == "Branca" &
V2009 > 38), na.rm=T)

Já uma mulher branca com mais de 38 anos ganha em média R$ 3112,50. Homens pretos com mais de 38 anos ganham em média R$ 2311,3 e mulheres pretas com mais de 38 anos ganham em média 1684,90. Para visualizar esses dados, basta substituir no código acima o sexo (V2007) e a cor (V2010).

Nesse país extremamente desigual, o sexo e a cor da pele explicam diferenciais consideráveis de renda.

Mas, vamos lembrar que o Brasil também é um país pobre. A renda média, como visto, é de pouco menos de R$ 2500. E quanto você acha que é preciso ganhar para estar nos 10% mais ricos? Podemos ver os quantis de renda com a linha de código abaixo.


renda_quantile = svyquantile(~VD4020, microdados_pnadc,
quantiles = c(.1,.25,.5,.75,.90,.99,.999),
na.rm=TRUE, ci=TRUE)

print(xtable(renda_quantile), type='html')
0.1 0.25 0.5 0.75 0.9 0.99 0.999
VD4020 400.00 1000.00 1500.00 2500.00 5000.00 20000.00 40000.00

Pois é. Para estar entre os 10% mais ricos, basta ganhar mais do que R$ 5000 mensais. Já para estar nos 1% mais ricos, você deve auferir R$ 20 mil de renda mensal. E, acredite, para estar no 0,1% mais rico da população brasileira, você tem que ganhar mais do que R$ 40 mil mensais.

A maioria da população não tem ideia de quão pobre é o Brasil e isso é um baita problema, viu...

E a educação importa para a renda?


### Média de renda por nível educacional

mediaRendaEduc = svyby(~VD4020, ~VD3004, microdados_pnadc, svymean, na.rm=T)

mediaRendaEduc %>%
ggplot(aes(x=VD4020, y=VD3004))+
geom_bar(stat='identity', colour='lightblue', fill='lightblue')

Sim, parece que sim. Pessoas com nível superior completo auferem em média mais de R$ 5000 mensais, quase três vezes mais de quem tem apenas o ensino médio completo.

E a ocupação importa para a renda?


mediaRendaOcup = svyby(~VD4020, ~VD4008, microdados_pnadc,
svymean, na.rm=T)

mediaRendaOcup$VD4008 = recode(mediaRendaOcup$VD4008,
"Empregado no setor público (inclusive servidor estatutário e militar)" =
"Empregado no setor público")

mediaRendaOcup %>%
as_tibble() %>%
ggplot(aes(x=VD4020, y=VD4008))+
geom_bar(stat='identity', colour='orange', fill='orange')

A renda média do empregado no setor público é quase o dobro do empregado no setor privado.

Por fim, como é a renda nos estados?


### Média da Renda nas UFs

mediaRendaUF = svyby(~VD4020, ~UF, microdados_pnadc, svymean, na.rm = TRUE)

states = read_state(year=2019)

### Gráfico

no_axis = theme(axis.title = element_blank(),
axis.text = element_blank(),
axis.ticks = element_blank())

states = left_join(states, mediaRendaUF, by = c('name_state' = 'UF'))
sapply(states, function(x) sum(is.na(x)))

states$VD4020[states$name_state=='Amazônas'] = mediaRendaUF$VD4020[mediaRendaUF$UF=='Amazonas']
states$VD4020[states$name_state=='Rio Grande Do Norte'] = mediaRendaUF$VD4020[mediaRendaUF$UF=='Rio Grande do Norte']
states$VD4020[states$name_state=='Rio Grande Do Sul'] = mediaRendaUF$VD4020[mediaRendaUF$UF=='Rio Grande do Sul']
states$VD4020[states$name_state=='Mato Grosso Do Sul'] = mediaRendaUF$VD4020[mediaRendaUF$UF=='Mato Grosso do Sul']
states$VD4020[states$name_state=='Rio De Janeiro'] = mediaRendaUF$VD4020[mediaRendaUF$UF=='Rio de Janeiro']

ggplot()+
geom_sf(data=states, aes(fill = as.numeric(VD4020)), colour=NA, size=.15)+
scale_fill_distiller(palette = 'Spectral', name='Renda Média')

O Distrito Federal destoa no mapa como sendo quase uma ilha, com a maior renda média do país. Por que será?

_______________________

(*) A renda aqui considerada é o rendimento mensal efetivo de todos os trabalhos para pessoas de 14 anos ou mais de idade (apenas para pessoas que receberam em dinheiro, produtos ou mercadorias em qualquer trabalho).

(**) Conheça o Curso de Avaliação de Políticas Públicas usando o R

O inverno chegou

By | Indicadores

A Pesquisa Mensal de Emprego (PME) de maio, divulgada hoje pelo IBGE, mostrou um avanço do desemprego para 6,7% da PEA. O número veio 0,3 p.p. acima da média dos modelos que estimamos e 0,1 p.p. acima do modelo que mais acertou até aqui. Em relação ao último dado do ano passado, o desemprego aumentou 2,4 p.p. ou, em termos absolutos, 582 mil pessoas passaram à condição de desocupados nos últimos cinco meses. Com efeito, a renda nominal passou a apresentar crescimento menor, hoje bem inferior, diga-se, à inflação. No último dado disponível, a renda nominal cresceu 3,5% na comparação interanual e a renda real, -5%. O inverno,  leitor, definitivamente, chegou para a economia brasileira.

grafico1

A combinação entre maior crescimento da população economicamente ativa e menor crescimento da população ocupada tem explicado esse aumento do desemprego em 2015. Este só não tem sido maior porque a queda da população ocupada tem sido compensada pela parcela "sem carteira", isto é, o emprego informal. A tabela abaixo resume algumas estatísticas, na abertura interanual, média móvel trimestral e média móvel de 12 meses.

PME/IBGE (%)
InterAnual MM3 MM12
PIA 0,8 0,8 1,0
PEA 1,2 0,8 -0,2
PNEA 0,3 0,7 2,6
PO -0,7 -0,8 -0,4
PO_PRIVADO_CARTEIRA -1,8 -1,6 -0,6
PO_CARTEIRA -2,1 -1,8 -0,6
PO_SEMCARTEIRA -1,0 -1,5 -4,2
PD..p.p.. 1,8 1,5 -0,6
RENDA_REAL -5,0 -3,6 0,6
RENDA_NOMINAL 3,5 4,8 7,8
MASSA_REAL -5,7 -4,4 0,2

A análise é complementada pelos gráficos, na abertura interanual.

Variação InterAnual (%)

Variação InterAnual (%)

Uma primeira suavização, com a média móvel trimestral é posta abaixo.

Média móvel trimestral (%)

Média móvel trimestral (%)

E agora, a média móvel de 12 meses...

grafico4

Média móvel de 12 meses (%)

Observa-se que, na margem, a renda mostra sinais de cansaço, diante do aumento do desemprego. Isso tem efeito direto sobre a inflação de serviços, ainda que de forma muito lenta, dada a elevada inércia existente nesse setor. A análise global das séries, de outra forma, nos permite dizer que o mercado de trabalho sentiu o baque do crescimento econômico. Notadamente no que tange ao aumento da população economicamente ativa. Essa era uma variável que vinha impedindo o avanço mais contundente do desemprego até o ano passado.

grafico5

grafico6

Taxa de Desemprego média por cada mês. Em azul, o desemprego em 2015.

O aumento do desemprego este ano, na magnitude de 2,4 p.p., só é similar a 2003, época também de ajuste, por conta do overshooting cambial. A despeito disso, como pode ser visto nos gráficos acima, o desemprego ainda se mantém abaixo das médias históricas mensais. Ademais, observa-se que dada a sazonalidade, devemos observar algum recuo do desemprego no segundo semestre, mas a média do ano deve se situar bem acima da de 2014, quando foi de 4,8%.

Para detalhes sobre as nossas projeções ou estudos mais detalhados sobre o mercado de trabalho, em particular sobre a renda, consulte-nos. 

Food Trucks, Renda e R: uma análise de conjuntura.

By | Dados Macroeconômicos, Macroeconometria, Mercado de Trabalho

Na terça-feira recebi um e-mail da jornalista Gabriela David, da revista Bons Negócios, me fazendo algumas perguntas sobre as perspectivas para o setor de alimentação fora de casa. A Gabriela estava interessada em food trucks, aqueles pequenos caminhões que servem comida nas ruas de Nova York e que viraram moda na cidade de São Paulo. Será que é uma febre passageira ou deve virar tendência nas principais cidades do país, questiona Gabriela. Ademais, quais são as perspectivas para esse negócio, diante dos problemas na economia brasileira, pergunta a jornalista. Para ajudar Gabriela, devemos saber, em primeiro lugar, que alimentação fora de casa é um negócio que depende diretamente do comportamento da renda das famílias. Isto porque, ainda que as pessoas usem cartão de crédito para pagar restaurantes, pensões e food trucks, não faz muito sentido pensar que as pessoas se endividam para comer fora de casa, não é mesmo? No máximo, paga-se o cartão no próximo mês, logo é preciso que a renda esteja crescendo ao longo do tempo para que negócios como esse sejam objeto de expansão. Dito isto, vamos aos dados?

Bom, dado que renda das famílias é fundamental para negócios como food trucks, devemos nos perguntar como ela deve se comportar nos próximos meses e anos, não é mesmo? Para isso, precisamos saber do que depende a renda. Uma primeira pista é identificar o comportamento do crescimento da economia. Isto porque, se o PIB cresce ao longo do tempo, é razoável supor que a renda das famílias também tende a crescer. Isto porque, maior crescimento da economia implica em maior absorção de mão de obra ou menor desemprego. Este, por sua vez, faz aumentar o poder de barganha dos indivíduos, o que leva a maior crescimento dos salários e, portanto, da renda das famílias.

Tudo bem intuitivo, não é mesmo? Pois é, vamos melhorar isso, então? Vamos fazer um exercício simples no R que consiste basicamente em ver se o desemprego ajuda a prever o que irá ocorrer com a renda. Isso pode ser feito via o famoso teste de causalidade de granger, que no pode ser acessado via o carregamento do pacote vars. Desse modo, se chegarmos à conclusão que, de fato, o desemprego ajuda a prever a renda das famílias [auferida, principalmente, por meio de salários], podemos ter alguma noção do que ocorrerá no futuro.

Para começar o exercício, precisamos, claro, de dados. Montei meu excel com quatro séries, com observações de março de 2003 a março de 2015: crescimento interanual da renda nominal, crescimento interanual da renda real, desemprego como % da PEA e desemprego dessazonalizado também como % da PEA. As três primeiras foram retiradas da Pesquisa Mensal de Emprego (PME), do SIDRA, o banco de dados on-line do IBGE, enquanto a última é derivada da série original de desemprego com a aplicação do X12-Arima, no Gretl. Podemos, assim, começar dando uma olhada nos gráficos das séries com a função gtsplot, do pacote BMR. Essa função tem sido recorrentemente utilizada aqui, mas como diria Machado de Assis, é preciso incutir conceitos na mente do leitor por meio de repetição, não é mesmo? Abaixo o código e os gráficos.

############### GRÁFICOS DAS SERIES #######################
data.part <- window(data, start=c(2011,1))
dates <- seq(as.Date('2011-01-01'), as.Date('2015-03-01'), by='1 month')
gtsplot(data.part, dates=dates)

graficos

Observe que apenas com esses quatro gráficos já é possível verificar o que está acontecendo na economia brasileira. Veja que o desemprego está aumentando nos últimos meses, enquanto o crescimento da renda [real e nominal] interanual tem caído. Isso já é um bom início de conversa para o que a Gabriela quer, não é mesmo? Mas, vamos em frente.

Antes de chegarmos ao teste de granger, vamos dar uma olhada em algumas correlações. Com a função cor aplicada sobre o seu objeto no R, você pode obter uma tabela com as correlações entre todas as séries, como abaixo, usando o pacote stargazer.

Correlações
rendanominal rendareal desemprego desemprego_sa
rendanominal 1 0,82 -0,63 -0,64
rendareal 0,82 1 -0,56 -0,56
desemprego -0,63 -0,56 1 0,98
desemprego_sa -0,64 -0,56 0,98 1

Como esperado, renda e desemprego apresentam uma relação bastante razoável. Como dissemos acima, entretanto, a relação entre eles envolve alguma defasagem. Desse modo, podemos ver a correlação cruzada para nos decidirmos sobre quais variáveis específicas vamos fazer o teste de granger. Mostro abaixo, apenas, os gráficos entre renda nominal e desemprego sem ajustes sazonais. Foi usada a função lag2.plot do pacote astsa.

lag1

Correlação Cruzada entre Desemprego e Renda.

lag2

Correlação Cruzada entre Renda e Desemprego.

Bom, com esses gráficos é possível ver que a correlação [negativa] se torna mais forte quando a renda nominal é confrontada com a primeira e segunda defasagens do desemprego sem ajustes sazonais. Temos, assim, nossos candidatos para o granger. Isto é, vamos verificar se a correlação entre renda nominal e desemprego sem ajustes implica em causalidade, no sentido dado pelo teste. Antes, claro, temos que verificar se essas séries são estacionárias, não é mesmo? Para isso, vamos aplicar o protocolo de Pfaff (2008) e utilizar o pacote urca para o teste ADF Sequencial ilustrado pelo autor.

Um detalhe chato [para alguns] é que na hora de rodar o teste ADF é preciso escolher o número de defasagens, de modo a não incorrer em autocorrelação serial. Em geral, se faz essa escolha através de critérios de informação. Aqui, entretanto, vamos aplicar o teste Ljung-Box aos resíduos do teste ADF para verificar se o lag utilizado incorre em autocorrelação. Isso, claro, seria muito chato se tivéssemos de fazer um por um. O Ricardo Lima, entretanto, me passou uma função e um loop utilizados no curso de mestrado dele, no curso de séries temporais, lá na Universidade de Estocolmo. A ideia da função e do loop é aplicar o teste Ljung-Box sobre os resíduos do teste ADF e gerar uma sequência de gráficos no ambiente do RStudio de forma a verificar sobre qual lag não há autocorrelação [caso tenha interesse na função e no loop, entre em contato]. No nosso caso, os gráficos do desemprego e da renda nominal com os lags adequados são postos abaixo.

Teste Ljung-Box sobre os resíduos do Teste ADF

Teste Ljung-Box sobre os resíduos do Teste ADF: desemprego.

Teste Ljung-Box sobre os resíduos do Teste ADF

Teste Ljung-Box sobre os resíduos do Teste ADF: renda.

Com 12 e 10 lags, respectivamente, para o desemprego e renda, podemos garantir que não há autocorrelação na hora de rodar a equação do teste ADF. Com isto, podemos agora rodar a função ur.df do pacote urca para definir o processo gerador das séries. De modo a comparar a estatística de teste com os valores críticos, vamos rodar o código abaixo, pegando apenas esses dados. A partir disso, montamos uma tabela com a função stargazer do pacote de mesmo nome.

######### Teste Pfaff (2008) para Desemprego ###########
lags.adf <- 12 ### Lag escolhido com o Ljung-Box
data.ct <- ur.df(data[,'desemprego'], type='trend' , lags=lags.adf)@teststat
data.ct.cval <- t(ur.df(data[,'desemprego'], type='trend' ,
 lags=lags.adf)@cval)
ur.ct <- round(rbind(data.ct, data.ct.cval), digits=2)
table.data.ct <- stargazer(ur.ct,
 title='Teste ADF com tendência e drift',
 type='html',
 out='adf1.html', decimal.mark=',',
 digits=2,
 align=T)
Teste ADF com tendência e drift
tau3 phi2 phi3
statistic -3,24 5,87 7,60
1pct -3,99 6,22 8,43
5pct -3,43 4,75 6,49
10pct -3,13 4,07 5,47

A tabela nos indica que a 5% não é possível rejeitar a hipótese nula [que a série tem raiz unitária]. Essa informação é obtida ao compararmos a estatística de teste [-3,24] com o valor crítico da estatística tau3 [-3,43]: se for maior em módulo, rejeita-se. O protocolo que estamos usando, Pfaff (2008), nos indica que devemos consultar a estatística phi3, cuja hipótese nula é que o coeficiente da tendência é igual a zero, dado que  \pi é igual a zero. Ao fazer isso, nós rejeitamos H0, a 5%. O protocolo manda, então, ver se  \pi é igual a zero pela tabela normal. É possível ver os coeficientes com o mesmo comando acima, apenas modificando a parte final por @testreg$coefficients ou rodar a função ur.df sem especificar parâmetros e visualizar todos os dados com a função summary. Abaixo, coloco os coeficientes, com os respectivos p-valores.

Coeficientes do teste ADF
Estimate Std. Error t value Pr(> | t| )
(Intercept) 2,87 0,96 3,00 0,003
z.lag.1 -0,25 0,08 -3,24 0,002
tt -0,01 0,004 -2,80 0,01
z.diff.lag1 0,12 0,10 1,23 0,22
z.diff.lag2 0,09 0,10 0,96 0,34
z.diff.lag3 0,08 0,09 0,83 0,41
z.diff.lag4 0,05 0,09 0,53 0,59
z.diff.lag5 0,02 0,09 0,19 0,85
z.diff.lag6 0,08 0,08 0,98 0,33
z.diff.lag7 0,04 0,08 0,46 0,64
z.diff.lag8 -0,02 0,08 -0,21 0,83
z.diff.lag9 -0,03 0,08 -0,40 0,69
z.diff.lag10 0,01 0,07 0,09 0,93
z.diff.lag11 0,01 0,07 0,12 0,90
z.diff.lag12 0,58 0,07 8,22 0

Estamos interessados no z.lag.1, que é estatisticamente significativo pela tabela normal. Logo, podemos dizer que o desemprego é estacionário ao redor de uma tendência e tratá-lo dessa forma na hora de rodar o teste de granger. Simples, não? Não, eu sei. Mas, aos poucos, você se acostuma e as coisas passam a ser mais naturais.

Fiz o mesmo procedimento para a renda e cheguei à conclusão que ela é estacionária. Assim, com ambas as séries estacionárias, podemos, enfim, rodar o teste de granger. Isso é feito com o código abaixo, a partir do carregamento do pacote vars.

####################### GRANGER CAUSALITY ###########################
granger <- cbind(data[,'rendanominal'],data[,'desemprego'])
colnames(granger) <- c('renda', 'desemprego')
VARselect(granger,lag.max=12, type=c("const"),season=NULL)
grangertest(granger[,'renda']~granger[,'desemprego'],
 order=1, data=granger)
grangertest(granger[,'desemprego']~granger[,'renda'],
 order=1, data=granger)

E abaixo os resultados...

> grangertest(granger[,'renda']~granger[,'desemprego'],
+ order=1, data=granger)
Granger causality test

Model 1: granger[, "renda"] ~ Lags(granger[, "renda"], 1:1) + Lags(granger[, "desemprego"], 1:1)
Model 2: granger[, "renda"] ~ Lags(granger[, "renda"], 1:1)
 Res.Df Df F Pr(>F) 
1 141 
2 142 -1 10.179 0.001751 **
---
Signif. codes: 0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1
> grangertest(granger[,'desemprego']~granger[,'renda'],
+ order=1, data=granger)
Granger causality test

Model 1: granger[, "desemprego"] ~ Lags(granger[, "desemprego"], 1:1) + Lags(granger[, "renda"], 1:1)
Model 2: granger[, "desemprego"] ~ Lags(granger[, "desemprego"], 1:1)
 Res.Df Df F Pr(>F)
1 141 
2 142 -1 0.1978 0.6572

Então, leitor, chegamos onde queríamos. Recapitulando, queríamos verificar se o desemprego ajuda a prever o comportamento da renda nominal. De fato, o teste de granger não nos impede de fazermos essa afirmação. O resultado do teste mostra que o desemprego granger causa a renda, dada a rejeição da hipótese nula. Para o caso contrário, entretanto, não podemos rejeitar a hipótese nula de que a renda não granger causa o desemprego. Desse modo, podemos nos concentrar no argumento de que o comportamento do desemprego é um bom indicador para prevermos a renda.

Se é assim,  o aumento do desemprego em 2015, como escrevi em post recente, deve contaminar a renda nominal. Dada a elevada inflação, a renda real deve, portanto, sofrer pelos dois lados, o que compromete negócios que têm nela um de seus determinantes de expansão. Em outras palavras, como disse para a Gabriela, os empreendedores devem ter cautela. É uma boa oportunidade de negócio, sem dúvida, mas no curto prazo, creio que é um tanto quanto arriscado fazer pesados investimentos, dado que o cenário prospectivo não é dos melhores.

Um outro aspecto que ela me perguntou foi sobre o impacto regional desse tipo de empreendimento. Minha resposta foi que depende muito de como as prefeituras e os empreendedores encaram o negócio. Observo que há grandes possibilidades de geração de uma rede de trucks, com feiras ou algo do tipo, o que exige infraestrutura (praças, recolhimento de lixo, segurança, etc.), bem como coordenação dos empreendedores. Se assim for feito, sim, acho que pode ter impacto, dado que gera externalidades positivas, com a geração de outros negócios ao redor (parques de diversão, artesanato, festivais de música, etc.).

No mais, leitor, espero que esse exercício tenha dado uma pequena amostra de como os economistas trabalham e como uma análise de conjuntura pode ser feita, com algum rigor, além de apenas chutes e pontapéis... 🙂

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

Assinar Gratuitamente