Resultado Primário entre 2003 e 2023.

Author

Natan Henrique Alves.

Objetivo

O relatório busca entender a dinâmica do Resultado Primário entre os anos de 2003 e 2023 ano em que o relatorio é feito. A pesquisa será feita usando os dados disponibilizados pelo Banco Central, a partir destes dados serão feitos testes estatístico que tem por objetivo transformar esses dados em informação útil. Durante esse recorte de tempo tivemos cinco presidentes, impeachment e uma pandemia, esses eventos em conjunto tiveram grandes impactos sobre a contabilidade nacional, afetando as arrecadações e as despesas nacionais.

Sobre o Resultado Primário

o RESULTADO PRIMÁRIO é uma medida financeira que tem por objetivo avaliar a capacidade do setor público de gerar receita suficientes para cobrir suas próprias despesas. Quando as receitas são maiores que as despesas dizemos que o resultado primário apresentou um superávit primário e quando as despesas são maiores que as receitas dizemos que hove um déficit primário. Os dois conceitos acima ajudam a entender a sustentabilidade das finanças públicas.

  • A variável “Resultado Primário” será representada em bilhões de reais.

Sobre a metodologia que será utilizada

A abodagem metodológica que será utilizada é fundamentalmente estatística, com coleta, testes e avaliação dos testes pelo grau de significãncia.

Histograma : Uma ferramenta gráfica usada em estatística para avaliar a distribuição de frequência de um conjunto de dados.

Forma da Distribuição: A forma do histograma pode indicar se os dados são simétricos, se há assimetria ou se seguem algum padrão específico, como uma distribuição normal, distribuição assimétrica, entre outros.

Centralização e Dispersão: Através do histograma, é possível ter uma ideia da localização central dos dados (média, mediana) e da dispersão ou variabilidade dos valores.

O método de Sturges é uma técnica utilizada para determinar o número ideal de classes (ou bins) ao criar um histograma.

Formula pra calcular o número de classes:

\(K = 1 + log_2(n)\)

  • Mínimo valor da amostra

  • Máximo valor da amostra

  • Média aritimética \[ \bar{x} = \frac{1}{n} \sum_{i=1}^{n} x_i\]

  • Mediana

    • A mediana é o valor que separa a amostra pela metade.
  • Desvio Padrão

    • Indica o quanto os valores de um conjunto de dados estão dispersos em relação à média desses valores.

\[ s = \sqrt{\frac{1}{n-1} \sum_{i=1}^{n} (x_i - \bar{x})^2} \]

  • Coeficiênte de variação

    • É uma medida estatística que expressa a variabilidade relativa de um conjunto de dados em relação à média, normalmente expresso em termos percentuais.

\[ CV = \frac{s}{\bar{x}} \times 100\%\]

  • Taxa de crescimento linear

    • A taxa de crescimento linear é uma medida que representa a mudança constante em uma determinada quantidade ao longo do tempo.

\[Txl = (\frac{ultima.obs}{primeira.obs}-1)*100\]

  • Taxa de crescimento composta

    • A taxa composta leva em conta não apenas o valor inicial, mas também o acúmulo de juros ou ganhos sobre os ganhos anteriores, o que resulta em um crescimento exponencial ao longo do tempo.

\[Txc=(\frac{ultima.obs}{primeira.obs})^{1/n}*100\]

Deflacionando a série

O processo de deflação é usado para ajustar os valores monetarios de uma série, de forma que estes representem seu poder de compra real levando em consideração um dado nível de preços escolhido.

  • valor Real :

\(Real=(\frac{Nominal}{ídice})*100\)

Indicadores de Normalidade da distribuição

  • Teste de JarqueBera
    • O teste de Jarque-Bera é um teste estatístico usado para determinar se uma amostra de dados tem uma distribuição simétrica e se os dados seguem uma distribuição normal.
    • Hipotese nula: Os dados seguem distribuição normal
  • Teste de Shapiro
    • Tambem é um teste de normalidade da amostra.
    • Hipotese nula: Os dados seguem distribuição normal
    • Esse teste pode ser melhor utilizado para séries com muitas observações.
  • QQnorm
    • Também é um teste de normalidade, mas aqui será projetada uma distribuição de referencia, para que os dados observados possam ser comparados a ela.
  • BoxPlot
    • É uma representação visual que fornece uma visão geral da distribuição dos dados e identifica valores discrepantes
    • A caixa central representa o intervalo entre o primeiro quartil (Q1) e o terceiro quartil (Q3). A linha dentro da caixa indica a mediana (Q2), que é o valor que divide os dados ao meio.

Decomposição da série

A partir de uma determinada série temporal é possivel retirar outras diversas informações, essas informações são extraidas através de um processo de decomposição da série. * A decomposição da série nos dará as seguintes informações:

  • Tendência
  • Cíclo
  • Sazonalidade
  • random

A decomposição de uma série pode ser feita de diversas formas :

  • Aditiva
  • Multiplicativa
  • Filtro de Hodrick Prescott

Resultado Primário em fluxo mensal.

library(readxl)
Resultado_primario_ <- read_excel("C:/Users/henri/Downloads/Resultado_primario..xlsx")

Resultado <- ts(Resultado_primario_$`Resultado Primário - R$ mi`, frequency = 12, start = c(2003,01))
plot(Resultado, xlab = " Data", ylab = " Resultado Primário.", main = " Resultado Primário fluxo mensal")
abline( h = 0, col = "blue3")

Resultado Primário em estoque anual.

library(xts)
Warning: package 'xts' was built under R version 4.3.1
Carregando pacotes exigidos: zoo

Attaching package: 'zoo'
The following objects are masked from 'package:base':

    as.Date, as.Date.numeric
Resultado_anual1 <- apply.yearly(as.xts(Resultado), sum)
plot(Resultado_anual1, main = "Resultado Primário em estoque", xlab= " Data", ylab = " Estoque")

Histograma de distribuição. Sturges

hist(Resultado, breaks = "Sturges", col = "blue", xlab = "Resultado", ylab = " Frequencia",
     main = "Histograma de distribuição do Resultado. Sturges")

Resultados

minimo<-c(min(Resultado));minimo
[1] -195180
media<-c(mean(Resultado));media
[1] -2959.157
mediana<-c(median(Resultado));mediana
[1] 2630.33
maximo<-c(max(Resultado));maximo
[1] 79404.82
desvio<-c(sd(Resultado));desvio
[1] 25932.52
coeficient<-c(sd(Resultado)/mean(Resultado)*100);coeficient
[1] -876.3482
nResultado<-length(Resultado);nResultado
[1] 250
txlinear<-((Resultado[nResultado]/Resultado[1])-1)*100;txlinear# em valor percentual.== crescimento entre o primero e o ultimo.
[1] 189.5939
txcompost<-((Resultado[nResultado]/Resultado[1])^(1/nResultado)-1)*100;txcompost
[1] 0.4262295
library(deflateBR)
Warning: package 'deflateBR' was built under R version 4.3.2

To cite deflateBR in publications, please use: citation('deflateBR')
times1 = seq(as.Date("2003/1/1"), by = "month", length.out = 250)
Resultado_R = deflate(Resultado, nominal_dates = times1, real_date = '10/2023', index = 'ipca')

Downloading necessary data from IPEA's API
...
plot( Resultado_R, main = " Resultado Primario em fluxo mensal deflacionado")
abline( h = 0, col = "blue3")

Transformando em estoque anual

library(xts)
Resultado_anual2 <- apply.yearly(as.xts(Resultado_R), sum)
plot(Resultado_anual2, main = "Resultado Primário real em estoque", xlab= " Data", ylab = " Estoque")

write.table(Resultado_anual2,file = "result.txt")
library(readr)

Refazendo os testes para os valores reais.

hist(Resultado_R, breaks = "Sturges", col = "blue", xlab = "Resultado Primário deflacionado", ylab = " Frequencia",
     main = "Histograma de distribuição do Resultado. Sturges")

Parte 2 da análise estatística

Resultados

minimo<-c(min(Resultado_R));minimo
[1] -246810.9
media<-c(mean(Resultado_R));media
[1] -954.5464
mediana<-c(median(Resultado_R));mediana
[1] 6219.14
maximo<-c(max(Resultado_R));maximo
[1] 84978.87
desvio<-c(sd(Resultado_R));desvio
[1] 34813.34
coeficient<-c(sd(Resultado_R)/mean(Resultado_R)*100);coeficient
[1] -3647.108
nResultado_R<-length(Resultado_R);nResultado_R
[1] 250
txlinear<-((Resultado_R[nResultado_R]/Resultado_R[1])-1)*100;txlinear# em valor percentual.== crescimento entre o primero e o ultimo.
[1] -11.84334
txcompost<-((Resultado_R[nResultado_R]/Resultado_R[1])^(1/nResultado_R)-1)*100;txcompost
[1] -0.0504092

Resultado dos testes de Normalidade e Box plot

library(fBasics)
jarqueberaTest(Resultado_R) # se cair na hipotese nula então normalidade.

Title:
 Jarque - Bera Normalality Test

Test Results:
  STATISTIC:
    X-squared: 1669.8563
  P VALUE:
    Asymptotic p Value: < 2.2e-16 
qqnorm(Resultado_R, col="blue")
qqline(Resultado_R, col="red")

shapiro.test(Resultado_R)

    Shapiro-Wilk normality test

data:  Resultado_R
W = 0.83537, p-value = 1.37e-15
boxPlot(Resultado_R)

  • Os testes de normalidade estatística, com alfa de significãncia fixado em 5%, indicam que a amostra quando analisada em seu recorte completo, não apresenta uma distribuição normal.

Criando janelas

  • O objetivo da criação das janelas temporais é o de ter recortes mais fiéis a os prícipios de política econômica de cada governo.

Lula 2003 a 2011

Resultado_anual3 <- aggregate(Resultado_R, nfrequency = 1, FUN = sum)
janela_lula <-window(Resultado_anual3,frequency=12,start =c(2003.1),end=c(2011.12));plot(janela_lula)
Warning in window.default(x, ...): 'frequency' not changed

  • Testes
library(fBasics)
jarqueberaTest(janela_lula) # se cair na hipotese nula então normalidade.

Title:
 Jarque - Bera Normalality Test

Test Results:
  STATISTIC:
    X-squared: 0.8651
  P VALUE:
    Asymptotic p Value: 0.6488 
qqnorm(janela_lula, col="blue")
qqline(janela_lula, col="red")

shapiro.test(janela_lula)

    Shapiro-Wilk normality test

data:  janela_lula
W = 0.93058, p-value = 0.5214
boxPlot(janela_lula)

Dilma 2011 a 2016

Resultado_anual3 <- aggregate(Resultado_R, nfrequency = 1, FUN = sum)
janela_dilma <-window(Resultado_anual3,frequency=12,start =c(2011.1),end=c(2016.9));plot(janela_dilma)
Warning in window.default(x, ...): 'frequency' not changed

  • Testes
library(fBasics)
jarqueberaTest(janela_dilma) # se cair na hipotese nula então normalidade.

Title:
 Jarque - Bera Normalality Test

Test Results:
  STATISTIC:
    X-squared: 0.5925
  P VALUE:
    Asymptotic p Value: 0.7436 
qqnorm(janela_dilma, col="blue")
qqline(janela_dilma, col="red")

shapiro.test(janela_dilma)

    Shapiro-Wilk normality test

data:  janela_dilma
W = 0.89667, p-value = 0.3918
boxPlot(janela_dilma)

Temer 2016 a 2019

Resultado_anual3 <- aggregate(Resultado_R, nfrequency = 1, FUN = sum)
janela_temer <-window(Resultado_anual3,frequency=12,start =c(2016.8),end=c(2019.1));plot(janela_temer)
Warning in window.default(x, ...): 'frequency' not changed

  • Testes
library(fBasics)
jarqueberaTest(janela_temer) # se cair na hipotese nula então normalidade.

Title:
 Jarque - Bera Normalality Test

Test Results:
  STATISTIC:
    X-squared: 0.4622
  P VALUE:
    Asymptotic p Value: 0.7937 
qqnorm(janela_temer, col="blue")
qqline(janela_temer, col="red")

shapiro.test(janela_temer)

    Shapiro-Wilk normality test

data:  janela_temer
W = 0.88934, p-value = 0.3523
boxPlot(janela_temer)

Bolsonaro 2019 a 2022

Resultado_anual3 <- aggregate(Resultado_R, nfrequency = 1, FUN = sum)
janela_jair <-window(Resultado_anual3,frequency=12,start =c(2019.1),end=c(2022.12));plot(janela_jair)
Warning in window.default(x, ...): 'frequency' not changed
Warning in window.default(x, ...): 'end' value not changed

  • Testes
library(fBasics)
jarqueberaTest(janela_jair) # se cair na hipotese nula então normalidade.

Title:
 Jarque - Bera Normalality Test

Test Results:
  STATISTIC:
    X-squared: 0.5116
  P VALUE:
    Asymptotic p Value: 0.7743 
qqnorm(janela_jair, col="blue")
qqline(janela_jair, col="red")

shapiro.test(janela_jair)

    Shapiro-Wilk normality test

data:  janela_jair
W = 0.82706, p-value = 0.1809
boxPlot(janela_jair)

Resultado da decomposição

Hodrick Prescott

## por conta da inadequação dos dados de Resultado_anual2 eu precisei criar outra série acumulada chamada Resultado_anual3.
Resultado_anual3 <- aggregate(Resultado_R, nfrequency = 1, FUN = sum)
##
library(mFilter)
Resultado_hp<-hpfilter(na.omit(Resultado_anual3, type='lambda', freq=14400))
ciclo<-Resultado_hp$cycle
plot(ciclo, col = "#bb0115", main = " Ciclo do Resultado Primário", xlab= "Tempo", ylab= "Ciclo",lwd = 2)
grid(col = "yellow4")
abline(h=0,col="blue4")
abline( v = 2003.1, col = "grey1");abline(v = 2022.12, col = "grey1")
abline( v = 2011.12, col= "grey1"); abline( v = 2016.9, col = "grey1");abline(v = 2019.12, col ="grey1")
text(2007.1, 70000, " Lula", cex = 0.7);text(2013.1, 70000, "Dilma",cex = 0.7)
text(2018.1, 70000, " Temer",cex = 0.7);text(2021.1, 70000, "Bolsonaro",cex = 0.7)

Multiplicativa

Decomposicao_M <- decompose(Resultado_R, type = "multiplicativ");plot(Decomposicao_M)

Cíclo

  • Cíclo multiplicativo do resultado Primário.
plot(Decomposicao_M$trend,main = "Ciclo Resultado Primário, decomposição multiplicativa",col = "blue");abline(h = 0, col = "blue3")

Aditiva

Decomposicao_A <- decompose(Resultado_R, type = "additiv");plot(Decomposicao_A)

Cíclo

  • Cíclo aditivo do Resultado Primário.
plot(Decomposicao_A$trend, main = "Cíclo Resultado Primário, decomposição aditiva",col ="red")
abline(h = 0, col ="blue3")

Comparação dos cíclos aditivo e multiplicativo

par(new = 1)
Warning in par(new = 1): chamada de par(new=TRUE) sem plot
plot(Decomposicao_A$trend, col= "red", xlab = "",ylab = "",lwd = 5,type = "s")
par(new = 1)
plot(Decomposicao_M$trend,xlab="",ylab="", col = "blue",lwd = 2, main = "Comparação entre os cíclos multiplicativo e aditivo")

  • Tanto na forma multiplicativa como na forma aditiva o cíclo se comporta de mesma forma.

Coclusão

  • Fazendo testes para o recorte total dos dados, chegou-se a conclusão de que não há distribuição normal, esse fato prejudica a criação de modelos econométricos que poderiam ser usados na comprensão e na projeção de valores futuros. Apesar disso ainda é possével fazer algumas inferências simples.

  • Quando avaliamos os dados de forma fracionada,dividindo a amostra para cada mandato, temos melhores significativas nos parãmetros estatísticos, onde observa-se que os testes de normalidade, com alfa de significância de 5%, passam a ser aceitos. Isso mostra que cada governo gerenciou a economia de forma específica e em contextos diferêntes. Com o resultado de normalidade será possível criar modelos econométricos e a partir disso desenvolver hipóteses mais complexas.

  • Uma avaliação mais simples: é nítido que o Resultado Primário apresenta um ponto de ruptura entre um longo período de superávit primário para um segundo período onde a tingir a meta de sperávit tornou-se cada vez mais difícil. É possével que isso tenha acontecido pela mudança de estratégia de política econômica durante os anos de Guido Mantega, até então ministro da fazendo do governo Dilma, onde o tripé macroeconõmico (metas de inflação, cãmbio flutuante, superavit primário) deixou de ser tão importante quanto já havia sido em outro momento da história brasileira.

Refências

quarto.org chat.openai.com bcb.gov.br https://sgeconsult.shinyapps.io/ContasNacionaisMensais/ https://www.youtube.com/@sgeconsult831