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

AJUSTE SAZONAL (ARIMA X-12)

TESTE DE RAIZ UNITÁRIA

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

# ADF (Dickey-Fuller aumentado)

adf_receita_sa <- ur.df(dados_log_sa$log_receita, type = "trend", lags = 4, selectlags = "AIC")
summary(adf_receita_sa)@teststat
              tau3     phi2     phi3
statistic -2.18879 3.166583 2.647387
summary(adf_receita_sa)@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_sa <- ur.df(dados_log_sa$log_despesa, type = "trend", lags = 4, selectlags = "AIC")
summary(adf_despesa_sa)@teststat
               tau3     phi2     phi3
statistic -2.448134 3.490294 3.323567
summary(adf_despesa_sa)@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_sa <- ur.df(dados_log_sa$log_pib, type = "trend", lags = 4, selectlags = "AIC")
summary(adf_pib_sa)@teststat
                tau3    phi2     phi3
statistic -0.9795855 5.64447 1.198357
summary(adf_pib_sa)@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_ipca <- ur.df(dados_log_sa$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_sa$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
# Phillips-Perron

pp_receita_sa <- ur.pp(dados_log_sa$log_receita, type = "Z-tau", model = "trend", lags = "short")
summary(pp_receita_sa)@teststat
[1] -3.446343
summary(pp_receita_sa)@cval
                     1pct      5pct     10pct
critical values -4.053014 -3.455217 -3.153098
pp_despesa_sa <- ur.pp(dados_log_sa$log_despesa, type = "Z-tau", model = "trend", lags = "short")
summary(pp_despesa_sa)@teststat
[1] -3.670175
summary(pp_despesa_sa)@cval
                     1pct      5pct     10pct
critical values -4.053014 -3.455217 -3.153098
pp_pib_sa <- ur.pp(dados_log_sa$log_pib, type = "Z-tau", model = "trend", lags = "short")
summary(pp_pib_sa)@teststat
[1] -1.24222
summary(pp_pib_sa)@cval
                     1pct      5pct     10pct
critical values -4.053014 -3.455217 -3.153098
pp_ipca <- ur.pp(dados_log_sa$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_sa$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
# DF-GLS (Elliot-Rothenberg-Stock)

dfgls_receita_sa <- ur.ers(dados_log_sa$log_receita, type = "DF-GLS", model = "trend", lag.max = 4)
summary(dfgls_receita_sa)@teststat
[1] -1.388735
summary(dfgls_receita_sa)@cval
                 1pct  5pct 10pct
critical values -3.46 -2.93 -2.64
dfgls_despesa_sa <- ur.ers(dados_log_sa$log_despesa, type = "DF-GLS", model = "trend", lag.max = 4)
summary(dfgls_despesa_sa)@teststat
[1] -1.692198
summary(dfgls_despesa_sa)@cval
                 1pct  5pct 10pct
critical values -3.46 -2.93 -2.64
dfgls_pib_sa <- ur.ers(dados_log_sa$log_pib, type = "DF-GLS", model = "trend", lag.max = 4)
summary(dfgls_pib_sa)@teststat
[1] -0.9574495
summary(dfgls_pib_sa)@cval
                 1pct  5pct 10pct
critical values -3.46 -2.93 -2.64
dfgls_ipca <- ur.ers(dados_log_sa$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_sa$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

TESTE DE QUEBRA ESTRUTURAL

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

za_receita_sa <- ur.za(dados_log_sa$log_receita, model = "both", lag = 4)  
za_despesa_sa <- ur.za(dados_log_sa$log_despesa, model = "both", lag = 4)
za_pib_sa     <- ur.za(dados_log_sa$log_pib,     model = "both", lag = 4)

summary(za_receita_sa)

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


Call:
lm(formula = testmat)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.48422 -0.03577  0.00348  0.03173  0.35952 

Coefficients:
              Estimate Std. Error t value Pr(>|t|)    
(Intercept)  6.4772770  1.9226822   3.369 0.001131 ** 
y.l1         0.4702896  0.1584442   2.968 0.003880 ** 
trend        0.0080150  0.0026389   3.037 0.003160 ** 
y.dl1       -0.1363833  0.1564396  -0.872 0.385747    
y.dl2       -0.2285960  0.1461840  -1.564 0.121548    
y.dl3       -0.0379381  0.1262850  -0.300 0.764585    
y.dl4       -0.0001307  0.1069691  -0.001 0.999028    
du          -0.1627197  0.0475721  -3.420 0.000958 ***
dt          -0.0036230  0.0022413  -1.616 0.109662    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

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


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

Potential break point at position: 59 
summary(za_despesa_sa)

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


Call:
lm(formula = testmat)

Residuals:
     Min       1Q   Median       3Q      Max 
-0.17176 -0.03092 -0.01293  0.01232  0.48680 

Coefficients:
             Estimate Std. Error t value  Pr(>|t|)    
(Intercept)  9.117875   2.017099   4.520 0.0000196 ***
y.l1         0.240724   0.168310   1.430  0.156271    
trend        0.013490   0.003089   4.367 0.0000350 ***
y.dl1        0.166418   0.154999   1.074  0.285973    
y.dl2        0.078219   0.140216   0.558  0.578401    
y.dl3        0.094622   0.122427   0.773  0.441709    
y.dl4        0.070841   0.110051   0.644  0.521480    
du           0.077756   0.039455   1.971  0.051969 .  
dt          -0.008886   0.002215  -4.012  0.000128 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

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


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

Potential break point at position: 42 
summary(za_pib_sa)

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


Call:
lm(formula = testmat)

Residuals:
      Min        1Q    Median        3Q       Max 
-0.091475 -0.008235 -0.000704  0.009669  0.050869 

Coefficients:
              Estimate Std. Error t value             Pr(>|t|)    
(Intercept)  3.0329799  0.7709184   3.934             0.000169 ***
y.l1         0.7827980  0.0554841  14.109 < 0.0000000000000002 ***
trend        0.0031543  0.0008011   3.937             0.000167 ***
y.dl1        0.0509778  0.1017058   0.501             0.617491    
y.dl2        0.1080336  0.0927330   1.165             0.247242    
y.dl3       -0.3497251  0.0936146  -3.736             0.000336 ***
y.dl4        0.0037574  0.1007884   0.037             0.970348    
du          -0.0598790  0.0114362  -5.236           0.00000115 ***
dt          -0.0012365  0.0005775  -2.141             0.035082 *  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

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


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

Potential break point at position: 60 
za_ipca <- ur.za(dados_log_sa$ipca_trimestral, model = "both", lag = 4)
za_selic <- ur.za(dados_log_sa$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 

MQO


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

Residuals:
      Min        1Q    Median        3Q       Max 
-0.039191 -0.010835 -0.000443  0.009272  0.057513 

Coefficients:
              Estimate Std. Error t value    Pr(>|t|)    
(Intercept)   0.008338   0.001667   5.003 0.000002546 ***
dlog_despesa -0.052273   0.018776  -2.784     0.00647 ** 
dlog_receita  0.102458   0.017714   5.784 0.000000091 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.0163 on 96 degrees of freedom
  (1 observation deleted due to missingness)
Multiple R-squared:  0.3367,    Adjusted R-squared:  0.3229 
F-statistic: 24.36 on 2 and 96 DF,  p-value: 0.000000002772

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

Residuals:
      Min        1Q    Median        3Q       Max 
-0.037626 -0.008936 -0.000389  0.007976  0.058467 

Coefficients:
                 Estimate Std. Error t value    Pr(>|t|)    
(Intercept)      0.012213   0.003384   3.610    0.000494 ***
dlog_despesa    -0.064630   0.018956  -3.409    0.000960 ***
dlog_receita     0.100353   0.017053   5.885 0.000000061 ***
ipca_trimestral -0.007776   0.005687  -1.367    0.174788    
dselic          -0.002522   0.001419  -1.778    0.078612 .  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.01568 on 94 degrees of freedom
  (1 observation deleted due to missingness)
Multiple R-squared:  0.399, Adjusted R-squared:  0.3735 
F-statistic:  15.6 on 4 and 94 DF,  p-value: 0.0000000007977

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.2690531813745156708428 0.1304082795363677438338 0.0704434692697361031222
[4] 0.0000000000000001390248

Values of teststatistic and critical values of test:

          test 10pct  5pct  1pct
r <= 2 |  6.94  7.52  9.24 12.97
r <= 1 | 20.21 17.85 19.96 24.60
r = 0  | 49.99 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.4117772   2.479402  -1.282498  0.2671932
pib.l5     -1.5440071  -4.055287   1.089462 -1.8392302
constant    4.3798127  14.243786 -12.368313 10.4050579

Weights W:
(This is the loading matrix)

           receita.l5   despesa.l5      pib.l5                constant
receita.d -0.61754497  0.024754930 -0.09248764 -0.00000000000004355208
despesa.d  0.09176054 -0.163040253  0.01289070 -0.00000000000023357209
pib.d      0.08946187  0.003274437 -0.02292870  0.00000000000003842664
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.2690531813745156708428 0.1304082795363677438338 0.0704434692697361031222
[4] 0.0000000000000001390248

Values of teststatistic and critical values of test:

          test 10pct  5pct  1pct
r <= 2 |  6.94  7.52  9.24 12.97
r <= 1 | 13.27 13.75 15.67 20.20
r = 0  | 29.77 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.4117772   2.479402  -1.282498  0.2671932
pib.l5     -1.5440071  -4.055287   1.089462 -1.8392302
constant    4.3798127  14.243786 -12.368313 10.4050579

Weights W:
(This is the loading matrix)

           receita.l5   despesa.l5      pib.l5                constant
receita.d -0.61754497  0.024754930 -0.09248764 -0.00000000000004355208
despesa.d  0.09176054 -0.163040253  0.01289070 -0.00000000000023357209
pib.d      0.08946187  0.003274437 -0.02292870  0.00000000000003842664

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) 
     1      1      1      1 

$criteria
                         1                   2                   3
AIC(n) -18.507288951581863 -18.434069981855231 -18.437546470750704
HQ(n)  -18.374530442418031 -18.201742590818526 -18.105650197841122
SC(n)  -18.178360006749379 -17.858444328398384 -17.615224108669494
FPE(n)   0.000000009171872   0.000000009875727   0.000000009858225
                         4                  5                  6
AIC(n) -18.484916431208219 -18.34479451817129 -18.25451908394013
HQ(n)  -18.053451276425768 -17.81376048151597 -17.62391616541193
SC(n)  -17.415897360502651 -17.02907873884136 -16.69210659598583
FPE(n)   0.000000009431553   0.00000001090462   0.00000001202309
                        7                 8
AIC(n) -18.13277085431749 -18.0442624520825
HQ(n)  -17.40259905391641 -17.2145217698086
SC(n)  -16.32366165773883 -15.9884565468795
FPE(n)   0.00000001371955   0.0000000151957
#Estimação do VAR
var_model <- VAR(dados_var, p = 1, type = "const")
summary(var_model)

VAR Estimation Results:
========================= 
Endogenous variables: log_receita, log_despesa, log_pib 
Deterministic variables: const 
Sample size: 99 
Log Likelihood: 509.768 
Roots of the characteristic polynomial:
0.9889 0.4696 0.2294
Call:
VAR(y = dados_var, p = 1, type = "const")


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

               Estimate Std. Error t value Pr(>|t|)   
log_receita.l1  0.34898    0.12190   2.863  0.00517 **
log_despesa.l1  0.03366    0.08974   0.375  0.70840   
log_pib.l1      0.58765    0.20592   2.854  0.00530 **
const          -0.61773    0.82346  -0.750  0.45501   
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1


Residual standard error: 0.08121 on 95 degrees of freedom
Multiple R-Squared: 0.9135, Adjusted R-squared: 0.9107 
F-statistic: 334.3 on 3 and 95 DF,  p-value: < 0.00000000000000022 


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

               Estimate Std. Error t value    Pr(>|t|)    
log_receita.l1 -0.35136    0.11422  -3.076     0.00274 ** 
log_despesa.l1  0.47235    0.08408   5.618 0.000000192 ***
log_pib.l1      1.03351    0.19294   5.357 0.000000590 ***
const          -3.74785    0.77157  -4.857 0.000004676 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1


Residual standard error: 0.07609 on 95 degrees of freedom
Multiple R-Squared: 0.9558, Adjusted R-squared: 0.9544 
F-statistic: 684.1 on 3 and 95 DF,  p-value: < 0.00000000000000022 


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

               Estimate Std. Error t value             Pr(>|t|)    
log_receita.l1  0.03155    0.02826   1.116             0.267132    
log_despesa.l1  0.06859    0.02081   3.297             0.001377 ** 
log_pib.l1      0.86661    0.04774  18.151 < 0.0000000000000002 ***
const           0.66405    0.19093   3.478             0.000764 ***
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1


Residual standard error: 0.01883 on 95 degrees of freedom
Multiple R-Squared: 0.9949, Adjusted R-squared: 0.9948 
F-statistic:  6237 on 3 and 95 DF,  p-value: < 0.00000000000000022 



Covariance matrix of residuals:
            log_receita log_despesa    log_pib
log_receita   0.0065949  -0.0016205  0.0009564
log_despesa  -0.0016205   0.0057899 -0.0002934
log_pib       0.0009564  -0.0002934  0.0003545

Correlation matrix of residuals:
            log_receita log_despesa log_pib
log_receita      1.0000     -0.2623  0.6254
log_despesa     -0.2623      1.0000 -0.2048
log_pib          0.6254     -0.2048  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 = 4.8551, df1 = 2, df2 = 285, p-value = 0.008444


$Instant

    H0: No instantaneous causality between: log_receita and log_despesa
    log_pib

data:  VAR object var_model
Chi-squared = 28.786, df = 2, p-value = 0.0000005614
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 = 7.7708, df1 = 2, df2 = 285, p-value = 0.0005176


$Instant

    H0: No instantaneous causality between: log_despesa and log_receita
    log_pib

data:  VAR object var_model
Chi-squared = 6.6065, df = 2, p-value = 0.03676
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 = 24.084, df1 = 2, df2 = 285, p-value = 0.0000000002167


$Instant

    H0: No instantaneous causality between: log_pib and log_receita
    log_despesa

data:  VAR object var_model
Chi-squared = 27.928, df = 2, p-value = 0.0000008618
#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 = 121.74, df = 135, p-value = 0.7864
#Teste de normalidade dos resíduos
normality.test(var_model)
$JB

    JB-Test (multivariate)

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


$Skewness

    Skewness only (multivariate)

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


$Kurtosis

    Kurtosis only (multivariate)

data:  Residuals of VAR object var_model
Chi-squared = 1993.3, 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 = 449.31, df = 432, p-value = 0.273
#Estabilidade do modelo (roots dentro do círculo unitário)
roots(var_model) #estabilidade
[1] 0.9889224 0.4696088 0.2294131
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) 
     3      3      1      3 

$criteria
                       1                  2                  3
AIC(n) -17.8988895880874 -18.08261220302435 -18.24033165289189
HQ(n)  -17.7653104109537 -17.84884864304039 -17.90638371005766
SC(n)  -17.5677872355797 -17.50318308613584 -17.41257577162260
FPE(n)   0.0000000168533   0.00000001403518   0.00000001200841
                        4                 5                  6
AIC(n) -18.13110412659157 -18.0582788321250 -17.97429299993324
HQ(n)  -17.69697180090708 -17.5239621235902 -17.33979190854821
SC(n)  -17.05502148094149 -16.7338694220941 -16.40155682552158
FPE(n)   0.00000001343771   0.0000000145278   0.00000001592147
                        7                  8
AIC(n) -17.86902035500920 -17.80495499525326
HQ(n)  -17.13433488077391 -16.97008513816771
SC(n)  -16.04795741621676 -15.73556529208004
FPE(n)   0.00000001787745   0.00000001933207
#Estimação do VAR em diferenças
var_diff <- VAR(dados_diff, p = 3, type = "const")
summary(var_diff)

VAR Estimation Results:
========================= 
Endogenous variables: dlog_receita, dlog_despesa, dlog_pib 
Deterministic variables: const 
Sample size: 96 
Log Likelihood: 500.544 
Roots of the characteristic polynomial:
0.789 0.7527 0.7527 0.6704 0.6704 0.4681 0.4681 0.2145 0.2145
Call:
VAR(y = dados_diff, p = 3, 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 + const 

                 Estimate Std. Error t value   Pr(>|t|)    
dlog_receita.l1 -0.653731   0.134101  -4.875 0.00000493 ***
dlog_despesa.l1  0.006143   0.115095   0.053     0.9576    
dlog_pib.l1      0.994616   0.564418   1.762     0.0816 .  
dlog_receita.l2 -0.712865   0.150511  -4.736 0.00000851 ***
dlog_despesa.l2 -0.008694   0.119860  -0.073     0.9423    
dlog_pib.l2      1.389567   0.546709   2.542     0.0128 *  
dlog_receita.l3 -0.252399   0.139163  -1.814     0.0732 .  
dlog_despesa.l3 -0.017875   0.107890  -0.166     0.8688    
dlog_pib.l3     -0.079625   0.545071  -0.146     0.8842    
const            0.005817   0.011311   0.514     0.6084    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1


Residual standard error: 0.08335 on 86 degrees of freedom
Multiple R-Squared: 0.3182, Adjusted R-squared: 0.2468 
F-statistic: 4.459 on 9 and 86 DF,  p-value: 0.00008169 


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 + const 

                Estimate Std. Error t value Pr(>|t|)    
dlog_receita.l1 -0.25980    0.12917  -2.011 0.047429 *  
dlog_despesa.l1 -0.38167    0.11086  -3.443 0.000892 ***
dlog_pib.l1     -0.12232    0.54366  -0.225 0.822517    
dlog_receita.l2  0.09702    0.14498   0.669 0.505135    
dlog_despesa.l2 -0.15511    0.11545  -1.343 0.182657    
dlog_pib.l2     -0.18091    0.52661  -0.344 0.732032    
dlog_receita.l3  0.17921    0.13405   1.337 0.184780    
dlog_despesa.l3 -0.07656    0.10392  -0.737 0.463328    
dlog_pib.l3      0.36893    0.52503   0.703 0.484145    
const            0.01703    0.01089   1.563 0.121706    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1


Residual standard error: 0.08028 on 86 degrees of freedom
Multiple R-Squared: 0.2892, Adjusted R-squared: 0.2148 
F-statistic: 3.887 on 9 and 86 DF,  p-value: 0.0003604 


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 + const 

                 Estimate Std. Error t value Pr(>|t|)   
dlog_receita.l1 -0.011885   0.028984  -0.410  0.68278   
dlog_despesa.l1  0.050754   0.024876   2.040  0.04439 * 
dlog_pib.l1      0.160074   0.121989   1.312  0.19294   
dlog_receita.l2 -0.075273   0.032530  -2.314  0.02306 * 
dlog_despesa.l2  0.034949   0.025906   1.349  0.18085   
dlog_pib.l2      0.372693   0.118161   3.154  0.00222 **
dlog_receita.l3 -0.025130   0.030078  -0.835  0.40576   
dlog_despesa.l3  0.048134   0.023318   2.064  0.04201 * 
dlog_pib.l3     -0.272540   0.117807  -2.313  0.02308 * 
const            0.005952   0.002445   2.435  0.01698 * 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1


Residual standard error: 0.01801 on 86 degrees of freedom
Multiple R-Squared: 0.2727, Adjusted R-squared: 0.1965 
F-statistic: 3.582 on 9 and 86 DF,  p-value: 0.0008013 



Covariance matrix of residuals:
             dlog_receita dlog_despesa   dlog_pib
dlog_receita    0.0069471   -0.0019063  0.0009252
dlog_despesa   -0.0019063    0.0064457 -0.0003081
dlog_pib        0.0009252   -0.0003081  0.0003245

Correlation matrix of residuals:
             dlog_receita dlog_despesa dlog_pib
dlog_receita       1.0000      -0.2849   0.6162
dlog_despesa      -0.2849       1.0000  -0.2130
dlog_pib           0.6162      -0.2130   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.8921, df1 = 6, df2 = 258, p-value = 0.009569


$Instant

    H0: No instantaneous causality between: dlog_receita and dlog_despesa
    dlog_pib

data:  VAR object var_diff
Chi-squared = 27.645, df = 2, p-value = 0.0000009929
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 = 2.0348, df1 = 6, df2 = 258, p-value = 0.06152


$Instant

    H0: No instantaneous causality between: dlog_despesa and dlog_receita
    dlog_pib

data:  VAR object var_diff
Chi-squared = 7.3913, df = 2, p-value = 0.02483
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 = 1.6664, df1 = 6, df2 = 258, p-value = 0.1296


$Instant

    H0: No instantaneous causality between: dlog_pib and dlog_receita
    dlog_despesa

data:  VAR object var_diff
Chi-squared = 26.498, df = 2, p-value = 0.000001762
#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 = 98.014, df = 117, p-value = 0.8982
#Normalidade dos resíduos
normality.test(var_diff)
$JB

    JB-Test (multivariate)

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


$Skewness

    Skewness only (multivariate)

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


$Kurtosis

    Kurtosis only (multivariate)

data:  Residuals of VAR object var_diff
Chi-squared = 984.5, 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 = 434.33, df = 432, p-value = 0.4595
## Estabilidade do VAR
roots(var_diff) 
[1] 0.7889864 0.7526535 0.7526535 0.6703958 0.6703958 0.4681112 0.4681112
[8] 0.2144888 0.2144888
plot(var_diff) 

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

VECM

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

Call:
lm(formula = receita.d ~ ect1 + ect2 + 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.43861 -0.02115  0.00689  0.03448  0.32776 

Coefficients:
            Estimate Std. Error t value    Pr(>|t|)    
ect1        -0.59279    0.24335  -2.436    0.017045 *  
ect2        -0.19291    0.15745  -1.225    0.224041    
receita.dl1 -0.85504    0.15240  -5.611 0.000000273 ***
despesa.dl1  0.03355    0.12106   0.277    0.782392    
pib.dl1      1.76550    0.66019   2.674    0.009058 ** 
receita.dl2 -1.08849    0.20250  -5.375 0.000000720 ***
despesa.dl2 -0.02266    0.14084  -0.161    0.872609    
pib.dl2      2.16670    0.62389   3.473    0.000829 ***
receita.dl3 -0.78111    0.23724  -3.292    0.001473 ** 
despesa.dl3 -0.08897    0.15212  -0.585    0.560277    
pib.dl3      0.98797    0.65409   1.510    0.134817    
receita.dl4 -0.72905    0.25099  -2.905    0.004737 ** 
despesa.dl4 -0.03132    0.16851  -0.186    0.852994    
pib.dl4      1.96414    0.72828   2.697    0.008510 ** 
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.08098 on 81 degrees of freedom
Multiple R-squared:  0.4005,    Adjusted R-squared:  0.2969 
F-statistic: 3.865 on 14 and 81 DF,  p-value: 0.00005225


Response despesa.d :

Call:
lm(formula = despesa.d ~ ect1 + ect2 + 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.14926 -0.03087 -0.00588  0.01412  0.45043 

Coefficients:
            Estimate Std. Error t value  Pr(>|t|)    
ect1        -0.07128    0.23169  -0.308   0.75914    
ect2        -0.36646    0.14991  -2.444   0.01668 *  
receita.dl1 -0.32529    0.14510  -2.242   0.02770 *  
despesa.dl1 -0.51248    0.11527  -4.446 0.0000275 ***
pib.dl1      0.30088    0.62858   0.479   0.63346    
receita.dl2 -0.04735    0.19280  -0.246   0.80661    
despesa.dl2 -0.40075    0.13410  -2.988   0.00371 ** 
pib.dl2      0.20659    0.59401   0.348   0.72890    
receita.dl3  0.04524    0.22588   0.200   0.84174    
despesa.dl3 -0.40432    0.14484  -2.792   0.00654 ** 
pib.dl3      0.60328    0.62276   0.969   0.33557    
receita.dl4 -0.13987    0.23897  -0.585   0.55996    
despesa.dl4 -0.45285    0.16044  -2.823   0.00599 ** 
pib.dl4      0.40410    0.69340   0.583   0.56166    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.0771 on 81 degrees of freedom
Multiple R-squared:  0.3914,    Adjusted R-squared:  0.2863 
F-statistic: 3.722 on 14 and 81 DF,  p-value: 0.00008439


Response pib.d :

Call:
lm(formula = pib.d ~ ect1 + ect2 + 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.076184 -0.006998  0.001583  0.012053  0.041002 

Coefficients:
            Estimate Std. Error t value Pr(>|t|)  
ect1         0.09274    0.05519   1.680   0.0968 .
ect2         0.04496    0.03571   1.259   0.2117  
receita.dl1  0.01008    0.03456   0.292   0.7713  
despesa.dl1  0.06610    0.02746   2.407   0.0183 *
pib.dl1      0.11483    0.14973   0.767   0.4454  
receita.dl2 -0.03467    0.04593  -0.755   0.4525  
despesa.dl2  0.05897    0.03194   1.846   0.0685 .
pib.dl2      0.28328    0.14150   2.002   0.0486 *
receita.dl3  0.03457    0.05381   0.642   0.5224  
despesa.dl3  0.08302    0.03450   2.406   0.0184 *
pib.dl3     -0.36408    0.14835  -2.454   0.0163 *
receita.dl4  0.06212    0.05693   1.091   0.2784  
despesa.dl4  0.06829    0.03822   1.787   0.0777 .
pib.dl4      0.01142    0.16517   0.069   0.9451  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.01837 on 81 degrees of freedom
Multiple R-squared:  0.3953,    Adjusted R-squared:  0.2908 
F-statistic: 3.783 on 14 and 81 DF,  p-value: 0.00006871
#Converter VECM para VAR em nível (para IRF e FEVD)
vec_var <- vars::vec2var(johansen_test, r = 2)
vec_var

Coefficient matrix of lagged endogenous variables:

A1:
         receita.l1 despesa.l1    pib.l1
receita  0.14496219 0.03354919 1.7655003
despesa -0.32529382 0.48751690 0.3008805
pib      0.01008124 0.06609541 1.1148304


A2:
         receita.l2   despesa.l2      pib.l2
receita -0.23345064 -0.056204488  0.40120349
despesa  0.27794125  0.111733207 -0.09428955
pib     -0.04475119 -0.007126399  0.16845004


A3:
        receita.l3   despesa.l3     pib.l3
receita 0.30738250 -0.066314020 -1.1787288
despesa 0.09259743 -0.003570457  0.3966939
pib     0.06923741  0.024049841 -0.6473635


A4:
         receita.l4  despesa.l4     pib.l4
receita  0.05205611  0.05764499  0.9761688
despesa -0.18511973 -0.04853389 -0.1991829
pib      0.02755362 -0.01473336  0.3755000


A5:
        receita.l5  despesa.l5     pib.l5
receita 0.13625980 -0.16158918 -1.1110382
despesa 0.06859516  0.08639677  0.1153941
pib     0.03061523 -0.02332849 -0.1628255


Coefficient matrix of deterministic regressor(s).

          constant
receita -2.3521274
despesa -1.9204165
pib      0.4384666
#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.9323898 0.001157784 0.06645241
 [3,] 0.8124839 0.005937912 0.18157820
 [4,] 0.7855535 0.013275569 0.20117089
 [5,] 0.7298635 0.041761188 0.22837531
 [6,] 0.7167317 0.049734068 0.23353424
 [7,] 0.7148609 0.049484619 0.23565449
 [8,] 0.7139597 0.053177525 0.23286280
 [9,] 0.7078623 0.051615277 0.24052244
[10,] 0.7065271 0.050898620 0.24257427
[11,] 0.7032092 0.050185610 0.24660523
[12,] 0.6989427 0.050891025 0.25016628
# Ver decomposição da despesa
fevd_result$despesa
         receita   despesa         pib
 [1,] 0.08237348 0.9176265 0.000000000
 [2,] 0.19093938 0.8071630 0.001897577
 [3,] 0.17774991 0.8198318 0.002418268
 [4,] 0.18768199 0.8083376 0.003980370
 [5,] 0.18584203 0.7966050 0.017552919
 [6,] 0.18138192 0.7902845 0.028333539
 [7,] 0.17913981 0.7800911 0.040769111
 [8,] 0.17530139 0.7653218 0.059376839
 [9,] 0.17985275 0.7490349 0.071112371
[10,] 0.18985658 0.7241464 0.085997036
[11,] 0.20082182 0.6975451 0.101633029
[12,] 0.21643255 0.6645984 0.118969081
# Ver decomposição do PIB
fevd_result$pib
        receita      despesa       pib
 [1,] 0.4793058 0.0003533445 0.5203409
 [2,] 0.4498822 0.0363536370 0.5137642
 [3,] 0.3635360 0.0665647692 0.5698992
 [4,] 0.3327285 0.1355038850 0.5317677
 [5,] 0.3391113 0.1677978539 0.4930909
 [6,] 0.3671964 0.1840432999 0.4487603
 [7,] 0.4049611 0.1733118268 0.4217270
 [8,] 0.4334522 0.1651290850 0.4014187
 [9,] 0.4548663 0.1543042215 0.3908294
[10,] 0.4727253 0.1477653416 0.3795094
[11,] 0.4893176 0.1406167878 0.3700656
[12,] 0.5047779 0.1350122437 0.3602099
# 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 = 86.547, df = 102, p-value = 0.8632
# Normalidade dos resíduos
normality.test(vec_var)
$JB

    JB-Test (multivariate)

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


$Skewness

    Skewness only (multivariate)

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


$Kurtosis

    Kurtosis only (multivariate)

data:  Residuals of VAR object vec_var
Chi-squared = 1274, 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 = 428.89, df = 432, p-value = 0.5332

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.2734347353020647464206  0.2170366441391683720585
[3]  0.1511346315187404032443  0.1021674763425077514523
[5]  0.0651716553062813008790 -0.0000000000000004440892

Values of teststatistic and critical values of test:

          test 10pct  5pct  1pct
r <= 4 |  6.40  7.52  9.24 12.97
r <= 3 | 16.64 17.85 19.96 24.60
r <= 2 | 32.21 32.00 34.91 41.07
r <= 1 | 55.45 49.65 53.12 60.16
r = 0  | 85.80 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.0000000000  1.00000000  1.00000000    1.0000000  1.00000000
despesa.l5  0.6478110440 -2.00711330 -0.24389856   -4.3603710 -0.95315099
pib.l5     -1.7948152397  0.83042455 -0.64775032   11.7237549  0.30102988
ipca.l5     0.0004749599 -0.74319884  0.82771995    0.2285135 -0.21982098
selic.l5    0.0036543298 -0.02433865 -0.01993525    0.4461875 -0.01997845
constant    4.9439229373  1.74422242 -0.45685612 -133.1257473 -4.74924384
               constant
receita.l5  1.000000000
despesa.l5  0.001517974
pib.l5     -1.620521835
ipca.l5     0.195414182
selic.l5   -0.012677127
constant   10.667864401

Weights W:
(This is the loading matrix)

           receita.l5   despesa.l5      pib.l5      ipca.l5    selic.l5
receita.d -0.45981821 -0.050958123 -0.01256175 -0.006995928 -0.08818442
despesa.d -0.32702407  0.157826366 -0.03393244  0.003804113  0.01039396
pib.d      0.08362936  0.005490346  0.01447204 -0.002210368 -0.01833875
ipca.d    -0.52895576 -0.181444264 -0.51598486 -0.043269278  0.17106297
selic.d   -6.65013069 -0.348190259  1.15284641 -0.094311694  0.34437737
                        constant
receita.d -0.0000000000013849054
despesa.d -0.0000000000012461731
pib.d      0.0000000000003071024
ipca.d    -0.0000000000019767253
selic.d   -0.0000000000190704240
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.2734347353020647464206  0.2170366441391683720585
[3]  0.1511346315187404032443  0.1021674763425077514523
[5]  0.0651716553062813008790 -0.0000000000000004440892

Values of teststatistic and critical values of test:

          test 10pct  5pct  1pct
r <= 4 |  6.40  7.52  9.24 12.97
r <= 3 | 10.24 13.75 15.67 20.20
r <= 2 | 15.57 19.77 22.00 26.81
r <= 1 | 23.24 25.56 28.14 33.24
r = 0  | 30.35 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.0000000000  1.00000000  1.00000000    1.0000000  1.00000000
despesa.l5  0.6478110440 -2.00711330 -0.24389856   -4.3603710 -0.95315099
pib.l5     -1.7948152397  0.83042455 -0.64775032   11.7237549  0.30102988
ipca.l5     0.0004749599 -0.74319884  0.82771995    0.2285135 -0.21982098
selic.l5    0.0036543298 -0.02433865 -0.01993525    0.4461875 -0.01997845
constant    4.9439229373  1.74422242 -0.45685612 -133.1257473 -4.74924384
               constant
receita.l5  1.000000000
despesa.l5  0.001517974
pib.l5     -1.620521835
ipca.l5     0.195414182
selic.l5   -0.012677127
constant   10.667864401

Weights W:
(This is the loading matrix)

           receita.l5   despesa.l5      pib.l5      ipca.l5    selic.l5
receita.d -0.45981821 -0.050958123 -0.01256175 -0.006995928 -0.08818442
despesa.d -0.32702407  0.157826366 -0.03393244  0.003804113  0.01039396
pib.d      0.08362936  0.005490346  0.01447204 -0.002210368 -0.01833875
ipca.d    -0.52895576 -0.181444264 -0.51598486 -0.043269278  0.17106297
selic.d   -6.65013069 -0.348190259  1.15284641 -0.094311694  0.34437737
                        constant
receita.d -0.0000000000013849054
despesa.d -0.0000000000012461731
pib.d      0.0000000000003071024
ipca.d    -0.0000000000019767253
selic.d   -0.0000000000190704240

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 = 2)
summary(vec_model_5$rlm)
Response receita.d :

Call:
lm(formula = receita.d ~ ect1 + ect2 + 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.41696 -0.02259  0.00226  0.04161  0.33261 

Coefficients:
              Estimate Std. Error t value   Pr(>|t|)    
ect1        -0.5107763  0.2557801  -1.997    0.04956 *  
ect2        -0.1955966  0.1880909  -1.040    0.30182    
receita.dl1 -0.8389449  0.1648561  -5.089 0.00000270 ***
despesa.dl1  0.0513883  0.1493483   0.344    0.73177    
pib.dl1      1.8174631  0.7306899   2.487    0.01516 *  
ipca.dl1     0.0378326  0.0363651   1.040    0.30161    
selic.dl1   -0.0076754  0.0135730  -0.565    0.57347    
receita.dl2 -1.0713324  0.2163498  -4.952 0.00000459 ***
despesa.dl2 -0.0330979  0.1772658  -0.187    0.85240    
pib.dl2      2.1635672  0.7060751   3.064    0.00306 ** 
ipca.dl2     0.0095270  0.0449909   0.212    0.83289    
selic.dl2    0.0050832  0.0181725   0.280    0.78048    
receita.dl3 -0.7466279  0.2549590  -2.928    0.00454 ** 
despesa.dl3 -0.1079467  0.1925398  -0.561    0.57676    
pib.dl3      0.9110896  0.7334554   1.242    0.21814    
ipca.dl3     0.0460496  0.0491308   0.937    0.35170    
selic.dl3    0.0005122  0.0178889   0.029    0.97723    
receita.dl4 -0.6664412  0.2664536  -2.501    0.01462 *  
despesa.dl4 -0.0608792  0.2061916  -0.295    0.76864    
pib.dl4      1.7730735  0.8012103   2.213    0.03002 *  
ipca.dl4     0.0163033  0.0472355   0.345    0.73097    
selic.dl4   -0.0085161  0.0126556  -0.673    0.50313    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.08436 on 73 degrees of freedom
Multiple R-squared:  0.4136,    Adjusted R-squared:  0.2368 
F-statistic:  2.34 on 22 and 73 DF,  p-value: 0.003617


Response despesa.d :

Call:
lm(formula = despesa.d ~ ect1 + ect2 + 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.11679 -0.03964 -0.00766  0.02052  0.34688 

Coefficients:
             Estimate Std. Error t value    Pr(>|t|)    
ect1        -0.169198   0.212375  -0.797    0.428213    
ect2        -0.528625   0.156173  -3.385    0.001149 ** 
receita.dl1 -0.303598   0.136881  -2.218    0.029668 *  
despesa.dl1 -0.673673   0.124004  -5.433 0.000000698 ***
pib.dl1     -0.221423   0.606694  -0.365    0.716191    
ipca.dl1    -0.099262   0.030194  -3.287    0.001556 ** 
selic.dl1    0.003861   0.011270   0.343    0.732880    
receita.dl2  0.024341   0.179636   0.135    0.892590    
despesa.dl2 -0.481547   0.147184  -3.272    0.001634 ** 
pib.dl2     -0.375519   0.586257  -0.641    0.523829    
ipca.dl2    -0.046512   0.037356  -1.245    0.217078    
selic.dl2   -0.029173   0.015089  -1.933    0.057063 .  
receita.dl3  0.063888   0.211693   0.302    0.763665    
despesa.dl3 -0.526427   0.159866  -3.293    0.001530 ** 
pib.dl3      0.512819   0.608990   0.842    0.402494    
ipca.dl3    -0.062890   0.040793  -1.542    0.127480    
selic.dl3    0.012732   0.014853   0.857    0.394129    
receita.dl4 -0.179721   0.221237  -0.812    0.419235    
despesa.dl4 -0.641283   0.171202  -3.746    0.000357 ***
pib.dl4      0.390434   0.665248   0.587    0.559082    
ipca.dl4    -0.092758   0.039220  -2.365    0.020686 *  
selic.dl4   -0.003223   0.010508  -0.307    0.759965    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.07005 on 73 degrees of freedom
Multiple R-squared:  0.5473,    Adjusted R-squared:  0.4109 
F-statistic: 4.011 on 22 and 73 DF,  p-value: 0.00000386


Response pib.d :

Call:
lm(formula = pib.d ~ ect1 + ect2 + 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.073410 -0.008081  0.002920  0.011707  0.041675 

Coefficients:
              Estimate Std. Error t value Pr(>|t|)  
ect1         0.0891197  0.0577590   1.543   0.1272  
ect2         0.0431563  0.0424738   1.016   0.3130  
receita.dl1  0.0128298  0.0372270   0.345   0.7314  
despesa.dl1  0.0562700  0.0337251   1.668   0.0995 .
pib.dl1      0.1023957  0.1650007   0.621   0.5368  
ipca.dl1     0.0023386  0.0082118   0.285   0.7766  
selic.dl1   -0.0012980  0.0030650  -0.423   0.6732  
receita.dl2 -0.0307349  0.0488550  -0.629   0.5312  
despesa.dl2  0.0514037  0.0400293   1.284   0.2031  
pib.dl2      0.2491736  0.1594424   1.563   0.1224  
ipca.dl2    -0.0062350  0.0101596  -0.614   0.5413  
selic.dl2    0.0002638  0.0041036   0.064   0.9489  
receita.dl3  0.0371235  0.0575736   0.645   0.5211  
despesa.dl3  0.0815711  0.0434784   1.876   0.0646 .
pib.dl3     -0.3599120  0.1656252  -2.173   0.0330 *
ipca.dl3     0.0026385  0.0110945   0.238   0.8127  
selic.dl3    0.0012566  0.0040396   0.311   0.7566  
receita.dl4  0.0618765  0.0601692   1.028   0.3072  
despesa.dl4  0.0604842  0.0465612   1.299   0.1980  
pib.dl4      0.0134068  0.1809253   0.074   0.9411  
ipca.dl4    -0.0056695  0.0106665  -0.532   0.5967  
selic.dl4   -0.0012653  0.0028578  -0.443   0.6592  
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.01905 on 73 degrees of freedom
Multiple R-squared:  0.4137,    Adjusted R-squared:  0.237 
F-statistic: 2.341 on 22 and 73 DF,  p-value: 0.003603


Response ipca.d :

Call:
lm(formula = ipca.d ~ ect1 + ect2 + 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.97118 -0.12711 -0.03207  0.09529  1.23771 

Coefficients:
            Estimate Std. Error t value  Pr(>|t|)    
ect1        -0.71040    0.90061  -0.789   0.43278    
ect2         0.02152    0.66227   0.032   0.97417    
receita.dl1  0.08164    0.58046   0.141   0.88854    
despesa.dl1  0.25784    0.52586   0.490   0.62538    
pib.dl1     -0.34989    2.57278  -0.136   0.89220    
ipca.dl1    -0.43710    0.12804  -3.414   0.00105 ** 
selic.dl1    0.08702    0.04779   1.821   0.07273 .  
receita.dl2 -0.51437    0.76177  -0.675   0.50167    
despesa.dl2  0.43068    0.62416   0.690   0.49238    
pib.dl2      1.15738    2.48611   0.466   0.64293    
ipca.dl2    -0.75185    0.15841  -4.746 0.0000101 ***
selic.dl2   -0.09771    0.06399  -1.527   0.13108    
receita.dl3 -0.69408    0.89772  -0.773   0.44193    
despesa.dl3  0.53929    0.67794   0.795   0.42891    
pib.dl3      3.03389    2.58252   1.175   0.24390    
ipca.dl3    -0.21912    0.17299  -1.267   0.20930    
selic.dl3   -0.01093    0.06299  -0.174   0.86272    
receita.dl4 -1.03881    0.93819  -1.107   0.27182    
despesa.dl4  0.67549    0.72601   0.930   0.35522    
pib.dl4      3.86654    2.82108   1.371   0.17470    
ipca.dl4    -0.01962    0.16632  -0.118   0.90640    
selic.dl4   -0.01253    0.04456  -0.281   0.77937    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.297 on 73 degrees of freedom
Multiple R-squared:  0.4582,    Adjusted R-squared:  0.295 
F-statistic: 2.807 on 22 and 73 DF,  p-value: 0.0005156


Response selic.d :

Call:
lm(formula = selic.d ~ ect1 + ect2 + 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.01953 -0.39344 -0.01623  0.37703  2.82995 

Coefficients:
             Estimate Std. Error t value        Pr(>|t|)    
ect1        -6.998321   2.314111  -3.024         0.00344 ** 
ect2        -3.609171   1.701709  -2.121         0.03733 *  
receita.dl1 -1.325508   1.491497  -0.889         0.37708    
despesa.dl1 -0.683265   1.351194  -0.506         0.61461    
pib.dl1      8.220874   6.610746   1.244         0.21764    
ipca.dl1     0.782262   0.329005   2.378         0.02004 *  
selic.dl1    0.945711   0.122798   7.701 0.0000000000512 ***
receita.dl2 -2.946192   1.957374  -1.505         0.13659    
despesa.dl2 -1.111494   1.603771  -0.693         0.49048    
pib.dl2     10.757492   6.388050   1.684         0.09645 .  
ipca.dl2     0.365488   0.407045   0.898         0.37219    
selic.dl2   -0.500187   0.164412  -3.042         0.00326 ** 
receita.dl3 -3.463988   2.306682  -1.502         0.13748    
despesa.dl3 -1.789234   1.741958  -1.027         0.30775    
pib.dl3     13.096069   6.635766   1.974         0.05222 .  
ipca.dl3     0.280546   0.444499   0.631         0.52991    
selic.dl3    0.044151   0.161846   0.273         0.78578    
receita.dl4 -5.131851   2.410677  -2.129         0.03665 *  
despesa.dl4 -2.317914   1.865470  -1.243         0.21802    
pib.dl4     12.840442   7.248763   1.771         0.08067 .  
ipca.dl4     0.393654   0.427352   0.921         0.36001    
selic.dl4    0.004938   0.114499   0.043         0.96572    
---
Signif. codes:  0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1

Residual standard error: 0.7632 on 73 degrees of freedom
Multiple R-squared:  0.7316,    Adjusted R-squared:  0.6507 
F-statistic: 9.046 on 22 and 73 DF,  p-value: 0.0000000000003152
#CONVERSÃO PARA VAR EQUIVALENTE

vec_var_5 <- vec2var(teste_johansen_5, r = 2)

# 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 = 251.9, df = 280, p-value = 0.8852
# Normalidade dos resíduos
normality.test(vec_var_5)
$JB

    JB-Test (multivariate)

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


$Skewness

    Skewness only (multivariate)

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


$Kurtosis

    Kurtosis only (multivariate)

data:  Residuals of VAR object vec_var_5
Chi-squared = 1065.7, 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 (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_sa)),
  log_despesa = log(as.numeric(despesa_real_tri_sa)),
  log_pib     = log(as.numeric(pib_real_tri_sa))
) |> 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.0002    -0.0002         0.0002
choque_PIB          -0.0002     0.0049         0.0003
choque_Receita       0.0002     0.0003         0.0029
# 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: 130.215 
Method: scoring 
Number of iterations: 402 

LR overidentification test:

    LR overidentification

data:  dados_var_3
Chi^2 = 679, 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.08973 0.00000      0.0000
log_pib         0.00000 0.05415      0.0000
log_receita    -0.28753 2.08000      0.7081

Estimated standard errors for B matrix:
            log_despesa  log_pib log_receita
log_despesa    0.006358 0.000000      0.0000
log_pib        0.000000 0.001732      0.0000
log_receita    0.000000 0.000000      0.0522

Covariance matrix of reduced form residuals (*100):
            log_despesa log_pib log_receita
log_despesa      0.8051  0.0000       -2.58
log_pib          0.0000  0.2932       11.26
log_receita     -2.5800 11.2624      491.05
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.9734765 0.8621028 0.8621028 0.8460165 0.8460165 0.8441414 0.8439816
 [8] 0.8439816 0.8052489 0.8052489 0.7970283 0.7970283 0.7839994 0.7839994
[15] 0.7750740 0.7750740 0.7417106 0.7417106 0.7175300 0.7175300 0.7058371
[22] 0.7058371 0.5312483 0.5312483
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 = 32.077, df = 36, p-value = 0.6558
arch.test(var_red, lags.multi = 12, multivariate.only = TRUE)

    ARCH (multivariate)

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

    JB-Test (multivariate)

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


$Skewness

    Skewness only (multivariate)

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


$Kurtosis

    Kurtosis only (multivariate)

data:  Residuals of VAR object var_red
Chi-squared = 1166.1, 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_sa)))),
  despesa_diff = c(NA, diff(log(as.numeric(despesa_real_tri_sa)))),
  pib_diff     = c(NA, diff(log(as.numeric(pib_real_tri_sa))))
) |> 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.0002         0.0002
choque_PIB          -0.0002     0.0053         0.0005
choque_Receita       0.0002     0.0005         0.0031
# 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: 118.421 
Method: scoring 
Number of iterations: 358 

LR overidentification test:

    LR overidentification

data:  dados_var_3_diff
Chi^2 = 671, 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.09419  0.00000       0.0000
pib_diff          0.00000  0.05502       0.0000
receita_diff     -0.29710  2.08000       0.7441

Estimated standard errors for B matrix:
             despesa_diff pib_diff receita_diff
despesa_diff     0.006719 0.000000      0.00000
pib_diff         0.000000 0.001841      0.00000
receita_diff     0.000000 0.000000      0.05516

Covariance matrix of reduced form residuals (*100):
             despesa_diff pib_diff receita_diff
despesa_diff       0.8872   0.0000       -2.798
pib_diff           0.0000   0.3027       11.444
receita_diff      -2.7984  11.4435      496.834
# 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.9169504 0.9169504 0.8596437 0.8596437 0.8595808 0.8595808 0.8469520
 [8] 0.8469520 0.8461214 0.8461214 0.8189136 0.8189136 0.8136183 0.8136183
[15] 0.8097567 0.7742937 0.7742937 0.7646956 0.7646956 0.7601856 0.7092422
[22] 0.7092422 0.6182757 0.1108312
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 = 36.236, df = 36, p-value = 0.4577
arch.test(var_red_diff, lags.multi = 12, multivariate.only = TRUE)

    ARCH (multivariate)

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

    JB-Test (multivariate)

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


$Skewness

    Skewness only (multivariate)

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


$Kurtosis

    Kurtosis only (multivariate)

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