Tag

dados da previdência Archives - Análise Macro

Um modelo SARIMA para os gastos previdenciários

By | Macroeconometria

A edição 51 do Clube do Código, titulada Tratando dados previdenciários com o R, que foi parcialmente publicada aqui no blog, ensina a coletar e tratar dados agregados de receita e despesa do INSS - é, a propósito, o tipo de coisa que fazemos em nosso Curso de Analise de Conjuntura usando o R. Lá também construímos um modelo univariado SARIMA de previsão para o gasto previdenciário, baseado na metodologia Box-Jenkins - saiba como construir modelos univariados em nosso Curso de Séries Temporais usando o R. O objetivo do exercício é ter uma ideia sobre a evolução do gasto previdenciário em 2019.

Como vimos no post sobre tratamento de dados previdenciários, os gastos do INSS apresentam uma tendência positiva de crescimento ao longo do tempo, além de uma sazonalidade bastante pronunciada. Certamente, por suposto, não é um processo estacionário - veja mais aqui. O tratamento inicial, de acordo com a metodologia Box-Jenkins, é tornar a série estacionária, modelando a mesma em seguida.

Na edição 51 do Clube do Código, por suposto, utilizamos a função auto.arima do pacote forecast de modo a gerar "o melhor modelo" univariado para o gasto previdenciário de acordo com critérios de informação. O resultado foi um modelo ARIMA(0,1,3)(0,1,1)[12]. O gráfico abaixo compara o ajuste desse modelo com a série original.

Com base nesse modelo, geramos uma previsão para 2019. O gráfico abaixo ilustra para três diferentes intervalos de confiança.

As previsões médias do modelo indicam que o gasto previdenciário será de R$ 625,2 bilhões em 2019, variando entre R$ 583,1 bilhões e R$ 667,4 bilhões, ao considerar um intervalo de 95% de confiança. Em termos comparativos, o PLDO 2019 estima o gasto do INSS em R$ 635,4 bilhões. Em outras palavras, pelo nosso modelo, o gasto deve aumentar algo como R$ 38,9 bilhões esse ano, em valores correntes, se comparado a 2018, seguindo a trajetória ascendente.

Para terminar, uma provocação. Dissemos acima que o gasto previdenciário não performa como um processo estacionário. O que isso significa? Significa dizer que o gasto segue, pelo contrário, um processo explosivo de crescimento. Isto é, a tendência é que ele cresça indefinidamente ao longo do tempo, caso nada seja feito - saiba mais em nosso Curso de Séries Temporais usando o R. Justamente por isso é importante que seja feita alguma reforma no sistema de previdência, caso contrário essa rubrica avançará sobre todos os outros gastos do governo ao longo do tempo.

O pdf completo estará disponível no Clube do Código na próxima semana!

_____________________________________

Conheça nossos Cursos Aplicados de R e aprenda a coletar, tratar, analisar e apresentar dados com o R!

Tratando dados previdenciários com o R

By | Comentário de Conjuntura

Um dos grandes problemas ao se debater sobre reforma da previdência é a dificuldade de encontrar e tratar os dados. De forma a dar uma contribuição ao debate, com efeito, resolvi nesse sábado de manhã nublado no Rio produzir um pdf para o Clube do Código sobre como tratar dados previdenciários do INSS. A ideia é coletar os dados agregados referentes à despesa e receita diretamente da Secretaria do Tesouro Nacional, deflacionar esses dados com o IPCA, retirar a sazonalidade, de modo a visualizar os dados mais "limpos" e, por fim, anualizar os mesmos, de modo a produzir o gráfico abaixo, que ilustra o déficit da previdência ao longo do tempo. É, a propósito, o tipo de coisa que fazemos em nosso Curso de Analise de Conjuntura usando o R.

O gráfico acima ilustra muito bem o comportamento da despesa e da receita previdenciária referente ao INSS ao longo do tempo. Como eu disse acima, porém, para chegar nele é preciso um bom trabalho de tratamento dos dados. Para começar, vamos baixar os dados referentes ao resultado primário do governo central, de onde podemos extrair os dados agregados do INSS. O código abaixo ilustra.


library(readxl)
url = 'https://bit.ly/2N9vtOh'
download.file(url, 'primario.xlsx', mode='wb')
data = read_excel('primario.xlsx', sheet='1.1', skip=4,
col_types = c('text', rep('numeric', 264)))
previdencia = t((data[c(14,36),-1]))

A matriz previdencia contém, então, os dados agregados de receita e despesa do INSS. Abaixo, para ilustrar para o leitor como a vida é dura, podemos ver como esses dados estão...

Muitos problemas, não é mesmo? Para começar, os dados estão em valores correntes ou nominais. Isso significa que não estamos considerando a inflação do período, de modo que não faz sentido comparar o dinheiro do ano x com o do ano y. Assim, precisamos deflacionar os mesmos. Para isso, porém, precisamos de um deflator. Vamos usar aqui o IPCA, que pode ser baixado do IBGE como no código abaixo.


library(sidrar)
### Importar IPCA 
ipca = get_sidra(api='/t/1737/n1/all/v/2266/p/all/d/v2266%2013')
ipca = ts(ipca$Valor, start=c(1979,12), freq=12)
ipca = window(ipca, start=c(1997,01), end=c(2018,12))
### Deflacionar Dados
nominal = ts(previdencia[,2:3], start=c(1997,01), freq=12)
real = ipca[length(ipca)]*(nominal/ipca)

Agora, temos uma matriz com os valores nominais e outra com os valores reais. O gráfico a seguir ilustra os valores reais.

Observe que em termos reais, a despesa continua acima da receita, mas repare que na ponta há uma queda em termos reais da receita (por quê?). Isso dito, observe que a visualização do gráfico ainda não é muito boa por conta da sazonalidade da série. Podemos fazer um ajuste sazonal nela, apenas como exercício, com o código abaixo.


### Pacote Seasonal
library(seasonal)
Sys.setenv(X13_PATH = "C:/Séries Temporais/R/Pacotes/seas/x13ashtml")
## Dessazonalizar Dados
receita = final(seas(real[,1]))
despesa = final(seas(real[,2]))
realsa = ts.intersect(receita,despesa)

A seguir, um gráfico para ilustrar os dados dessazonalizados...

Com os dados deflacionados e dessazonalizados, fica bem melhor a visualização, não é mesmo? Observe que uma coisa é bastante perceptível: as séries possuem uma tendência positiva ao longo do tempo. De fato, se você quiser criar uma taxa de crescimento, verá que elas crescem em média acima de 6% a.a., em termos reais!! Por fim, podemos gerar o primeiro gráfico desse post, de modo a suavizar ainda mais a nossa sérieanualizando os dados com o código a seguir.


### Acumular em 12 meses
real12 = real+lag(real,-1)+lag(real,-2)+lag(real,-3)+
lag(real,-4)+lag(real,-5)+lag(real,-6)+lag(real,-7)+
lag(real,-8)+lag(real,-9)+lag(real,-10)+lag(real,-11)

Observe que, primeiro, eu deflacionar os dados mensais e só depois acumulei eles em 12 meses. Com a matriz real12, por fim, podemos gerar aquele primeiro gráfico do post que ilustra perfeitamente a tendência de crescimento da despesa ao longo do tempo.

Com os dados tratados, podemos avançar para a próxima etapa da análise de dados que é construir um modelo para os gastos previdenciários. Isso fica para um próximo post! 🙂

O pdf completo estará disponível no Clube do Código na próxima semana!

_____________________________________

Conheça nossos Cursos Aplicados de R e aprenda a coletar, tratar, analisar e apresentar dados com o R!

Baixando e tratando dados da Previdência com o R

By | Macroeconometria

Temos enfatizado ao longo dos anos nesse espaço, que saber coletar, tratar, analisar e apresentar dados é essencial para compreender os problemas das mais diversas áreas do conhecimento. Com efeito, temos utilizado a linguagem R, uma ferramenta poderosa voltada para análise de dados, para dar exemplos sobre como lidar com evidência empírica em nosso blog e nos nossos cursos aplicados de R. Nesse post, vamos trazer mais um exemplo, com o tema do momento: a previdência. Para começar, vamos pegar os dados do regime geral da previdência social, disponível no site do Tesouro NacionalO código abaixo ilustra.

library(XLConnect)
### Importar dados e tratá-los
www = 'http://www.tesouro.fazenda.gov.br/documents/10180/246449/Anexos+RTN+Mar17.xlsx/686e2173-97ac-49fa-9e98-1d8f55eb9c1e'
temp = tempfile()
download.file(www, temp, mode='wb')
data = loadWorkbook(temp)
data = readWorksheet(data, sheet = "1.1", header = TRUE,
 colTypes = 'numeric')
data = t(data[c(17,39),-1])
colnames(data) = c('receita', 'despesa')
data = ts(data, start=c(1997,01), freq=12)

Observe que, com o código acima, nós carregamos o pacote XLConnect, uma das muitas opções disponíveis para importar dados do excel para o R. Uma vez feito isso, fazemos o download da planilha, carregamos no R e lemos o arquivo. Depois, um tratamento rápido, para pegar apenas os dados de receita e despesa do regime geral de previdência socialPor fim, transformamos os dados em séries temporais.

Uma vez importados os dados diretamente para o R, nós agora podemos visualizá-los. Para isso, vamos utilizar o pacote ggplot2, um dos pacotes mais poderosos do R para visualização de dados. De modo a ilustrar como o pacote funciona, nós colocamos os dados em um data frame, como no código abaixo.

dates = seq(as.Date('1997-01-01'), as.Date('2017-03-01'), by='1 month')
previdencia = data.frame(time=dates, receita=data[,1],
 despesa=data[,2])

Uma vez que tenhamos colocado os dados em um data frame, uma das estruturas de dados disponíveis no R, nós podemos utilizar o ggplot2O código abaixo ilustra.

ggplot(previdencia, aes(x=time))+
 geom_line(aes(y=receita/1000, colour='Receita'), size=.4)+
 geom_line(aes(y=despesa/1000, colour='Despesa'), size=.4)+
 scale_colour_manual('', values=c('Receita'='darkgreen',
 'Despesa'='red'))+
 theme(legend.position = 'top')+
 scale_x_date(breaks = date_breaks("2 years"),
 labels = date_format("%Y"))+
 xlab('')+ylab('R$ bilhões')+
 labs(title='Receitas vs. Despesas do RGPS',
 caption='Fonte: analisemacro.com.br com dados da STN.')

E o resultado...

Observe que ambas as séries apresentam duas características que saltam aos olhos. Primeiro, elas mostram uma tendência de aumento ao longo do tempo. Segundo, elas mostram um comportamento sazonal bastante explícito. Vamos tratar esses dois "problemas" daqui a pouco. Antes, vamos ver um gráfico de correlação dessas séries com o código abaixo.

ggplot(previdencia, aes(despesa/1000, receita/1000))+
 geom_point(colour='blue', size=5, shape=1)+
 geom_smooth(method = 'lm')+
 xlab('Despesas do RGPS')+
 ylab('Receitas do RGPS')+
 labs(title='Receitas vs. Despesas do RGPS (R$ bilhões)',
 caption='Fonte: analisemacro.com.br com dados da STN.')

E o resultado abaixo...

As séries, naturalmente, estão positivamente correlacionadas. Isso implica em causalidade? É tema que exploraremos na 31ª edição do Clube do Código, que extende a análise desse post. Por aqui, por suposto, vamos tratar os "problemas" de tendência e sazonalizade.

Dessazonalizando os dados 

Antes de mais nada, vamos dessazonalizar os nossos dados usando o pacote seasonal. O código abaixo ilustra.

## Carregar o pacote, definir a pasta do X13-Arima e checar se está tudo ok
library(seasonal)
Sys.setenv(X13_PATH = "C:/Séries Temporais/R/Pacotes/seas/x13ashtml")
checkX13()

## Dessazonalizar as séries
prev = ts(previdencia[,-1], start=c(1997,01), freq=12)
receita_sa = seas(prev[,1])
despesa_sa = seas(prev[,2])
previdencia_sa = data.frame(time=dates, receita=final(receita_sa),
 despesa=final(despesa_sa))

Uma vez dessazonalizadas as séries, podemos plotar um gráfico com código similar ao visto anteriormente.

A tendência, agora, ficou mais clara, não é mesmo? A despeito de alguns outliers existentes - que, de certo, também podem ser tratados com o R. Uma vez dessazonalizados os dados, por suposto, podemos agora ver novamente aquele gráfico de correlação...

A correlação positiva entre as séries ficou maior, não é mesmo?

Retirando a tendência das séries

A outra característica das séries que salta os olhos é a tendência. Podemos retirá-la com o código abaixo.

## Regredir as séries contra uma tendência
fit.rec = lm(previdencia_sa$receita ~ seq(along = previdencia_sa$receita))
fit.desp = lm(previdencia_sa$despesa ~ seq(along = previdencia_sa$despesa))

## Pegar os resíduos da regressão, somados à média da série.
receita.st = residuals(fit.rec)+mean(fitted(fit.rec))
despesa.st = residuals(fit.desp)+mean(fitted(fit.desp))
previdencia_st = data.frame(time=dates, receita=receita.st,
 despesa=despesa.st)

E o gráfico das séries dessazonalizadas e sem tendência é colocado abaixo...

Evolução das séries e relações de longo prazo

O próximo passo é investigar como as séries evoluem ao longo do tempo. Isto é, já sabemos que as séries possuem sazonalidade e têm uma tendência positiva ao longo do tempo. Mas a que taxa crescem? O quanto elas crescem ao longo do tempo acima da inflação? Para responder essas perguntas, precisamos verificar algumas métricas de crescimento mensal, interanual, acumulada em 12 meses, seja em termos nominais ou em termos reais, coisas que vemos no nosso Curso de Análise de Conjuntura usando o R.

Uma análise um pouco mais sofisticada, por suposto, envolve verificar se existe uma relação de longo prazo entre as séries, o que nos leva ao tema da cointegração, uma vez que como pode verificar o leitor, as séries não são estacionárias. Ademais, podemos investigar também a causalidade entre receita e despesa, de modo a definir se podemos afirmar coisas como o aumento da despesa leva a aumento da receita e assim por diante. Perguntas que abordamos em nosso Curso de Séries Temporais usando o R e no nosso Curso de Macroeconometria usando o R.

O exemplo mostra o quanto saber lidar com evidência empírica é importante. Não basta, portanto, criar narrativas, mas é preciso saber o que afinal dizem os dados, não é mesmo? 🙂 

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

Assinar Gratuitamente