UNIVERSIDADE FEDERAL DA PARAÍBA

CENTRO DE CIÊNCIAS SOCIAIS APLICADAS

DEPARTAMENTO DE ECONOMIA

ORIENTADOR: PROF.DR. SINÉZIO FERNANDES MAIA

DISCENTE: LETÍCIA CAVALCANTE LIMA

UMA ANÁLISE DOS EFEITOS DOS CHOQUES FISCAIS SOBRE A ECONOMIA BRASILEIRA (2000 - 2024)

DADOS TRIMESTRAIS

DADOS REAIS

TESTE DE RAIZ UNITÁRIA

#========= TESTE DE RAIZ UNITÁRIA

# ADF (Dickey-Fuller aumentado)

adf_receita<- ur.df(dados_log$log_receita, type = "trend", lags = 4, selectlags = "AIC")
summary(adf_receita)@teststat
               tau3     phi2     phi3
statistic -1.856816 3.709098 2.129326
summary(adf_receita)@cval
      1pct  5pct 10pct
tau3 -4.04 -3.45 -3.15
phi2  6.50  4.88  4.16
phi3  8.73  6.49  5.47
adf_despesa<- ur.df(dados_log$log_despesa, type = "trend", lags = 4, selectlags = "AIC")
summary(adf_despesa)@teststat
               tau3     phi2     phi3
statistic -2.012027 3.092934 2.548794
summary(adf_despesa)@cval
      1pct  5pct 10pct
tau3 -4.04 -3.45 -3.15
phi2  6.50  4.88  4.16
phi3  8.73  6.49  5.47
adf_pib<- ur.df(dados_log$log_pib, type = "trend", lags = 4, selectlags = "AIC")
summary(adf_pib)@teststat
               tau3    phi2     phi3
statistic -1.532247 2.63882 1.468831
summary(adf_pib)@cval
      1pct  5pct 10pct
tau3 -4.04 -3.45 -3.15
phi2  6.50  4.88  4.16
phi3  8.73  6.49  5.47
#Todos são raiz unitária.

adf_ipca<- ur.df(dados_log$ipca_trimestral, type = "drift", lags = 4, selectlags = "AIC")
summary(adf_ipca)@teststat
               tau2     phi1
statistic -4.003087 8.020787
summary(adf_ipca)@cval
      1pct  5pct 10pct
tau2 -3.51 -2.89 -2.58
phi1  6.70  4.71  3.86
adf_selic<- ur.df(dados_log$selic_trimestral, type = "drift", lags = 4, selectlags = "AIC")
summary(adf_selic)@teststat
               tau2     phi1
statistic -1.634234 1.349363
summary(adf_selic)@cval
      1pct  5pct 10pct
tau2 -3.51 -2.89 -2.58
phi1  6.70  4.71  3.86
#A selic é raiz unitária.

# Phillips-Perron

pp_receita<- ur.pp(dados_log$log_receita, type = "Z-tau",  model = "trend", lags = "short")
summary(pp_receita)@teststat
[1] -4.248561
summary(pp_receita)@cval
                     1pct      5pct     10pct
critical values -4.053014 -3.455217 -3.153098
pp_despesa<- ur.pp(dados_log$log_despesa, type = "Z-tau",  model = "trend", lags = "short")
summary(pp_despesa)@teststat
[1] -6.344243
summary(pp_despesa)@cval
                     1pct      5pct     10pct
critical values -4.053014 -3.455217 -3.153098
pp_pib<- ur.pp(dados_log$log_pib, type = "Z-tau",  model = "trend", lags = "short")
summary(pp_pib)@teststat
[1] -1.809367
summary(pp_pib)@cval
                     1pct      5pct     10pct
critical values -4.053014 -3.455217 -3.153098
#Apenas o pib é raiz unitária.

pp_ipca <- ur.pp(dados_log$ipca_trimestral, type = "Z-tau", model = "const", lags = "short")
summary(pp_ipca)@teststat
[1] -6.28218
summary(pp_ipca)@cval
                    1pct     5pct     10pct
critical values -3.49708 -2.89061 -2.582082
pp_selic <- ur.pp(dados_log$selic_trimestral, type = "Z-tau", model = "const", lags = "short")
summary(pp_selic)@teststat
[1] -2.099326
summary(pp_selic)@cval
                    1pct     5pct     10pct
critical values -3.49708 -2.89061 -2.582082
#selic é raiz unitária.

# DF-GLS (Elliot-Rothenberg-Stock)

dfgls_receita <- ur.ers(dados_log$log_receita, type = "DF-GLS", model = "trend", lag.max = 4)
summary(dfgls_receita)@teststat
[1] -1.330135
summary(dfgls_receita)@cval
                 1pct  5pct 10pct
critical values -3.46 -2.93 -2.64
dfgls_despesa <- ur.ers(dados_log$log_despesa, type = "DF-GLS", model = "trend", lag.max = 4)
summary(dfgls_despesa)@teststat
[1] -1.665303
summary(dfgls_despesa)@cval
                 1pct  5pct 10pct
critical values -3.46 -2.93 -2.64
dfgls_pib     <- ur.ers(dados_log$log_pib,     type = "DF-GLS", model = "trend", lag.max = 4)
summary(dfgls_pib)@teststat
[1] -1.321736
summary(dfgls_pib)@cval
                 1pct  5pct 10pct
critical values -3.46 -2.93 -2.64
#Todos são raiz unitária.

dfgls_ipca <- ur.ers(dados_log$ipca_trimestral, type = "DF-GLS", model = "const", lag.max = 4)
summary(dfgls_ipca)@teststat
[1] -2.866372
summary(dfgls_ipca)@cval
                 1pct  5pct 10pct
critical values -2.59 -1.94 -1.62
dfgls_selic <- ur.ers(dados_log$selic_trimestral, type = "DF-GLS", model = "const", lag.max = 4)
summary(dfgls_selic)@teststat
[1] -1.113304
summary(dfgls_selic)@cval
                 1pct  5pct 10pct
critical values -2.59 -1.94 -1.62
#A selic é raiz unitária.

TESTE DE QUEBRA ESTRUTURAL

#========= TESTE DE QUEBRA ESTRUTURAL

# Zivot-Andrews (1992)
za_receita <- ur.za(dados_log$log_receita, model = "both", lag = 4)  
za_despesa <- ur.za(dados_log$log_despesa, model = "both", lag = 4)
za_pib     <- ur.za(dados_log$log_pib,     model = "both", lag = 4)

summary(za_receita)

################################ 
# Zivot-Andrews Unit Root Test # 
################################ 


Call:
lm(formula = testmat)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.47349 -0.04464 -0.00150  0.04834  0.33039 

Coefficients:
             Estimate Std. Error t value Pr(>|t|)    
(Intercept)  6.797553   2.077317   3.272 0.001537 ** 
y.l1         0.443975   0.171248   2.593 0.011192 *  
trend        0.008581   0.002891   2.968 0.003884 ** 
y.dl1       -0.192001   0.169916  -1.130 0.261628    
y.dl2       -0.342051   0.150504  -2.273 0.025537 *  
y.dl3       -0.223188   0.128965  -1.731 0.087109 .  
y.dl4        0.110027   0.106468   1.033 0.304301    
du          -0.171701   0.050227  -3.418 0.000964 ***
dt          -0.004016   0.002532  -1.586 0.116374    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.09017 on 86 degrees of freedom
  (5 observations deleted due to missingness)
Multiple R-squared:  0.887, Adjusted R-squared:  0.8765 
F-statistic: 84.42 on 8 and 86 DF,  p-value: < 0.00000000000000022


Teststatistic: -3.2469 
Critical values: 0.01= -5.57 0.05= -5.08 0.1= -4.82 

Potential break point at position: 58 
summary(za_despesa)

################################ 
# Zivot-Andrews Unit Root Test # 
################################ 


Call:
lm(formula = testmat)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.18033 -0.05272 -0.01646  0.03044  0.53682 

Coefficients:
             Estimate Std. Error t value   Pr(>|t|)    
(Intercept) 11.436776   2.358377   4.849 0.00000545 ***
y.l1         0.047119   0.196830   0.239   0.811372    
trend        0.016860   0.003654   4.613 0.00001371 ***
y.dl1        0.200274   0.187607   1.068   0.288726    
y.dl2        0.054656   0.156740   0.349   0.728166    
y.dl3       -0.078770   0.123575  -0.637   0.525541    
y.dl4        0.394324   0.098361   4.009   0.000129 ***
du           0.103157   0.048132   2.143   0.034922 *  
dt          -0.011154   0.002652  -4.206 0.00006344 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.09719 on 86 degrees of freedom
  (5 observations deleted due to missingness)
Multiple R-squared:  0.9286,    Adjusted R-squared:  0.9219 
F-statistic: 139.7 on 8 and 86 DF,  p-value: < 0.00000000000000022


Teststatistic: -4.8411 
Critical values: 0.01= -5.57 0.05= -5.08 0.1= -4.82 

Potential break point at position: 42 
summary(za_pib)

################################ 
# Zivot-Andrews Unit Root Test # 
################################ 


Call:
lm(formula = testmat)

Residuals:
      Min        1Q    Median        3Q       Max 
-0.087948 -0.010939  0.000188  0.010557  0.060821 

Coefficients:
              Estimate Std. Error t value            Pr(>|t|)    
(Intercept)  4.2875111  0.9939694   4.314 0.00004269245312932 ***
y.l1         0.6924703  0.0715429   9.679 0.00000000000000204 ***
trend        0.0043975  0.0010355   4.247 0.00005468922195808 ***
y.dl1       -0.0513875  0.0949303  -0.541             0.58969    
y.dl2       -0.1305787  0.0854989  -1.527             0.13037    
y.dl3       -0.2756271  0.0814809  -3.383             0.00108 ** 
y.dl4        0.5046801  0.0863966   5.841 0.00000009008567159 ***
du          -0.0687197  0.0149587  -4.594 0.00001477862339190 ***
dt          -0.0020593  0.0007512  -2.742             0.00744 ** 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.02249 on 86 degrees of freedom
  (5 observations deleted due to missingness)
Multiple R-squared:  0.9925,    Adjusted R-squared:  0.9918 
F-statistic:  1421 on 8 and 86 DF,  p-value: < 0.00000000000000022


Teststatistic: -4.2985 
Critical values: 0.01= -5.57 0.05= -5.08 0.1= -4.82 

Potential break point at position: 60 
#A despesa tem comportamento que lembra estacionariedade, 
#mas existe um salto ou mudança estrutural que influencia o teste.

za_ipca <- ur.za(dados_log$ipca_trimestral, model = "both", lag = 4)
za_selic <- ur.za(dados_log$selic_trimestral, model = "both", lag = 4)

summary(za_ipca)

################################ 
# Zivot-Andrews Unit Root Test # 
################################ 


Call:
lm(formula = testmat)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.94429 -0.12828 -0.00381  0.12836  0.79979 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
(Intercept) -0.69405    0.39928  -1.738  0.08574 .  
y.l1         0.35836    0.14147   2.533  0.01312 *  
trend        0.14075    0.04199   3.352  0.00119 ** 
y.dl1        0.08564    0.13615   0.629  0.53098    
y.dl2       -0.29136    0.12547  -2.322  0.02258 *  
y.dl3       -0.01923    0.10133  -0.190  0.84997    
y.dl4       -0.02879    0.09182  -0.314  0.75462    
du          -0.85922    0.19083  -4.503 0.000021 ***
dt          -0.14043    0.04202  -3.342  0.00123 ** 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.2584 on 86 degrees of freedom
  (5 observations deleted due to missingness)
Multiple R-squared:  0.4573,    Adjusted R-squared:  0.4068 
F-statistic: 9.058 on 8 and 86 DF,  p-value: 0.000000006077


Teststatistic: -4.5356 
Critical values: 0.01= -5.57 0.05= -5.08 0.1= -4.82 

Potential break point at position: 13 
summary(za_selic)

################################ 
# Zivot-Andrews Unit Root Test # 
################################ 


Call:
lm(formula = testmat)

Residuals:
    Min      1Q  Median      3Q     Max 
-1.6412 -0.3568 -0.0620  0.3320  3.2996 

Coefficients:
             Estimate Std. Error t value             Pr(>|t|)    
(Intercept)  2.401860   0.680581   3.529             0.000672 ***
y.l1         0.882950   0.032752  26.959 < 0.0000000000000002 ***
trend       -0.021156   0.006539  -3.235             0.001725 ** 
y.dl1        1.082691   0.097587  11.095 < 0.0000000000000002 ***
y.dl2       -0.505862   0.143890  -3.516             0.000703 ***
y.dl3        0.061674   0.137478   0.449             0.654841    
y.dl4        0.065340   0.100186   0.652             0.516023    
du          -0.468186   0.411617  -1.137             0.258517    
dt           0.087242   0.032633   2.673             0.008983 ** 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.743 on 86 degrees of freedom
  (5 observations deleted due to missingness)
Multiple R-squared:  0.9796,    Adjusted R-squared:  0.9777 
F-statistic: 515.8 on 8 and 86 DF,  p-value: < 0.00000000000000022


Teststatistic: -3.5738 
Critical values: 0.01= -5.57 0.05= -5.08 0.1= -4.82 

Potential break point at position: 78 
#IPCA é provavelmente I(1), mas a quebra estrutural influencia a série.
#Selic também é I(1), mas com quebra estrutural relevante.

MQO

#====== MQO COM 3 VARIÁVEIS

mqo_pib_3v <- lm(dlog_pib ~ dlog_despesa + dlog_receita,
                 data = dados_dif)
summary(mqo_pib_3v)

Call:
lm(formula = dlog_pib ~ dlog_despesa + dlog_receita, data = dados_dif)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.05108 -0.02025 -0.00040  0.02247  0.08445 

Coefficients:
             Estimate Std. Error t value     Pr(>|t|)    
(Intercept)  0.006552   0.002960   2.213       0.0292 *  
dlog_despesa 0.089141   0.018891   4.719 0.0000080615 ***
dlog_receita 0.156331   0.025586   6.110 0.0000000213 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.02929 on 96 degrees of freedom
  (1 observation deleted due to missingness)
Multiple R-squared:  0.4489,    Adjusted R-squared:  0.4375 
F-statistic:  39.1 on 2 and 96 DF,  p-value: 0.0000000000003781
#======= MQO COM 5 VARIÁVEIS

mqo_pib_5v <- lm(dlog_pib ~ dlog_despesa + dlog_receita + ipca_trimestral + dselic,
              data = dados_dif)
summary(mqo_pib_5v)

Call:
lm(formula = dlog_pib ~ dlog_despesa + dlog_receita + ipca_trimestral + 
    dselic, data = dados_dif)

Residuals:
      Min        1Q    Median        3Q       Max 
-0.054944 -0.017308 -0.000658  0.020570  0.089631 

Coefficients:
                  Estimate Std. Error t value      Pr(>|t|)    
(Intercept)      0.0201150  0.0059476   3.382      0.001050 ** 
dlog_despesa     0.0759138  0.0188540   4.026      0.000115 ***
dlog_receita     0.1646399  0.0249872   6.589 0.00000000254 ***
ipca_trimestral -0.0267440  0.0101326  -2.639      0.009723 ** 
dselic           0.0006364  0.0025658   0.248      0.804641    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.02836 on 94 degrees of freedom
  (1 observation deleted due to missingness)
Multiple R-squared:  0.4943,    Adjusted R-squared:  0.4727 
F-statistic: 22.97 on 4 and 94 DF,  p-value: 0.0000000000002944

O MODELO COM 3 VARIÁVEIS

TESTE DE COINTEGRAÇÃO

johansen_test <- ca.jo(dados_johansen, type = "trace", ecdet = "const", K = 5)
summary(johansen_test)

###################### 
# Johansen-Procedure # 
###################### 

Test type: trace statistic , without linear trend and constant in cointegration 

Eigenvalues (lambda):
[1]  0.2063409236167832727649  0.1353052404507800732247
[3]  0.0564645692188446499116 -0.0000000000000002220446

Values of teststatistic and critical values of test:

          test 10pct  5pct  1pct
r <= 2 |  5.52  7.52  9.24 12.97
r <= 1 | 19.33 17.85 19.96 24.60
r = 0  | 41.29 32.00 34.91 41.07

Eigenvectors, normalised to first column:
(These are the cointegration relations)

           receita.l5 despesa.l5     pib.l5   constant
receita.l5  1.0000000   1.000000   1.000000  1.0000000
despesa.l5  0.5501608  -1.600070  -3.863524  0.3216523
pib.l5     -1.7041544   1.021099   6.511620 -1.8686402
constant    4.9228801  -7.073097 -58.873122 10.1119000

Weights W:
(This is the loading matrix)

           receita.l5  despesa.l5       pib.l5               constant
receita.d -0.59662382 -0.11285905 -0.012036749 -0.0000000000032733820
despesa.d -0.31430477  0.21835631 -0.005612171 -0.0000000000024396591
pib.d      0.08269093 -0.01486267 -0.005051043  0.0000000000006502894
johansen_test <- ca.jo(dados_johansen, type = "eigen", ecdet = "const", K = 5)
summary(johansen_test)

###################### 
# Johansen-Procedure # 
###################### 

Test type: maximal eigenvalue statistic (lambda max) , without linear trend and constant in cointegration 

Eigenvalues (lambda):
[1]  0.2063409236167832727649  0.1353052404507800732247
[3]  0.0564645692188446499116 -0.0000000000000002220446

Values of teststatistic and critical values of test:

          test 10pct  5pct  1pct
r <= 2 |  5.52  7.52  9.24 12.97
r <= 1 | 13.81 13.75 15.67 20.20
r = 0  | 21.95 19.77 22.00 26.81

Eigenvectors, normalised to first column:
(These are the cointegration relations)

           receita.l5 despesa.l5     pib.l5   constant
receita.l5  1.0000000   1.000000   1.000000  1.0000000
despesa.l5  0.5501608  -1.600070  -3.863524  0.3216523
pib.l5     -1.7041544   1.021099   6.511620 -1.8686402
constant    4.9228801  -7.073097 -58.873122 10.1119000

Weights W:
(This is the loading matrix)

           receita.l5  despesa.l5       pib.l5               constant
receita.d -0.59662382 -0.11285905 -0.012036749 -0.0000000000032733820
despesa.d -0.31430477  0.21835631 -0.005612171 -0.0000000000024396591
pib.d      0.08269093 -0.01486267 -0.005051043  0.0000000000006502894

VAR PADRÃO

#Seleção do número de defasagens
lagselect <- VARselect(dados_var, lag.max = 8, type = "const")
lagselect
$selection
AIC(n)  HQ(n)  SC(n) FPE(n) 
     8      5      5      8 

$criteria
                       1                 2                  3
AIC(n) -15.9977500804743 -16.0666883790425 -16.31949506343803
HQ(n)  -15.8649915713105 -15.8343609880058 -15.98759879052844
SC(n)  -15.6688211356418 -15.4910627255856 -15.49717270135682
FPE(n)   0.0000001128072   0.0000001053683   0.00000008197035
                        4                  5                  6
AIC(n) -16.82385691063498 -17.27655382714432 -17.22179776297843
HQ(n)  -16.39239175585253 -16.74551979048899 -16.59119484445023
SC(n)  -15.75483783992941 -15.96083804781438 -15.65938527502414
FPE(n)   0.00000004965605   0.00000003173523   0.00000003376923
                        7                  8
AIC(n) -17.16597554186461 -17.33127676077850
HQ(n)  -16.43580374146353 -16.50153607850455
SC(n)  -15.35686634528595 -15.27547085557548
FPE(n)   0.00000003607562   0.00000003100034
#Estimação do VAR
var_model <- VAR(dados_var, p = 5, type = "const")
summary(var_model)

VAR Estimation Results:
========================= 
Endogenous variables: log_receita, log_despesa, log_pib 
Deterministic variables: const 
Sample size: 95 
Log Likelihood: 467.65 
Roots of the characteristic polynomial:
0.9795 0.979 0.9625 0.9625 0.8787 0.7639 0.7128 0.7128 0.6765 0.6765 0.6124 0.6124 0.5871 0.436 0.436
Call:
VAR(y = dados_var, p = 5, type = "const")


Estimation results for equation log_receita: 
============================================ 
log_receita = log_receita.l1 + log_despesa.l1 + log_pib.l1 + log_receita.l2 + log_despesa.l2 + log_pib.l2 + log_receita.l3 + log_despesa.l3 + log_pib.l3 + log_receita.l4 + log_despesa.l4 + log_pib.l4 + log_receita.l5 + log_despesa.l5 + log_pib.l5 + const 

                Estimate Std. Error t value Pr(>|t|)    
log_receita.l1  0.122114   0.134462   0.908 0.366552    
log_despesa.l1 -0.006810   0.095366  -0.071 0.943251    
log_pib.l1      1.439198   0.409293   3.516 0.000728 ***
log_receita.l2 -0.311562   0.137368  -2.268 0.026055 *  
log_despesa.l2 -0.004602   0.088263  -0.052 0.958551    
log_pib.l2      0.656190   0.414389   1.584 0.117300    
log_receita.l3  0.291961   0.138633   2.106 0.038380 *  
log_despesa.l3 -0.020615   0.090052  -0.229 0.819520    
log_pib.l3     -1.182630   0.415288  -2.848 0.005610 ** 
log_receita.l4  0.062095   0.146873   0.423 0.673606    
log_despesa.l4  0.068290   0.092611   0.737 0.463072    
log_pib.l4      0.990333   0.459393   2.156 0.034147 *  
log_receita.l5  0.113872   0.139555   0.816 0.416974    
log_despesa.l5 -0.137416   0.089892  -1.529 0.130339    
log_pib.l5     -1.079970   0.416823  -2.591 0.011395 *  
const          -1.430204   1.448852  -0.987 0.326593    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1


Residual standard error: 0.08047 on 79 degrees of freedom
Multiple R-Squared: 0.9173, Adjusted R-squared: 0.9017 
F-statistic: 58.45 on 15 and 79 DF,  p-value: < 0.00000000000000022 


Estimation results for equation log_despesa: 
============================================ 
log_despesa = log_receita.l1 + log_despesa.l1 + log_pib.l1 + log_receita.l2 + log_despesa.l2 + log_pib.l2 + log_receita.l3 + log_despesa.l3 + log_pib.l3 + log_receita.l4 + log_despesa.l4 + log_pib.l4 + log_receita.l5 + log_despesa.l5 + log_pib.l5 + const 

               Estimate Std. Error t value Pr(>|t|)    
log_receita.l1 -0.36903    0.15965  -2.312 0.023411 *  
log_despesa.l1  0.36212    0.11323   3.198 0.001991 ** 
log_pib.l1      0.80642    0.48595   1.659 0.100989    
log_receita.l2  0.20888    0.16310   1.281 0.204036    
log_despesa.l2  0.03262    0.10479   0.311 0.756419    
log_pib.l2     -0.37912    0.49200  -0.771 0.443267    
log_receita.l3  0.13462    0.16460   0.818 0.415877    
log_despesa.l3 -0.07571    0.10692  -0.708 0.480969    
log_pib.l3     -0.62603    0.49307  -1.270 0.207938    
log_receita.l4 -0.24684    0.17438  -1.416 0.160845    
log_despesa.l4  0.38673    0.10996   3.517 0.000726 ***
log_pib.l4      1.64425    0.54544   3.015 0.003459 ** 
log_receita.l5  0.17080    0.16569   1.031 0.305765    
log_despesa.l5 -0.20638    0.10673  -1.934 0.056735 .  
log_pib.l5     -0.72347    0.49489  -1.462 0.147741    
const          -2.76133    1.72022  -1.605 0.112436    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1


Residual standard error: 0.09555 on 79 degrees of freedom
Multiple R-Squared: 0.9366, Adjusted R-squared: 0.9245 
F-statistic: 77.78 on 15 and 79 DF,  p-value: < 0.00000000000000022 


Estimation results for equation log_pib: 
======================================== 
log_pib = log_receita.l1 + log_despesa.l1 + log_pib.l1 + log_receita.l2 + log_despesa.l2 + log_pib.l2 + log_receita.l3 + log_despesa.l3 + log_pib.l3 + log_receita.l4 + log_despesa.l4 + log_pib.l4 + log_receita.l5 + log_despesa.l5 + log_pib.l5 + const 

                Estimate Std. Error t value        Pr(>|t|)    
log_receita.l1  0.005414   0.036470   0.148         0.88237    
log_despesa.l1  0.025728   0.025866   0.995         0.32292    
log_pib.l1      0.879463   0.111010   7.922 0.0000000000123 ***
log_receita.l2 -0.002820   0.037258  -0.076         0.93986    
log_despesa.l2  0.043196   0.023939   1.804         0.07498 .  
log_pib.l2      0.008709   0.112392   0.077         0.93843    
log_receita.l3  0.071115   0.037601   1.891         0.06225 .  
log_despesa.l3  0.062871   0.024424   2.574         0.01192 *  
log_pib.l3     -0.342585   0.112636  -3.042         0.00319 ** 
log_receita.l4 -0.028917   0.039835  -0.726         0.47003    
log_despesa.l4  0.035421   0.025118   1.410         0.16241    
log_pib.l4      0.832190   0.124599   6.679 0.0000000030506 ***
log_receita.l5  0.017986   0.037851   0.475         0.63597    
log_despesa.l5 -0.078427   0.024381  -3.217         0.00188 ** 
log_pib.l5     -0.566762   0.113052  -5.013 0.0000032098786 ***
const           0.809573   0.392964   2.060         0.04267 *  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1


Residual standard error: 0.02183 on 79 degrees of freedom
Multiple R-Squared: 0.9935, Adjusted R-squared: 0.9923 
F-statistic: 805.8 on 15 and 79 DF,  p-value: < 0.00000000000000022 



Covariance matrix of residuals:
            log_receita log_despesa    log_pib
log_receita   0.0064761  -0.0020302  0.0009517
log_despesa  -0.0020302   0.0091292 -0.0002549
log_pib       0.0009517  -0.0002549  0.0004764

Correlation matrix of residuals:
            log_receita log_despesa log_pib
log_receita      1.0000     -0.2640  0.5418
log_despesa     -0.2640      1.0000 -0.1222
log_pib          0.5418     -0.1222  1.0000
#Causalidade de Granger
causality(var_model, cause = "log_receita")
$Granger

    Granger causality H0: log_receita do not Granger-cause log_despesa
    log_pib

data:  VAR object var_model
F-Test = 1.7466, df1 = 10, df2 = 237, p-value = 0.07145


$Instant

    H0: No instantaneous causality between: log_receita and log_despesa
    log_pib

data:  VAR object var_model
Chi-squared = 23.747, df = 2, p-value = 0.000006972
causality(var_model, cause = "log_despesa")
$Granger

    Granger causality H0: log_despesa do not Granger-cause log_receita
    log_pib

data:  VAR object var_model
F-Test = 3.7479, df1 = 10, df2 = 237, p-value = 0.0001078


$Instant

    H0: No instantaneous causality between: log_despesa and log_receita
    log_pib

data:  VAR object var_model
Chi-squared = 6.2422, df = 2, p-value = 0.04411
causality(var_model, cause = "log_pib")
$Granger

    Granger causality H0: log_pib do not Granger-cause log_receita
    log_despesa

data:  VAR object var_model
F-Test = 5.0832, df1 = 10, df2 = 237, p-value = 0.00000102


$Instant

    H0: No instantaneous causality between: log_pib and log_receita
    log_despesa

data:  VAR object var_model
Chi-squared = 21.586, df = 2, p-value = 0.00002055
#Funções de Impulso-Resposta (IRF)

#Ordem de Granger
irf_var_padrão <- irf(var_model,
                          impulse = c("log_pib", "log_despesa", "log_receita"),
                          response = c("log_pib", "log_despesa", "log_receita"),
                          n.ahead = 12,     
                          boot = TRUE)     
plot(irf_var_padrão)

irf_var_padrão_pib <- irf(var_model,
               impulse = c("log_pib", "log_despesa", "log_receita"),
               response = c("log_pib"),
               n.ahead = 12,     
               boot = TRUE)     
plot(irf_var_padrão_pib)

irf_var_padrão_despesa <- irf(var_model,
                impulse = c("log_pib", "log_despesa", "log_receita"),
                response = c("log_despesa"),
                n.ahead = 12,     
                boot = TRUE)     
plot(irf_var_padrão_despesa)

irf_var_padrão_receita <- irf(var_model,
                impulse = c("log_pib", "log_despesa", "log_receita"),
                response = c("log_receita"),
                n.ahead = 12,     
                boot = TRUE)     
plot(irf_var_padrão_receita)

#Decomposição da variância (FEVD)
fevd_var <- fevd(var_model, n.ahead = 12)
plot(fevd_var)

#Testes de robustez / Diagnóstico

#Teste de autocorrelação dos resíduos (LM test)
serial.test(var_model, lags.pt = 16, type = "PT.asymptotic")

    Portmanteau Test (asymptotic)

data:  Residuals of VAR object var_model
Chi-squared = 106.54, df = 99, p-value = 0.2843
#Teste de normalidade dos resíduos
normality.test(var_model)
$JB

    JB-Test (multivariate)

data:  Residuals of VAR object var_model
Chi-squared = 939.82, df = 6, p-value < 0.00000000000000022


$Skewness

    Skewness only (multivariate)

data:  Residuals of VAR object var_model
Chi-squared = 67.831, df = 3, p-value = 0.00000000000001243


$Kurtosis

    Kurtosis only (multivariate)

data:  Residuals of VAR object var_model
Chi-squared = 871.99, df = 3, p-value < 0.00000000000000022
## Teste de heterocedasticidade (ARCH LM test)
arch.test(var_model, lags.multi = 12)

    ARCH (multivariate)

data:  Residuals of VAR object var_model
Chi-squared = 450.27, df = 432, p-value = 0.2625
#Estabilidade do modelo (roots dentro do círculo unitário)
roots(var_model) #estabilidade
 [1] 0.9794564 0.9790216 0.9625213 0.9625213 0.8787395 0.7639417 0.7127645
 [8] 0.7127645 0.6764669 0.6764669 0.6124081 0.6124081 0.5870530 0.4359686
[15] 0.4359686
plot(var_model) 

VAR EM 1° DIFERENÇA

#Seleção do número de defasagens
lagselect <- VARselect(dados_diff, lag.max = 8, type = "const")
lagselect
$selection
AIC(n)  HQ(n)  SC(n) FPE(n) 
     7      4      4      7 

$criteria
                       1                2                  3                  4
AIC(n) -15.3598469825066 -15.866485844223 -16.46542112481361 -17.08567765960795
HQ(n)  -15.2262678053730 -15.632722284239 -16.13147318197939 -16.65154533392346
SC(n)  -15.0287446299989 -15.287056727334 -15.63766524354432 -16.00959501395787
FPE(n)   0.0000002134898   0.000000128727   0.00000007084668   0.00000003822507
                       5                  6                  7
AIC(n) -16.9974308412076 -16.96356815905752 -17.13894637559417
HQ(n)  -16.4631141326729 -16.32906706767250 -16.40426090135889
SC(n)  -15.6730214311768 -15.39083198464587 -15.31788343680173
FPE(n)   0.0000000419682   0.00000004374569   0.00000003709989
                       8
AIC(n) -17.1290633632819
HQ(n)  -16.2941935061963
SC(n)  -15.0596736601086
FPE(n)   0.0000000380027
#Estimação do VAR em diferenças
var_diff <- VAR(dados_diff, p = 4, type = "const")
summary(var_diff)

VAR Estimation Results:
========================= 
Endogenous variables: dlog_receita, dlog_despesa, dlog_pib 
Deterministic variables: const 
Sample size: 95 
Log Likelihood: 448.998 
Roots of the characteristic polynomial:
0.9801 0.9643 0.9643 0.782 0.7381 0.7381 0.6981 0.6981 0.695 0.5122 0.5122 0.103
Call:
VAR(y = dados_diff, p = 4, type = "const")


Estimation results for equation dlog_receita: 
============================================= 
dlog_receita = dlog_receita.l1 + dlog_despesa.l1 + dlog_pib.l1 + dlog_receita.l2 + dlog_despesa.l2 + dlog_pib.l2 + dlog_receita.l3 + dlog_despesa.l3 + dlog_pib.l3 + dlog_receita.l4 + dlog_despesa.l4 + dlog_pib.l4 + const 

                  Estimate Std. Error t value    Pr(>|t|)    
dlog_receita.l1 -0.6897631  0.1274125  -5.414 0.000000601 ***
dlog_despesa.l1 -0.0238427  0.0947080  -0.252    0.801864    
dlog_pib.l1      0.9590197  0.3720744   2.577    0.011742 *  
dlog_receita.l2 -0.8602912  0.1534899  -5.605 0.000000272 ***
dlog_despesa.l2 -0.0120574  0.1045202  -0.115    0.908442    
dlog_pib.l2      1.4910741  0.3859656   3.863    0.000223 ***
dlog_receita.l3 -0.3836274  0.1621628  -2.366    0.020356 *  
dlog_despesa.l3  0.0027594  0.1004029   0.027    0.978141    
dlog_pib.l3      0.0542510  0.4171131   0.130    0.896835    
dlog_receita.l4 -0.1901460  0.1428224  -1.331    0.186765    
dlog_despesa.l4  0.1199118  0.0870639   1.377    0.172172    
dlog_pib.l4      0.8800373  0.4276797   2.058    0.042796 *  
const           -0.0003239  0.0124062  -0.026    0.979232    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1


Residual standard error: 0.0849 on 82 degrees of freedom
Multiple R-Squared: 0.5697, Adjusted R-squared: 0.5067 
F-statistic: 9.045 on 12 and 82 DF,  p-value: 0.00000000008739 


Estimation results for equation dlog_despesa: 
============================================= 
dlog_despesa = dlog_receita.l1 + dlog_despesa.l1 + dlog_pib.l1 + dlog_receita.l2 + dlog_despesa.l2 + dlog_pib.l2 + dlog_receita.l3 + dlog_despesa.l3 + dlog_pib.l3 + dlog_receita.l4 + dlog_despesa.l4 + dlog_pib.l4 + const 

                Estimate Std. Error t value  Pr(>|t|)    
dlog_receita.l1 -0.35671    0.15019  -2.375   0.01988 *  
dlog_despesa.l1 -0.51222    0.11164  -4.588 0.0000159 ***
dlog_pib.l1      0.66910    0.43858   1.526   0.13096    
dlog_receita.l2 -0.08766    0.18093  -0.484   0.62932    
dlog_despesa.l2 -0.37610    0.12320  -3.053   0.00306 ** 
dlog_pib.l2      0.07278    0.45496   0.160   0.87329    
dlog_receita.l3  0.06667    0.19115   0.349   0.72813    
dlog_despesa.l3 -0.36694    0.11835  -3.100   0.00265 ** 
dlog_pib.l3     -0.61090    0.49167  -1.243   0.21759    
dlog_receita.l4 -0.19483    0.16835  -1.157   0.25052    
dlog_despesa.l4  0.11792    0.10263   1.149   0.25389    
dlog_pib.l4      1.06883    0.50413   2.120   0.03702 *  
const            0.01705    0.01462   1.166   0.24693    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1


Residual standard error: 0.1001 on 82 degrees of freedom
Multiple R-Squared: 0.665,  Adjusted R-squared: 0.616 
F-statistic: 13.56 on 12 and 82 DF,  p-value: 0.000000000000006386 


Estimation results for equation dlog_pib: 
========================================= 
dlog_pib = dlog_receita.l1 + dlog_despesa.l1 + dlog_pib.l1 + dlog_receita.l2 + dlog_despesa.l2 + dlog_pib.l2 + dlog_receita.l3 + dlog_despesa.l3 + dlog_pib.l3 + dlog_receita.l4 + dlog_despesa.l4 + dlog_pib.l4 + const 

                 Estimate Std. Error t value   Pr(>|t|)    
dlog_receita.l1 -0.004386   0.033191  -0.132    0.89519    
dlog_despesa.l1  0.012151   0.024672   0.493    0.62368    
dlog_pib.l1     -0.041488   0.096926  -0.428    0.66974    
dlog_receita.l2 -0.023160   0.039984  -0.579    0.56403    
dlog_despesa.l2  0.039469   0.027228   1.450    0.15099    
dlog_pib.l2      0.005791   0.100545   0.058    0.95421    
dlog_receita.l3  0.033427   0.042244   0.791    0.43106    
dlog_despesa.l3  0.086261   0.026155   3.298    0.00144 ** 
dlog_pib.l3     -0.313572   0.108659  -2.886    0.00499 ** 
dlog_receita.l4 -0.004708   0.037205  -0.127    0.89961    
dlog_despesa.l4  0.099483   0.022680   4.386 0.00003400 ***
dlog_pib.l4      0.540161   0.111411   4.848 0.00000582 ***
const            0.003817   0.003232   1.181    0.24094    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1


Residual standard error: 0.02212 on 82 degrees of freedom
Multiple R-Squared: 0.7231, Adjusted R-squared: 0.6826 
F-statistic: 17.84 on 12 and 82 DF,  p-value: < 0.00000000000000022 



Covariance matrix of residuals:
             dlog_receita dlog_despesa   dlog_pib
dlog_receita     0.007209   -0.0022495  0.0009440
dlog_despesa    -0.002249    0.0100162 -0.0003774
dlog_pib         0.000944   -0.0003774  0.0004892

Correlation matrix of residuals:
             dlog_receita dlog_despesa dlog_pib
dlog_receita       1.0000      -0.2647   0.5027
dlog_despesa      -0.2647       1.0000  -0.1705
dlog_pib           0.5027      -0.1705   1.0000
#Causalidade de Granger
causality(var_diff, cause = "dlog_receita")
$Granger

    Granger causality H0: dlog_receita do not Granger-cause dlog_despesa
    dlog_pib

data:  VAR object var_diff
F-Test = 2.1873, df1 = 8, df2 = 246, p-value = 0.029


$Instant

    H0: No instantaneous causality between: dlog_receita and dlog_despesa
    dlog_pib

data:  VAR object var_diff
Chi-squared = 21.111, df = 2, p-value = 0.00002605
causality(var_diff, cause = "dlog_despesa")
$Granger

    Granger causality H0: dlog_despesa do not Granger-cause dlog_receita
    dlog_pib

data:  VAR object var_diff
F-Test = 3.6884, df1 = 8, df2 = 246, p-value = 0.0004372


$Instant

    H0: No instantaneous causality between: dlog_despesa and dlog_receita
    dlog_pib

data:  VAR object var_diff
Chi-squared = 6.377, df = 2, p-value = 0.04123
causality(var_diff, cause = "dlog_pib")
$Granger

    Granger causality H0: dlog_pib do not Granger-cause dlog_receita
    dlog_despesa

data:  VAR object var_diff
F-Test = 5.0876, df1 = 8, df2 = 246, p-value = 0.000007164


$Instant

    H0: No instantaneous causality between: dlog_pib and dlog_receita
    dlog_despesa

data:  VAR object var_diff
Chi-squared = 19.255, df = 2, p-value = 0.00006588
#Impulso-resposta

#Ordem de Granger
irf_diff1 <- irf(var_diff,
                impulse  = c("dlog_pib", "dlog_despesa", "dlog_receita"),
                response = c("dlog_pib", "dlog_despesa", "dlog_receita"),
                n.ahead = 12,
                boot = TRUE)
plot(irf_diff1)

irf_diff_granger_pib <- irf(var_diff,
                 impulse  = c("dlog_pib", "dlog_despesa", "dlog_receita"),
                 response = c("dlog_pib"),
                 n.ahead = 12,
                 boot = TRUE)
plot(irf_diff_granger_pib)

irf_diff_granger_despesa <- irf(var_diff,
                            impulse  = c("dlog_pib", "dlog_despesa", "dlog_receita"),
                            response = c("dlog_despesa"),
                            n.ahead = 12,
                            boot = TRUE)
plot(irf_diff_granger_despesa)

irf_diff_granger_receita <- irf(var_diff,
                            impulse  = c("dlog_pib", "dlog_despesa", "dlog_receita"),
                            response = c("dlog_receita"),
                            n.ahead = 12,
                            boot = TRUE)
plot(irf_diff_granger_receita)

#Decomposição da variância
fevd_diff <- fevd(var_diff, n.ahead = 12)
plot(fevd_diff)

#Testes de robustez

#Autocorrelação dos resíduos
serial.test(var_diff, lags.pt = 16, type = "PT.asymptotic")

    Portmanteau Test (asymptotic)

data:  Residuals of VAR object var_diff
Chi-squared = 112.02, df = 108, p-value = 0.3761
#Normalidade dos resíduos
normality.test(var_diff)
$JB

    JB-Test (multivariate)

data:  Residuals of VAR object var_diff
Chi-squared = 486.54, df = 6, p-value < 0.00000000000000022


$Skewness

    Skewness only (multivariate)

data:  Residuals of VAR object var_diff
Chi-squared = 36.055, df = 3, p-value = 0.0000000729


$Kurtosis

    Kurtosis only (multivariate)

data:  Residuals of VAR object var_diff
Chi-squared = 450.49, df = 3, p-value < 0.00000000000000022
#Heterocedasticidade (ARCH)
arch.test(var_diff, lags.multi = 12)

    ARCH (multivariate)

data:  Residuals of VAR object var_diff
Chi-squared = 457.67, df = 432, p-value = 0.1897
## Estabilidade do VAR
roots(var_diff) 
 [1] 0.9800989 0.9642764 0.9642764 0.7820165 0.7381440 0.7381440 0.6980939
 [8] 0.6980939 0.6949913 0.5122106 0.5122106 0.1030124
plot(var_diff) 

stab_diff <- stability(var_diff, type = "OLS-CUSUM")
plot(stab_diff)

VECM

#Estimar VECM
vec_model <- cajorls(johansen_test, r = 1)
summary(vec_model$rlm)
Response receita.d :

Call:
lm(formula = receita.d ~ ect1 + receita.dl1 + despesa.dl1 + pib.dl1 + 
    receita.dl2 + despesa.dl2 + pib.dl2 + receita.dl3 + despesa.dl3 + 
    pib.dl3 + receita.dl4 + despesa.dl4 + pib.dl4 - 1, data = data.mat)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.41493 -0.03333  0.00486  0.03632  0.31445 

Coefficients:
            Estimate Std. Error t value     Pr(>|t|)    
ect1        -0.59662    0.23780  -2.509     0.014077 *  
receita.dl1 -0.83303    0.13514  -6.164 0.0000000253 ***
despesa.dl1 -0.05734    0.08887  -0.645     0.520563    
pib.dl1      1.47774    0.38173   3.871     0.000217 ***
receita.dl2 -1.13439    0.18383  -6.171 0.0000000246 ***
despesa.dl2 -0.10454    0.10261  -1.019     0.311284    
pib.dl2      2.19637    0.44793   4.903 0.0000046934 ***
receita.dl3 -0.80589    0.22967  -3.509     0.000733 ***
despesa.dl3 -0.15982    0.11301  -1.414     0.161106    
pib.dl3      0.97301    0.53141   1.831     0.070733 .  
receita.dl4 -0.71263    0.24936  -2.858     0.005405 ** 
despesa.dl4 -0.13597    0.13034  -1.043     0.299910    
pib.dl4      1.94878    0.56831   3.429     0.000950 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.08182 on 82 degrees of freedom
Multiple R-squared:  0.6037,    Adjusted R-squared:  0.5409 
F-statistic: 9.608 on 13 and 82 DF,  p-value: 0.000000000008793


Response despesa.d :

Call:
lm(formula = despesa.d ~ ect1 + receita.dl1 + despesa.dl1 + pib.dl1 + 
    receita.dl2 + despesa.dl2 + pib.dl2 + receita.dl3 + despesa.dl3 + 
    pib.dl3 + receita.dl4 + despesa.dl4 + pib.dl4 - 1, data = data.mat)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.19459 -0.02837 -0.00109  0.04161  0.52861 

Coefficients:
            Estimate Std. Error t value  Pr(>|t|)    
ect1        -0.31430    0.29120  -1.079   0.28360    
receita.dl1 -0.44549    0.16549  -2.692   0.00861 ** 
despesa.dl1 -0.49446    0.10883  -4.544 0.0000188 ***
pib.dl1      1.17612    0.46746   2.516   0.01382 *  
receita.dl2 -0.24050    0.22512  -1.068   0.28850    
despesa.dl2 -0.38040    0.12566  -3.027   0.00330 ** 
pib.dl2      0.63509    0.54853   1.158   0.25031    
receita.dl3 -0.16134    0.28125  -0.574   0.56777    
despesa.dl3 -0.41312    0.13840  -2.985   0.00374 ** 
pib.dl3      0.04492    0.65076   0.069   0.94514    
receita.dl4 -0.49002    0.30536  -1.605   0.11240    
despesa.dl4  0.01225    0.15961   0.077   0.93899    
pib.dl4      1.88113    0.69594   2.703   0.00835 ** 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.1002 on 82 degrees of freedom
Multiple R-squared:  0.6659,    Adjusted R-squared:  0.6129 
F-statistic: 12.57 on 13 and 82 DF,  p-value: 0.00000000000001346


Response pib.d :

Call:
lm(formula = pib.d ~ ect1 + receita.dl1 + despesa.dl1 + pib.dl1 + 
    receita.dl2 + despesa.dl2 + pib.dl2 + receita.dl3 + despesa.dl3 + 
    pib.dl3 + receita.dl4 + despesa.dl4 + pib.dl4 - 1, data = data.mat)

Residuals:
      Min        1Q    Median        3Q       Max 
-0.076563 -0.011763  0.000682  0.014586  0.048731 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
ect1         0.08269    0.06418   1.288 0.201206    
receita.dl1  0.01256    0.03647   0.344 0.731502    
despesa.dl1  0.02455    0.02398   1.024 0.309046    
pib.dl1     -0.06218    0.10302  -0.604 0.547781    
receita.dl2  0.01298    0.04961   0.262 0.794261    
despesa.dl2  0.06202    0.02769   2.239 0.027838 *  
pib.dl2     -0.05018    0.12089  -0.415 0.679157    
receita.dl3  0.09074    0.06198   1.464 0.147058    
despesa.dl3  0.11744    0.03050   3.850 0.000233 ***
pib.dl3     -0.40328    0.14342  -2.812 0.006160 ** 
receita.dl4  0.06334    0.06730   0.941 0.349387    
despesa.dl4  0.14133    0.03518   4.018 0.000130 ***
pib.dl4      0.44663    0.15338   2.912 0.004625 ** 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.02208 on 82 degrees of freedom
Multiple R-squared:  0.7382,    Adjusted R-squared:  0.6966 
F-statistic: 17.78 on 13 and 82 DF,  p-value: < 0.00000000000000022
#Converter VECM para VAR em nível (para IRF e FEVD)
vec_var <- vars::vec2var(johansen_test, r = 1)
vec_var

Coefficient matrix of lagged endogenous variables:

A1:
         receita.l1  despesa.l1    pib.l1
receita  0.16696533 -0.05734175 1.4777373
despesa -0.44548540  0.50554270 1.1761172
pib      0.01255772  0.02454935 0.9378164


A2:
          receita.l2  despesa.l2      pib.l2
receita -0.301360068 -0.04720220  0.71862817
despesa  0.204981781  0.11405375 -0.54102813
pib      0.000422892  0.03746762  0.01200234


A3:
        receita.l3  despesa.l3     pib.l3
receita 0.32850150 -0.05527445 -1.2233559
despesa 0.07916635 -0.03271469 -0.5901707
pib     0.07775439  0.05542073 -0.3530975


A4:
         receita.l4 despesa.l4    pib.l4
receita  0.09326295 0.02384866 0.9757664
despesa -0.32868297 0.42537280 1.8362099
pib     -0.02739569 0.02389133 0.8499133


A5:
        receita.l5  despesa.l5     pib.l5
receita 0.11600647 -0.19226930 -0.9320369
despesa 0.17571547 -0.18517272 -1.3455043
pib     0.01935162 -0.09583571 -0.5875527


Coefficient matrix of deterministic regressor(s).

          constant
receita -2.9371076
despesa -1.5472847
pib      0.4070775
#Impulso-resposta

#Ordem da literatura
irf_vec_lit <- irf(vec2var(ca.jo(dados_johansen[, c("despesa", "pib", "receita")],
                                             type = "trace", ecdet = "const", K = 5), r = 1),
                               impulse = c("despesa", "pib", "receita"),
                               response = c("despesa", "pib", "receita"),
                               n.ahead = 12, boot = TRUE)
plot(irf_vec_lit)

irf_vec_lit_despesa <- irf(vec2var(ca.jo(dados_johansen[, c("despesa", "pib", "receita")],
                                        type = "trace", ecdet = "const", K = 5), r = 1),
                          impulse = c("despesa", "pib", "receita"),
                          response = c("despesa"),
                          n.ahead = 12, boot = TRUE)
plot(irf_vec_lit_despesa)

irf_vec_lit_pib <- irf(vec2var(ca.jo(dados_johansen[, c("despesa", "pib", "receita")],
                                             type = "trace", ecdet = "const", K = 5), r = 1),
                               impulse = c("despesa", "pib", "receita"),
                               response = c("pib"),
                               n.ahead = 12, boot = TRUE)
plot(irf_vec_lit_pib)

irf_vec_lit_receita <- irf(vec2var(ca.jo(dados_johansen[, c("despesa", "pib", "receita")],
                                             type = "trace", ecdet = "const", K = 5), r = 1),
                               impulse = c("despesa", "pib", "receita"),
                               response = c("receita"),
                               n.ahead = 12, boot = TRUE)
plot(irf_vec_lit_receita)

#Decomposição da variância (FEVD)
fevd_result <- fevd(vec_var, n.ahead = 12)  # 12 períodos à frente

# Ver decomposição da receita
fevd_result$receita
        receita     despesa        pib
 [1,] 1.0000000 0.000000000 0.00000000
 [2,] 0.9131060 0.002086924 0.08480703
 [3,] 0.7615581 0.002468901 0.23597300
 [4,] 0.7695333 0.003249050 0.22721765
 [5,] 0.7416532 0.032993989 0.22535278
 [6,] 0.6901545 0.034824783 0.27502068
 [7,] 0.6379051 0.030564433 0.33153045
 [8,] 0.6395510 0.030663967 0.32978502
 [9,] 0.6069127 0.053220774 0.33986652
[10,] 0.5744588 0.062896747 0.36264447
[11,] 0.5517966 0.062264113 0.38593928
[12,] 0.5533826 0.063003055 0.38361436
# Ver decomposição da despesa
fevd_result$despesa
         receita   despesa        pib
 [1,] 0.09473532 0.9052647 0.00000000
 [2,] 0.16437700 0.8034423 0.03218071
 [3,] 0.15594724 0.8106071 0.03344564
 [4,] 0.14805741 0.8183810 0.03356157
 [5,] 0.14693472 0.7914091 0.06165613
 [6,] 0.14788546 0.7691868 0.08292770
 [7,] 0.13787485 0.7783083 0.08381690
 [8,] 0.13281236 0.7900848 0.07710285
 [9,] 0.12537893 0.7824021 0.09221895
[10,] 0.12259401 0.7725011 0.10490487
[11,] 0.11617521 0.7759294 0.10789536
[12,] 0.11339786 0.7859123 0.10068984
# Ver decomposição do PIB
fevd_result$pib
        receita     despesa       pib
 [1,] 0.3152796 0.001432746 0.6832877
 [2,] 0.3168591 0.011222522 0.6719184
 [3,] 0.2823710 0.050222016 0.6674070
 [4,] 0.2515834 0.164138440 0.5842782
 [5,] 0.1972906 0.247851555 0.5548579
 [6,] 0.1848282 0.251010020 0.5641618
 [7,] 0.1868491 0.254376752 0.5587742
 [8,] 0.1794374 0.294612663 0.5259499
 [9,] 0.1551490 0.332961489 0.5118895
[10,] 0.1480732 0.340859881 0.5110669
[11,] 0.1501148 0.344551130 0.5053340
[12,] 0.1475010 0.363826118 0.4886729
# Gráfico de todos
plot(fevd_result)

#Testes de robustez / diagnóstico

# Autocorrelação dos resíduos (Portmanteau)
serial.test(vec_var, lags.pt = 16, type = "PT.asymptotic")

    Portmanteau Test (asymptotic)

data:  Residuals of VAR object vec_var
Chi-squared = 114.43, df = 102, p-value = 0.1886
# Normalidade dos resíduos
normality.test(vec_var)
$JB

    JB-Test (multivariate)

data:  Residuals of VAR object vec_var
Chi-squared = 519.21, df = 6, p-value < 0.00000000000000022


$Skewness

    Skewness only (multivariate)

data:  Residuals of VAR object vec_var
Chi-squared = 34.049, df = 3, p-value = 0.0000001934


$Kurtosis

    Kurtosis only (multivariate)

data:  Residuals of VAR object vec_var
Chi-squared = 485.16, df = 3, p-value < 0.00000000000000022
# Heterocedasticidade (ARCH)
arch.test(vec_var, lags.multi = 12)

    ARCH (multivariate)

data:  Residuals of VAR object vec_var
Chi-squared = 454.11, df = 432, p-value = 0.223

O MODELO COM 5 VARIÁVEIS

TESTE DE COINTEGRAÇÃO

# Rodar o teste de cointegração de Johansen
teste_johansen_5 <- ca.jo(dados_johansen_5, type = "trace", ecdet = "const", K = 5)
summary(teste_johansen_5)

###################### 
# Johansen-Procedure # 
###################### 

Test type: trace statistic , without linear trend and constant in cointegration 

Eigenvalues (lambda):
[1]  0.268777316409723798785  0.204049118611524082922  0.130496797562932975723
[4]  0.114261948948984323748  0.060058937493336322921 -0.000000000000000721645

Values of teststatistic and critical values of test:

          test 10pct  5pct  1pct
r <= 4 |  5.88  7.52  9.24 12.97
r <= 3 | 17.41 17.85 19.96 24.60
r <= 2 | 30.70 32.00 34.91 41.07
r <= 1 | 52.38 49.65 53.12 60.16
r = 0  | 82.11 71.86 76.07 84.45

Eigenvectors, normalised to first column:
(These are the cointegration relations)

             receita.l5   despesa.l5       pib.l5     ipca.l5    selic.l5
receita.l5  1.000000000  1.000000000  1.000000000  1.00000000  1.00000000
despesa.l5  0.798030723 -1.058987539 -0.079624756  0.59851098 -1.08974040
pib.l5     -1.929853464 -0.096327502 -0.798304625 -2.48862790  0.61924739
ipca.l5    -0.040706997 -0.743726944  0.450414829  0.16859545 -0.14846848
selic.l5    0.008052631 -0.006794895 -0.004960134 -0.04761605 -0.02308534
constant    4.944086611  2.767151480 -0.345891584 16.22686299 -7.66891921
               constant
receita.l5  1.000000000
despesa.l5  0.069627634
pib.l5     -1.602252551
ipca.l5     0.209427010
selic.l5   -0.007679112
constant    9.439294319

Weights W:
(This is the loading matrix)

           receita.l5   despesa.l5      pib.l5     ipca.l5      selic.l5
receita.d -0.41036858 -0.110511371 -0.11718394  0.03363406 -0.0644799988
despesa.d -0.44463974  0.275919366  0.04668032 -0.01120790 -0.0001314674
pib.d      0.04868564 -0.007803817  0.01642280  0.03601963 -0.0150124890
ipca.d    -0.65246367 -0.077622942 -1.08765718  0.18108836  0.1397568601
selic.d   -6.15201205 -1.003526515  0.34469619  0.70607852  0.3411914359
                        constant
receita.d -0.0000000000003465874
despesa.d -0.0000000000011653062
pib.d      0.0000000000002045444
ipca.d    -0.0000000000007741372
selic.d   -0.0000000000081403305
teste_johansen_5 <- ca.jo(dados_johansen_5, type = "eigen", ecdet = "const", K = 5)
summary(teste_johansen_5)

###################### 
# Johansen-Procedure # 
###################### 

Test type: maximal eigenvalue statistic (lambda max) , without linear trend and constant in cointegration 

Eigenvalues (lambda):
[1]  0.268777316409723798785  0.204049118611524082922  0.130496797562932975723
[4]  0.114261948948984323748  0.060058937493336322921 -0.000000000000000721645

Values of teststatistic and critical values of test:

          test 10pct  5pct  1pct
r <= 4 |  5.88  7.52  9.24 12.97
r <= 3 | 11.53 13.75 15.67 20.20
r <= 2 | 13.28 19.77 22.00 26.81
r <= 1 | 21.68 25.56 28.14 33.24
r = 0  | 29.74 31.66 34.40 39.79

Eigenvectors, normalised to first column:
(These are the cointegration relations)

             receita.l5   despesa.l5       pib.l5     ipca.l5    selic.l5
receita.l5  1.000000000  1.000000000  1.000000000  1.00000000  1.00000000
despesa.l5  0.798030723 -1.058987539 -0.079624756  0.59851098 -1.08974040
pib.l5     -1.929853464 -0.096327502 -0.798304625 -2.48862790  0.61924739
ipca.l5    -0.040706997 -0.743726944  0.450414829  0.16859545 -0.14846848
selic.l5    0.008052631 -0.006794895 -0.004960134 -0.04761605 -0.02308534
constant    4.944086611  2.767151480 -0.345891584 16.22686299 -7.66891921
               constant
receita.l5  1.000000000
despesa.l5  0.069627634
pib.l5     -1.602252551
ipca.l5     0.209427010
selic.l5   -0.007679112
constant    9.439294319

Weights W:
(This is the loading matrix)

           receita.l5   despesa.l5      pib.l5     ipca.l5      selic.l5
receita.d -0.41036858 -0.110511371 -0.11718394  0.03363406 -0.0644799988
despesa.d -0.44463974  0.275919366  0.04668032 -0.01120790 -0.0001314674
pib.d      0.04868564 -0.007803817  0.01642280  0.03601963 -0.0150124890
ipca.d    -0.65246367 -0.077622942 -1.08765718  0.18108836  0.1397568601
selic.d   -6.15201205 -1.003526515  0.34469619  0.70607852  0.3411914359
                        constant
receita.d -0.0000000000003465874
despesa.d -0.0000000000011653062
pib.d      0.0000000000002045444
ipca.d    -0.0000000000007741372
selic.d   -0.0000000000081403305

VAR PADRÃO

#Seleção do número de defasagens
lagselect <- VARselect(dados_var_5, lag.max = 8, type = "const")
lagselect
$selection
AIC(n)  HQ(n)  SC(n) FPE(n) 
     8      4      2      5 

$criteria
                        1                   2                   3
AIC(n) -18.68465966343689 -19.374324416742894 -19.754008124816821
HQ(n)  -18.35276339052730 -18.765847916408664 -18.868951397057941
SC(n)  -17.86233730135568 -17.866733419594009 -17.561148492600264
FPE(n)   0.00000000768702   0.000000003875553   0.000000002683486
                         4                   5                   6
AIC(n) -20.285164227536072 -20.555869007867589 -20.462622385529841
HQ(n)  -19.123527272352547 -19.117651825259408 -18.747824975497014
SC(n)  -17.407035960251843 -16.992472105515681 -16.213956848110261
FPE(n)   0.000000001614512   0.000000001279487   0.000000001488294
                         7                   8
AIC(n) -20.607248447621561 -20.781838954707720
HQ(n)  -18.615870810164086 -18.513881089825592
SC(n)  -15.673314275134310 -15.162636147152790
FPE(n)   0.000000001399852   0.000000001319856
#Estimação do VAR
var_model_5 <- VAR(dados_var_5, p = 2, type = "const")
summary(var_model_5)

VAR Estimation Results:
========================= 
Endogenous variables: log_receita, log_despesa, log_pib, ipca, selic 
Deterministic variables: const 
Sample size: 98 
Log Likelihood: 294.154 
Roots of the characteristic polynomial:
0.9842 0.8332 0.8332 0.6567 0.6567 0.4192 0.2605 0.2429 0.1891 0.1891
Call:
VAR(y = dados_var_5, p = 2, type = "const")


Estimation results for equation log_receita: 
============================================ 
log_receita = log_receita.l1 + log_despesa.l1 + log_pib.l1 + ipca.l1 + selic.l1 + log_receita.l2 + log_despesa.l2 + log_pib.l2 + ipca.l2 + selic.l2 + const 

                Estimate Std. Error t value Pr(>|t|)  
log_receita.l1  0.118350   0.129712   0.912   0.3641  
log_despesa.l1 -0.137896   0.096327  -1.432   0.1559  
log_pib.l1      0.938828   0.366008   2.565   0.0120 *
ipca.l1        -0.039079   0.037356  -1.046   0.2984  
selic.l1        0.009675   0.010626   0.911   0.3650  
log_receita.l2 -0.147224   0.148402  -0.992   0.3239  
log_despesa.l2 -0.087620   0.091947  -0.953   0.3433  
log_pib.l2      0.318187   0.420815   0.756   0.4516  
ipca.l2        -0.050461   0.038857  -1.299   0.1975  
selic.l2       -0.011150   0.010180  -1.095   0.2764  
const          -2.120112   1.186222  -1.787   0.0774 .
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1


Residual standard error: 0.09569 on 87 degrees of freedom
Multiple R-Squared: 0.8883, Adjusted R-squared: 0.8754 
F-statistic: 69.15 on 10 and 87 DF,  p-value: < 0.00000000000000022 


Estimation results for equation log_despesa: 
============================================ 
log_despesa = log_receita.l1 + log_despesa.l1 + log_pib.l1 + ipca.l1 + selic.l1 + log_receita.l2 + log_despesa.l2 + log_pib.l2 + ipca.l2 + selic.l2 + const 

                Estimate Std. Error t value   Pr(>|t|)    
log_receita.l1 -0.735329   0.150064  -4.900 0.00000439 ***
log_despesa.l1  0.088856   0.111441   0.797   0.427422    
log_pib.l1      1.396930   0.423436   3.299   0.001407 ** 
ipca.l1        -0.107495   0.043218  -2.487   0.014779 *  
selic.l1       -0.002293   0.012293  -0.187   0.852451    
log_receita.l2  0.134132   0.171687   0.781   0.436771    
log_despesa.l2 -0.013264   0.106374  -0.125   0.901058    
log_pib.l2      0.288323   0.486842   0.592   0.555231    
ipca.l2         0.017640   0.044954   0.392   0.695722    
selic.l2       -0.003361   0.011778  -0.285   0.776062    
const          -4.822601   1.372344  -3.514   0.000703 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1


Residual standard error: 0.1107 on 87 degrees of freedom
Multiple R-Squared: 0.9152, Adjusted R-squared: 0.9055 
F-statistic: 93.94 on 10 and 87 DF,  p-value: < 0.00000000000000022 


Estimation results for equation log_pib: 
======================================== 
log_pib = log_receita.l1 + log_despesa.l1 + log_pib.l1 + ipca.l1 + selic.l1 + log_receita.l2 + log_despesa.l2 + log_pib.l2 + ipca.l2 + selic.l2 + const 

                 Estimate Std. Error t value       Pr(>|t|)    
log_receita.l1 -0.1177701  0.0462951  -2.544        0.01273 *  
log_despesa.l1 -0.0904308  0.0343796  -2.630        0.01009 *  
log_pib.l1      0.9387386  0.1306307   7.186 0.000000000216 ***
ipca.l1        -0.0364022  0.0133327  -2.730        0.00766 ** 
selic.l1       -0.0016367  0.0037924  -0.432        0.66712    
log_receita.l2  0.0088617  0.0529657   0.167        0.86751    
log_despesa.l2  0.0353934  0.0328167   1.079        0.28378    
log_pib.l2      0.1932880  0.1501916   1.287        0.20153    
ipca.l2         0.0179467  0.0138683   1.294        0.19906    
selic.l2       -0.0003035  0.0036335  -0.084        0.93362    
const           0.2246433  0.4233708   0.531        0.59704    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1


Residual standard error: 0.03415 on 87 degrees of freedom
Multiple R-Squared: 0.9843, Adjusted R-squared: 0.9825 
F-statistic: 546.2 on 10 and 87 DF,  p-value: < 0.00000000000000022 


Estimation results for equation ipca: 
===================================== 
ipca = log_receita.l1 + log_despesa.l1 + log_pib.l1 + ipca.l1 + selic.l1 + log_receita.l2 + log_despesa.l2 + log_pib.l2 + ipca.l2 + selic.l2 + const 

               Estimate Std. Error t value Pr(>|t|)    
log_receita.l1 -0.24570    0.38551  -0.637 0.525567    
log_despesa.l1 -0.11440    0.28628  -0.400 0.690434    
log_pib.l1      0.54789    1.08778   0.504 0.615764    
ipca.l1         0.38093    0.11102   3.431 0.000922 ***
selic.l1        0.08057    0.03158   2.551 0.012478 *  
log_receita.l2 -1.13359    0.44105  -2.570 0.011866 *  
log_despesa.l2 -0.23730    0.27327  -0.868 0.387582    
log_pib.l2      1.04358    1.25067   0.834 0.406332    
ipca.l2        -0.33430    0.11548  -2.895 0.004796 ** 
selic.l2       -0.08174    0.03026  -2.701 0.008298 ** 
const          -0.45391    3.52547  -0.129 0.897851    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1


Residual standard error: 0.2844 on 87 degrees of freedom
Multiple R-Squared: 0.3548, Adjusted R-squared: 0.2806 
F-statistic: 4.784 on 10 and 87 DF,  p-value: 0.00001844 


Estimation results for equation selic: 
====================================== 
selic = log_receita.l1 + log_despesa.l1 + log_pib.l1 + ipca.l1 + selic.l1 + log_receita.l2 + log_despesa.l2 + log_pib.l2 + ipca.l2 + selic.l2 + const 

               Estimate Std. Error t value             Pr(>|t|)    
log_receita.l1 -0.26732    1.09532  -0.244               0.8078    
log_despesa.l1 -0.88200    0.81340  -1.084               0.2812    
log_pib.l1      2.19449    3.09065   0.710               0.4796    
ipca.l1         1.38638    0.31544   4.395      0.0000311546132 ***
selic.l1        1.52986    0.08973  17.050 < 0.0000000000000002 ***
log_receita.l2 -0.69784    1.25314  -0.557               0.5790    
log_despesa.l2 -1.06421    0.77642  -1.371               0.1740    
log_pib.l2      0.12764    3.55345   0.036               0.9714    
ipca.l2        -0.63159    0.32812  -1.925               0.0575 .  
selic.l2       -0.64710    0.08597  -7.527      0.0000000000447 ***
const           4.52274   10.01672   0.452               0.6527    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1


Residual standard error: 0.808 on 87 degrees of freedom
Multiple R-Squared: 0.9761, Adjusted R-squared: 0.9734 
F-statistic: 355.4 on 10 and 87 DF,  p-value: < 0.00000000000000022 



Covariance matrix of residuals:
            log_receita log_despesa    log_pib      ipca      selic
log_receita   0.0091570   0.0003319  0.0019675  0.001232  0.0097744
log_despesa   0.0003319   0.0122560  0.0010925 -0.004420 -0.0071154
log_pib       0.0019675   0.0010925  0.0011664 -0.001595 -0.0007418
ipca          0.0012318  -0.0044202 -0.0015952  0.080883  0.0864051
selic         0.0097744  -0.0071154 -0.0007418  0.086405  0.6529399

Correlation matrix of residuals:
            log_receita log_despesa  log_pib     ipca    selic
log_receita     1.00000     0.03133  0.60201  0.04526  0.12641
log_despesa     0.03133     1.00000  0.28894 -0.14039 -0.07954
log_pib         0.60201     0.28894  1.00000 -0.16423 -0.02688
ipca            0.04526    -0.14039 -0.16423  1.00000  0.37599
selic           0.12641    -0.07954 -0.02688  0.37599  1.00000
#Causalidade de Granger
causality(var_model_5, cause = "log_receita")
$Granger

    Granger causality H0: log_receita do not Granger-cause log_despesa
    log_pib ipca selic

data:  VAR object var_model_5
F-Test = 4.6971, df1 = 8, df2 = 435, p-value = 0.00001555


$Instant

    H0: No instantaneous causality between: log_receita and log_despesa
    log_pib ipca selic

data:  VAR object var_model_5
Chi-squared = 28.496, df = 4, p-value = 0.000009894
causality(var_model_5, cause = "log_despesa")
$Granger

    Granger causality H0: log_despesa do not Granger-cause log_receita
    log_pib ipca selic

data:  VAR object var_model_5
F-Test = 1.8215, df1 = 8, df2 = 435, p-value = 0.07119


$Instant

    H0: No instantaneous causality between: log_despesa and log_receita
    log_pib ipca selic

data:  VAR object var_model_5
Chi-squared = 10.476, df = 4, p-value = 0.03314
causality(var_model_5, cause = "log_pib")
$Granger

    Granger causality H0: log_pib do not Granger-cause log_receita
    log_despesa ipca selic

data:  VAR object var_model_5
F-Test = 7.7477, df1 = 8, df2 = 435, p-value = 0.0000000009856


$Instant

    H0: No instantaneous causality between: log_pib and log_receita
    log_despesa ipca selic

data:  VAR object var_model_5
Chi-squared = 30.882, df = 4, p-value = 0.000003236
causality(var_model_5, cause = "ipca")
$Granger

    Granger causality H0: ipca do not Granger-cause log_receita log_despesa
    log_pib selic

data:  VAR object var_model_5
F-Test = 4.6203, df1 = 8, df2 = 435, p-value = 0.00001977


$Instant

    H0: No instantaneous causality between: ipca and log_receita
    log_despesa log_pib selic

data:  VAR object var_model_5
Chi-squared = 15.024, df = 4, p-value = 0.004653
causality(var_model_5, cause = "selic")
$Granger

    Granger causality H0: selic do not Granger-cause log_receita
    log_despesa log_pib ipca

data:  VAR object var_model_5
F-Test = 1.6795, df1 = 8, df2 = 435, p-value = 0.1012


$Instant

    H0: No instantaneous causality between: selic and log_receita
    log_despesa log_pib ipca

data:  VAR object var_model_5
Chi-squared = 13.183, df = 4, p-value = 0.01042
#Funções de Impulso-Resposta (IRF)

#Ordem de Granger
irf_var_5v <- irf(var_model_5,
                        impulse = c("log_pib", "log_receita", "ipca", "log_despesa", "selic"),
                        response = c("log_pib", "log_receita", "ipca", "log_despesa", "selic"),
                        n.ahead = 12,
                        boot = TRUE)
plot(irf_var_5v)

irf_var_5receita <- irf(var_model_5,
                  impulse = c("log_pib", "log_receita", "ipca", "log_despesa", "selic"),
                  response = c("log_receita"),
                  n.ahead = 12,
                  boot = TRUE)
plot(irf_var_5receita)

irf_var_5despesa <- irf(var_model_5,
                        impulse = c("log_pib", "log_receita", "ipca", "log_despesa", "selic"),
                        response = c("log_despesa"),
                        n.ahead = 12,
                        boot = TRUE)
plot(irf_var_5despesa)

irf_var_5vpib <- irf(var_model_5,
                  impulse = c("log_pib", "log_receita", "ipca", "log_despesa", "selic"),
                  response = c("log_pib"),
                  n.ahead = 12,
                  boot = TRUE)
plot(irf_var_5vpib)

irf_var_5vselic <- irf(var_model_5,
                      impulse = c("log_pib", "log_receita", "ipca", "log_despesa", "selic"),
                      response = c("selic"),
                      n.ahead = 12,
                      boot = TRUE)
plot(irf_var_5vselic)

irf_var_5ipca <- irf(var_model_5,
                        impulse = c("log_pib", "log_receita", "ipca", "log_despesa", "selic"),
                        response = c("ipca"),
                        n.ahead = 12,
                        boot = TRUE)
plot(irf_var_5ipca)

#Decomposição da variância (FEVD)
fevd_var_5 <- fevd(var_model_5, n.ahead = 12)
plot(fevd_var_5)

#Testes de robustez / Diagnóstico

#Teste de autocorrelação dos resíduos (LM test)
serial.test(var_model_5, lags.pt = 16, type = "PT.asymptotic")

    Portmanteau Test (asymptotic)

data:  Residuals of VAR object var_model_5
Chi-squared = 456.43, df = 350, p-value = 0.0001081
#Teste de normalidade dos resíduos
normality.test(var_model_5)
$JB

    JB-Test (multivariate)

data:  Residuals of VAR object var_model_5
Chi-squared = 579.26, df = 10, p-value < 0.00000000000000022


$Skewness

    Skewness only (multivariate)

data:  Residuals of VAR object var_model_5
Chi-squared = 65.158, df = 5, p-value = 0.000000000001039


$Kurtosis

    Kurtosis only (multivariate)

data:  Residuals of VAR object var_model_5
Chi-squared = 514.1, df = 5, p-value < 0.00000000000000022
## Teste de heterocedasticidade (ARCH LM test)
arch.test(var_model_5, lags.multi = 12)

    ARCH (multivariate)

data:  Residuals of VAR object var_model_5
Chi-squared = 1290, df = 2700, p-value = 1
#Estabilidade do modelo (roots dentro do círculo unitário)
roots(var_model_5) #estabilidade
 [1] 0.9841688 0.8331953 0.8331953 0.6567053 0.6567053 0.4191566 0.2605049
 [8] 0.2428698 0.1890992 0.1890992
plot(var_model_5) 

VAR EM 1° DIFERENÇA

# Seleção do número de defasagens
lagselect <- VARselect(na.omit(dados_diff_5v), lag.max = 8, type = "const")
lagselect
$selection
AIC(n)  HQ(n)  SC(n) FPE(n) 
     4      4      3      4 

$criteria
                        1                   2                   3
AIC(n) -18.22357976619848 -19.081019361451254 -19.806154130087286
HQ(n)  -17.88963182336426 -18.468781466255180 -18.915626282529363
SC(n)  -17.39582388492919 -17.563466912457553 -17.598805113369178
FPE(n)   0.00000001219034   0.000000005197544   0.000000002548675
                         4                   5                   6
AIC(n) -20.295780781474001 -20.031520850901057 -19.965407749542507
HQ(n)  -19.126962981554222 -18.584413098619429 -18.240010044899027
SC(n)  -17.398635197031481 -16.444578698734130 -15.688669029651169
FPE(n)   0.000000001599692   0.000000002167416   0.000000002458735
                         7                   8
AIC(n) -20.144142933520591 -20.222969335225727
HQ(n)  -18.140455276515262 -17.940991725858545
SC(n)  -15.177607645904844 -14.566637479885573
FPE(n)   0.000000002241955   0.000000002336599
# Estimação do VAR em diferenças
var_diff_5v <- VAR(na.omit(dados_diff_5v), p = 4, type = "const")
summary(var_diff_5v)

VAR Estimation Results:
========================= 
Endogenous variables: dlog_receita, dlog_despesa, dlog_pib, ipca, dselic 
Deterministic variables: const 
Sample size: 95 
Log Likelihood: 382.169 
Roots of the characteristic polynomial:
0.9824 0.9679 0.9679 0.784 0.7406 0.7406 0.7371 0.7371 0.7224 0.7212 0.6983 0.6983 0.571 0.571 0.5299 0.5299 0.3971 0.3971 0.2458 0.2458
Call:
VAR(y = na.omit(dados_diff_5v), p = 4, type = "const")


Estimation results for equation dlog_receita: 
============================================= 
dlog_receita = dlog_receita.l1 + dlog_despesa.l1 + dlog_pib.l1 + ipca.l1 + dselic.l1 + dlog_receita.l2 + dlog_despesa.l2 + dlog_pib.l2 + ipca.l2 + dselic.l2 + dlog_receita.l3 + dlog_despesa.l3 + dlog_pib.l3 + ipca.l3 + dselic.l3 + dlog_receita.l4 + dlog_despesa.l4 + dlog_pib.l4 + ipca.l4 + dselic.l4 + const 

                 Estimate Std. Error t value   Pr(>|t|)    
dlog_receita.l1 -0.712981   0.138559  -5.146 0.00000212 ***
dlog_despesa.l1 -0.024222   0.102885  -0.235    0.81453    
dlog_pib.l1      0.973324   0.423997   2.296    0.02453 *  
ipca.l1          0.052034   0.041838   1.244    0.21753    
dselic.l1       -0.007926   0.014206  -0.558    0.57858    
dlog_receita.l2 -0.876602   0.164934  -5.315 0.00000109 ***
dlog_despesa.l2 -0.011521   0.114882  -0.100    0.92039    
dlog_pib.l2      1.482761   0.435511   3.405    0.00107 ** 
ipca.l2         -0.018025   0.043211  -0.417    0.67778    
dselic.l2        0.002670   0.018478   0.145    0.88549    
dlog_receita.l3 -0.378197   0.177569  -2.130    0.03651 *  
dlog_despesa.l3  0.012982   0.110117   0.118    0.90648    
dlog_pib.l3     -0.030162   0.464860  -0.065    0.94844    
ipca.l3          0.031333   0.040817   0.768    0.44515    
dselic.l3       -0.008251   0.017647  -0.468    0.64148    
dlog_receita.l4 -0.175983   0.155066  -1.135    0.26008    
dlog_despesa.l4  0.119033   0.096049   1.239    0.21915    
dlog_pib.l4      0.868320   0.465207   1.867    0.06593 .  
ipca.l4         -0.001509   0.039843  -0.038    0.96989    
dselic.l4       -0.004053   0.011748  -0.345    0.73107    
const           -0.033025   0.036799  -0.897    0.37239    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1


Residual standard error: 0.08722 on 74 degrees of freedom
Multiple R-Squared: 0.5902, Adjusted R-squared: 0.4795 
F-statistic: 5.329 on 20 and 74 DF,  p-value: 0.0000000527 


Estimation results for equation dlog_despesa: 
============================================= 
dlog_despesa = dlog_receita.l1 + dlog_despesa.l1 + dlog_pib.l1 + ipca.l1 + dselic.l1 + dlog_receita.l2 + dlog_despesa.l2 + dlog_pib.l2 + ipca.l2 + dselic.l2 + dlog_receita.l3 + dlog_despesa.l3 + dlog_pib.l3 + ipca.l3 + dselic.l3 + dlog_receita.l4 + dlog_despesa.l4 + dlog_pib.l4 + ipca.l4 + dselic.l4 + const 

                 Estimate Std. Error t value  Pr(>|t|)    
dlog_receita.l1 -0.291955   0.159770  -1.827   0.07168 .  
dlog_despesa.l1 -0.548067   0.118635  -4.620 0.0000159 ***
dlog_pib.l1      0.335712   0.488903   0.687   0.49444    
ipca.l1         -0.095234   0.048243  -1.974   0.05211 .  
dselic.l1        0.010980   0.016381   0.670   0.50474    
dlog_receita.l2  0.001229   0.190182   0.006   0.99486    
dlog_despesa.l2 -0.429136   0.132468  -3.240   0.00179 ** 
dlog_pib.l2     -0.249739   0.502180  -0.497   0.62044    
ipca.l2         -0.001005   0.049826  -0.020   0.98396    
dselic.l2       -0.016465   0.021307  -0.773   0.44211    
dlog_receita.l3  0.069059   0.204752   0.337   0.73686    
dlog_despesa.l3 -0.429743   0.126974  -3.384   0.00114 ** 
dlog_pib.l3     -0.521188   0.536022  -0.972   0.33406    
ipca.l3         -0.023119   0.047066  -0.491   0.62474    
dselic.l3        0.012789   0.020348   0.629   0.53159    
dlog_receita.l4 -0.222700   0.178804  -1.246   0.21688    
dlog_despesa.l4  0.088131   0.110753   0.796   0.42872    
dlog_pib.l4      1.032448   0.536422   1.925   0.05811 .  
ipca.l4          0.046541   0.045942   1.013   0.31435    
dselic.l4       -0.007490   0.013547  -0.553   0.58200    
const            0.059821   0.042433   1.410   0.16279    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1


Residual standard error: 0.1006 on 74 degrees of freedom
Multiple R-Squared: 0.6947, Adjusted R-squared: 0.6122 
F-statistic:  8.42 on 20 and 74 DF,  p-value: 0.000000000003971 


Estimation results for equation dlog_pib: 
========================================= 
dlog_pib = dlog_receita.l1 + dlog_despesa.l1 + dlog_pib.l1 + ipca.l1 + dselic.l1 + dlog_receita.l2 + dlog_despesa.l2 + dlog_pib.l2 + ipca.l2 + dselic.l2 + dlog_receita.l3 + dlog_despesa.l3 + dlog_pib.l3 + ipca.l3 + dselic.l3 + dlog_receita.l4 + dlog_despesa.l4 + dlog_pib.l4 + ipca.l4 + dselic.l4 + const 

                  Estimate Std. Error t value Pr(>|t|)    
dlog_receita.l1  0.0086128  0.0352848   0.244 0.807835    
dlog_despesa.l1  0.0125753  0.0262002   0.480 0.632664    
dlog_pib.l1     -0.0605318  0.1079733  -0.561 0.576751    
ipca.l1          0.0007820  0.0106543   0.073 0.941687    
dselic.l1       -0.0038111  0.0036177  -1.053 0.295559    
dlog_receita.l2 -0.0116968  0.0420013  -0.278 0.781415    
dlog_despesa.l2  0.0406444  0.0292554   1.389 0.168909    
dlog_pib.l2      0.0104519  0.1109054   0.094 0.925172    
ipca.l2          0.0045418  0.0110039   0.413 0.680985    
dselic.l2       -0.0026800  0.0047056  -0.570 0.570715    
dlog_receita.l3  0.0405307  0.0452191   0.896 0.372990    
dlog_despesa.l3  0.0846063  0.0280419   3.017 0.003497 ** 
dlog_pib.l3     -0.2994908  0.1183793  -2.530 0.013536 *  
ipca.l3          0.0115358  0.0103944   1.110 0.270675    
dselic.l3        0.0010207  0.0044938   0.227 0.820948    
dlog_receita.l4  0.0014088  0.0394884   0.036 0.971636    
dlog_despesa.l4  0.0946050  0.0244595   3.868 0.000234 ***
dlog_pib.l4      0.5535664  0.1184677   4.673 0.000013 ***
ipca.l4         -0.0061897  0.0101463  -0.610 0.543699    
dselic.l4        0.0005584  0.0029918   0.187 0.852460    
const           -0.0023027  0.0093711  -0.246 0.806578    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1


Residual standard error: 0.02221 on 74 degrees of freedom
Multiple R-Squared: 0.748,  Adjusted R-squared: 0.6799 
F-statistic: 10.98 on 20 and 74 DF,  p-value: 0.000000000000006224 


Estimation results for equation ipca: 
===================================== 
ipca = dlog_receita.l1 + dlog_despesa.l1 + dlog_pib.l1 + ipca.l1 + dselic.l1 + dlog_receita.l2 + dlog_despesa.l2 + dlog_pib.l2 + ipca.l2 + dselic.l2 + dlog_receita.l3 + dlog_despesa.l3 + dlog_pib.l3 + ipca.l3 + dselic.l3 + dlog_receita.l4 + dlog_despesa.l4 + dlog_pib.l4 + ipca.l4 + dselic.l4 + const 

                Estimate Std. Error t value  Pr(>|t|)    
dlog_receita.l1 -0.09100    0.43622  -0.209    0.8353    
dlog_despesa.l1  0.13439    0.32390   0.415    0.6794    
dlog_pib.l1      0.80163    1.33484   0.601    0.5500    
ipca.l1          0.54223    0.13172   4.117 0.0000989 ***
dselic.l1        0.09136    0.04472   2.043    0.0446 *  
dlog_receita.l2 -0.83848    0.51925  -1.615    0.1106    
dlog_despesa.l2  0.00342    0.36168   0.009    0.9925    
dlog_pib.l2      3.30634    1.37109   2.411    0.0184 *  
ipca.l2         -0.25876    0.13604  -1.902    0.0611 .  
dselic.l2       -0.07395    0.05817  -1.271    0.2076    
dlog_receita.l3 -0.49639    0.55903  -0.888    0.3774    
dlog_despesa.l3  0.16050    0.34667   0.463    0.6447    
dlog_pib.l3      0.68115    1.46349   0.465    0.6430    
ipca.l3          0.33380    0.12850   2.598    0.0113 *  
dselic.l3       -0.02466    0.05556  -0.444    0.6584    
dlog_receita.l4  0.01235    0.48818   0.025    0.9799    
dlog_despesa.l4  0.32897    0.30239   1.088    0.2802    
dlog_pib.l4     -0.33848    1.46458  -0.231    0.8179    
ipca.l4          0.02313    0.12543   0.184    0.8542    
dselic.l4        0.02674    0.03699   0.723    0.4720    
const            0.14732    0.11585   1.272    0.2075    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1


Residual standard error: 0.2746 on 74 degrees of freedom
Multiple R-Squared: 0.4728, Adjusted R-squared: 0.3304 
F-statistic: 3.319 on 20 and 74 DF,  p-value: 0.0000897 


Estimation results for equation dselic: 
======================================= 
dselic = dlog_receita.l1 + dlog_despesa.l1 + dlog_pib.l1 + ipca.l1 + dselic.l1 + dlog_receita.l2 + dlog_despesa.l2 + dlog_pib.l2 + ipca.l2 + dselic.l2 + dlog_receita.l3 + dlog_despesa.l3 + dlog_pib.l3 + ipca.l3 + dselic.l3 + dlog_receita.l4 + dlog_despesa.l4 + dlog_pib.l4 + ipca.l4 + dselic.l4 + const 

                 Estimate Std. Error t value       Pr(>|t|)    
dlog_receita.l1  0.132305   1.247260   0.106        0.91581    
dlog_despesa.l1 -0.002579   0.926135  -0.003        0.99779    
dlog_pib.l1      4.774873   3.816680   1.251        0.21486    
ipca.l1          0.997350   0.376613   2.648        0.00988 ** 
dselic.l1        0.957881   0.127880   7.490 0.000000000118 ***
dlog_receita.l2  0.244999   1.484677   0.165        0.86938    
dlog_despesa.l2  0.112571   1.034130   0.109        0.91361    
dlog_pib.l2      2.516100   3.920325   0.642        0.52298    
ipca.l2         -0.466345   0.388971  -1.199        0.23438    
dselic.l2       -0.498511   0.166334  -2.997        0.00371 ** 
dlog_receita.l3  1.877261   1.598420   1.174        0.24398    
dlog_despesa.l3 -0.238584   0.991236  -0.241        0.81046    
dlog_pib.l3      1.082322   4.184515   0.259        0.79662    
ipca.l3         -0.160103   0.367425  -0.436        0.66429    
dselic.l3        0.035610   0.158848   0.224        0.82324    
dlog_receita.l4  0.847073   1.395851   0.607        0.54581    
dlog_despesa.l4  0.268336   0.864603   0.310        0.75716    
dlog_pib.l4      0.760796   4.187641   0.182        0.85633    
ipca.l4          0.076920   0.358654   0.214        0.83077    
dselic.l4        0.002259   0.105754   0.021        0.98302    
const           -0.348702   0.331254  -1.053        0.29592    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1


Residual standard error: 0.7851 on 74 degrees of freedom
Multiple R-Squared: 0.7118, Adjusted R-squared: 0.6339 
F-statistic: 9.139 on 20 and 74 DF,  p-value: 0.0000000000005809 



Covariance matrix of residuals:
             dlog_receita dlog_despesa   dlog_pib      ipca    dselic
dlog_receita     0.007607   -0.0021387  0.0010318  0.001524  0.012410
dlog_despesa    -0.002139    0.0101137 -0.0004775 -0.002255 -0.008629
dlog_pib         0.001032   -0.0004775  0.0004933 -0.001606 -0.001623
ipca             0.001524   -0.0022547 -0.0016060  0.075391  0.098880
dselic           0.012410   -0.0086288 -0.0016231  0.098880  0.616359

Correlation matrix of residuals:
             dlog_receita dlog_despesa dlog_pib     ipca   dselic
dlog_receita      1.00000     -0.24384  0.53268  0.06364  0.18124
dlog_despesa     -0.24384      1.00000 -0.21379 -0.08165 -0.10929
dlog_pib          0.53268     -0.21379  1.00000 -0.26336 -0.09309
ipca              0.06364     -0.08165 -0.26336  1.00000  0.45870
dselic            0.18124     -0.10929 -0.09309  0.45870  1.00000
# Causalidade de Granger
causality(var_diff_5v, cause = "dlog_receita")
$Granger

    Granger causality H0: dlog_receita do not Granger-cause dlog_despesa
    dlog_pib ipca dselic

data:  VAR object var_diff_5v
F-Test = 1.4268, df1 = 16, df2 = 370, p-value = 0.1258


$Instant

    H0: No instantaneous causality between: dlog_receita and dlog_despesa
    dlog_pib ipca dselic

data:  VAR object var_diff_5v
Chi-squared = 25.158, df = 4, p-value = 0.00004675
causality(var_diff_5v, cause = "dlog_despesa")
$Granger

    Granger causality H0: dlog_despesa do not Granger-cause dlog_receita
    dlog_pib ipca dselic

data:  VAR object var_diff_5v
F-Test = 2.038, df1 = 16, df2 = 370, p-value = 0.01051


$Instant

    H0: No instantaneous causality between: dlog_despesa and dlog_receita
    dlog_pib ipca dselic

data:  VAR object var_diff_5v
Chi-squared = 7.3285, df = 4, p-value = 0.1195
causality(var_diff_5v, cause = "dlog_pib")
$Granger

    Granger causality H0: dlog_pib do not Granger-cause dlog_receita
    dlog_despesa ipca dselic

data:  VAR object var_diff_5v
F-Test = 2.39, df1 = 16, df2 = 370, p-value = 0.00205


$Instant

    H0: No instantaneous causality between: dlog_pib and dlog_receita
    dlog_despesa ipca dselic

data:  VAR object var_diff_5v
Chi-squared = 26.589, df = 4, p-value = 0.00002407
causality(var_diff_5v, cause = "ipca")
$Granger

    Granger causality H0: ipca do not Granger-cause dlog_receita
    dlog_despesa dlog_pib dselic

data:  VAR object var_diff_5v
F-Test = 0.94327, df1 = 16, df2 = 370, p-value = 0.5195


$Instant

    H0: No instantaneous causality between: ipca and dlog_receita
    dlog_despesa dlog_pib dselic

data:  VAR object var_diff_5v
Chi-squared = 20.792, df = 4, p-value = 0.0003482
causality(var_diff_5v, cause = "dselic")
$Granger

    Granger causality H0: dselic do not Granger-cause dlog_receita
    dlog_despesa dlog_pib ipca

data:  VAR object var_diff_5v
F-Test = 1.0524, df1 = 16, df2 = 370, p-value = 0.4003


$Instant

    H0: No instantaneous causality between: dselic and dlog_receita
    dlog_despesa dlog_pib ipca

data:  VAR object var_diff_5v
Chi-squared = 18.438, df = 4, p-value = 0.001013
# Impulso-resposta

# Ordem com base em Granger
irf_diff_5v <- irf(var_diff_5v,
                   impulse  = c("dlog_despesa","dlog_pib","dlog_receita","dselic", "ipca"),
                   response = c("dlog_despesa","dlog_pib","dlog_receita","dselic", "ipca"),
                   n.ahead = 12,
                   boot = TRUE)
plot(irf_diff_5v)

irf_diff_5v_despesa <- irf(var_diff_5v,
                           impulse  = c("dlog_despesa","dlog_pib","dlog_receita","dselic", "ipca"),
                           response = c("dlog_despesa"),
                           n.ahead = 12,
                           boot = TRUE)
plot(irf_diff_5v_despesa)

irf_diff_5v_pib <- irf(var_diff_5v,
                       impulse  = c("dlog_despesa","dlog_pib","dlog_receita","dselic", "ipca"),
                       response = c("dlog_pib"),
                       n.ahead = 12,
                       boot = TRUE)
plot(irf_diff_5v_pib)

irf_diff_5v_receita<- irf(var_diff_5v,
                          impulse  = c("dlog_despesa","dlog_pib","dlog_receita","dselic", "ipca"),
                          response = c("dlog_receita"),
                          n.ahead = 12,
                          boot = TRUE)
plot(irf_diff_5v_receita)

irf_diff_5v_selic <- irf(var_diff_5v,
                         impulse  = c("dlog_despesa","dlog_pib","dlog_receita","dselic", "ipca"),
                         response = c("dselic"),
                         n.ahead = 12,
                         boot = TRUE)
plot(irf_diff_5v_selic)

irf_diff_5v_ipca <- irf(var_diff_5v,
                        impulse  = c("dlog_despesa","dlog_pib","dlog_receita","dselic", "ipca"),
                        response = c("ipca"),
                        n.ahead = 12,
                        boot = TRUE)
plot(irf_diff_5v_ipca)

# Decomposição da variância
fevd_diff_5v <- fevd(var_diff_5v, n.ahead = 12)
plot(fevd_diff_5v)

# Testes de robustez

serial.test(var_diff_5v, lags.pt = 16, type = "PT.asymptotic")  # Autocorrelação

    Portmanteau Test (asymptotic)

data:  Residuals of VAR object var_diff_5v
Chi-squared = 289.48, df = 300, p-value = 0.6581
normality.test(var_diff_5v)                                     # Normalidade
$JB

    JB-Test (multivariate)

data:  Residuals of VAR object var_diff_5v
Chi-squared = 602.38, df = 10, p-value < 0.00000000000000022


$Skewness

    Skewness only (multivariate)

data:  Residuals of VAR object var_diff_5v
Chi-squared = 44.43, df = 5, p-value = 0.00000001894


$Kurtosis

    Kurtosis only (multivariate)

data:  Residuals of VAR object var_diff_5v
Chi-squared = 557.95, df = 5, p-value < 0.00000000000000022
arch.test(var_diff_5v, lags.multi = 12)                         # Heterocedasticidade

    ARCH (multivariate)

data:  Residuals of VAR object var_diff_5v
Chi-squared = 1245, df = 2700, p-value = 1
roots(var_diff_5v)                                              # Estabilidade
 [1] 0.9823894 0.9678787 0.9678787 0.7840429 0.7405742 0.7405742 0.7370764
 [8] 0.7370764 0.7223511 0.7211838 0.6982609 0.6982609 0.5709819 0.5709819
[15] 0.5298816 0.5298816 0.3970834 0.3970834 0.2458360 0.2458360
plot(var_diff_5v)

stab_diff_5v <- stability(var_diff_5v, type = "OLS-CUSUM")
plot(stab_diff_5v)

VECM

#======== O MODELO VECM

#ESTIMAÇÃO DO VECM (supondo r = 1 relação de cointegração)
vec_model_5 <- cajorls(teste_johansen_5, r = 1)
summary(vec_model_5$rlm)
Response receita.d :

Call:
lm(formula = receita.d ~ ect1 + receita.dl1 + despesa.dl1 + pib.dl1 + 
    ipca.dl1 + selic.dl1 + receita.dl2 + despesa.dl2 + pib.dl2 + 
    ipca.dl2 + selic.dl2 + receita.dl3 + despesa.dl3 + pib.dl3 + 
    ipca.dl3 + selic.dl3 + receita.dl4 + despesa.dl4 + pib.dl4 + 
    ipca.dl4 + selic.dl4 - 1, data = data.mat)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.41407 -0.03217  0.00223  0.03428  0.32169 

Coefficients:
             Estimate Std. Error t value    Pr(>|t|)    
ect1        -0.410369   0.216640  -1.894    0.062101 .  
receita.dl1 -0.796824   0.144512  -5.514 0.000000490 ***
despesa.dl1 -0.092730   0.096632  -0.960    0.340371    
pib.dl1      1.287459   0.401416   3.207    0.001980 ** 
ipca.dl1     0.044168   0.038946   1.134    0.260416    
selic.dl1   -0.011396   0.014133  -0.806    0.422632    
receita.dl2 -1.050714   0.190821  -5.506 0.000000505 ***
despesa.dl2 -0.141370   0.116679  -1.212    0.229512    
pib.dl2      1.896262   0.465430   4.074    0.000115 ***
ipca.dl2     0.012414   0.045440   0.273    0.785458    
selic.dl2    0.005802   0.018258   0.318    0.751560    
receita.dl3 -0.638494   0.231380  -2.760    0.007292 ** 
despesa.dl3 -0.190710   0.135550  -1.407    0.163633    
pib.dl3      0.476554   0.530971   0.898    0.372356    
ipca.dl3     0.027028   0.043719   0.618    0.538335    
selic.dl3   -0.005966   0.017406  -0.343    0.732770    
receita.dl4 -0.501991   0.234788  -2.138    0.035814 *  
despesa.dl4 -0.167029   0.163747  -1.020    0.311030    
pib.dl4      1.510728   0.533880   2.830    0.005994 ** 
ipca.dl4    -0.005473   0.038620  -0.142    0.887689    
selic.dl4   -0.007541   0.012474  -0.605    0.547341    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.08564 on 74 degrees of freedom
Multiple R-squared:  0.6082,    Adjusted R-squared:  0.497 
F-statistic: 5.469 on 21 and 74 DF,  p-value: 0.00000002239


Response despesa.d :

Call:
lm(formula = despesa.d ~ ect1 + receita.dl1 + despesa.dl1 + pib.dl1 + 
    ipca.dl1 + selic.dl1 + receita.dl2 + despesa.dl2 + pib.dl2 + 
    ipca.dl2 + selic.dl2 + receita.dl3 + despesa.dl3 + pib.dl3 + 
    ipca.dl3 + selic.dl3 + receita.dl4 + despesa.dl4 + pib.dl4 + 
    ipca.dl4 + selic.dl4 - 1, data = data.mat)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.17573 -0.03836 -0.00598  0.04690  0.48105 

Coefficients:
             Estimate Std. Error t value   Pr(>|t|)    
ect1        -0.444640   0.251484  -1.768   0.081172 .  
receita.dl1 -0.433351   0.167755  -2.583   0.011761 *  
despesa.dl1 -0.536389   0.112174  -4.782 0.00000863 ***
pib.dl1      1.126441   0.465978   2.417   0.018097 *  
ipca.dl1    -0.070733   0.045210  -1.565   0.121955    
selic.dl1    0.001753   0.016407   0.107   0.915212    
receita.dl2 -0.236153   0.221512  -1.066   0.289846    
despesa.dl2 -0.467026   0.135445  -3.448   0.000935 ***
pib.dl2      0.581760   0.540288   1.077   0.285086    
ipca.dl2    -0.054527   0.052748  -1.034   0.304635    
selic.dl2   -0.017319   0.021195  -0.817   0.416467    
receita.dl3 -0.254798   0.268595  -0.949   0.345894    
despesa.dl3 -0.555677   0.157351  -3.531   0.000716 ***
pib.dl3      0.344882   0.616371   0.560   0.577486    
ipca.dl3    -0.058335   0.050751  -1.149   0.254073    
selic.dl3    0.015789   0.020205   0.781   0.437054    
receita.dl4 -0.625250   0.272550  -2.294   0.024626 *  
despesa.dl4 -0.144884   0.190083  -0.762   0.448355    
pib.dl4      2.164122   0.619748   3.492   0.000813 ***
ipca.dl4    -0.025649   0.044831  -0.572   0.568970    
selic.dl4   -0.016311   0.014481  -1.126   0.263627    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.09942 on 74 degrees of freedom
Multiple R-squared:  0.7032,    Adjusted R-squared:  0.6189 
F-statistic: 8.347 on 21 and 74 DF,  p-value: 0.000000000002888


Response pib.d :

Call:
lm(formula = pib.d ~ ect1 + receita.dl1 + despesa.dl1 + pib.dl1 + 
    ipca.dl1 + selic.dl1 + receita.dl2 + despesa.dl2 + pib.dl2 + 
    ipca.dl2 + selic.dl2 + receita.dl3 + despesa.dl3 + pib.dl3 + 
    ipca.dl3 + selic.dl3 + receita.dl4 + despesa.dl4 + pib.dl4 + 
    ipca.dl4 + selic.dl4 - 1, data = data.mat)

Residuals:
      Min        1Q    Median        3Q       Max 
-0.078851 -0.010670  0.000914  0.015170  0.051231 

Coefficients:
              Estimate Std. Error t value Pr(>|t|)    
ect1         0.0486856  0.0565689   0.861 0.392214    
receita.dl1  0.0210429  0.0377348   0.558 0.578765    
despesa.dl1  0.0224292  0.0252326   0.889 0.376939    
pib.dl1     -0.0619667  0.1048175  -0.591 0.556197    
ipca.dl1    -0.0029232  0.0101695  -0.287 0.774574    
selic.dl1   -0.0027046  0.0036905  -0.733 0.465959    
receita.dl2  0.0126381  0.0498270   0.254 0.800477    
despesa.dl2  0.0594194  0.0304670   1.950 0.054930 .  
pib.dl2     -0.0163024  0.1215328  -0.134 0.893656    
ipca.dl2    -0.0022577  0.0118652  -0.190 0.849611    
selic.dl2   -0.0019757  0.0047676  -0.414 0.679780    
receita.dl3  0.0762053  0.0604179   1.261 0.211161    
despesa.dl3  0.1106000  0.0353947   3.125 0.002542 ** 
pib.dl3     -0.3402769  0.1386469  -2.454 0.016469 *  
ipca.dl3     0.0070375  0.0114159   0.616 0.539478    
selic.dl3    0.0014611  0.0045450   0.321 0.748762    
receita.dl4  0.0390695  0.0613077   0.637 0.525916    
despesa.dl4  0.1293220  0.0427574   3.025 0.003422 ** 
pib.dl4      0.5171431  0.1394065   3.710 0.000399 ***
ipca.dl4    -0.0008263  0.0100844  -0.082 0.934918    
selic.dl4    0.0014732  0.0032573   0.452 0.652402    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.02236 on 74 degrees of freedom
Multiple R-squared:  0.7577,    Adjusted R-squared:  0.6889 
F-statistic: 11.02 on 21 and 74 DF,  p-value: 0.000000000000003142


Response ipca.d :

Call:
lm(formula = ipca.d ~ ect1 + receita.dl1 + despesa.dl1 + pib.dl1 + 
    ipca.dl1 + selic.dl1 + receita.dl2 + despesa.dl2 + pib.dl2 + 
    ipca.dl2 + selic.dl2 + receita.dl3 + despesa.dl3 + pib.dl3 + 
    ipca.dl3 + selic.dl3 + receita.dl4 + despesa.dl4 + pib.dl4 + 
    ipca.dl4 + selic.dl4 - 1, data = data.mat)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.88914 -0.14794 -0.04604  0.09245  1.08707 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)    
ect1        -0.65246    0.70828  -0.921  0.35994    
receita.dl1 -0.32126    0.47247  -0.680  0.49865    
despesa.dl1  0.03227    0.31593   0.102  0.91892    
pib.dl1      1.23085    1.31239   0.938  0.35136    
ipca.dl1    -0.36573    0.12733  -2.872  0.00531 ** 
selic.dl1    0.06898    0.04621   1.493  0.13972    
receita.dl2 -1.21296    0.62387  -1.944  0.05567 .  
despesa.dl2 -0.20722    0.38147  -0.543  0.58861    
pib.dl2      3.77890    1.52167   2.483  0.01528 *  
ipca.dl2    -0.58359    0.14856  -3.928  0.00019 ***
selic.dl2   -0.08087    0.05969  -1.355  0.17964    
receita.dl3 -0.98058    0.75647  -1.296  0.19892    
despesa.dl3 -0.16740    0.44317  -0.378  0.70671    
pib.dl3      1.21848    1.73595   0.702  0.48494    
ipca.dl3    -0.16079    0.14293  -1.125  0.26426    
selic.dl3   -0.02571    0.05691  -0.452  0.65272    
receita.dl4 -0.50735    0.76761  -0.661  0.51070    
despesa.dl4 -0.11173    0.53535  -0.209  0.83526    
pib.dl4      0.41992    1.74546   0.241  0.81055    
ipca.dl4    -0.13543    0.12626  -1.073  0.28692    
selic.dl4   -0.01031    0.04078  -0.253  0.80118    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.28 on 74 degrees of freedom
Multiple R-squared:  0.512, Adjusted R-squared:  0.3735 
F-statistic: 3.697 on 21 and 74 DF,  p-value: 0.00001604


Response selic.d :

Call:
lm(formula = selic.d ~ ect1 + receita.dl1 + despesa.dl1 + pib.dl1 + 
    ipca.dl1 + selic.dl1 + receita.dl2 + despesa.dl2 + pib.dl2 + 
    ipca.dl2 + selic.dl2 + receita.dl3 + despesa.dl3 + pib.dl3 + 
    ipca.dl3 + selic.dl3 + receita.dl4 + despesa.dl4 + pib.dl4 + 
    ipca.dl4 + selic.dl4 - 1, data = data.mat)

Residuals:
    Min      1Q  Median      3Q     Max 
-2.1391 -0.4156 -0.0169  0.3111  2.5878 

Coefficients:
            Estimate Std. Error t value       Pr(>|t|)    
ect1        -6.15201    1.87030  -3.289        0.00154 ** 
receita.dl1 -1.16542    1.24760  -0.934        0.35328    
despesa.dl1 -1.06644    0.83425  -1.278        0.20513    
pib.dl1      7.75398    3.46551   2.237        0.02827 *  
ipca.dl1     1.02799    0.33623   3.057        0.00311 ** 
selic.dl1    0.88518    0.12202   7.255 0.000000000329 ***
receita.dl2 -2.47982    1.64740  -1.505        0.13651    
despesa.dl2 -1.94042    1.00731  -1.926        0.05790 .  
pib.dl2      7.98842    4.01816   1.988        0.05050 .  
ipca.dl2     0.63231    0.39229   1.612        0.11126    
selic.dl2   -0.50420    0.15763  -3.199        0.00203 ** 
receita.dl3 -2.25214    1.99756  -1.127        0.26320    
despesa.dl3 -3.30772    1.17023  -2.827        0.00605 ** 
pib.dl3      8.22256    4.58399   1.794        0.07694 .  
ipca.dl3     0.32857    0.37744   0.871        0.38682    
selic.dl3    0.03282    0.15027   0.218        0.82771    
receita.dl4 -4.02191    2.02697  -1.984        0.05094 .  
despesa.dl4 -4.01785    1.41366  -2.842        0.00579 ** 
pib.dl4      8.72897    4.60910   1.894        0.06215 .  
ipca.dl4     0.21470    0.33341   0.644        0.52161    
selic.dl4   -0.03221    0.10769  -0.299        0.76571    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.7394 on 74 degrees of freedom
Multiple R-squared:  0.7447,    Adjusted R-squared:  0.6722 
F-statistic: 10.28 on 21 and 74 DF,  p-value: 0.00000000000001845
#CONVERSÃO PARA VAR EQUIVALENTE

vec_var_5 <- vec2var(teste_johansen_5, r = 1)

# IMPULSO-RESPOSTA (IRF)

#Impulso-resposta


irf_vec_5v <- irf(vec2var(ca.jo(dados_johansen_5[, c("despesa", "pib", "receita", "ipca", "selic")],
                                 type = "trace", ecdet = "const", K = 5), r = 1),
                   impulse = c("despesa", "pib", "receita", "ipca", "selic"),
                   response = c("despesa", "pib", "receita", "ipca", "selic"),
                   n.ahead = 12, boot = TRUE)
plot(irf_vec_5v)

irf_vec_5v_despesa <- irf(vec2var(ca.jo(dados_johansen_5[, c("despesa", "pib", "receita", "ipca", "selic")],
                                type = "trace", ecdet = "const", K = 5), r = 1),
                  impulse = c("despesa", "pib", "receita", "ipca", "selic"),
                  response = c("despesa"),
                  n.ahead = 12, boot = TRUE)
plot(irf_vec_5v_despesa)

irf_vec_5v_pib <- irf(vec2var(ca.jo(dados_johansen_5[, c("despesa", "pib", "receita", "ipca", "selic")],
                                        type = "trace", ecdet = "const", K = 5), r = 1),
                          impulse = c("despesa", "pib", "receita", "ipca", "selic"),
                          response = c("pib"),
                          n.ahead = 12, boot = TRUE)
plot(irf_vec_5v_pib)

irf_vec_5v_receita <- irf(vec2var(ca.jo(dados_johansen_5[, c("despesa", "pib", "receita", "ipca", "selic")],
                                        type = "trace", ecdet = "const", K = 5), r = 1),
                          impulse = c("despesa", "pib", "receita", "ipca", "selic"),
                          response = c("receita"),
                          n.ahead = 12, boot = TRUE)
plot(irf_vec_5v_receita)

irf_vec_5v_ipca <- irf(vec2var(ca.jo(dados_johansen_5[, c("despesa", "pib", "receita", "ipca", "selic")],
                                        type = "trace", ecdet = "const", K = 5), r = 1),
                          impulse = c("despesa", "pib", "receita", "ipca", "selic"),
                          response = c("ipca"),
                          n.ahead = 12, boot = TRUE)
plot(irf_vec_5v_ipca)

irf_vec_5v_selic <- irf(vec2var(ca.jo(dados_johansen_5[, c("despesa", "pib", "receita", "ipca", "selic")],
                                        type = "trace", ecdet = "const", K = 5), r = 1),
                          impulse = c("despesa", "pib", "receita", "ipca", "selic"),
                          response = c("selic"),
                          n.ahead = 12, boot = TRUE)
plot(irf_vec_5v_selic)

#DECOMPOSIÇÃO DA VARIÂNCIA (FEVD)
fevd_vec_5 <- fevd(vec_var_5, n.ahead = 20)

plot(fevd_vec_5)

#TESTES DE DIAGNÓSTICO

#Testes de robustez / diagnóstico

# Autocorrelação dos resíduos (Portmanteau)
serial.test(vec_var_5, lags.pt = 16, type = "PT.asymptotic")

    Portmanteau Test (asymptotic)

data:  Residuals of VAR object vec_var_5
Chi-squared = 300.4, df = 280, p-value = 0.1921
# Normalidade dos resíduos
normality.test(vec_var_5)
$JB

    JB-Test (multivariate)

data:  Residuals of VAR object vec_var_5
Chi-squared = 608.26, df = 10, p-value < 0.00000000000000022


$Skewness

    Skewness only (multivariate)

data:  Residuals of VAR object vec_var_5
Chi-squared = 44.624, df = 5, p-value = 0.0000000173


$Kurtosis

    Kurtosis only (multivariate)

data:  Residuals of VAR object vec_var_5
Chi-squared = 563.64, df = 5, p-value < 0.00000000000000022
# Heterocedasticidade (ARCH)
arch.test(vec_var_5, lags.multi = 12)

    ARCH (multivariate)

data:  Residuals of VAR object vec_var_5
Chi-squared = 1245, df = 2700, p-value = 1

O MODELO DE BLANCHARD E PEROTTI (2002) - 3 VARIÁVEIS

O MODELO EM NÍVEL

#====================== IDENTIFICANDO OS CHOQUES FISCAIS - BLANCHARD E PEROTTI (2002)========================#

#====================== O MODELO COM 3 VARIÁVEIS

#MODELO SEM DIFERENCIAR

dados_var_3 <- tibble(
  log_receita = log(as.numeric(receita_real_tri_ts)),
  log_despesa = log(as.numeric(despesa_real_tri_ts)),
  log_pib     = log(as.numeric(pib_real_tri_ts))
) |> drop_na()

# Ordem [PIB, Gasto, Receita]
dados_var_3 <- dplyr::select(dados_var_3, log_despesa , log_pib, log_receita)

#Estimar VAR reduzido

var_red <- VAR(dados_var_3, p = 8, type = "const")

#Resíduos reduzidos

U <- residuals(var_red) %>% as.matrix()
colnames(U) <- c("u_G", "u_Y","u_T")  # Y=PIB, G=Gasto, T=Receita

# Estimar b1 e choques estruturais

a1 <- 2.08  # elasticidade receita ao PIB
a2 <- 0     # elasticidade gasto ao PIB
b2 <- 0     # resposta gasto a choque receita

cov_u <- cov(U)
b1 <- cov_u["u_G","u_T"] / cov_u["u_G","u_G"]
#Calcula b1 usando a covariância dos resíduos para obter a relação entre gasto e receita.

# Choques estruturais
e_Y <- U[,"u_Y"]
e_G <- U[,"u_G"]  # já é choque de gasto
e_T <- U[,"u_T"] - a1*e_Y - b1*e_G

E <- cbind(e_Y, e_G, e_T)
colnames(E) <- c("choque_Gasto", "choque_PIB","choque_Receita")

round(cov(E), 4)  # checar ortogonalidade
               choque_Gasto choque_PIB choque_Receita
choque_Gasto         0.0003    -0.0002         0.0000
choque_PIB          -0.0002     0.0064         0.0004
choque_Receita       0.0000     0.0004         0.0031
# IRFs estruturais via SVAR

Bmat <- matrix(c(
  NA,  a2, b2,   # Gasto
  0,  NA,  0,   # PIB
  b1,  a1, NA    # Receita
), nrow = 3, byrow = TRUE)

colnames(Bmat) <- rownames(Bmat) <- c("despesa","pib","receita")


svar_bp <- SVAR(var_red, Bmat = Bmat, estmethod = "scoring", hessian = FALSE, max.iter = 1000)
summary(svar_bp)

SVAR Estimation Results:
======================== 

Call:
SVAR(x = var_red, estmethod = "scoring", Bmat = Bmat, max.iter = 1000, 
    hessian = FALSE)

Type: B-model 
Sample size: 92 
Log Likelihood: 102.708 
Method: scoring 
Number of iterations: 372 

LR overidentification test:

    LR overidentification

data:  dados_var_3
Chi^2 = 668, df = 3, p-value <0.0000000000000002


Estimated A matrix:
            log_despesa log_pib log_receita
log_despesa           1       0           0
log_pib               0       1           0
log_receita           0       0           1

Estimated B matrix:
            log_despesa log_pib log_receita
log_despesa      0.1024 0.00000       0.000
log_pib          0.0000 0.06372       0.000
log_receita     -0.2859 2.08000       0.711

Estimated standard errors for B matrix:
            log_despesa  log_pib log_receita
log_despesa    0.007262 0.000000     0.00000
log_pib        0.000000 0.002044     0.00000
log_receita    0.000000 0.000000     0.05242

Covariance matrix of reduced form residuals (*100):
            log_despesa log_pib log_receita
log_despesa       1.049   0.000      -2.928
log_pib           0.000   0.406      13.253
log_receita      -2.928  13.253     491.369
colnames(var_red$y)
[1] "log_despesa" "log_pib"     "log_receita"
irf_gasto   <- irf(svar_bp,
                   impulse = "log_despesa",
                   response = c("log_despesa","log_pib","log_receita"),
                   n.ahead = 12, boot = TRUE, runs = 1000)

irf_receita <- irf(svar_bp,
                   impulse = "log_receita",
                   response = c("log_despesa","log_pib","log_receita"),
                   n.ahead = 12, boot = TRUE, runs = 1000)

irf_pib <- irf(svar_bp,
                   impulse = c("log_despesa","log_receita"),
                   response = c("log_pib"),
                   n.ahead = 12, boot = TRUE, runs = 1000)


plot(irf_gasto)

plot(irf_receita)

plot(irf_pib)

#Diagnóstico do modelo

roots(var_red, modulus = TRUE)  # TRUE para ver o módulo
 [1] 0.9880800 0.9879321 0.9879321 0.9720380 0.9115649 0.9115649 0.8766005
 [8] 0.8766005 0.8621370 0.8621370 0.8505247 0.8505247 0.8408671 0.8284857
[15] 0.8284857 0.7995889 0.7995889 0.7578406 0.7578406 0.7344127 0.7344127
[22] 0.7228424 0.7228424 0.6906508
plot(roots(var_red))            # gráfico das raízes

serial.test(var_red, lags.pt = 12, type = "PT.asymptotic")

    Portmanteau Test (asymptotic)

data:  Residuals of VAR object var_red
Chi-squared = 47.174, df = 36, p-value = 0.1007
arch.test(var_red, lags.multi = 12, multivariate.only = TRUE)

    ARCH (multivariate)

data:  Residuals of VAR object var_red
Chi-squared = 427.92, df = 432, p-value = 0.5464
normality.test(var_red, multivariate.only = TRUE)
$JB

    JB-Test (multivariate)

data:  Residuals of VAR object var_red
Chi-squared = 991.29, df = 6, p-value < 0.00000000000000022


$Skewness

    Skewness only (multivariate)

data:  Residuals of VAR object var_red
Chi-squared = 133.62, df = 3, p-value < 0.00000000000000022


$Kurtosis

    Kurtosis only (multivariate)

data:  Residuals of VAR object var_red
Chi-squared = 857.66, df = 3, p-value < 0.00000000000000022

O MODELO EM 1° DIFERENÇA

#MODELO EM 1°DIFERENÇA

dados_var_3_diff <- tibble(
  receita_diff = c(NA, diff(log(as.numeric(receita_real_tri_ts)))),
  despesa_diff = c(NA, diff(log(as.numeric(despesa_real_tri_ts)))),
  pib_diff     = c(NA, diff(log(as.numeric(pib_real_tri_ts))))
) |> drop_na()

# Ordem [PIB, Gasto, Receita]
dados_var_3_diff <- dplyr::select(dados_var_3_diff, despesa_diff, pib_diff, receita_diff)

# Estimar VAR reduzido
var_red_diff <- VAR(dados_var_3_diff, p = 8, type = "const")

# Resíduos
U_diff <- residuals(var_red_diff) %>% as.matrix()
colnames(U_diff) <- c("u_G", "u_Y","u_T")

# Estimar b1 e choques estruturais
a1 <- 2.08
a2 <- 0
b2 <- 0

cov_u_diff <- cov(U_diff)
b1_diff <- cov_u_diff["u_G","u_T"] / cov_u_diff["u_G","u_G"]

# Choques estruturais
e_Y_diff <- U_diff[,"u_Y"]
e_G_diff <- U_diff[,"u_G"]
e_T_diff <- U_diff[,"u_T"] - a1*e_Y_diff - b1_diff*e_G_diff

E_diff <- cbind(e_Y_diff, e_G_diff, e_T_diff)
colnames(E_diff) <- c("choque_Gasto", "choque_PIB","choque_Receita")

round(cov(E_diff), 4)
               choque_Gasto choque_PIB choque_Receita
choque_Gasto         0.0003    -0.0003         0.0000
choque_PIB          -0.0003     0.0071         0.0007
choque_Receita       0.0000     0.0007         0.0033
# Matriz B
Bmat_diff <- matrix(c(
  NA,  a2, b2,
  0,   NA,  0,
  b1_diff,  a1, NA
), nrow = 3, byrow = TRUE)

colnames(Bmat_diff) <- rownames(Bmat_diff) <- c("despesa_diff","pib_diff","receita_diff")

# Estimar SVAR
svar_bp_diff <- SVAR(var_red_diff, Bmat = Bmat_diff, estmethod = "scoring",
                     hessian = FALSE, max.iter = 1000)
summary(svar_bp_diff)

SVAR Estimation Results:
======================== 

Call:
SVAR(x = var_red_diff, estmethod = "scoring", Bmat = Bmat_diff, 
    max.iter = 1000, hessian = FALSE)

Type: B-model 
Sample size: 91 
Log Likelihood: 90.948 
Method: scoring 
Number of iterations: 280 

LR overidentification test:

    LR overidentification

data:  dados_var_3_diff
Chi^2 = 664, df = 3, p-value <0.0000000000000002


Estimated A matrix:
             despesa_diff pib_diff receita_diff
despesa_diff            1        0            0
pib_diff                0        1            0
receita_diff            0        0            1

Estimated B matrix:
             despesa_diff pib_diff receita_diff
despesa_diff       0.1094  0.00000       0.0000
pib_diff           0.0000  0.05777       0.0000
receita_diff      -0.3413  2.08000       0.8249

Estimated standard errors for B matrix:
             despesa_diff pib_diff receita_diff
despesa_diff     0.007786 0.000000      0.00000
pib_diff         0.000000 0.002095      0.00000
receita_diff     0.000000 0.000000      0.06114

Covariance matrix of reduced form residuals (*100):
             despesa_diff pib_diff receita_diff
despesa_diff        1.198   0.0000       -3.735
pib_diff            0.000   0.3337       12.015
receita_diff       -3.735  12.0154      512.328
# IRFs
irf_gasto_diff   <- irf(svar_bp_diff,
                        impulse = "despesa_diff",
                        response = c("despesa_diff","pib_diff","receita_diff"),
                        n.ahead = 12, boot = TRUE, runs = 1000)

irf_receita_diff <- irf(svar_bp_diff,
                        impulse = "receita_diff",
                        response = c("despesa_diff","pib_diff","receita_diff"),
                        n.ahead = 12, boot = TRUE, runs = 1000)


irf_pib_diff   <- irf(svar_bp_diff,
                        impulse = c("despesa_diff", "receita_diff"),
                        response = c("pib_diff"),
                        n.ahead = 12, boot = TRUE, runs = 1000)

plot(irf_gasto_diff)

plot(irf_receita_diff)

plot(irf_pib_diff)

# Diagnósticos
roots(var_red_diff, modulus = TRUE)
 [1] 0.9947867 0.9863954 0.9863954 0.8951649 0.8951649 0.8909904 0.8890891
 [8] 0.8890891 0.8470743 0.8470743 0.8416659 0.8416659 0.8358617 0.8358617
[15] 0.8170451 0.8170451 0.7896216 0.7896216 0.7648401 0.7648401 0.6572448
[22] 0.6572448 0.5013074 0.4004599
plot(roots(var_red_diff))

serial.test(var_red_diff, lags.pt = 12, type = "PT.asymptotic")

    Portmanteau Test (asymptotic)

data:  Residuals of VAR object var_red_diff
Chi-squared = 42.187, df = 36, p-value = 0.221
arch.test(var_red_diff, lags.multi = 12, multivariate.only = TRUE)

    ARCH (multivariate)

data:  Residuals of VAR object var_red_diff
Chi-squared = 426.01, df = 432, p-value = 0.5722
normality.test(var_red_diff, multivariate.only = TRUE)
$JB

    JB-Test (multivariate)

data:  Residuals of VAR object var_red_diff
Chi-squared = 506.96, df = 6, p-value < 0.00000000000000022


$Skewness

    Skewness only (multivariate)

data:  Residuals of VAR object var_red_diff
Chi-squared = 84.573, df = 3, p-value < 0.00000000000000022


$Kurtosis

    Kurtosis only (multivariate)

data:  Residuals of VAR object var_red_diff
Chi-squared = 422.38, df = 3, p-value < 0.00000000000000022