Carregando bibliotecas

# "limpar" ambiente
rm(list = ls())

# Carregar bibliotecas
#install.packages("psych")   
library(psych)
library(tseries)
library(urca)
library(readxl)
library(data.table)
library(ggplot2)
library(TAR)
library(lmtest)
library(TSA)
library(tsDyn)
library(vars)
library(forecast)
library(gridExtra)
library(ggnewscale)
library(stats)
library(zoo)
library(tidyverse)
library(dplyr)
library(summarytools)
#carregar dados

Dívida_para_treshold <- read_excel("C:/Users/kassy/OneDrive - caen.ufc.br/2. FEAAC/Orientação/Dominancia fiscal/Dados threshold.xlsx")
#View(Dívida_para_treshold)

Dívida_para_treshold$Data <- as.Date(paste0(Dívida_para_treshold$Data, "/01"), format = "%Y-%m-%d")
#Dívida_para_treshold
# Verificar missing values
colSums(is.na(Dívida_para_treshold))
##                 Data             divl/pib               BM/PIB 
##                    0                    0                    0 
##               RP/PIB   Selic Média Mensal IPCA - Número-índice 
##                    0                    0                    0 
##      ipca-var-mensal 
##                    0
#colSums(is.na(m2))

Definições das variáveis

Perído da amostra - dezembro de 2001 à maio de 2025.

data=Dívida_para_treshold$Data
divl=Dívida_para_treshold$`divl/pib` #Dívida líquida
selic=Dívida_para_treshold$`Selic Média Mensal`
primt=Dívida_para_treshold$`RP/PIB`
base = Dívida_para_treshold$`BM/PIB`
ipcaind=Dívida_para_treshold$`IPCA - Número-índice`
ipcavar=Dívida_para_treshold$`ipca-var-mensal`
data=as.Date(Dívida_para_treshold$Data, "%Y-%m-%d")
divl=as.numeric(divl)
selic=as.numeric(selic) 
primt=as.numeric(primt)   
base=as.numeric(base)
ipcaind=as.numeric(ipcaind)
ipcavar=as.numeric(ipcavar)
primt100=primt*100
primt100=as.numeric(primt100)
combined_plot <- ggplot(Dívida_para_treshold, aes(x=data)) +
    geom_line(aes(y = divl, color = "Divida Líquida"), linetype = "solid", size = 0.5) +
 # geom_line(aes(x = primt, y = primt, color = "primt100"), linetype = "solid", size = 0.5) +
  #scale_color_manual(values = c(divl = "blue", primt100 = "red")) +
  labs(title = "") +
  guides(color = guide_legend(title = "", override.aes = list(linetype = "solid", size = 2))) +
    theme_minimal() +
  #theme(legend.position = "bottom") + 
  xlab("") + ylab("% do PIB")
  

print(combined_plot)

p <- ggplot(data = Dívida_para_treshold, aes(x= data)) +
  geom_line(aes(y = primt100, colour = "Primário"), size=0.5) + # Série BaseM em azul
  geom_line(aes(y = divl, colour = "Dívida Líquida"), size=0.5) + # Série DivB em preto
  scale_y_continuous(
    name = "Resultado Primário (em proporção do PIB)",
    limits = c(-40, 60), # Ajuste os limites conforme necessário
    sec.axis = sec_axis(~ . * 1, name = "Dívida Líquida (em proporção do PIB)") # Criando um segundo eixo y para DivB
  ) +
  labs(colour = "") +
  theme_minimal() 
# Mostrando o gráfico
print(p)

p <- ggplot(data = Dívida_para_treshold, aes(x = data)) +
  geom_line(aes(y = base, colour = "Base Monetária"), size=0.5) + # Série BaseM em azul
  #geom_line(aes(y = divl, colour = "Dívida Líquida"), size=0.5) + # Série DivB em preto
  scale_y_continuous(
    name = "Base Monetária (em proporção do PIB)",
    limits = c(0.3, 0.7), # Ajuste os limites conforme necessário
    #sec.axis = sec_axis(~ . * 10, name = "Dívida Bruta (em proporção do PIB)") # Criando um segundo eixo y para DivB
  ) +
  labs(colour = "") +
  theme_minimal() 
# Mostrando o gráfico
print(p)

p <- ggplot(data = Dívida_para_treshold, aes(x = data)) +
  geom_line(aes(y = selic, colour = "Selic"), size=0.5) + # Série var1 em uma cor
  #geom_line(aes(y = (selic - min(Dívida_para_treshold$`Selic Média Mensal`)) / coeficiente + min(Dívida_para_treshold$divb), colour = "Variável 2"), size=1) + # Série var2 ajustada
  scale_y_continuous(
    name = "Selic",
    limits = c(0.1, 35))+
    #sec.axis = sec_axis(~ (. - min(Dívida_para_treshold$divb)) * coeficiente +   
    labs(colour = "") +
    theme_minimal()

# Mostrando o gráfico
print(p)

p <- ggplot(data = Dívida_para_treshold, aes(x = data)) +
  geom_line(aes(y = ipcaind, colour = "IPCA num Índice"), size=0.5) + # Série var1 em uma cor
  #geom_line(aes(y = (selic - min(Dívida_para_treshold$`Selic Média Mensal`)) / coeficiente + min(Dívida_para_treshold$divb), colour = "Variável 2"), size=1) + # Série var2 ajustada
  scale_y_continuous(
    name = "Selic",
    limits = c(1000, 7500))+
    labs(colour = "") +
    theme_minimal()

# Mostrando o gráfico
print(p)

p <- ggplot(data = Dívida_para_treshold, aes(x = data)) +
  geom_line(aes(y = ipcavar, colour = "IPCA Var mensal"), size=0.5) + 
   scale_y_continuous(
    name = "",
    limits = c(-0.9, 3.1))+
        labs(colour = "") +
    theme_minimal()

# Mostrando o gráfico
print(p)

Estatísticas Descritivas

dadoscoint3=data.frame(divl, selic, primt)

summary(dadoscoint3)
##       divl           selic           primt          
##  Min.   :18.79   Min.   : 2.00   Min.   :-0.321176  
##  1st Qu.:25.75   1st Qu.: 8.75   1st Qu.:-0.021851  
##  Median :30.80   Median :11.73   Median : 0.008797  
##  Mean   :33.41   Mean   :11.90   Mean   : 0.001411  
##  3rd Qu.:40.12   3rd Qu.:14.25   3rd Qu.: 0.027092  
##  Max.   :53.61   Max.   :26.50   Max.   : 0.106984
describe(dadoscoint3)
##       vars   n  mean   sd median trimmed   mad   min   max range  skew kurtosis
## divl     1 282 33.41 9.79  30.80   32.86 10.96 18.79 53.61 34.82  0.42    -0.89
## selic    2 282 11.90 4.89  11.73   11.73  3.73  2.00 26.50 24.50  0.44     0.57
## primt    3 282  0.00 0.05   0.01    0.00  0.03 -0.32  0.11  0.43 -1.97     9.53
##         se
## divl  0.58
## selic 0.29
## primt 0.00
descr(dadoscoint3)
## Descriptive Statistics  
## dadoscoint3  
## N: 282  
## 
##                       divl    primt    selic
## ----------------- -------- -------- --------
##              Mean    33.41     0.00    11.90
##           Std.Dev     9.79     0.05     4.89
##               Min    18.79    -0.32     2.00
##                Q1    25.75    -0.02     8.75
##            Median    30.80     0.01    11.73
##                Q3    40.13     0.03    14.25
##               Max    53.61     0.11    26.50
##               MAD    10.96     0.03     3.73
##               IQR    14.37     0.05     5.50
##                CV     0.29    33.21     0.41
##          Skewness     0.42    -1.97     0.44
##       SE.Skewness     0.15     0.15     0.15
##          Kurtosis    -0.89     9.53     0.57
##           N.Valid   282.00   282.00   282.00
##                 N   282.00   282.00   282.00
##         Pct.Valid   100.00   100.00   100.00

Teste de Raiz Unitária

# ADF Base monetária
adf.test(base)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  base
## Dickey-Fuller = -3.2058, Lag order = 6, p-value = 0.08732
## alternative hypothesis: stationary
adf.test(divl)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  divl
## Dickey-Fuller = -1.4133, Lag order = 6, p-value = 0.8233
## alternative hypothesis: stationary
adf.test(selic)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  selic
## Dickey-Fuller = -2.3553, Lag order = 6, p-value = 0.4264
## alternative hypothesis: stationary
adf.test(primt)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  primt
## Dickey-Fuller = -5.0559, Lag order = 6, p-value = 0.01
## alternative hypothesis: stationary
adf.test(ipcaind)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  ipcaind
## Dickey-Fuller = -0.01465, Lag order = 6, p-value = 0.99
## alternative hypothesis: stationary
adf.test(ipcavar)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  ipcavar
## Dickey-Fuller = -5.5237, Lag order = 6, p-value = 0.01
## alternative hypothesis: stationary
#ur.df(base, lags = 2)
#adf <- ur.df(primt, lags = 2)
#summary(adf)

Somente o Resultado Primário (primt) e a Variação Mensal do IPCA (ipcavar) são estacionárias. Assim, é necessário realizar diferenciação em todas as outras séries.

Teste de Cointegração

Foi contornado o problema de mais de um vetor cointegrante, retirando as variáveis ipcavar e base. Dessa forma, o teste foi executado com as variáveis divl, selic e primt. Agora vamos estimar o modelo usando um vetor de correção de erros.

# Com as variáveis sendo I(1), realiza-se o Teste de Cointegração, k = 5, por 
# ser o número de variáveis
dadoscoint1=data.frame(divl, base, primt, selic, ipcavar)# Com a variação do IPCA
#dadoscoint2=data.frame(divl, base, primt, selic, ipcaind)# Com o índice do IPCA

dadoscoint3=data.frame(divl, selic, primt)
TesteJohansen3 <- ca.jo(dadoscoint3, type = "trace", ecdet = "trend", K = 3)
summary(TesteJohansen3)
## 
## ###################### 
## # Johansen-Procedure # 
## ###################### 
## 
## Test type: trace statistic , with linear trend in cointegration 
## 
## Eigenvalues (lambda):
## [1]  1.424689e-01  5.984892e-02  1.894265e-02 -1.267853e-17
## 
## Values of teststatistic and critical values of test:
## 
##           test 10pct  5pct  1pct
## r <= 2 |  5.34 10.49 12.25 16.26
## r <= 1 | 22.55 22.76 25.32 30.45
## r = 0  | 65.44 39.06 42.44 48.45
## 
## Eigenvectors, normalised to first column:
## (These are the cointegration relations)
## 
##                divl.l3     selic.l3     primt.l3    trend.l3
## divl.l3     1.00000000    1.0000000    1.0000000  1.00000000
## selic.l3   -5.50876980   -3.2691794    0.9463031  0.62246607
## primt.l3 1435.09291407 -128.4673938 -140.8871429 25.79835608
## trend.l3   -0.06784014   -0.2160202   -0.4142801 -0.00311486
## 
## Weights W:
## (This is the loading matrix)
## 
##               divl.l3      selic.l3      primt.l3      trend.l3
## divl.d  -0.0044339242 -0.0027768710 -0.0030943847  1.034100e-16
## selic.d  0.0009319722  0.0041654428 -0.0005599118 -5.243765e-17
## primt.d -0.0002051918  0.0004228102  0.0001142238 -2.921577e-18
dadosipcaselic=data.frame(divl, selic, ipcavar)
TesteJohansen4 <- ca.jo(dadosipcaselic, type = "trace", ecdet = "trend", K = 3)
summary(TesteJohansen4)
## 
## ###################### 
## # Johansen-Procedure # 
## ###################### 
## 
## Test type: trace statistic , with linear trend in cointegration 
## 
## Eigenvalues (lambda):
## [1] 2.096457e-01 6.235319e-02 2.006135e-02 4.114660e-17
## 
## Values of teststatistic and critical values of test:
## 
##           test 10pct  5pct  1pct
## r <= 2 |  5.65 10.49 12.25 16.26
## r <= 1 | 23.62 22.76 25.32 30.45
## r = 0  | 89.26 39.06 42.44 48.45
## 
## Eigenvectors, normalised to first column:
## (These are the cointegration relations)
## 
##                divl.l3   selic.l3 ipcavar.l3    trend.l3
## divl.l3      1.0000000  1.0000000  1.0000000  1.00000000
## selic.l3    -6.6796555 -3.6735198  2.8163492  0.48920945
## ipcavar.l3 337.5946939 -4.1418413 20.3823037 -2.52182318
## trend.l3     0.1022063 -0.2430044 -0.6207964 -0.02577971
## 
## Weights W:
## (This is the loading matrix)
## 
##                 divl.l3     selic.l3    ipcavar.l3      trend.l3
## divl.d    -0.0006462093 -0.006619746 -0.0018545310 -1.278654e-17
## selic.d    0.0005767274  0.003985060 -0.0003011426  5.239250e-18
## ipcavar.d -0.0014163441  0.002973461 -0.0001387438  9.740785e-18
dadoscointselic=data.frame(divl, selic)
TesteJohansen1 <- ca.jo(dadoscointselic, type = "trace", ecdet = "trend", K = 2)
summary(TesteJohansen1)
## 
## ###################### 
## # Johansen-Procedure # 
## ###################### 
## 
## Test type: trace statistic , with linear trend in cointegration 
## 
## Eigenvalues (lambda):
## [1] 5.209684e-02 2.701424e-02 8.326673e-17
## 
## Values of teststatistic and critical values of test:
## 
##           test 10pct  5pct  1pct
## r <= 1 |  7.67 10.49 12.25 16.26
## r = 0  | 22.65 22.76 25.32 30.45
## 
## Eigenvectors, normalised to first column:
## (These are the cointegration relations)
## 
##             divl.l2  selic.l2    trend.l2
## divl.l2   1.0000000  1.000000  1.00000000
## selic.l2 -3.5403879 12.330770  0.53287429
## trend.l2 -0.2346835 -2.217342 -0.03214499
## 
## Weights W:
## (This is the loading matrix)
## 
##              divl.l2      selic.l2      trend.l2
## divl.d  -0.007551966 -0.0005482066 -1.746984e-17
## selic.d  0.004036962 -0.0001077447  1.332996e-17
#As variáveis divl e selic não são cointegradas

dadoscointprimt=data.frame(divl, primt)
TesteJohansen2 <- ca.jo(dadoscointprimt, type = "trace", ecdet = "trend", K = 2)
summary(TesteJohansen2)
## 
## ###################### 
## # Johansen-Procedure # 
## ###################### 
## 
## Test type: trace statistic , with linear trend in cointegration 
## 
## Eigenvalues (lambda):
## [1]  2.610705e-01  1.785575e-02 -4.857226e-17
## 
## Values of teststatistic and critical values of test:
## 
##           test 10pct  5pct  1pct
## r <= 1 |  5.04 10.49 12.25 16.26
## r = 0  | 89.76 22.76 25.32 30.45
## 
## Eigenvectors, normalised to first column:
## (These are the cointegration relations)
## 
##               divl.l2    primt.l2    trend.l2
## divl.l2      1.000000   1.0000000  1.00000000
## primt.l2 -6503.896168 -61.5149243 14.38363547
## trend.l2    -1.062752  -0.3016664 -0.02487008
## 
## Weights W:
## (This is the loading matrix)
## 
##              divl.l2      primt.l2      trend.l2
## divl.d  8.766072e-04 -0.0052961650 -1.876156e-17
## primt.d 8.572563e-05  0.0001923786  2.224852e-18
# divl e primt possuem cointegração.

Considerando duas análise bivariadas cointegração entre divl e selic e divl e primt

A análise de cointegração entre as variáveis foi conduzida através do Procedimento de Johansen, utilizando a estatística do traço. O modelo de teste foi especificado para incluir uma tendência linear na relação de cointegração. Os resultados indicaram a rejeição da hipótese nula de ausência de cointegração (r=0), bem como das hipóteses de no máximo uma (r≤1) e no máximo duas (r≤2) relações de cointegração, considerando um nível de significância de 5%, quando considerada todas as variáveis.

Contudo, ao testar a hipótese de no máximo três relações (r≤3), a estatística de teste (14.59) foi inferior ao valor crítico de 5% (25.32). Portanto, a hipótese nula não pôde ser rejeitada neste ponto. Com base nisso, conclui-se pela existência de 3 vetores de cointegração entre as séries analisadas, o que sugere uma relação de equilíbrio estável de longo prazo e valida o uso de um Modelo de Vetor de Correção de Erros (VEC) para a modelagem subsequente.

Assim como na série que considera a variação IPCA, a série que inclue o número índice do IPCA também possui no mínimo 3 vetores de cointegração. Portanto, devemos estimar um modelo VECM com efeito limiar- TVECM.

Tests the null of linear cointegration against threshold cointegration following Hansen and Seo (2002). Fixed regressor and residual bootstrap are available.

As variáveis são cointegradas, essa relação de equilíbrio de longo prazo é linear e constante ou ela muda de comportamento dependendo de alguma condição (ou seja, um threshold). Como o teste é feito considerando um número máximo de 1 vetor cointegrado, será feito o teste um a uma com uma variável qualquer, para testar a representação de um limiar no modelo com vetor cointegrante.

Estratégia Empírica

A decisão de não prosseguir com um único modelo TVECM para as três variáveis (divl, selic e primt), apesar da evidência de um único vetor de cointegração, foi uma escolha metodológica forçada pela complexidade intrínseca da estimação de modelos não lineares em sistemas de maior dimensão. Enquanto um modelo VECM linear seria diretamente estimável, a introdução de um threshold cria dois desafios metodológicos significativos que o software, refletindo as dificuldades da teoria, não consegue superar de forma automática.

O primeiro e principal desafio é a identificação da variável de threshold. Em um sistema com três ou mais variáveis, o processo de mudança de regime pode ser governado por qualquer uma das variáveis do sistema (ou até mesmo pelo próprio termo de correção de erros). Sem uma especificação a priori para especificar qual variável (divl, selic ou primt) deveria atuar como o gatilho para a mudança de regime, o modelo teria que realizar uma busca exaustiva por um limiar em um espaço multidimensional. Este processo não é apenas computacionalmente intensivo, mas é metodologicamente propenso a encontrar relações espúrias e sofre de baixo poder estatístico, tornando os resultados pouco confiáveis.

O segundo desafio é a “maldição da dimensionalidade” na estimação dos parâmetros. Um modelo TVECM não estima apenas um conjunto de coeficientes, mas sim dois conjuntos completos, um para cada regime. Em um sistema de três variáveis, o número de parâmetros a serem estimados já é grande, e duplicá-lo para os dois regimes aumenta exponencialmente o risco de sobreajuste (overfitting) e instabilidade numérica, o que se manifestou nos erros de convergência e incompatibilidade de matrizes durante as tentativas de estimação. Portanto, a incapacidade de estimar o modelo de três variáveis não foi um mero problema computacional, mas um reflexo de desafios metodológicos profundos na identificação e estimação de modelos não lineares complexos.

A estratégia de pesquisa visava, inicialmente, analisar a inter-relação entre a dívida (divl), a taxa de juros (selic) e o resultado primário (primt) dentro de um único e abrangente modelo TVECM. Contudo, a análise preliminar do sistema, através do teste de Johansen, revelou uma estrutura de cointegração complexa, com um vetor de equilíbrio de longo prazo. A interpretação de múltiplos regimes não lineares dentro de um sistema com relações de cointegração é metodologicamente desafiadora e pode levar a resultados ambíguos, onde os efeitos das diferentes políticas se confundem e a identificação de um único e claro mecanismo de ajuste se torna difícil. Diante disso, optou-se por uma abordagem metodológica de “geral para o específico”, decompondo o problema em suas duas principais hipóteses teóricas. Foram estimados modelos bivariados separados para (1) a relação entre política monetária e dívida, a fim de testar diretamente a hipótese de Dominância Monetária, e (2) a relação entre a política fiscal primária e a dívida, para testar diretamente a hipótese de Dominância Fiscal. Essa decomposição, embora não capture todos os efeitos simultâneos, permite um teste mais claro e direto de cada mecanismo de transmissão e uma interpretação mais robusta dos regimes não lineares para cada uma das relações de interesse, garantindo maior clareza nas conclusões sobre cada hipótese.

O teste de TVECM não permite a estimação com mais de 2 equações.

# Considerando as duas variáveis mais importantes estão na coluna 1 e 3 do dataset
#dados_bivariado <- dadoscoint1[, c(1, 3)]

TVECM.HStest(dadoscointprimt,
             lag = 1, 
             nboot = 100, 
             intercept = TRUE,
             boot.type = "FixedReg",
             hpc = "none")
## ## Test of linear versus threshold cointegration of Hansen and Seo (2002) ##
## 
## Test Statistic:   11.92693   (Maximized for threshold value: 104.0766 )
## P-Value:  0.04       ( Fixed regressor bootstrap )

p-valor baixo (< 0.05): Rejeita-se a hipótese nula. Há evidências de que o ajuste em direção ao equilíbrio (definido pelo vetor escolhido) é não linear (com threshold).

p-valor alto (> 0.05): Não se rejeita a hipótese nula. O ajuste em direção a esse equilíbrio específico pode ser modelado de forma linear.

Há uma forte evidência estatística de que a relação de equilíbrio de longo prazo entre as variáveis escolhidas é não linear, seguindo um regime de threshold (limiar).

Estimação do Modelo

Estimate a Threshold Vector Error Correction model (VECM)

# Supondo que 'johansen_3var' é o resultado teste ca.jo
#beta_vetor_completo <- TesteJohansen@V[, 1]

# Preparar o beta para o argumento da função (k=3, então o beta final terá k-1=2 elementos)
#vetor_sem_trend <- beta_vetor_completo[-length(beta_vetor_completo)]
#beta_para_teste <- vetor_sem_trend[-1] / vetor_sem_trend[1]

#THRESHOLD_VALOR <- 104.0766
#beta_vetor_completo <- TesteJohansen@V[, 1] # Pega o primeiro (e único) vetor de cointegração

# Prepara o vetor para o formato correto (k-1 = 2 elementos)
#vetor_sem_trend <- beta_vetor_completo[-length(beta_vetor_completo)]
#beta_para_teste <- vetor_sem_trend[-1] / vetor_sem_trend[1]


# --- PASSO 2: Estimar o TVECM Fornecendo o `beta` e Buscando o `Threshold` ---
# Este é o código que responde à sua pergunta.
# Note que especificamos `beta`, mas omitimos `th1` e adicionamos `ngridTh`.
# O lag é 2 para ser consistente com o teste de Johansen (K=3).

#modelo_final_3var <- TVECM(dadoscoint3,
 #                          lag = 2,
  #                         nthresh = 1,
   #                        beta = list(exact = beta_para_teste), # Fornecendo o beta manualmente
    #                       ngridTh = 100,                     # Habilitando a busca pelo threshold
     #                      trim = 0.1,                        # Manter um trim para estabilidade
      #                     include = "const",
       #                    plot = TRUE)                      # O plot agora deve funcionar

# --- PASSO 3: Analisar o Resultado ---
#summary(modelo_final_3var)

Contorno dos problemas com VEC

Modelo Com divl e primt

No contexto da dominancia fiscal a hipótese é: o resultado primário ajusta a dívida (indicando ausência de dominância fiscal), ou a dívida segue uma trajetória autônoma que o primário não consegue controlar (indicando dominância fiscal)?

tvecmprimt <- TVECM(dadoscointprimt,
                         lag = 1,
                         nthresh = 1,
                         ngridTh = 100, # Número de pontos para a busca do threshold
                         trim = 0.15,   # Usando o trim padrão de 15%
                         include = "const",
                         plot = TRUE)
## 65 (1.3%) points of the grid lead to regimes with percentage of observations < trim and were not computed

summary(tvecmprimt)
## #############
## ###Model TVECM
## #############
## Full sample size: 282    End sample size: 280
## Number of variables: 2   Number of estimated parameters 16
## AIC -1847.404    BIC -1785.612   SSR 180.5082 
## 
## 
## Cointegrating vector: (1, - -23.66995 )
## $Bdown
##                ECT              Const            divl t -1        
## Equation divl  0.0118(0.3411)   -0.2445(0.4766)  0.3274(0.0001)***
## Equation primt -0.0006(0.4081)  0.0137(0.4744)   0.0125(0.0079)** 
##                primt t -1         
## Equation divl  -1.6811(0.2240)    
## Equation primt -0.4223(8.5e-08)***
## 
## $Bup
##                ECT              Const            divl t -1        
## Equation divl  0.0147(0.3377)   -0.5775(0.3983)  -0.2455(0.0027)**
## Equation primt -0.0007(0.4236)  0.0304(0.4243)   0.0127(0.0051)** 
##                primt t -1         
## Equation divl  0.2632(0.8379)     
## Equation primt -0.4637(4.1e-10)***
## 
## 
## Threshold
## Values: 35.8092
## Percentage of Observations in each regime 64.3% 35.7%

Análise Gráfica: A Descoberta dos Parâmetros

Os gráficos de “Grid Search” gerados pelo modelo visualizam como a estrutura não linear foi identificada:

  • Gráfico Superior (Threshold parameter gamma): Este gráfico mostra a Soma dos Quadrados dos Resíduos (o erro do modelo) para cada valor de threshold testado. O objetivo é encontrar o ponto mais baixo da curva, pois isso representa o threshold que melhor ajusta o modelo aos dados. O círculo vermelho destaca exatamente esse ponto mínimo, que corresponde ao valor de threshold (35.8) encontrado no resultado final.

  • Gráfico Inferior (Cointegrating parameter beta): De forma similar, este gráfico mostra a busca pelo melhor coeficiente beta que define a relação de longo prazo. O valor escolhido, em torno de -23.6, é aquele que minimiza o erro do modelo.

Os gráficos confirmam que a busca por parâmetros ótimos para a estrutura não linear foi bem-sucedida.

Análise das Equações Estimadas

As equações do modelo TVECM, mostrando apenas os coeficientes que se mostraram estatisticamente significantes ao nível de 5%. A análise é dividida por regime para destacar a dinâmica assimétrica do sistema.

Primeiramente, definimos o Termo de Correção de Erros (ECT), que representa o desvio da relação de equilíbrio de longo prazo, com base no vetor de cointegração (1, 23.67).

O “Cointegrating vector: (1, 23.67)”

Assumindo que a primeira variável é a Dívida/PIB (divl) e a segunda é o Resultado Primário (primt), o vetor define a seguinte equação de equilíbrio:

\[ divl_t = -23.67 primt_t \]

Significado Macroeconômico: No longo prazo, para cada ponto percentual de superávit primário (em % do PIB), o nível de equilíbrio da Dívida/PIB se reduz em aproximadamente 23.7 pontos percentuais. Esta é a “âncora” teórica que garante a sustentabilidade da dívida.

O Termo de Correção de Erros (\(ECT_t\)) é, então, o desvio observado em qualquer ponto no tempo em relação a esse equilíbrio ideal. A fórmula para o ECT é \(ECT_t = divl_t + 23.67 \times primt_t\). Se o \(ECT_t\) é zero, o sistema está em perfeito equilíbrio.

O mecanismo de correção de erros é uma característica fundamental dos modelos VECM e TVECM. A lógica é que a mudança que acontece hoje (\(\Delta Y_t\)) é uma reação ao desequilíbrio que existia em t-1 (\(ECT_{t-1}\)). O modelo assume que há um lapso de tempo para que a informação (o desequilíbrio) seja percebida e a ação corretiva seja implementada.

Regime 1: Regime de Baixa

(Ativado quando \(ECT_{t-1} \le 35.8\))

Equação para \(\Delta divl_t\): A mudança na Dívida/PIB é explicada apenas por seu próprio valor passado, mostrando inércia. \[ \Delta divl_t = 0.3274 \Delta divl_{t-1} \]

Equação para \(\Delta primt_t\): A mudança no Resultado Primário é influenciada pela variação passada da dívida e por sua própria inércia. \[ \Delta primt_t = 0.0125 \Delta divl_{t-1} - 0.4223 \Delta primt_{t-1} \]

Regime 2: Regime de Alta

(Ativado quando \(ECT_{t-1} > 35.8\))

Equação para \(\Delta divl_t\): A mudança na Dívida/PIB é explicada apenas por seu próprio valor passado, mas agora com sinal invertido. \[ \Delta divl_t = -0.2455 \Delta divl_{t-1} \]

Equação para \(\Delta primt_t\): A dinâmica do Resultado Primário é muito similar à do outro regime, influenciada pela dívida passada e por sua própria inércia. \[ \Delta primt_t = 0.0127 \Delta divl_{t-1} - 0.4637 \Delta primt_{t-1} \]

Interpretação Macroeconômica

Com base nos resultados do modelo, a análise revela que as duas variáveis possuem uma relação de equilíbrio de longo prazo e que a dinâmica de curto prazo é não linear. O comportamento do sistema é dividido em dois regimes distintos, separados por um limiar de 35.8 no termo de correção de erro. A descoberta mais notável, no entanto, é a ausência de um mecanismo de correção de erros estatisticamente significativo em ambos os regimes. O coeficiente da variável ECT não é significativo em nenhuma das equações, indicando que, quando o sistema se desvia do equilíbrio de longo prazo, nem a dívida nem o resultado primário se ajustam para restaurá-lo.

A análise do comportamento das variáveis nos dois regimes mostra que a dinâmica é dominada pelas interações de curto prazo e pela inércia, em vez de uma correção ao equilíbrio. Em ambos os regimes, a variação do resultado primário é influenciada pela variação passada da dívida e por seu próprio comportamento anterior. A variação da dívida, por sua vez, é influenciada apenas por sua própria defasagem, com o sinal desse efeito se invertendo entre os regimes. A ausência de uma reação do resultado primário ao desequilíbrio (ECT) é o ponto central da análise.

A análise do modelo oferece fortes evidências que favorecem a hipótese de Dominância Fiscal. A hipótese inicial era que, em um cenário sem dominância fiscal, o resultado primário se ajustaria para estabilizar a dívida. Isso exigiria um coeficiente do ECT significativo na equação do primt. O modelo rejeita essa hipótese.

O que seria Dominância Fiscal neste contexto? Em um regime de dominância fiscal, a trajetória da dívida é autônoma ou explosiva, e a política fiscal (resultado primário) não consegue ou não reage para estabilizá-la. É a dívida que “dita as regras”.

O que os resultados mostram?

  • Em ambos os regimes, o resultado primário não reage de forma significativa aos desvios do equilíbrio de longo prazo. A “âncora” da cointegração parece estar solta.
  • A trajetória da dívida não é corrigida pela política fiscal, seguindo uma dinâmica própria de curto prazo.

Conclusão:

O modelo não mostra evidências de uma política fiscal que reage para garantir a sustentabilidade da dívida. Pelo contrário, a completa ausência de um mecanismo de correção de erros estatisticamente significativo é um resultado consistente com um cenário de Dominância Fiscal, onde a trajetória da dívida não é controlada pela resposta do resultado primário aos desequilíbrios de longo prazo. O modelo encontrou uma estrutura não linear, mas a história que ela conta é a de um sistema sem uma força de retorno clara ao equilíbrio, exatamente a preocupação central no debate sobre dominância fiscal.

Impulso resposta nos dois regimes

Regime baixo

ir_regimebdl1 <- irf(tvecmprimt, impulse = primt, response = divl, boot =
FALSE, n.ahead = 10, regime = "L")


plot(ir_regimebdl1) 

As Funções de Impulso-Resposta (IRF) visualizam como o sistema reage dinamicamente a um choque inesperado em cada uma das variáveis, especificamente quando se encontra no “Regime de Baixa”. A interpretação em um modelo cointegrado como o TVECM é particular, pois choques nas variáveis em nível podem ter efeitos permanentes.

1. Resposta a um Choque na Dívida (divl) no Regime de Baixa

O gráfico simula o que acontece no sistema após um choque inesperado e positivo na Dívida/PIB.

  • Resposta da própria Dívida (divl): O painel superior mostra que um choque na dívida tem um efeito positivo e permanente sobre si mesma. A linha de resposta sobe e não retorna ao zero, indicando que, neste regime, o choque é totalmente persistente. Isso visualiza a trajetória autônoma da dívida que é um ponto central na discussão sobre dominância fiscal.

  • Resposta do Resultado Primário (primt): O painel inferior mostra a descoberta crucial. A linha de resposta do primário a um choque na dívida permanece em zero. Isso significa que, mesmo no regime mais comum, a política fiscal (via resultado primário) não reage de forma estatisticamente significativa para compensar ou estabilizar um choque inesperado na dívida.

Interpretação: Temos aqui uma forte evidência visual da “Inação Fiscal”. O resultado primário não está sendo usado para controlar surpresas na trajetória da dívida, mesmo no estado mais frequente do sistema.

2. Resposta a um Choque no Resultado Primário (primt) no Regime de Baixa

Este gráfico simula o que acontece após um choque inesperado e positivo no resultado primário (uma melhora fiscal surpresa).

  • Resposta da Dívida (divl): O painel superior mostra que um choque positivo no primário provoca uma queda estatisticamente significativa na dívida no primeiro período. Este é um efeito estabilizador e teoricamente esperado: uma melhora fiscal inesperada ajuda a reduzir a dívida no curto prazo.

  • Resposta do próprio Primário (primt): O painel inferior mostra que o choque no primário é de curta duração. O efeito desaparece rapidamente após um ou dois períodos.

Conclusão da Análise para o Regime de Baixa

A análise das IRFs para o “Regime de Baixa” reforça a conclusão de Dominância Fiscal, que já havia sido sugerida pela ausência de coeficientes de correção de erro significativos.

  1. A Dívida segue um caminho autônomo: Um choque na dívida tem um efeito permanente sobre seu próprio nível, e o sistema, neste regime, não mostra uma força de retorno vinda da política fiscal.
  2. A Política Fiscal não reage para estabilizar: O resultado primário não responde de forma significativa a um choque na dívida, falhando em cumprir seu papel de âncora fiscal.

Embora uma melhora fiscal surpresa (choque no primário) possa temporariamente reduzir a dívida, a ausência de uma reação sistemática do primário aos choques na dívida é a característica definidora de um regime de Dominância Fiscal. Os resultados mostram que o ônus do ajuste não está sendo cumprido pela política fiscal, mesmo no regime mais comum da sua amostra.

Regime alto

ir_regimebdh1 <- irf(tvecmprimt, impulse = selic, response = divl, boot =
FALSE, n.ahead = 10, regime = "H")

plot(ir_regimebdh1)

Análise das Funções de Impulso-Resposta (Regime de Alta)

As Funções de Impulso-Resposta (IRF) especificamente para o “Regime de Alta” do modelo TVECM (ativado quando o desvio do equilíbrio \(ECT_{t-1}\) é maior que 35.8). Este regime representa aproximadamente 36% da amostra.

1. Resposta a um Choque na Dívida (divl)

O gráfico simula o que acontece no sistema após um choque inesperado e positivo na Dívida/PIB.

  • Resposta da própria Dívida (divl): Assim como no outro regime, o painel superior mostra que um choque na dívida tem um efeito positivo e permanente sobre si mesma. A linha de resposta sobe e não retorna ao zero, visualizando a trajetória autônoma da dívida.

  • Resposta do Resultado Primário (primt): O painel inferior mostra que a linha de resposta do primário a um choque na dívida permanece em zero. Isso significa que, também neste regime, a política fiscal (via resultado primário) não reage de forma estatisticamente significativa para estabilizar um choque inesperado na dívida.

Interpretação: A “Inação Fiscal” é uma característica presente nos dois regimes. A política fiscal não responde a surpresas na dívida.

2. Resposta a um Choque no Resultado Primário (primt)

Este gráfico simula o que acontece após uma melhora fiscal surpresa. É aqui que encontramos a principal diferença em relação ao outro regime.

  • Resposta da Dívida (divl): Embora a linha preta da resposta da dívida seja positiva, as bandas de confiança vermelhas sempre incluem o zero. Portanto, a interpretação é que neste regime, um choque no resultado primário não tem um efeito estatisticamente significativo sobre a dívida. A incerteza da estimativa é muito grande para se tirar qualquer conclusão sobre o aumento.

  • Resposta do próprio Primário (primt): O choque no primário mostra alguma persistência de curto prazo antes de se dissipar.

Conclusão e Comparação entre os Regimes

A análise das IRFs para o “Regime de Alta” completa a história e reforça a conclusão de Dominância Fiscal de uma forma ainda mais profunda:

  1. Inação Fiscal é Universal: Em nenhum dos regimes a política fiscal reage para estabilizar choques na dívida.

  2. Eficácia da Política Fiscal é Assimétrica: O modelo revela uma assimetria crucial.

    • No Regime de Baixa uma melhora fiscal surpresa (choque no primário) tinha um efeito estabilizador e significativo, reduzindo a dívida.
    • No Regime de Alta, essa ferramenta perde sua eficácia. Uma melhora fiscal surpresa não tem mais um impacto estatisticamente significativo sobre a dívida.

Isso mostra um sistema onde a política fiscal não apenas falha em reagir aos problemas da dívida, como também sua capacidade de influenciar positivamente a trajetória da dívida (através de choques positivos) só existe em um dos estados do sistema, desaparecendo no outro. Esta perda de eficácia e a ausência de uma função de reação sistemática são características marcantes de um ambiente consistente com a Dominância Fiscal.

O modelo (TVECM Dívida/Primário)

Variável de Threshold: É o desvio do equilíbrio de longo prazo (\(ECT_{t-1}\)). Ela não mede um choque, mas sim o quão “fora do lugar” a relação dívida/primário estava no período anterior.

Regime de Baixa: Ativado quando o desequilíbrio é menor que 35.8. Este é o estado mais comum (64% do tempo).

Regime de Alta: Ativado quando o desequilíbrio é maior que 35.8. Este é o estado menos comum (36% do tempo).

Agora, vamos definir o que seria um regime “melhor” no contexto da hipótese de dominância fiscal. Um regime “melhor” é aquele em que a política fiscal funciona como deveria, ou seja, em que uma melhora no resultado primário ajuda a estabilizar a dívida.

Analisando as Funções de Impulso-Resposta:

No Regime de Baixa: Um choque positivo no resultado primário (primt) causa uma queda estatisticamente significativa na dívida (divl). Neste regime, a política fiscal é eficaz.

No Regime de Alta: Um choque positivo no resultado primário (primt) não tem efeito estatisticamente significativo sobre a dívida. Neste regime, a política fiscal perde sua eficácia.

Conclusão: Qual Regime é “Melhor” Neste Modelo? Portanto, para o modelo TVECM Dívida/Primário, a conclusão se inverte em relação ao modelo anterior:

O Regime de Baixa (\(ECT_{t−1}≤35.8\)) é o regime “melhor” ou mais funcional. Embora o desequilíbrio possa ser negativo, é o único estado em que a política fiscal (via choques no primário) demonstra ter a capacidade de influenciar positivamente a trajetória da dívida.

Identificação dos períodos de estresse

Neste modelo, o “estresse” é um estado mais preocupante, onde a política fiscal perde sua eficácia. Ele é definido por um grande desvio positivo do equilíbrio de longo prazo.

Condição de Estresse: \(ECT_{t−1}-35.8\)

periodos_estresse_tvecm <- Dívida_para_treshold %>%

  # Renomeia as colunas para nomes mais simples dentro desta operação
  rename(
    data_col = Data,
    divl_col = `divl/pib`,
    primt_col = `RP/PIB` # Use o nome correto da sua coluna de resultado primário
  ) %>%
  
  # Garante que as colunas são numéricas para o cálculo
  mutate(
    divl_col = as.numeric(divl_col),
    primt_col = as.numeric(primt_col),
    data_col = as.Date(data_col)
  ) %>%

  # Passo 1: Calcular o Termo de Correção de Erros (ECT) para cada período
  mutate(
    ECT = divl_col + 23.66995 * primt_col 
  ) %>%

  # Passo 2: Criar a variável de threshold defasada (o valor do ECT no período anterior)
  mutate(
    threshold_variable = lag(ECT)
  ) %>%

  # Passo 3: Filtrar para os períodos de estresse, onde o desequilíbrio foi alto
  filter(threshold_variable > 35.8092) %>%

  # Passo 4: Selecionar as colunas de interesse para visualizar
  # Usamos dplyr::select() para evitar conflito de pacotes
  dplyr::select(data_col, threshold_variable)

# Visualizar os períodos de estresse encontrados para o modelo TVECM
print(periodos_estresse_tvecm)
## # A tibble: 100 × 2
##    data_col   threshold_variable
##    <date>                  <dbl>
##  1 2002-08-01               38.5
##  2 2002-09-01               35.8
##  3 2002-10-01               42.1
##  4 2002-11-01               39.9
##  5 2002-12-01               38.7
##  6 2003-01-01               36.9
##  7 2003-02-01               38.8
##  8 2003-03-01               38.6
##  9 2003-04-01               36.8
## 10 2017-08-01               36.7
## # ℹ 90 more rows

COnclusão do TVECM

Para investigar a contraparte fiscal, o modelo TVECM foi estimado para a relação entre a Dívida/PIB e o Resultado Primário, e os resultados apontam para um quadro consistente com a Dominância Fiscal. O modelo também encontrou dois regimes, porém baseados no desequilíbrio de longo prazo (com limiar em 35.8), revelando um estado de “estresse” crônico e estrutural que ocorreu em mais de um terço do tempo, notavelmente no período contínuo de 2017 a 2019. A descoberta crucial deste modelo foi a ‘Inação Fiscal’: em nenhum dos regimes o resultado primário reage para corrigir desvios da dívida de sua trajetória de equilíbrio. Ao juntar as duas análises, emerge uma conclusão coesa: a Dominância Monetária observada no primeiro modelo é uma consequência necessária da ineficácia da política fiscal revelada no segundo. O sistema depende da autoridade monetária para a estabilização macroeconômica porque a política fiscal, por si só, não demonstrou possuir um mecanismo de autocorreção robusto, apontando para a necessidade de uma consolidação fiscal estrutural para se atingir um equilíbrio de políticas mais sustentável.

A grande quantidade de datas reforça que este não é um regime de “crise” rara, mas sim um estado estrutural e recorrente da economia na amostra. Passar mais de um terço do tempo em um estado como esse é uma característica marcante de um regime de Dominância Fiscal. Não se trata de um choque pontual, mas de uma condição crônica onde a sustentabilidade da dívida está sob constante questionamento. Enquanto o modelo TVAR (com a Selic) identificou “choques” de estresse agudos e raros onde a política monetária se mostrava eficaz, o modelo TVECM (com o primário) identificou um problema estrutural, frequente e persistente, onde a política fiscal se mostrava ineficaz.

TVAR

Para contornar o problema de mais de um vetor cointegrante, estimaremos um TVAR com as variáveis não-estacionárias em primeira diferença.

## Primeira diferença das variáveis não-estacionárias
basediff <- diff(base, differences = 1)
adf.test(basediff)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  basediff
## Dickey-Fuller = -7.5649, Lag order = 6, p-value = 0.01
## alternative hypothesis: stationary
divldiff <- diff(divl, differences = 1)
adf.test(divldiff)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  divldiff
## Dickey-Fuller = -6.7569, Lag order = 6, p-value = 0.01
## alternative hypothesis: stationary
ipcainddiff <- diff(ipcaind, differences = 1)
adf.test(divldiff)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  divldiff
## Dickey-Fuller = -6.7569, Lag order = 6, p-value = 0.01
## alternative hypothesis: stationary
selicdiff <- diff(selic, differences = 1)
adf.test(selicdiff)
## 
##  Augmented Dickey-Fuller Test
## 
## data:  selicdiff
## Dickey-Fuller = -5.6124, Lag order = 6, p-value = 0.01
## alternative hypothesis: stationary

Data frame com as variáveis em nível e diferenciadas

primt1 = primt[c(-1)]
ipcavar1 = ipcavar[c(-1)]

dadosdiff = data.frame(divldiff, selicdiff, primt1, basediff, ipcavar1)

dadosdiff1 = data.frame(divldiff, selicdiff)

Esse resultado mostra a sugestão do número ideal de defasagens (lags) para incluir no modelo VAR, com base em quatro critérios de informação diferentes.

O principal ponto é que os critérios apresentam recomendações conflitantes, o que é muito comum na prática.

Ordem <- VARselect(dadosdiff, lag.max = 10)
print(Ordem)
## $selection
## AIC(n)  HQ(n)  SC(n) FPE(n) 
##     10      3      1     10 
## 
## $criteria
##                    1             2             3             4             5
## AIC(n) -1.954777e+01 -1.967426e+01 -1.992148e+01 -2.000405e+01 -1.994795e+01
## HQ(n)  -1.938766e+01 -1.938073e+01 -1.949453e+01 -1.944368e+01 -1.925416e+01
## SC(n)  -1.914901e+01 -1.894320e+01 -1.885812e+01 -1.860839e+01 -1.822000e+01
## FPE(n)  3.239876e-09  2.855445e-09  2.231053e-09  2.056023e-09  2.177711e-09
##                    6             7             8             9            10
## AIC(n) -2.002097e+01 -2.008153e+01 -2.015668e+01 -2.043381e+01 -2.053824e+01
## HQ(n)  -1.919375e+01 -1.912090e+01 -1.906262e+01 -1.920633e+01 -1.917734e+01
## SC(n)  -1.796072e+01 -1.768898e+01 -1.743183e+01 -1.737666e+01 -1.714879e+01
## FPE(n)  2.028561e-09  1.914832e-09  1.782985e-09  1.358042e-09  1.230874e-09

O critério SC(BIC), ajuda a evitar o sobreajuste (overfitting) do modelo, levando a modelos mais estáveis. Portanto, a primeira opção deveria ser um modelo com 1 lag.

Estimação do modelo TVAR

Tvar1 <- TVAR(dadosdiff1, lag = 1, include = c("const"), 
              model = c("MTAR"), commonInter = FALSE, nthresh = 1, thDelay = 1, 
              mTh = 1, trim = 0.1, plot = FALSE, trace = TRUE, max.iter = 200)
## Best unique threshold -1.1
summary(Tvar1)
## Model TVAR with  1  thresholds
## 
## Full sample size: 281    End sample size: 280
## Number of variables: 2   Number of estimated parameters: 12 + 1
## AIC -815.2461    BIC -767.9938    SSR 207.7158 
## 
## [[1]]
##                    Intercept       divldiff -1      selicdiff -1      
## Equation divldiff  0.0583(0.2193)  -0.1946(0.1576)  -1.3056(0.3565)***
## Equation selicdiff 0.0541(0.0731)  0.0189(0.0526)   0.9137(0.1189)*** 
## 
## [[2]]
##                    Intercept        divldiff -1     selicdiff -1     
## Equation divldiff  0.0348(0.0538)   0.1197(0.0708). -0.1456(0.1073)  
## Equation selicdiff -0.0071(0.0179)  0.0050(0.0236)  0.8202(0.0358)***
## 
## ---
## Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1 
## 
## Threshold value: -1.1
## Percentage of Observations in each regime: 10% 90%
plot(Tvar1)

Análise Gráfica: A Descoberta dos Regimes

Os gráficos gerados pelo modelo TVAR visualizam como a estrutura não linear foi identificada:

  • Gráfico Inferior (Grid Search): Demonstra que o modelo testou múltiplos valores candidatos para o threshold e escolheu -1.1, pois este é o ponto que minimiza a Soma dos Quadrados dos Resíduos (SSR), ou seja, o valor que melhor ajusta o modelo aos dados.
  • Gráfico do Meio (Variável Ordenada): Confirma que o valor de -1.1 é um evento relativamente atípico na distribuição da variável de threshold, separando os 10% menores valores do restante da amostra, o que explica a divisão 10%/90% dos regimes.
  • Gráfico Superior (Variável de Threshold no Tempo): Mostra a evolução da variável de threshold (\(\Delta divl_{t-1}\)) ao longo do tempo e como ela, ocasionalmente, cruza para baixo a linha vermelha de -1.1, “ativando” o regime de estresse.

Análise das Equações Estimadas

A seguir, as equações do modelo TVAR, mostrando apenas os coeficientes estatisticamente significantes (a 5%). A análise é dividida por regime para destacar a dinâmica assimétrica de curto prazo. O conceito central é a Variável de Threshold, que neste caso é a variação da Dívida/PIB no período anterior (\(\Delta divl_{t-1}\)). A lógica do modelo é que os coeficientes mudam dependendo do valor desta variável.

Regime 1: Regime de Baixa ou “Estresse Fiscal”

(Ativado quando \(\Delta divl_{t-1} \le -1.1\))

Neste cenário de variação fiscal atípica (ocorrendo em 10% da amostra), a dinâmica de curto prazo é a seguinte:

Equação para \(\Delta divl_t\): A variação da Dívida/PIB é forte e negativamente influenciada pela variação passada da Selic. \[ \Delta divl_t = -1.3056 \Delta selic_{t-1} \]

Equação para \(\Delta selic_t\): A variação da Selic é explicada primariamente por sua própria inércia. \[ \Delta selic_t = 0.9137 \times \Delta selic_{t-1} \]

Regime 2: Regime “Normal”

(Ativado quando \(\Delta divl_{t-1} > -1.1\))

Neste cenário (ocorrendo em 90% da amostra), a dinâmica do sistema se torna diferente e menos reativa.

Equação para \(\Delta divl_t\) (a 10% de significância): Em tempos de “normalidade”, a variação da Dívida/PIB exibe uma leve inércia ou persistência (seu valor passado a influencia positivamente). A influência da política monetária (selic) sobre a dívida, neste regime, continua sendo estatisticamente insignificante.

\[ \Delta divl_t = 0.1197\Delta divl_{t-1} \]

Equação para \(\Delta selic_t\): A variação da Selic continua sendo explicada por seu próprio comportamento passado, mostrando forte persistência.

\[ \Delta selic_t = 0.8202 \Delta selic_{t-1} \]

Interpretação Econômica e Conclusões

Com base nos resultados do modelo TVAR em diferenças, a análise revela que a dinâmica de curto prazo entre a variação da dívida e a da Selic é não linear e assimétrica. O comportamento do sistema é dividido em dois regimes distintos, separados por um limiar de -1.1 na variação passada da Dívida/PIB. Notavelmente, é apenas no “regime de estresse” (ocorrendo em 10% do tempo), que se segue a uma variação fiscal atípica, que a política monetária passada tem um impacto forte e significativo sobre a trajetória da dívida. Em contrapartida, durante os períodos de “normalidade” (os 90% restantes), a dinâmica da dívida parece se desconectar das variáveis do modelo, enquanto a política monetária mantém um comportamento inercial.

A análise do comportamento das variáveis nos dois regimes do modelo TVAR mostra uma clara assimetria na reação da política fiscal. Em períodos de “estresse”, a variação da dívida (\(\Delta divl_t\)) torna-se altamente reativa à política monetária anterior (\(\Delta selic_{t-1}\)). Contudo, em períodos de “normalidade”, essa influência desaparece, e a dívida não mostra uma relação significativa com as variáveis passadas do sistema. Por outro lado, a política monetária (\(\Delta selic_t\)) exibe um comportamento notavelmente consistente e autônomo, sendo impulsionada primariamente por sua própria inércia em ambos os regimes, sem reagir de forma significativa às variações passadas da dívida.

A análise do modelo TVAR oferece fortes evidências que favorecem a hipótese de Dominância Monetária na dinâmica de curto prazo. O modelo demonstra que a autoridade monetária opera de forma autônoma, com a variação da Selic sendo determinada por seu próprio comportamento passado, independentemente do estado fiscal. Por outro lado, é a variável fiscal que se mostra reativa à política monetária, mas apenas em um cenário específico (Regime baixo ou de estresse, em 10% da amostra. Em todos os outros 90% do tempo (o “regime normal”), essa reação não existe.) . A ausência de uma reação da Selic às variações da dívida é o argumento central contra a presença de dominância fiscal de curto prazo.

Poderia se argumentar que, em um cenário de dominância fiscal, a dívida de fato reagiria a uma alta de juros, mas de forma perversa: um aumento na Selic pioraria a trajetória da dívida, exigindo uma reação da autoridade monetária. Contudo, a evidência empírica do modelo aponta para a direção exatamente oposta. A equação estimada para a variação da dívida (\(\Delta divl_t\)) no regime de estresse é \(\Delta divl_t = -1.3056 \Delta selic_{t-1}\). O coeficiente negativo e significativo é a peça-chave: ele mostra que um aumento na Selic no passado está associado a uma desaceleração no crescimento da dívida no presente. Este é um ciclo virtuoso, e não vicioso, característico de uma ação monetária que tem um efeito “disciplinador” ou de “restauração da credibilidade” sobre a trajetória fiscal.

O que seria Dominância Fiscal neste contexto? Em um regime de dominância fiscal, se esperaria que a autoridade monetária reagisse às pressões fiscais. O modelo não mostra essa relação. No Regime “Normal”, as duas políticas operam de forma bastante independente. No Regime de “Estresse”, é a dívida que reage à Selic, e não o contrário. O modelo não mostra um comportamento de dominância fiscal, mas sim um quadro de Dominância Monetária.

Dessa forma, a análise do modelo TVAR captura uma dinâmica de “pré-dominância fiscal” ou de “tensão fiscal”. ‘O Gatilho’ é uma variação atípica da dívida/PIB (abaixo do limiar de -1.1). Em resposta a este sinal de estresse, o modelo não mostra uma Selic refém da situação, mas sim uma ‘Ação Monetária Decisiva’ cujo efeito, conforme demonstrado pelo coeficiente negativo, é sentido positivamente pela trajetória da dívida. Isso acontece em um cenário de aparente ‘Inação Fiscal’ reativa, onde a dívida não dita os rumos da Selic. Isso sugere um Banco Central que mantém sua autonomia e cujo poder de influência se torna mais evidente precisamente nos períodos de maior atenção à política fiscal, reforçando a conclusão de Dominância Monetária.

Impulso resposta nos dois regimes

ir_regimebdl <- irf(Tvar1, impulse = selic, response = divl, boot =
FALSE, n.ahead = 10, regime = "L")

#Plotar os resultados da impulso-resposta para cada regime**

#plot(ir_regime1, main = "Impulso-Resposta - Regime 1")
#plot(ir_regime2, main = "Impulso-Resposta - Regime 2")

plot(ir_regimebdl) 

Análise das Funções de Impulso-Resposta (Regime de Estresse)

Os gráficos de Função de Impulso-Resposta (IRF) para o “regime de baixa” (ou “estresse fiscal”) são a representação visual da dinâmica que encontramos nas equações do modelo. Eles mostram como um choque inesperado (de um desvio padrão) em uma variável se propaga pelo sistema ao longo do tempo, especificamente quando o sistema já se encontra neste estado de tensão (ou seja, quando \(divldiff_{t-1} \le -1.1\)).

1. O Que Acontece Após um Choque na Dívida? (Impulso em divldiff)

Este cenário simula o que acontece no sistema após um choque inesperado e positivo na variação da Dívida/PIB.

  • Resposta da própria Dívida (divldiff): O choque tem um efeito positivo e significativo sobre a própria dívida por apenas um período, depois se dissipa rapidamente. Isso indica que os choques na dívida, neste regime, não são persistentes.

  • Resposta da Selic (selicdiff): A Selic não reage de forma estatisticamente significativa a um choque na dívida. A linha de resposta no gráfico permanece em zero, com as bandas de confiança sempre incluindo o zero. Isso reforça a ideia de que a política monetária não está sendo guiada pelas flutuações da dívida, mesmo neste regime de estresse, o que é uma forte evidência contra a dominância fiscal.

2. O Que Acontece Após um Choque na Selic? (Impulso em selicdiff)

Este cenário simula o que acontece após um choque inesperado e positivo na variação da Selic (uma alta de juros surpresa).

  • Resposta da própria Selic (selicdiff): O choque na Selic é altamente persistente. Um aumento inesperado na taxa de juros leva a mais aumentos (menores) nos períodos seguintes, e o efeito permanece estatisticamente significativo por muitos períodos. Isso confirma a forte inércia da política monetária que vimos nas equações.

  • Resposta da Dívida (divldiff): Este é o resultado mais importante do modelo. Um choque positivo na Selic provoca uma queda estatisticamente significativa na variação da dívida um período depois. O gráfico visualiza perfeitamente o coeficiente negativo de -1.3056 que encontramos na equação do regime de estresse.

Conclusão da Análise Macroeconômica

As Funções de Impulso-Resposta para o regime de estresse confirmam e reforçam visualmente a interpretação de Dominância Monetária:

  • Não há evidência de que a política monetária reaja a choques fiscais (a Selic não responde a um choque na dívida).
  • Pelo contrário, há forte evidência de que a política fiscal reage à política monetária (a dívida cai após uma alta na Selic).

Este comportamento é consistente com um cenário onde uma ação monetária contracionista e crível (alta de juros) atua como um mecanismo disciplinador sobre a trajetória da dívida, exatamente o oposto do que se esperaria em um regime de dominância fiscal.

ir_regimebdh <- irf(Tvar1, impulse = selic, response = divl, boot =
FALSE, n.ahead = 10, regime = "H")

plot(ir_regimebdh)

Análise das Funções de Impulso-Resposta (Regime Normal)

Estes gráficos de Função de Impulso-Resposta (IRF) descrevem a dinâmica do sistema no “regime normal”, que é ativado quando a variação da Dívida/PIB no período anterior foi branda ou positiva (\(divldiff_{t-1} > -1.1\)).

1. Resposta a um Choque na Dívida (divldiff)

Este cenário simula o que acontece no sistema após um choque inesperado na variação da Dívida/PIB durante um período de normalidade.

  • Resposta da própria Dívida (divldiff): O efeito de um choque na dívida sobre si mesma é praticamente nulo. A resposta se torna estatisticamente insignificante já no primeiro período após o choque, indicando ausência de persistência da dívida em tempos normais.

  • Resposta da Selic (selicdiff): Assim como no regime de estresse, a Selic não reage de forma estatisticamente significativa a um choque na dívida. A linha de resposta permanece em zero, confirmando que a política monetária não segue as surpresas da política fiscal.

2. Resposta a um Choque na Selic (selicdiff)

Este cenário simula o que acontece após uma alta de juros surpresa durante um período de normalidade.

  • Resposta da própria Selic (selicdiff): O choque na Selic continua sendo altamente persistente, similar ao observado no outro regime. Um aumento inesperado na taxa de juros leva a mais aumentos nos períodos seguintes. Isso mostra que a inércia da política monetária é uma característica robusta do sistema.

  • Resposta da Dívida (divldiff): Este é o resultado mais importante e a principal diferença em relação ao regime de estresse. A linha de resposta da dívida a um choque na Selic permanece em zero. Diferentemente do regime de estresse, em tempos normais, uma alta de juros não tem um impacto estatisticamente significativo sobre a trajetória da dívida.

Conclusão e Comparação Final entre os Regimes

A análise conjunta dos dois regimes pinta um quadro completo e sofisticado da relação entre as políticas fiscal e monetária:

  1. Comportamentos Simétricos (O que é sempre igual): A política monetária é sempre autônoma e inercial. Em nenhum dos regimes ela reage a choques fiscais, e em ambos os regimes ela é altamente persistente.

  2. Comportamento Assimétrico (O que muda): A principal assimetria está na reação da política fiscal. Em tempos normais, a dívida é “indiferente” às ações do Banco Central. No entanto, em períodos de estresse (identificados por uma variação fiscal atípica), a dívida se torna reativa e é “disciplinada” pela política monetária.

Esta análise completa solidifica a conclusão de Dominância Monetária. O Banco Central atua de forma independente, enquanto a política fiscal apenas reage às suas ações, e essa reação só é ativada quando o sistema se encontra sob um nível maior de tensão.

Identificação dos períodos de estresse (pre-dominância fiscal)

periodos_estresse_tvar <- Dívida_para_treshold %>%
  
  rename(
    data_col = Data,
    divl_col = `divl/pib` 
  ) %>%
  
  mutate(
    divldiff = divl_col - lag(divl_col),
    threshold_variable = lag(divldiff)
  ) %>%
  
  filter(threshold_variable <= -1.1) %>%
  
  # A correção final e explícita:
  dplyr::select(data_col, threshold_variable)

print(periodos_estresse_tvar)
## # A tibble: 15 × 2
##    data_col   threshold_variable
##    <date>                  <dbl>
##  1 2002-09-01              -2.57
##  2 2002-11-01              -1.79
##  3 2003-04-01              -1.57
##  4 2003-05-01              -3.57
##  5 2008-10-01              -1.95
##  6 2008-11-01              -1.63
##  7 2008-12-01              -1.45
##  8 2010-02-01              -1.18
##  9 2011-10-01              -1.98
## 10 2013-12-01              -1.10
## 11 2018-09-01              -1.18
## 12 2019-09-01              -1.22
## 13 2020-02-01              -1.52
## 14 2020-04-01              -2.36
## 15 2021-02-01              -1.26

Com base na análise do modelo TVAR, foi possível identificar os períodos exatos de “estresse” ao recalcular a variável de threshold do modelo, a variação da Dívida/PIB no período anterior (\(\Delta divl_{t−1}\)) e filtrar as datas em que seu valor foi igual ou inferior ao limiar de -1.1, que foi o ponto ótimo estimado pelo modelo. A análise dessas datas específicas, que coincidem com momentos de grande incerteza como a transição presidencial de 2002-2003, a crise financeira de 2008 e a pandemia de 2020-2021, revela uma conclusão central: estes não são períodos de dominância fiscal. Pelo contrário, são momentos de “pré-dominância fiscal”, onde o modelo mostra que a política monetária se torna mais eficaz e dominante, com a autoridade monetária agindo de forma autônoma para disciplinar a trajetória da dívida e reafirmar a estabilidade macroeconômica, precisamente quando o risco fiscal se torna mais agudo.

Os valores na segunda coluna (threshold_variable) representam a variação percentual da Dívida/PIB que ocorreu no mês anterior a cada data listada na primeira coluna.

Eles são o “gatilho” ou o “sinal de alerta” que fez o modelo mudar de comportamento.

Analisando a Relação Causa-Efeito

A lógica do modelo TVAR funciona da seguinte maneira, usando a primeira linha da tabela como exemplo:

A Data do Evento (t-1): Em Agosto de 2002 (o mês anterior à data listada), aconteceu algo na economia que fez a Dívida/PIB ter uma queda acentuada. O valor dessa queda foi de -2.57 pontos percentuais.

O Gatilho (O Teste do Threshold): O modelo TVAR “observou” esse valor de -2.57. Como -2.57 é menor que o limiar crítico de -1.1, o modelo ativou o “alerta”.

A Mudança de Regime (t): Por causa do que aconteceu em Agosto, o modelo determinou que, durante todo o mês de Setembro de 2002 (a data listada na primeira coluna), o sistema econômico operaria sob as regras do “Regime de Estresse”.

Análise sobre os dois modelos

Ao analisar os dois modelos em conjunto, os resultados que parecem “conflitantes” na verdade não são contraditórios; eles são duas faces da mesma moeda que mostram uma interpretação da dinâmica macroeconômica:

  1. O Modelo Dívida/Primário (TVECM) mostrou o que podemos chamar de “inação fiscal”. Ele revelou que a política fiscal, por si só (via ajuste do resultado primário), não reage de forma estatisticamente significativa para estabilizar a dívida quando esta se desvia de sua trajetória de equilíbrio de longo prazo. Este resultado é consistente com um cenário de Dominância Fiscal, onde a dívida segue um caminho autônomo.

  2. O Modelo Dívida/Selic (TVAR) mostrou a “reação monetária”. Ele revelou que, especialmente em momentos de estresse fiscal (quando a variação da dívida é atípica), a autoridade monetária atua de forma decisiva e autônoma, e suas ações (via Selic) têm um impacto disciplinador sobre a trajetória da dívida. Este é um comportamento característico da Dominância Monetária.

Ao juntar as duas análises, a evidência empírica sugere que o sistema opera sob um regime de Dominância Monetária precisamente porque a política fiscal é insuficiente. O Banco Central é forçado a assumir todo o ônus da estabilização porque a política fiscal não está fazendo sua parte do trabalho de forma reativa.

Portanto, pelos resultados: a política fiscal observada (reativa) não é, por si só, suficiente para garantir a estabilização da dívida. O sistema depende de uma política monetária ativa e crível para evitar a instabilidade. Isso leva diretamente à inferência de que uma “restrição fiscal” mais deliberada e estrutural, ou seja, uma política fiscal que ativamente busque a sustentabilidade da dívida através de metas de resultado primário, seria necessária para criar um equilíbrio mais saudável entre as políticas, aliviar a sobrecarga da política monetária e reduzir a probabilidade de se entrar no “regime de estresse” que o modelo identificou.