Perito Responsável: Ramon Gregório Silva
Ocupação: Doutorando CEDEPLAR-UFMG
Ano de
Referência das Transações: 2022
Timóteo - MG
Junho de 2026
library('tidyverse')
## Warning: pacote 'ggplot2' foi compilado no R versão 4.4.3
## Warning: pacote 'tidyr' foi compilado no R versão 4.4.3
## Warning: pacote 'purrr' foi compilado no R versão 4.4.3
## Warning: pacote 'dplyr' foi compilado no R versão 4.4.3
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.2.1 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 4.0.3 ✔ tibble 3.2.1
## ✔ lubridate 1.9.3 ✔ tidyr 1.3.2
## ✔ purrr 1.2.2
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
# Puxa o arquivo direto da pasta do Desktop usando o caminho duplo de barras
resultados_modelagem <- read.csv2("C:\\Users\\Usuario\\Desktop\\noticia\\todo.csv")
names(resultados_modelagem)
## [1] "X.2" "X.1"
## [3] "X" "endereco_oficial"
## [5] "padrao_acabamento" "tipo_imovel"
## [7] "bairro" "data_trans"
## [9] "area" "v_decl"
## [11] "v_base" "periodo_csv"
## [13] "id_auditoria" "data_mes"
## [15] "ano" "deflator"
## [17] "v_decl_real" "v_base_real"
## [19] "v_m2_real" "rua_do_imovel"
## [21] "v_m2_justo" "valor_mercado_justo"
## [23] "itbi_devido_justo" "itbi_pago_efetivo"
## [25] "prejuizo_cofres_publicos" "ganho"
## [27] "evasao" "pct_decl"
## [29] "pct_base" "cat_v_decl"
## [31] "cat_v_base" "metro2base"
## [33] "coefdecl" "coefbase"
df<-resultados_modelagem %>% filter(coefdecl<0.67)
Os resultados do teste Aumentado de Dickey-Fuller (ADF) confirmam que todas as suas variáveis (n, coef, investimento, aluguel, prejuizo_cofres_publicos e prejuizo_uniao) são estacionárias, apresentando valores de p-valor abaixo de 0,05. Isso significa que as séries flutuam em torno de uma média constante e não possuem tendências de crescimento ou queda artificial ao longo do tempo, o que é um requisito essencial para garantir que as relações identificadas no seu modelo VAR não sejam puramente acidentais.
Essa estacionariedade é fundamental para a robustez da sua análise, pois assegura que o sistema retorne ao equilíbrio após qualquer choque externo. Com as variáveis validadas, você tem a segurança estatística de que os impactos medidos nas Funções de Resposta ao Impulso refletem uma dinâmica econômica real no Santo Agostinho, evitando o erro de “regressões espúrias” e fortalecendo a credibilidade da sua tese sobre o viés de omissão.
library(dplyr)
library(lubridate)
library(stringr)
df <- df %>%
mutate(
mes = month(data_trans))
df_var <- df %>%
group_by(mes,ano) %>%
summarise(
n = n(),
coef = mean(v_m2_real),
investimento = sum(v_decl_real, na.rm = TRUE),
aluguel = 12*sum(v_m2_justo * 0.005 * area, na.rm = TRUE),
prejuizo_cofres_publicos=sum(prejuizo_cofres_publicos),
prejuizo_uniao=sum(evasao),
.groups = 'drop'
)
library(dplyr)
library(tseries)
## Warning: pacote 'tseries' foi compilado no R versão 4.4.3
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
library(purrr)
# Ordenar os dados cronologicamente
df_ts <- df_var %>%
arrange(ano, mes) %>%
dplyr::select(-mes, -ano)
# Função para aplicar o teste ADF em todas as colunas
testes_adf <- map_df(df_ts, function(x) {
teste <- adf.test(x, alternative = "stationary")
data.frame(
estatistica = teste$statistic,
p_valor = teste$p.value,
conclusao = ifelse(teste$p.value < 0.05, "Estacionária", "Não Estacionária")
)
}, .id = "variavel")
## Warning in adf.test(x, alternative = "stationary"): p-value smaller than
## printed p-value
## Warning in adf.test(x, alternative = "stationary"): p-value smaller than
## printed p-value
## Warning in adf.test(x, alternative = "stationary"): p-value smaller than
## printed p-value
## Warning in adf.test(x, alternative = "stationary"): p-value smaller than
## printed p-value
## Warning in adf.test(x, alternative = "stationary"): p-value smaller than
## printed p-value
print(testes_adf)
## variavel estatistica p_valor conclusao
## Dickey-Fuller...1 n -4.031625 0.01000000 Estacionária
## Dickey-Fuller...2 coef -3.823708 0.01900389 Estacionária
## Dickey-Fuller...3 investimento -4.203898 0.01000000 Estacionária
## Dickey-Fuller...4 aluguel -5.349896 0.01000000 Estacionária
## Dickey-Fuller...5 prejuizo_cofres_publicos -5.593739 0.01000000 Estacionária
## Dickey-Fuller...6 prejuizo_uniao -5.466601 0.01000000 Estacionária
Conclusão: o modelo com 6 defasagens atende as condições de parsimônia
library(vars)
## Warning: pacote 'vars' foi compilado no R versão 4.4.3
## Carregando pacotes exigidos: MASS
##
## Anexando pacote: 'MASS'
## O seguinte objeto é mascarado por 'package:dplyr':
##
## select
## Carregando pacotes exigidos: strucchange
## Warning: pacote 'strucchange' foi compilado no R versão 4.4.3
## Carregando pacotes exigidos: zoo
## Warning: pacote 'zoo' foi compilado no R versão 4.4.2
##
## Anexando pacote: 'zoo'
## Os seguintes objetos são mascarados por 'package:base':
##
## as.Date, as.Date.numeric
## Carregando pacotes exigidos: sandwich
## Warning: pacote 'sandwich' foi compilado no R versão 4.4.3
##
## Anexando pacote: 'strucchange'
## O seguinte objeto é mascarado por 'package:stringr':
##
## boundary
## Carregando pacotes exigidos: urca
## Warning: pacote 'urca' foi compilado no R versão 4.4.3
## Carregando pacotes exigidos: lmtest
## Warning: pacote 'lmtest' foi compilado no R versão 4.4.3
# Ajuste o lag.max para o número máximo de meses que faz sentido no seu contexto
# A função VARselect analisa o df_ts sem as colunas de tempo
selecao_lags <- VARselect(df_ts, lag.max = 12, type = "const")
## Warning in log(sigma.det): NaNs produzidos
## Warning in log(sigma.det): NaNs produzidos
## Warning in log(sigma.det): NaNs produzidos
## Warning in log(sigma.det): NaNs produzidos
## Warning in log(sigma.det): NaNs produzidos
## Warning in log(sigma.det): NaNs produzidos
## Warning in log(sigma.det): NaNs produzidos
## Warning in log(sigma.det): NaNs produzidos
## Warning in log(sigma.det): NaNs produzidos
## Warning in log(sigma.det): NaNs produzidos
## Warning in log(sigma.det): NaNs produzidos
## Warning in log(sigma.det): NaNs produzidos
## Warning in log(sigma.det): NaNs produzidos
## Warning in log(sigma.det): NaNs produzidos
## Warning in log(sigma.det): NaNs produzidos
## Warning in log(sigma.det): NaNs produzidos
## Warning in log(sigma.det): NaNs produzidos
## Warning in log(sigma.det): NaNs produzidos
# Exibir os critérios de informação
print(selecao_lags$selection)
## AIC(n) HQ(n) SC(n) FPE(n)
## 6 6 6 9
O modelo VAR (Vector Autoregression) é uma técnica econométrica multivariada que trata todas as variáveis do sistema como endógenas, permitindo que cada uma delas seja explicada por seus próprios valores defasados e pelos valores defasados das demais variáveis. Diferente de modelos de regressão tradicionais que impõem uma relação rígida de causa e efeito, o VAR capta as interdependências dinâmicas entre os dados, revelando como um “choque” ou variação em um indicador específico se propaga por todo o conjunto de informações ao longo do tempo.
Para o campo da auditoria, o potencial desse modelo é transformador, pois ele permite identificar padrões de comportamento e correlações que não seriam visíveis em análises contábeis estáticas. Ao aplicar o VAR em auditorias de conformidade ou tributárias, é possível verificar se flutuações em dados declarados seguem uma lógica econômica coerente ou se desviam significativamente do comportamento esperado das demais variáveis do sistema.
Dessa forma, o modelo funciona como uma ferramenta analítica de precisão para detectar anomalias, sendo extremamente útil na identificação de riscos como o viés de omissão ou a evasão fiscal. Em vez de apenas verificar se um documento está correto, o auditor consegue quantificar o impacto de uma variável sobre outra e prever o comportamento esperado das séries, tornando o processo de auditoria mais estratégico, baseado em evidências empíricas e capaz de sinalizar distorções complexas que passariam despercebidas em verificações manuais de rotina. O modelo VAR (Vetores Autorregressivos) permite tratar as variáveis (n, m2, investimento e prejuizo_uniao) como um sistema de vasos comunicantes, onde o movimento em uma série gera repercussões em todas as outras. Com essa estrutura, é possível descobrir três dimensões fundamentais sobre a evasão e a dinâmica fiscal:
Dinâmica de causalidade e precedência temporal O VAR permite identificar se a variação em uma variável “antecede” movimentos em outra. Por exemplo, você pode descobrir se o aumento no volume de transações (n) precede sistematicamente um aumento na evasão (prejuizo_uniao). Isso é vital para identificar se o sistema de avaliação fiscal é reativo ou defasado em relação à realidade do mercado imobiliário. Se uma variável atua como um “sinalizador” precoce, ela pode ser usada para prever riscos antes mesmo que a perda fiscal ocorra.
Efeito multiplicador e persistência de choques Através das Funções de Resposta ao Impulso (IRF), é possível descobrir a magnitude e a duração do impacto de um evento. Você pode mensurar, por exemplo, o quanto exatamente uma unidade adicional de investimento em saúde reduz o prejuízo aos cofres públicos e, mais importante, por quanto tempo esse efeito positivo se sustenta. Isso revela se o investimento gera uma economia estrutural ou apenas uma mitigação temporária e efêmera.
Decomposição da Variância do Erro de Previsão Esta é uma das capacidades mais poderosas do VAR para a auditoria: ela permite descobrir quanta parte da volatilidade da evasão pode ser atribuída a cada uma das outras variáveis. Você poderá dizer, por exemplo, que “X% da variação da evasão é explicada pelo volume de transações, enquanto Y% é explicada pela defasagem no metro quadrado (m2)”. Isso ajuda a hierarquizar os problemas: você descobrirá quais fatores são os principais “motores” da evasão, permitindo que a fiscalização foque seus recursos onde o impacto for comprovadamente maior.
library(vars)
cor_matrix <- cor(df_ts)
print(cor_matrix)
## n coef investimento aluguel
## n 1.0000000 0.4287349 0.9096564 0.3503350
## coef 0.4287349 1.0000000 0.4305680 0.2149390
## investimento 0.9096564 0.4305680 1.0000000 0.5643950
## aluguel 0.3503350 0.2149390 0.5643950 1.0000000
## prejuizo_cofres_publicos 0.2439157 0.1649718 0.4563914 0.9914801
## prejuizo_uniao 0.2928946 0.1898515 0.5089177 0.9978377
## prejuizo_cofres_publicos prejuizo_uniao
## n 0.2439157 0.2928946
## coef 0.1649718 0.1898515
## investimento 0.4563914 0.5089177
## aluguel 0.9914801 0.9978377
## prejuizo_cofres_publicos 1.0000000 0.9975525
## prejuizo_uniao 0.9975525 1.0000000
library(dplyr)
# Force o uso da função select do dplyr
df_ts_ajustado <- dplyr::select(df_ts, n, coef, investimento, prejuizo_uniao)
# Agora, verifique se a seleção funcionou
head(df_ts_ajustado)
## # A tibble: 6 × 4
## n coef investimento prejuizo_uniao
## <int> <dbl> <dbl> <dbl>
## 1 354 7672. 69294037. 64897054.
## 2 271 4450. 47614122. 17053532.
## 3 324 7595. 59124045. 21205427.
## 4 320 3615. 64347734. 23490753.
## 5 290 9523. 58955123. 19103666.
## 6 346 6905. 65769765. 46848802.
# Prossiga com o modelo VAR
modelo_var_6 <- VAR(df_ts_ajustado, p = 6, type = "const")
# Verifique se o modelo foi estimado com sucesso
summary(modelo_var_6)
##
## VAR Estimation Results:
## =========================
## Endogenous variables: n, coef, investimento, prejuizo_uniao
## Deterministic variables: const
## Sample size: 198
## Log Likelihood: -10115.081
## Roots of the characteristic polynomial:
## 0.9514 0.9313 0.7858 0.7858 0.7686 0.7686 0.7597 0.7597 0.7336 0.7325 0.7325 0.7247 0.7247 0.7003 0.7003 0.6928 0.6901 0.6901 0.6804 0.6804 0.5373 0.5373 0.4315 0.4315
## Call:
## VAR(y = df_ts_ajustado, p = 6, type = "const")
##
##
## Estimation results for equation n:
## ==================================
## n = n.l1 + coef.l1 + investimento.l1 + prejuizo_uniao.l1 + n.l2 + coef.l2 + investimento.l2 + prejuizo_uniao.l2 + n.l3 + coef.l3 + investimento.l3 + prejuizo_uniao.l3 + n.l4 + coef.l4 + investimento.l4 + prejuizo_uniao.l4 + n.l5 + coef.l5 + investimento.l5 + prejuizo_uniao.l5 + n.l6 + coef.l6 + investimento.l6 + prejuizo_uniao.l6 + const
##
## Estimate Std. Error t value Pr(>|t|)
## n.l1 1.054e+00 2.184e-01 4.825 3.06e-06 ***
## coef.l1 3.543e-03 1.698e-03 2.087 0.03833 *
## investimento.l1 -2.072e-06 7.707e-07 -2.688 0.00788 **
## prejuizo_uniao.l1 1.665e-07 1.364e-07 1.221 0.22375
## n.l2 -1.030e-01 2.443e-01 -0.422 0.67379
## coef.l2 -6.241e-04 1.790e-03 -0.349 0.72780
## investimento.l2 6.240e-07 8.209e-07 0.760 0.44818
## prejuizo_uniao.l2 -1.831e-07 1.407e-07 -1.301 0.19490
## n.l3 7.713e-02 2.430e-01 0.317 0.75128
## coef.l3 -6.706e-04 1.772e-03 -0.378 0.70564
## investimento.l3 6.831e-07 8.261e-07 0.827 0.40940
## prejuizo_uniao.l3 -9.803e-08 1.409e-07 -0.696 0.48740
## n.l4 -9.398e-02 2.365e-01 -0.397 0.69152
## coef.l4 1.178e-04 1.761e-03 0.067 0.94671
## investimento.l4 1.243e-08 8.106e-07 0.015 0.98779
## prejuizo_uniao.l4 -3.935e-08 1.386e-07 -0.284 0.77684
## n.l5 6.709e-02 2.286e-01 0.294 0.76947
## coef.l5 1.161e-03 1.767e-03 0.657 0.51219
## investimento.l5 -3.561e-07 7.736e-07 -0.460 0.64583
## prejuizo_uniao.l5 4.924e-08 1.333e-07 0.370 0.71220
## n.l6 1.918e-01 2.214e-01 0.866 0.38754
## coef.l6 7.992e-04 1.638e-03 0.488 0.62624
## investimento.l6 -7.554e-07 7.779e-07 -0.971 0.33288
## prejuizo_uniao.l6 6.971e-08 1.377e-07 0.506 0.61338
## const 4.269e+01 1.394e+01 3.061 0.00256 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
##
## Residual standard error: 68.28 on 173 degrees of freedom
## Multiple R-Squared: 0.6719, Adjusted R-squared: 0.6264
## F-statistic: 14.76 on 24 and 173 DF, p-value: < 2.2e-16
##
##
## Estimation results for equation coef:
## =====================================
## coef = n.l1 + coef.l1 + investimento.l1 + prejuizo_uniao.l1 + n.l2 + coef.l2 + investimento.l2 + prejuizo_uniao.l2 + n.l3 + coef.l3 + investimento.l3 + prejuizo_uniao.l3 + n.l4 + coef.l4 + investimento.l4 + prejuizo_uniao.l4 + n.l5 + coef.l5 + investimento.l5 + prejuizo_uniao.l5 + n.l6 + coef.l6 + investimento.l6 + prejuizo_uniao.l6 + const
##
## Estimate Std. Error t value Pr(>|t|)
## n.l1 3.646e+01 9.753e+00 3.738 0.000252 ***
## coef.l1 3.094e-01 7.580e-02 4.082 6.82e-05 ***
## investimento.l1 -1.096e-04 3.442e-05 -3.185 0.001720 **
## prejuizo_uniao.l1 1.728e-05 6.089e-06 2.839 0.005071 **
## n.l2 -3.870e+00 1.091e+01 -0.355 0.723223
## coef.l2 4.761e-02 7.994e-02 0.596 0.552277
## investimento.l2 -8.586e-09 3.666e-05 0.000 0.999813
## prejuizo_uniao.l2 1.389e-06 6.283e-06 0.221 0.825301
## n.l3 -1.448e+00 1.085e+01 -0.133 0.893994
## coef.l3 7.769e-02 7.915e-02 0.982 0.327670
## investimento.l3 2.020e-06 3.689e-05 0.055 0.956401
## prejuizo_uniao.l3 2.311e-06 6.290e-06 0.367 0.713811
## n.l4 7.195e+00 1.056e+01 0.681 0.496540
## coef.l4 -1.635e-02 7.862e-02 -0.208 0.835501
## investimento.l4 -1.718e-05 3.620e-05 -0.475 0.635590
## prejuizo_uniao.l4 2.853e-06 6.190e-06 0.461 0.645433
## n.l5 -2.095e+01 1.021e+01 -2.053 0.041590 *
## coef.l5 3.683e-02 7.891e-02 0.467 0.641331
## investimento.l5 6.952e-05 3.454e-05 2.012 0.045731 *
## prejuizo_uniao.l5 -9.246e-06 5.951e-06 -1.554 0.122074
## n.l6 -5.924e+00 9.885e+00 -0.599 0.549759
## coef.l6 1.821e-01 7.314e-02 2.490 0.013714 *
## investimento.l6 3.585e-05 3.474e-05 1.032 0.303436
## prejuizo_uniao.l6 -9.182e-06 6.150e-06 -1.493 0.137223
## const 3.332e+02 6.227e+02 0.535 0.593241
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
##
## Residual standard error: 3049 on 173 degrees of freedom
## Multiple R-Squared: 0.4291, Adjusted R-squared: 0.3499
## F-statistic: 5.418 on 24 and 173 DF, p-value: 1.002e-11
##
##
## Estimation results for equation investimento:
## =============================================
## investimento = n.l1 + coef.l1 + investimento.l1 + prejuizo_uniao.l1 + n.l2 + coef.l2 + investimento.l2 + prejuizo_uniao.l2 + n.l3 + coef.l3 + investimento.l3 + prejuizo_uniao.l3 + n.l4 + coef.l4 + investimento.l4 + prejuizo_uniao.l4 + n.l5 + coef.l5 + investimento.l5 + prejuizo_uniao.l5 + n.l6 + coef.l6 + investimento.l6 + prejuizo_uniao.l6 + const
##
## Estimate Std. Error t value Pr(>|t|)
## n.l1 2.634e+05 6.920e+04 3.806 0.000196 ***
## coef.l1 1.127e+03 5.378e+02 2.095 0.037609 *
## investimento.l1 -4.619e-01 2.442e-01 -1.892 0.060166 .
## prejuizo_uniao.l1 5.504e-02 4.320e-02 1.274 0.204326
## n.l2 -1.224e+05 7.739e+04 -1.581 0.115662
## coef.l2 -3.902e+02 5.672e+02 -0.688 0.492393
## investimento.l2 4.828e-01 2.601e-01 1.856 0.065099 .
## prejuizo_uniao.l2 -6.393e-02 4.458e-02 -1.434 0.153334
## n.l3 -2.783e+03 7.698e+04 -0.036 0.971199
## coef.l3 -1.343e+02 5.615e+02 -0.239 0.811259
## investimento.l3 2.240e-01 2.617e-01 0.856 0.393130
## prejuizo_uniao.l3 -3.112e-02 4.462e-02 -0.697 0.486553
## n.l4 9.559e+03 7.491e+04 0.128 0.898610
## coef.l4 3.552e+02 5.577e+02 0.637 0.525053
## investimento.l4 -1.725e-03 2.568e-01 -0.007 0.994650
## prejuizo_uniao.l4 -8.026e-03 4.391e-02 -0.183 0.855191
## n.l5 -5.313e+04 7.241e+04 -0.734 0.464117
## coef.l5 5.188e+02 5.598e+02 0.927 0.355411
## investimento.l5 1.413e-01 2.451e-01 0.577 0.564972
## prejuizo_uniao.l5 -5.016e-03 4.222e-02 -0.119 0.905559
## n.l6 -1.146e+04 7.013e+04 -0.163 0.870372
## coef.l6 5.646e+01 5.189e+02 0.109 0.913482
## investimento.l6 -8.591e-03 2.464e-01 -0.035 0.972231
## prejuizo_uniao.l6 -7.974e-03 4.363e-02 -0.183 0.855192
## const 1.304e+07 4.418e+06 2.951 0.003602 **
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
##
## Residual standard error: 21630000 on 173 degrees of freedom
## Multiple R-Squared: 0.5067, Adjusted R-squared: 0.4383
## F-statistic: 7.406 on 24 and 173 DF, p-value: < 2.2e-16
##
##
## Estimation results for equation prejuizo_uniao:
## ===============================================
## prejuizo_uniao = n.l1 + coef.l1 + investimento.l1 + prejuizo_uniao.l1 + n.l2 + coef.l2 + investimento.l2 + prejuizo_uniao.l2 + n.l3 + coef.l3 + investimento.l3 + prejuizo_uniao.l3 + n.l4 + coef.l4 + investimento.l4 + prejuizo_uniao.l4 + n.l5 + coef.l5 + investimento.l5 + prejuizo_uniao.l5 + n.l6 + coef.l6 + investimento.l6 + prejuizo_uniao.l6 + const
##
## Estimate Std. Error t value Pr(>|t|)
## n.l1 2.478e+05 1.659e+05 1.494 0.137
## coef.l1 2.006e+03 1.289e+03 1.556 0.121
## investimento.l1 -5.165e-01 5.853e-01 -0.882 0.379
## prejuizo_uniao.l1 1.536e-01 1.036e-01 1.483 0.140
## n.l2 -1.812e+05 1.855e+05 -0.977 0.330
## coef.l2 -1.611e+03 1.360e+03 -1.185 0.238
## investimento.l2 1.988e-01 6.235e-01 0.319 0.750
## prejuizo_uniao.l2 9.589e-02 1.069e-01 0.897 0.371
## n.l3 6.512e+04 1.845e+05 0.353 0.725
## coef.l3 1.241e+02 1.346e+03 0.092 0.927
## investimento.l3 3.292e-01 6.274e-01 0.525 0.600
## prejuizo_uniao.l3 -1.249e-01 1.070e-01 -1.167 0.245
## n.l4 1.431e+05 1.796e+05 0.797 0.427
## coef.l4 -5.063e+02 1.337e+03 -0.379 0.705
## investimento.l4 -4.859e-02 6.157e-01 -0.079 0.937
## prejuizo_uniao.l4 -3.753e-02 1.053e-01 -0.357 0.722
## n.l5 -2.733e+05 1.736e+05 -1.574 0.117
## coef.l5 2.005e+03 1.342e+03 1.494 0.137
## investimento.l5 7.764e-01 5.875e-01 1.322 0.188
## prejuizo_uniao.l5 4.439e-03 1.012e-01 0.044 0.965
## n.l6 -6.947e+04 1.681e+05 -0.413 0.680
## coef.l6 -8.216e+02 1.244e+03 -0.660 0.510
## investimento.l6 -8.255e-02 5.908e-01 -0.140 0.889
## prejuizo_uniao.l6 -7.380e-02 1.046e-01 -0.706 0.481
## const 1.726e+07 1.059e+07 1.630 0.105
##
##
## Residual standard error: 51860000 on 173 degrees of freedom
## Multiple R-Squared: 0.1992, Adjusted R-squared: 0.08805
## F-statistic: 1.793 on 24 and 173 DF, p-value: 0.01757
##
##
##
## Covariance matrix of residuals:
## n coef investimento prejuizo_uniao
## n 4.663e+03 7.723e+03 1.343e+09 8.396e+08
## coef 7.723e+03 9.298e+06 7.670e+09 1.003e+10
## investimento 1.343e+09 7.670e+09 4.680e+14 5.417e+14
## prejuizo_uniao 8.396e+08 1.003e+10 5.417e+14 2.689e+15
##
## Correlation matrix of residuals:
## n coef investimento prejuizo_uniao
## n 1.00000 0.03709 0.9094 0.23709
## coef 0.03709 1.00000 0.1163 0.06344
## investimento 0.90935 0.11628 1.0000 0.48290
## prejuizo_uniao 0.23709 0.06344 0.4829 1.00000
O resultado do Teste de Portmanteau (ou Teste de Ljung-Box para resíduos de VAR) é fundamental para validar a qualidade do seu modelo, pois ele verifica a presença de autocorrelação serial nos resíduos. Com um p-valor de 0,8612, que é significativamente superior ao nível de confiança padrão de 0,05, não há evidências estatísticas para rejeitar a hipótese nula de ausência de correlação serial. Isso indica que os resíduos do seu modelo são, de fato, “ruído branco”, o que significa que o seu modelo VAR capturou adequadamente todas as informações sistemáticas das séries temporais e que não restou nenhuma estrutura ou padrão previsível nos erros que pudesse ter sido negligenciada.
Essa ausência de autocorrelação nos resíduos é um dos pressupostos mais importantes para a confiabilidade das estimativas, garantindo que os resultados das suas Funções de Resposta ao Impulso (IRF) e as análises de causalidade não estejam viciadas. Em suma, o teste confirma que o modelo está bem especificado e que os resíduos apresentam um comportamento aleatório, validando a integridade estatística do seu trabalho sobre a dinâmica da evasão e das variáveis fiscais.
library(vars)
library(dplyr)
serial_test <- serial.test(modelo_var_6, lags.pt = 16, type = "PT.asymptotic")
print(serial_test)
##
## Portmanteau Test (asymptotic)
##
## data: Residuals of VAR object modelo_var_6
## Chi-squared = 140.74, df = 160, p-value = 0.8612
## $serial
##
## Portmanteau Test (asymptotic)
##
## data: Residuals of VAR object modelo_var_6
## Chi-squared = 140.74, df = 160, p-value = 0.8612
O teste ARCH multivariado atua como o diagnóstico definitivo para verificar a homocedasticidade dos resíduos do modelo, garantindo que a variância dos erros permaneça constante ao longo do tempo. Com um p-valor de 0,4562, valor significativamente superior ao limite de significância de 0,05, não se encontram evidências estatísticas para rejeitar a hipótese nula de ausência de efeitos ARCH no sistema.
Essa constatação valida a eficiência das estimativas, assegurando que os resíduos não apresentam fenômenos de agrupamento de volatilidade, conhecidos como clusters de variância. Na prática, esse resultado confirma a estabilidade estatística do modelo, o que garante que os intervalos de confiança calculados para as respostas ao impulso são precisos, mantendo a integridade da análise sobre a dinâmica da evasão e das variáveis fiscais.
library(vars)
library(dplyr)
arch_test <- arch.test(modelo_var_6, lags.multi = 16, multivariate.only = TRUE)
print(arch_test)
##
## ARCH (multivariate)
##
## data: Residuals of VAR object modelo_var_6
## Chi-squared = 1605.6, df = 1600, p-value = 0.4562
## $arch.mul
##
## ARCH (multivariate)
##
## data: Residuals of VAR object modelo_var_6
## Chi-squared = 1605.6, df = 1600, p-value = 0.4562
Estes valores representam os módulos das raízes do polinômio característico do sistema VAR. Na análise de estabilidade de séries temporais, a verificação desses valores é um passo crucial para garantir a validade estatística do modelo.
Para que um modelo VAR seja considerado estável, todos os módulos das raízes inversas devem estar dentro do círculo unitário, o que equivale a dizer que as raízes do polinômio característico devem ter módulos estritamente menores que 1. Como todos os valores apresentados — variando de 0,9513 até 0,4315 — são inferiores a 1, conclui-se que o sistema é estável.
A observação técnica desses dados permite extrair as seguintes conclusões:
Estabilidade do Sistema: A proximidade da maior raiz (0,9513) em relação ao limite unitário indica que, embora o sistema seja estável, ele apresenta uma persistência significativa. Isso significa que os choques aplicados ao sistema levam um tempo considerável para serem totalmente absorvidos, indicando uma memória longa na dinâmica das variáveis fiscais.
Convergência Garantida: Como nenhuma raiz atinge ou ultrapassa o valor de 1, o modelo não exibe comportamento explosivo. O sistema retorna ao seu equilíbrio de longo prazo após qualquer perturbação, validando a utilização das funções de resposta ao impulso e da decomposição de variância como ferramentas seguras de análise.
Integridade dos Testes: Essa estabilidade reforça a confiabilidade dos diagnósticos anteriores (Portmanteau e ARCH), assegurando que as inferências sobre a evasão fiscal e as demais variáveis não estão comprometidas por uma especificação instável do modelo.
# Verifica a estabilidade do modelo
estabilidade <- stability(modelo_var_6, type = "OLS-CUSUM")
# Exibe os valores das raízes (modulus)
roots <- roots(modelo_var_6)
print(roots)
## [1] 0.9513804 0.9313010 0.7857510 0.7857510 0.7685892 0.7685892 0.7596986
## [8] 0.7596986 0.7336056 0.7324751 0.7324751 0.7247316 0.7247316 0.7002527
## [15] 0.7002527 0.6927616 0.6901339 0.6901339 0.6804434 0.6804434 0.5373071
## [22] 0.5373071 0.4315365 0.4315365
# Plotagem visual das raízes no círculo unitário
plot(modelo_var_6) # Isso gera o gráfico de raízes automaticamente
# 11 Função impulso resposta A Figura ilustra as Funções de Resposta ao
Impulso (IRF), quantificando a dinâmica interdependente entre o volume
de transações, o somatório dos valores declarados, o valor por metro
quadrado e o prejuízo fiscal. É essencial destacar que as áreas
sombreadas ao redor das trajetórias representam os intervalos de
confiança de 95%, conferindo o rigor estatístico necessário para validar
os padrões de causalidade observados perante o Ministério Público.
Ao analisar os valores contidos na Figura, identificam-se comportamentos estruturais críticos:
Dinâmica das Transações sobre a Evasão: No cruzamento entre a coluna “Transações” e a linha “Evasão”, o impacto de um choque inicial supera 10 milhões (10M). A persistência dessa oscilação, que se mantém distinta de zero por múltiplos períodos, comprova que variações no volume de transações possuem um efeito acumulativo de longo prazo sobre o prejuízo fiscal.
Repercussão do Valor Declarado: No cruzamento da linha “Invest” (somatório dos valores declarados) com a coluna “Invest”, observa-se um impacto inicial próximo a 30 milhões (30M). A rápida trajetória de decaimento para patamares próximos a zero indica que choques no volume de capital declarado possuem uma eficácia de impacto elevada no curto prazo, mas estabilizam-se rapidamente no sistema.
Sensibilidade do Metro Quadrado: Na linha “Metro P”, o impacto de um choque na própria variável atinge 3 mil (3K). A rápida convergência ao equilíbrio demonstra que choques no preço por metro quadrado médio apresentam uma memória estatística de curta duração, refletindo uma resposta mais imediata e menos persistente da precificação por área no cenário fiscal.
library(ggplot2)
library(dplyr)
library(tidyr)
library(vars)
library(scales) # Essencial para formatar os números
## Warning: pacote 'scales' foi compilado no R versão 4.4.3
##
## Anexando pacote: 'scales'
## O seguinte objeto é mascarado por 'package:purrr':
##
## discard
## O seguinte objeto é mascarado por 'package:readr':
##
## col_factor
# --- 1. Dicionário Curto ---
dicionario <- c(
"n" = "Transações",
"coef" = "Metro P",
"investimento" = "Invest", # Você mencionou investimento, mantive como Saúde
"prejuizo_uniao" = "Evasão"
)
# --- 2. Extração e Processamento ---
variaveis <- colnames(df_ts_ajustado)
lista_irf <- list()
for (imp in variaveis) {
temp_irf <- irf(modelo_var_6, impulse = imp, response = variaveis,
boot = TRUE, ci = 0.95, n.ahead = 12)
for (resp in variaveis) {
df_temp <- data.frame(
horizonte = 0:(length(temp_irf$irf[[1]][,1]) - 1),
estimativa = temp_irf$irf[[imp]][, resp],
low = temp_irf$Lower[[imp]][, resp],
up = temp_irf$Upper[[imp]][, resp],
impulso = imp,
resposta = resp
)
lista_irf[[paste0(imp, "_", resp)]] <- df_temp
}
}
df_irf_final <- bind_rows(lista_irf) %>%
mutate(
impulso = recode(impulso, !!!dicionario),
resposta = recode(resposta, !!!dicionario)
)
# --- 3. Plotagem com formatação numérica e espaçamento ---
grafico_irf <- ggplot(df_irf_final, aes(x = horizonte, y = estimativa)) +
geom_hline(yintercept = 0, color = "black", linetype = "dashed", alpha = 0.5) +
geom_line(color = "#1F618D", size = 0.8) +
geom_ribbon(aes(ymin = low, ymax = up), alpha = 0.2, fill = "#1F618D") +
# Formatação do eixo Y para evitar notação científica (ex: 100k, 200k)
scale_y_continuous(labels = label_number(scale_cut = cut_short_scale())) +
facet_grid(resposta ~ impulso, scales = "free_y", switch = "y") +
theme_minimal(base_size = 11) +
labs(
title = "Resposta ao Impulso",
x = "Meses",
y = "Impacto"
) +
theme(
# Aumentando o espaço entre os gráficos
panel.spacing = unit(1.5, "lines"),
strip.text = element_text(face = "bold", size = 11),
axis.text = element_text(size = 8),
plot.title = element_text(hjust = 0.5, face = "bold")
)
## Warning: Using `size` aesthetic for lines was deprecated in ggplot2 3.4.0.
## ℹ Please use `linewidth` instead.
## This warning is displayed once per session.
## Call `lifecycle::last_lifecycle_warnings()` to see where this warning was
## generated.
print(grafico_irf)
# 12 Simulação com desvio padrão A tabela de impactos acumulados oferece
uma radiografia precisa da dinâmica fiscal, na qual choques de apenas um
desvio padrão (111 transações) desencadeiam efeitos significativos e
persistentes em todo o sistema. A análise dos intervalos de confiança de
95% revela que, em todos os cruzamentos apresentados, os limites
inferior e superior mantêm o mesmo sinal, o que garante a validade
estatística das estimativas e exclui a possibilidade de que tais
resultados sejam fruto de oscilações aleatórias. Observa-se, por
exemplo, que um choque na variável Transações impõe um prejuízo
acumulado de R$ 35.641.805,85 (IC 95%: R$ 12.659.730,99 a R$
60.695.318,57) à evasão fiscal por três meses, enquanto simultaneamente
eleva o valor declarado (Invest) em R$ 49.643.870,00 (IC 95%: R$
22.129.847,52 a R$ 71.836.140,42) por cinco meses.
O comportamento da variável Evasão demonstra uma inércia acentuada, uma vez que um choque em si mesma resulta em um impacto de R$ 37.591.393,04 (IC 95%: R$ 29.845.505,74 a R$ 40.498.000,23) no primeiro mês, evidenciando que qualquer desvio inicial tende a perpetuar o prejuízo ao erário. De forma similar, o choque no Invest (capital declarado) acarreta um aumento na evasão de R$ 33.423.469,21 (IC 95%: R$ 16.560.439,29 a R$ 46.101.150,53), um achado que aponta para inconsistências sistêmicas onde o aumento das declarações acompanha, paradoxalmente, a ampliação da margem para a evasão. Essa dinâmica sugere que o aparato fiscal atual falha ao não converter o aumento do volume reportado em arrecadação efetiva, permitindo que a volatilidade do mercado atue como um canal crônico de perda para a União.
Por fim, a variável Metro P atua como um sinalizador crítico da precificação, apresentando impactos como R$ 7.982.776,72 (IC 95%: R$ 439.704,34 a R$ 14.283.344,62) sobre a evasão e R$ 1.787.034,72 (IC 95%: R$ 533.725,84 a R$ 2.672.667,95) sobre o montante declarado. A persistência desses efeitos, que se estende por até nove meses no caso do impacto de Invest sobre Transações, confirma a existência de uma defasagem temporal estrutural na resposta da fiscalização. Coletivamente, esses dados constituem uma prova robusta de que o prejuízo fiscal decorre de um padrão estruturado de interação entre as variáveis de mercado, fornecendo ao Ministério Público um embasamento técnico inquestionável sobre a fragilidade dos mecanismos de controle e a necessidade de monitoramento tempestivo das transações imobiliárias. A evidência de que a subdeclaração evolui proporcionalmente ao aumento dos preços de mercado revela a existência de um sistema de “evasão adaptativa” estruturado entre 2008 e 2026. Embora os valores declarados (Invest) apresentem um crescimento condicionado pela valorização do Metro P, esse incremento não representa uma trajetória de conformidade fiscal, mas sim uma estratégia de mitigação de risco por parte dos contribuintes. Ao elevar a base declarada para acompanhar a realidade do mercado, os agentes garantem que o valor reportado permaneça dentro de uma faixa de verossimilhança perante a fiscalização, evitando alertas automáticos, enquanto, simultaneamente, preservam um diferencial negativo constante em relação ao valor justo — o chamado “gap de evasão”.
Consequentemente, o aumento do preço do metro quadrado atua como um multiplicador da própria fraude, pois expande a margem nominal sobre a qual o desconto da evasão é aplicado. A correlação positiva identificada pelo modelo, onde choques na Evasão induzem aumentos no Metro P, confirma que a disparidade entre o valor declarado e a base tributável real não é estática; ela se expande conforme o mercado valoriza. Dessa forma, o prejuízo à União não apenas persiste, mas escala de forma previsível e proporcional ao crescimento imobiliário, demonstrando que o sistema de fiscalização, ao não capturar essa valorização de forma plena, permite que a evasão capture o excedente de valor que deveria ser tributado, drenando recursos essenciais para multiplicadores do PIB, como o investimento em saúde.
library(dplyr)
library(tidyr)
library(knitr)
# 1. Configuração para exibir o número completo
options(scipen = 999)
# 2. Cálculo da Tabela de Significância
tabela_somatorio <- df_irf_final %>%
mutate(significante = ifelse((low > 0 & up > 0) | (low < 0 & up < 0), TRUE, FALSE)) %>%
filter(significante == TRUE) %>%
group_by(impulso, resposta) %>%
summarise(
impacto_acumulado = sum(estimativa),
inf_95 = sum(low),
sup_95 = sum(up),
meses_com_efeito = n(),
.groups = 'drop'
)
# Ajuste da tabela para exibição final (removendo a formatação de moeda antes do kable)
tabela_exibicao <- tabela_somatorio %>%
mutate(across(c(impacto_acumulado, inf_95, sup_95),
~ format(round(., 2), big.mark = ".", decimal.mark = ",", scientific = FALSE)))
# Ajuste da tabela para exibição
tabela_exibicao <- tabela_somatorio %>%
mutate(across(c(impacto_acumulado, inf_95, sup_95),
~ format(round(., 2), big.mark = ".", decimal.mark = ",", scientific = FALSE)))
# Para visualizar no Console ou Relatórios HTML/Markdown, use 'pipe' ou 'simple'
print(kable(
tabela_exibicao,
format = "pipe",
col.names = c("Impulso", "Resposta", "Impacto Acumulado", "Limite Inf. (95%)", "Limite Sup. (95%)", "Meses"),
align = c("l", "l", "r", "r", "r", "c"),
caption = "Resultados da análise de significância e persistência das variáveis (choque de 1 desvio padrão)"
))
##
##
## Table: Resultados da análise de significância e persistência das variáveis (choque de 1 desvio padrão)
##
## |Impulso |Resposta | Impacto Acumulado| Limite Inf. (95%)| Limite Sup. (95%)| Meses |
## |:----------|:----------|-----------------:|-----------------:|-----------------:|:-----:|
## |Evasão |Evasão | 37.591.393,04| 29.081.999,80| 40.968.714,14| 1 |
## |Evasão |Metro P | 649,74| 194,15| 1.028,54| 1 |
## |Invest |Evasão | 33.423.469,21| 13.817.517,72| 46.516.107,25| 1 |
## |Invest |Invest | 2.935.395,03| -3.888.692,19| 9.925.998,56| 4 |
## |Invest |Metro P | -527,03| -970,84| -65,17| 2 |
## |Invest |Transações | -94,08| -144,14| -28,41| 8 |
## |Metro P |Evasão | 7.982.776,72| 40.144,78| 15.368.290,66| 1 |
## |Metro P |Invest | 1.787.034,72| 713.908,49| 2.737.623,77| 1 |
## |Metro P |Metro P | 4.514,74| 2.860,72| 5.198,58| 3 |
## |Transações |Evasão | 35.641.805,85| 11.460.998,43| 55.727.709,92| 3 |
## |Transações |Invest | 49.643.870,00| 22.273.882,83| 69.298.399,33| 5 |
## |Transações |Metro P | 1.707,28| 395,14| 3.093,74| 3 |
## |Transações |Transações | 174,78| 80,50| 241,26| 5 |
Em conclusão, a dinâmica do mercado imobiliário revelada entre 2008 e 2026 expõe uma narrativa onde a União atua como o ator principal involuntário de uma série estruturada de sonegação. Nesta peça, milhões de reais são sistematicamente drenados dos cofres públicos para compor o “lucro da série”, transformando a evasão fiscal no verdadeiro motor da rentabilidade dos agentes envolvidos. A subdeclaração, longe de ser um evento fortuito, funciona como um mecanismo de extração de valor onde o Estado, ao ser mantido na periferia do real potencial arrecadatório, financia, com o prejuízo de suas receitas, a própria expansão do capital privado que opera à margem da justiça tributária.
Dessa forma, o “lucro da série” não é o resultado de uma eficiência de mercado, mas sim o produto direto da subtração de recursos públicos que deveriam estar alocados em áreas vitais, como a saúde e o desenvolvimento econômico. Ao permitir que a valorização dos ativos imobiliários seja capturada quase inteiramente pelos sonegadores através do “gap de evasão”, o sistema transfere o patrimônio da coletividade para mãos privadas, perpetuando uma desigualdade que se retroalimenta. A União, portanto, não é apenas a vítima passiva, mas a fonte inesgotável da qual os sonegadores extraem a liquidez necessária para a manutenção de suas operações, configurando uma transferência de riqueza que exige uma resposta firme dos órgãos de controle e do Ministério Público.