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 entre 2003 e 2023.
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.
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