# Limpando o ambiente
rm(list = ls())
# =========== Área de bibliotecas =================
# Pacotes necessários
if (!require("openxlsx")) install.packages("openxlsx")
## Carregando pacotes exigidos: openxlsx
if (!require("fs")) install.packages("fs")
## Carregando pacotes exigidos: fs
if (!require("htmltools")) install.packages("htmltools")
## Carregando pacotes exigidos: htmltools
if (!require("htmlTable")) install.packages("htmlTable")
## Carregando pacotes exigidos: htmlTable
library(openxlsx)
library(fs)
library(htmltools)
library(htmlTable)
DEFLATOR 1) Funções
# =========== Área de Funções =====================
ler_mip_ano <- function(ano, deflator = 1, pasta = "./Outputs") {
# Definições fixas para matriz 68x68
nSetores <- 68
nColunaFinal <- 77
nLInhaFinal <- 90
nNumColunasDemanda <- 6
# Caminho da planilha
pasta <- fs::path_expand(pasta)
arq <- file.path(pasta, paste0("MIP_", ano, "_68x68MetodoGuilhoto.xlsx"))
# Leitura da planilha
dSheet <- read.xlsx(arq, sheet = "MIP", rowNames = TRUE)
mMatriz <- as.matrix(dSheet)
dimnames(mMatriz) <- NULL
nomes_setores <- rownames(dSheet)[1:nSetores]
# Matrizes e vetores básicos (valores nominais)
mZ_nom <- mMatriz[1:nSetores, 1:nSetores]
mDemanda_nom <- mMatriz[1:nSetores, 70:75]
vX_nom <- mMatriz[75 + 13, 1:nSetores]
mVA_nom <- mMatriz[76:89, 1:nSetores]
# DEFLACIONAMENTO (valores reais em preços constantes do ano-base)
mZ <- mZ_nom / deflator
mDemanda <- mDemanda_nom / deflator
vX <- vX_nom / deflator
mVA <- mVA_nom / deflator
# Matriz A (coeficientes técnicos reais)
mA <- t(t(mZ) / vX)
mA[!is.finite(mA)] <- 0
# Leontief aberto
I <- diag(nSetores)
B <- solve(I - mA)
Y = rowSums(mDemanda)
# Dados adicionais
ocupacoes <- mVA[14, ]
renda_trabalho <- mVA[2, ] + mVA[9, ] * 0.41
demanda_familias <- mDemanda[, 4]
# Leontief fechado (em valores reais)
mZBarr <- rbind(mZ, renda_trabalho)
mZBarr <- cbind(mZBarr, c(demanda_familias, 0))
vX_barr <- c(vX, sum(vX))
mABarr <- t(t(mZBarr) / vX_barr)
mABarr[!is.finite(mABarr)] <- 0
IBarr <- diag(nSetores + 1)
B_fechado <- solve(IBarr - mABarr)
list(
ano = ano,
setores = nomes_setores,
Z = mZ,
A = mA,
B = B,
Y = Y,
Demanda = mDemanda,
VA = mVA,
VBP = vX,
Ocupacoes = ocupacoes,
Renda = renda_trabalho,
B_fechado = B_fechado
)
}
ler_mip_ano_setorial <- function(ano, deflatores_setoriais, pasta = "./Outputs") {
nSetores <- 68
pasta <- fs::path_expand(pasta)
arq <- file.path(pasta, paste0("MIP_", ano, "_68x68MetodoGuilhoto.xlsx"))
if (!file.exists(arq)) stop(paste("Arquivo não encontrado:", arq))
dSheet <- read.xlsx(arq, sheet = "MIP", rowNames = TRUE)
mMatriz <- as.matrix(dSheet)
dimnames(mMatriz) <- NULL
nomes_setores <- rownames(dSheet)[1:nSetores]
mZ_nom <- mMatriz[1:nSetores, 1:nSetores]
mDemanda_nom <- mMatriz[1:nSetores, 70:75]
vX_nom <- mMatriz[75 + 13, 1:nSetores]
mVA_nom <- mMatriz[76:89, 1:nSetores]
# Deflação setorial (vetorial) conforme metodologia Passoni & Freitas
defl <- as.numeric(deflatores_setoriais)
mZ <- mZ_nom / matrix(defl, nSetores, nSetores, byrow = TRUE)
mDemanda <- mDemanda_nom / defl
vX <- vX_nom / defl
mVA <- mVA_nom / matrix(defl, nrow(mVA_nom), nSetores, byrow = TRUE)
mA <- t(t(mZ) / vX)
mA[!is.finite(mA)] <- 0
I <- diag(nSetores)
B <- solve(I - mA)
Y = rowSums(mDemanda)
renda_trabalho <- mVA[2, ] + mVA[9, ] * 0.41
demanda_familias <- mDemanda[, 4]
mZBarr <- rbind(mZ, renda_trabalho)
mZBarr <- cbind(mZBarr, c(demanda_familias, 0))
vX_barr <- c(vX, sum(vX))
mABarr <- t(t(mZBarr) / vX_barr)
mABarr[!is.finite(mABarr)] <- 0
IBarr <- diag(nSetores + 1)
B_fechado <- solve(IBarr - mABarr)
list(
ano = ano,
setores = nomes_setores,
Z = mZ,
A = mA,
B = B,
Y = Y,
Demanda = mDemanda,
VA = mVA,
VBP = vX,
Renda = renda_trabalho,
B_fechado = B_fechado
)
}
decompor_tipo1 <- function(dados0, dados1) {
# Verificação de consistência
if (!all(dados0$setores == dados1$setores)) {
stop("Os conjuntos de setores não coincidem entre os dois anos.")
}
# Cálculos principais
dy <- dados1$Y - dados0$Y
dB <- dados1$B - dados0$B
term_dem <- dados1$B %*% dy
term_tech <- dB %*% dados0$Y
delta_x <- term_dem + term_tech
# Evitar divisão por zero
delta_x_safe <- ifelse(abs(delta_x) < 1e-8, NA, delta_x)
# Cálculo de proporções relativas (% da variação total)
prop_dem <- 100 * as.numeric(term_dem) / delta_x_safe
prop_tech <- 100 * as.numeric(term_tech) / delta_x_safe
# Arredondar para 2 casas decimais
df <- data.frame(
Setor = dados1$setores,
Variação = round(term_dem+term_tech, 2),
Var.Demanda = round(term_dem, 2),
Var.Tecnologia = round(term_tech, 2),
Demanda_pct = round(prop_dem, 2),
Tecnologia_pct = round(prop_tech, 2),
Total_pct = round(100, 2)
)
df_long <- data.frame(
Setor = dados1$setores,
Demanda_pct = round(prop_dem, 2),
Tecnologia_pct = round(prop_tech, 2),
Total_pct = round(100, 2)
)
# Forma longa para gráficos
df_long <- df_long |>
tidyr::pivot_longer(cols = c( "Demanda_pct", "Tecnologia_pct"),
names_to = "Componente",
values_to = "Contribuição_pct")
return(list(
tabela_normalizada = df,
tabela_longa = df_long
))
}
decompor_tipo1_agregado <- function(dados0, dados1) {
if (!all(dados0$setores == dados1$setores)) {
stop("Os conjuntos de setores não coincidem entre os dois anos.")
}
# Cálculos principais
dy <- dados1$Y - dados0$Y
dB <- dados1$B - dados0$B
term_dem <- dados1$B %*% dy
term_tech <- dB %*% dados0$Y
delta_x <- term_dem + term_tech
# Valores agregados
var_dem <- sum(term_dem)
var_tech <- sum(term_tech)
var_total_prod <- sum(delta_x)
# Participações relativas (%)
pct_dem <- 100 * var_dem / var_total_prod
pct_tech <- 100 * var_tech / var_total_prod
# Tabela estilo Passoni & Freitas
tabela_agregada <- data.frame(
Componente = c("Demanda Final", "Tecnologia", "Total"),
Valor_R_Mi = round(c(var_dem, var_tech, var_total_prod) / 1, 1),
Participacao_pct = round(c(pct_dem, pct_tech, 100), 1)
)
# Também retorna resultado desagregado original (por setor)
delta_x_safe <- ifelse(abs(delta_x) < 1e-8, NA, delta_x)
prop_dem <- 100 * as.numeric(term_dem) / var_total_prod
prop_tech <- 100 * as.numeric(term_tech) / var_total_prod
df <- data.frame(
Setor = dados1$setores,
Variação = round(term_dem+term_tech, 2),
Var.Demanda = round(term_dem, 2),
Var.Tecnologia = round(term_tech, 2),
Demanda_pct = round(prop_dem, 2),
Tecnologia_pct = round(prop_tech, 2),
Total_pct = round(100, 2)
)
df_long <- data.frame(
Setor = dados1$setores,
Demanda_pct = round(prop_dem, 2),
Tecnologia_pct = round(prop_tech, 2),
Total_pct = round(100, 2)
)
tabela_longa <- tidyr::pivot_longer(
df_long,
cols = c("Demanda_pct", "Tecnologia_pct"),
names_to = "Componente",
values_to = "Contribuição_pct"
)
return(list(
tabela_normalizada = df,
tabela_longa = tabela_longa,
tabela_agregada = tabela_agregada
))
}
decompor_tipo2 <- function(dados0, dados1) {
if (!all(dados0$setores == dados1$setores)) {
stop("Os conjuntos de setores não coincidem entre os dois anos.")
}
# Matrizes de Leontief
B0 <- dados0$B
B1 <- dados1$B
# Vetores de demanda agregada
y0 <- dados0$Y
y1 <- dados1$Y
# Diferenças
dB <- B1 - B0
dy <- y1 - y0
# Componentes
term_tech <- dB %*% y1 # ΔB * y1
term_dem <- B0 %*% dy # B0 * Δy
delta_x <- term_tech + term_dem
# Cálculo de proporções relativas
delta_x_safe <- ifelse(abs(delta_x) < 1e-8, NA, delta_x)
prop_tech <- 100 * as.numeric(term_tech) / delta_x_safe
prop_dem <- 100 * as.numeric(term_dem) / delta_x_safe
df <- data.frame(
Setor = dados1$setores,
Tecnologia_pct = round(prop_tech, 2),
Demanda_pct = round(prop_dem, 2),
Total_pct = round(100, 2)
)
df_long <- df |>
tidyr::pivot_longer(cols = c("Demanda_pct", "Tecnologia_pct"),
names_to = "Componente",
values_to = "Contribuição_pct")
return(list(
tabela_normalizada = df,
tabela_longa = df_long
))
}
decompor_tipo3 <- function(dados0, dados1) {
if (!all(dados0$setores == dados1$setores)) {
stop("Os conjuntos de setores não coincidem entre os dois anos.")
}
# Extrai elementos
B0 <- dados0$B
B1 <- dados1$B
y0 <- dados0$Y
y1 <- dados1$Y
# Diferenças
dB <- B1 - B0
dy <- y1 - y0
# Componentes
term_tech <- dB %*% y0 # ΔB · y0
term_demand <- B0 %*% dy # B0 · Δy
term_interacao <- dB %*% dy # ΔB · Δy
delta_x <- term_tech + term_demand + term_interacao
# Prevenção de divisão por zero
delta_x_safe <- ifelse(abs(delta_x) < 1e-8, NA, delta_x)
# Proporções em %
prop_tech <- 100 * as.numeric(term_tech) / delta_x_safe
prop_demand <- 100 * as.numeric(term_demand) / delta_x_safe
prop_interacao <- 100 * as.numeric(term_interacao) / delta_x_safe
df <- data.frame(
Setor = dados1$setores,
Tecnologia_pct = round(prop_tech, 2),
Demanda_pct = round(prop_demand, 2),
Interacao_pct = round(prop_interacao, 2),
Total_pct = round(100, 2)
)
df_long <- df |>
tidyr::pivot_longer(cols = c("Demanda_pct", "Tecnologia_pct", "Interacao_pct"),
names_to = "Componente",
values_to = "Contribuição_pct")
return(list(
tabela_normalizada = df,
tabela_longa = df_long
))
}
decompor_tipo5_dl <- function(dados0, dados1) {
if (!all(dados0$setores == dados1$setores)) {
stop("Os conjuntos de setores não coincidem entre os dois anos.")
}
# Elementos necessários
B0 <- dados0$B
B1 <- dados1$B
y0 <- dados0$Y
y1 <- dados1$Y
dB <- B1 - B0
dy <- y1 - y0
y_med <- 0.5 * (y0 + y1)
B_med <- 0.5 * (B0 + B1)
# Componentes da decomposição
term_tech <- 0.5 * dB %*% (y0 + y1) # ½ ΔB (y⁰ + y¹)
term_demand <- 0.5 * (B0 + B1) %*% dy # ½ (B⁰ + B¹) Δy
delta_x <- term_tech + term_demand
# Prevenção de divisão por zero
delta_x_safe <- ifelse(abs(delta_x) < 1e-8, NA, delta_x)
# Proporções
prop_tech <- 100 * as.numeric(term_tech) / delta_x_safe
prop_demand <- 100 * as.numeric(term_demand) / delta_x_safe
df <- data.frame(
Setor = dados1$setores,
Tecnologia_pct = round(prop_tech, 2),
Demanda_pct = round(prop_demand, 2),
Total_pct = round(100, 2)
)
df_long <- df |>
tidyr::pivot_longer(cols = c("Demanda_pct", "Tecnologia_pct"),
names_to = "Componente",
values_to = "Contribuição_pct")
return(list(
tabela_normalizada = df,
tabela_longa = df_long
))
}
# ================================================
# Script para obter deflatores implícitos do PIB (SCN10_DIPIBG10)
# do Ipeadata, calcular índices encadeados com base em 2019 = 1,
# e aplicar como deflatores em análise insumo-produto.
# ================================================
# Instale os pacotes necessários (se ainda não instalados)
if (!require("ipeadatar")) install.packages("ipeadatar")
## Carregando pacotes exigidos: ipeadatar
if (!require("dplyr")) install.packages("dplyr")
## Carregando pacotes exigidos: dplyr
##
## Anexando pacote: 'dplyr'
## Os seguintes objetos são mascarados por 'package:stats':
##
## filter, lag
## Os seguintes objetos são mascarados por 'package:base':
##
## intersect, setdiff, setequal, union
# Carregue os pacotes
library(ipeadatar)
library(dplyr)
# Obter série do deflator implícito do PIB (SCN10_DIPIBG10)
serie <- ipeadata("SCN10_DIPIBG10")
# Filtrar anos de 2010 a 2019
deflatores <- serie |>
filter(format(date, "%Y") %in% as.character(2019:2021)) |>
mutate(
ano = as.integer(format(date, "%Y")),
deflator = value / 100 # transformar para razão
) |>
arrange(desc(ano))
# Criar índices encadeados com base 2021 = 1
deflatores$indice_base2021 <- 1
for (i in 2:nrow(deflatores)) {
deflatores$indice_base2021[i] <- deflatores$indice_base2021[i-1] / (1 + deflatores$deflator[i-1])
}
# Reordenar para anos crescentes
deflatores_final <- deflatores |>
arrange(ano) |>
select(ano, deflator_anual = deflator, indice_base2021)
# Exibir resultado
print(deflatores_final)
## # A tibble: 3 × 3
## ano deflator_anual indice_base2021
## <int> <dbl> <dbl>
## 1 2019 0.0422 0.831
## 2 2020 0.0647 0.885
## 3 2021 0.130 1
# Criar vetor nomeado para uso com função `ler_mip_ano`
deflator_map <- deflatores_final$indice_base2021
names(deflator_map) <- deflatores_final$ano
# Exemplo de uso:
dados_2019 <- ler_mip_ano(2019, deflator = deflator_map["2019"])
dados_2021 <- ler_mip_ano(2021, deflator = deflator_map["2021"])
CHOQUE
# =========== Área de bibliotecas =================
# Pacotes necessários
if (!require("openxlsx")) install.packages("openxlsx")
if (!require("fs")) install.packages("fs")
if (!require("htmlTable")) install.packages("htmlTable")
if (!require("htmltools")) install.packages("htmltools")
library(openxlsx)
library(fs)
library(htmlTable)
library(htmltools)
# =========== Área de Funções =====================
# Função para ler e ajustar a matriz de insumo-produto para um ano de preços específico
ler_mip_ano <- function(ano, deflator = 1, pasta = "./Outputs") {
# Definições fixas para matriz 68x68
nSetores <- 68
# Caminho da planilha
pasta <- fs::path_expand(pasta)
arq <- file.path(pasta, paste0("MIP_", ano, "_68x68MetodoGuilhoto.xlsx"))
# Leitura da planilha
dSheet <- read.xlsx(arq, sheet = "MIP", rowNames = TRUE)
mMatriz <- as.matrix(dSheet)
nomes_setores <- rownames(dSheet)[1:nSetores]
dimnames(mMatriz) <- NULL
# Matrizes e vetores básicos (valores nominais do ano do arquivo)
mZ_nom <- mMatriz[1:nSetores, 1:nSetores]
mDemanda_nom <- mMatriz[1:nSetores, 70:75]
mVA_nom <- mMatriz[76:89, 1:nSetores]
vX_nom <- mVA_nom[13, ] # VBP está na linha 13 da matriz de VA
# DEFLACIONAMENTO (neste caso, INFLACIONAMENTO para preços de 2021)
# O deflator é o inverso do fator de inflação acumulada.
mZ <- mZ_nom / deflator
mDemanda <- mDemanda_nom / deflator
vX <- vX_nom / deflator
mVA <- mVA_nom / deflator
# Retorna uma lista com todos os dados necessários já em preços de 2021
list(
ano = ano,
lNomeSetores = nomes_setores,
mZ = mZ,
mDemanda = mDemanda,
mVA = mVA,
vX = vX
)
}
# =========== Área do código principal ============
# ALTERADO: Passo 1 - Definição do deflator para converter R$ de 2019 para R$ de 2021
inflacao_2020 <- 0.0647
inflacao_2021 <- 0.1305
inflator_acumulado <- (1 + inflacao_2020) * (1 + inflacao_2021)
deflator_2019_para_2021 <- 1 / inflator_acumulado
# ALTERADO: Passo 2 - Leitura da Matriz de 2019 e conversão para preços de 2021
PastaMipEstimada <- "./Outputs"
# A função 'ler_mip_ano' agora carrega e converte os valores para preços de 2021
dados_2019_precos_2021 <- ler_mip_ano(2019, deflator = deflator_2019_para_2021, pasta = PastaMipEstimada)
# Extração das matrizes e vetores já em R$ de 2021
nSetores <- 68
mZ <- dados_2019_precos_2021$mZ
mDemanda <- dados_2019_precos_2021$mDemanda
mVA <- dados_2019_precos_2021$mVA
vX <- dados_2019_precos_2021$vX
lNomeSetores <- dados_2019_precos_2021$lNomeSetores
#################################################################################
# Calculo do Modelo Aberto (com dados a preços de 2021)
#################################################################################
mA <- t(t(mZ) / vX)
mA[!is.finite(mA)] <- 0 # Tratamento para divisões por zero
mI <- diag(nSetores)
mLeontief <- solve(mI - mA)
#################################################################################
# Calculo do Modelo Fechado (com dados a preços de 2021)
#################################################################################
nLinhaRendaTrabalho <- 2
nLinhaRendaCapital <- 9 # E excedente operacional bruto
nColunaFamilias <- 4
vDemandaFamilias <- matrix(mDemanda[, nColunaFamilias], nrow = nSetores, ncol = 1)
# Renda do trabalho = Remunerações (linha 2) + 41% do EOB (linha 9)
vRendaTrabalho <- matrix(mVA[nLinhaRendaTrabalho, ], nrow = 1, ncol = nSetores) + matrix(mVA[nLinhaRendaCapital, ], nrow = 1, ncol = nSetores) * 0.41
mZBarr <- rbind(mZ, vRendaTrabalho)
mAux <- rbind(vDemandaFamilias, matrix(0, nrow = 1, ncol = 1))
mZBarr <- cbind(mZBarr, mAux)
vVBPBarr <- c(vX, sum(vRendaTrabalho))
mABarr <- t(t(mZBarr) / vVBPBarr)
mABarr[!is.finite(mABarr)] <- 0 # Tratamento para divisões por zero
mIBarr <- diag(nSetores + 1)
mLeontiefBarr <- solve(mIBarr - mABarr)
#################################################################################
# ALTERADO: DEFINIÇÃO DO CHOQUE DESAGREGADO - PCVA (R$ 1 bi a preços de 2021)
#################################################################################
# 1. Parâmetros do investimento (valores em MILHÕES de R$ de 2021)
total_investimento <- 1000 # Valor de R$ 1 bilhão
perc_materiais <- 0.5989 # Custo de materiais de Dez/2021 (SINAPI)
perc_mao_de_obra <- 0.4011 # Custo de mão de obra de Dez/2021 (SINAPI)
total_invest_materiais <- total_investimento * perc_materiais
total_invest_mao_de_obra <- total_investimento * perc_mao_de_obra
# 2. Choque de Materiais
nSetorConstrucao <- which(grepl("Construção", lNomeSetores))
vComprasConstrucao <- mZ[, nSetorConstrucao] # Todas as compras do setor Construção
vPropCompras <- vComprasConstrucao / (sum(vComprasConstrucao) + 1e-9) # Proporção de cada insumo
vChoque_Materiais <- vPropCompras * total_invest_materiais
# 3. Choque de Mão de Obra
nColunaFamilias <- 4
vConsumoFamilias <- mDemanda[, nColunaFamilias]
vPropConsumo <- vConsumoFamilias / sum(vConsumoFamilias)
vChoque_MaoDeObra <- vPropConsumo * total_invest_mao_de_obra
# 4. Choque total para o modelo aberto
vChoque_Total_Aberto <- vChoque_Materiais + vChoque_MaoDeObra
#################################################################################
# ANÁLISE DE IMPACTO NO MODELO ABERTO (Resultados em R$ de 2021)
#################################################################################
vDeltaY_Aberto <- matrix(vChoque_Total_Aberto, nrow = nSetores, ncol = 1)
nLinhaOcupacoes <- 14
nLinhaVA <- 1 # Assumindo que o VA total está na primeira linha da matriz mVA
# Cálculos de impacto
vDeltaX_Aberto <- mLeontief %*% vDeltaY_Aberto
nVariacaoVBP_Aberto <- sum(vDeltaX_Aberto)
nVariacaoPercentualVBP_Aberto <- (nVariacaoVBP_Aberto / sum(vX)) * 100
vRelacaoVA <- (mVA[nLinhaVA,] / vX)
vRelacaoVA[!is.finite(vRelacaoVA)] <- 0
vDeltaVA_Aberto <- vDeltaX_Aberto * vRelacaoVA
nDeltaVA_Aberto <- sum(vDeltaVA_Aberto)
nDeltaVAPercentual_Aberto <- (nDeltaVA_Aberto / sum(mVA[nLinhaVA,])) * 100
vRelacaoEmprego <- (mVA[nLinhaOcupacoes,] / vX)
vRelacaoEmprego[!is.finite(vRelacaoEmprego)] <- 0
vDeltaEmprego_Aberto <- vDeltaX_Aberto * vRelacaoEmprego
nDeltaEmprego_Aberto <- sum(vDeltaEmprego_Aberto)
nDeltaEmpregoPercentual_Aberto <- (nDeltaEmprego_Aberto / sum(mVA[nLinhaOcupacoes,])) * 100
# Tabela de resultados
resumo_aberto <- data.frame(
Indicador = c("Variação da Produção (Milhões R$ de 2021)",
"Variação da Produção (%)",
"Variação do VA (Milhões R$ de 2021)",
"Variação do VA (%)",
"Variação do Emprego (Nº Pessoas)",
"Variação do Emprego (%)"
),
Valor = c(format(nVariacaoVBP_Aberto, big.mark = ".", decimal.mark = ",", nsmall = 2),
paste0(format(nVariacaoPercentualVBP_Aberto, digits = 4), " %"),
format(nDeltaVA_Aberto, big.mark = ".", decimal.mark = ",", nsmall = 2),
paste0(format(nDeltaVAPercentual_Aberto, digits = 4), " %"),
format(trunc(nDeltaEmprego_Aberto), big.mark = ".", decimal.mark = ","),
paste0(format(nDeltaEmpregoPercentual_Aberto, digits = 4), " %")
)
)
html_out_aberto <- htmlTable(resumo_aberto,
align = "lr",
caption = "Impacto do Investimento PCVA (R$ 1 bi) - Modelo Aberto (Preços de 2021)",
rnames = FALSE)
print(html_out_aberto)
## <table class='gmisc_table' style='border-collapse: collapse; margin-top: 1em; margin-bottom: 1em;' >
## <thead>
## <tr><td colspan='2' style='text-align: left;'>
## Impacto do Investimento PCVA (R$ 1 bi) - Modelo Aberto (Preços de 2021)</td></tr>
## <tr>
## <th style='font-weight: 900; border-bottom: 1px solid grey; border-top: 2px solid grey; text-align: center;'>Indicador</th>
## <th style='font-weight: 900; border-bottom: 1px solid grey; border-top: 2px solid grey; text-align: center;'>Valor</th>
## </tr>
## </thead>
## <tbody>
## <tr>
## <td style='text-align: left;'>Variação da Produção (Milhões R$ de 2021)</td>
## <td style='text-align: right;'>1.833,016</td>
## </tr>
## <tr>
## <td style='text-align: left;'>Variação da Produção (%)</td>
## <td style='text-align: right;'>0.01195 %</td>
## </tr>
## <tr>
## <td style='text-align: left;'>Variação do VA (Milhões R$ de 2021)</td>
## <td style='text-align: right;'>794,9433</td>
## </tr>
## <tr>
## <td style='text-align: left;'>Variação do VA (%)</td>
## <td style='text-align: right;'>0.01039 %</td>
## </tr>
## <tr>
## <td style='text-align: left;'>Variação do Emprego (Nº Pessoas)</td>
## <td style='text-align: right;'>14.068</td>
## </tr>
## <tr>
## <td style='border-bottom: 2px solid grey; text-align: left;'>Variação do Emprego (%)</td>
## <td style='border-bottom: 2px solid grey; text-align: right;'>0.01103 %</td>
## </tr>
## </tbody>
## </table>
html_print(HTML(html_out_aberto))
#################################################################################
# ANÁLISE DE IMPACTO NO MODELO FECHADO (Resultados em R$ de 2021)
#################################################################################
vDeltaY_Fechado <- rbind(matrix(vChoque_Materiais, nrow = nSetores, ncol = 1),
matrix(total_invest_mao_de_obra, nrow = 1, ncol = 1))
# Cálculos de impacto
vDeltaX_Fechado <- mLeontiefBarr %*% vDeltaY_Fechado
nVariacaoVBP_Fechado <- sum(vDeltaX_Fechado[1:nSetores])
nVariacaoPercentualVBP_Fechado <- (nVariacaoVBP_Fechado / sum(vX)) * 100
vDeltaVA_Fechado <- vDeltaX_Fechado[1:nSetores] * vRelacaoVA
nDeltaVA_Fechado <- sum(vDeltaVA_Fechado)
nDeltaVAPercentual_Fechado <- (nDeltaVA_Fechado / sum(mVA[nLinhaVA,])) * 100
vDeltaEmprego_Fechado <- vDeltaX_Fechado[1:nSetores] * vRelacaoEmprego
nDeltaEmprego_Fechado <- sum(vDeltaEmprego_Fechado)
nDeltaEmpregoPercentual_Fechado <- (nDeltaEmprego_Fechado / sum(mVA[nLinhaOcupacoes,])) * 100
# Tabela de resultados
resumo_fechado <- data.frame(
Indicador = c("Variação da Produção (Milhões R$ de 2021)",
"Variação da Produção (%)",
"Variação do VA (Milhões R$ de 2021)",
"Variação do VA (%)",
"Variação do Emprego (Nº Pessoas)",
"Variação do Emprego (%)"
),
Valor = c(format(nVariacaoVBP_Fechado, big.mark = ".", decimal.mark = ",", nsmall = 2),
paste0(format(nVariacaoPercentualVBP_Fechado, digits = 4), " %"),
format(nDeltaVA_Fechado, big.mark = ".", decimal.mark = ",", nsmall = 2),
paste0(format(nDeltaVAPercentual_Fechado, digits = 4), " %"),
format(trunc(nDeltaEmprego_Fechado), big.mark = ".", decimal.mark = ","),
paste0(format(nDeltaEmpregoPercentual_Fechado, digits = 4), " %")
)
)
html_out_fechado <- htmlTable(resumo_fechado,
align = "lr",
caption = "Impacto do Investimento PCVA (R$ 1 bi) - Modelo Fechado (Preços de 2021)",
rnames = FALSE)
print(html_out_fechado)
## <table class='gmisc_table' style='border-collapse: collapse; margin-top: 1em; margin-bottom: 1em;' >
## <thead>
## <tr><td colspan='2' style='text-align: left;'>
## Impacto do Investimento PCVA (R$ 1 bi) - Modelo Fechado (Preços de 2021)</td></tr>
## <tr>
## <th style='font-weight: 900; border-bottom: 1px solid grey; border-top: 2px solid grey; text-align: center;'>Indicador</th>
## <th style='font-weight: 900; border-bottom: 1px solid grey; border-top: 2px solid grey; text-align: center;'>Valor</th>
## </tr>
## </thead>
## <tbody>
## <tr>
## <td style='text-align: left;'>Variação da Produção (Milhões R$ de 2021)</td>
## <td style='text-align: right;'>3.467,554</td>
## </tr>
## <tr>
## <td style='text-align: left;'>Variação da Produção (%)</td>
## <td style='text-align: right;'>0.02261 %</td>
## </tr>
## <tr>
## <td style='text-align: left;'>Variação do VA (Milhões R$ de 2021)</td>
## <td style='text-align: right;'>1.601,367</td>
## </tr>
## <tr>
## <td style='text-align: left;'>Variação do VA (%)</td>
## <td style='text-align: right;'>0.02093 %</td>
## </tr>
## <tr>
## <td style='text-align: left;'>Variação do Emprego (Nº Pessoas)</td>
## <td style='text-align: right;'>28.454</td>
## </tr>
## <tr>
## <td style='border-bottom: 2px solid grey; text-align: left;'>Variação do Emprego (%)</td>
## <td style='border-bottom: 2px solid grey; text-align: right;'>0.0223 %</td>
## </tr>
## </tbody>
## </table>
html_print(HTML(html_out_fechado))