O que conta como replicação
A mesma matriz, o mesmo fechamento, as mesmas elasticidades, o mesmo choque, confrontados com um número publicado. O ano-base tem de voltar. Um desvio sai com a causa.
Dois tipos de artigo vêm primeiro. O que entrega a matriz, o código e uma tabela. Depois o que usa uma matriz pública, quando o choque e as elasticidades estão descritos o bastante para serem refeitos. Base licenciada, a GTAP em particular, fica para uma fila posterior: o código GAMS do GTAP padrão está publicado, e a base não. Ela não entra no repositório.
Várias regiões são uma extensão à parte
Uma região basta para um modelo nacional. O exemplo abaixo é uma economia fechada, e os próximos arquivos da fila também são nacionais. Várias regiões, no que o pacote faz hoje, são um ninho de origem: cada região produz, quem compra paga um composto nacional dessas origens, e o Armington continua misturando esse composto com a importação do exterior. Os fatores não migram. Um artigo de GTAP ou um modelo inter-regional no estilo B-MARIA ou TERM também pede migração, e o GTAP pede a base licenciada. Um resultado desses não sai só do ninho de origem. O roadmap guarda o resto do item, e o catálogo diz isso na linha.
Exemplo feito: Hosoe, Gasawa e Hashimoto, capítulo 5
A matriz abaixo é a impressa em splcge, o EGC simples da
biblioteca de modelos do GAMS.
A citação nesse arquivo é Hosoe, Gasawa e Hashimoto, Handbook of Computable General
Equilibrium Modeling, University of Tokyo Press, 2004, capítulo 5. O programa publicado
resolve o ano-base e nenhum contrafactual, então a checagem é o ano-base.
Pão e leite, capital e trabalho, um domicílio. A produção é Cobb–Douglas nos dois fatores e
não há insumo intermediário, o que é sigma_va=1 com o bloco intermediário vazio.
O trabalho é o numerário. A matriz publicada não tem governo, investimento nem resto do mundo;
o pacote exige essas três contas, então elas entram vazias. Investimento zero é um bloco
fechado, não uma cesta a repartir.
import pandas as pd
import cgelab as cge
entries = [
("c_brd", "hh_1", 15.0), ("c_mlk", "hh_1", 35.0),
("f_cap", "a_brd", 5.0), ("f_cap", "a_mlk", 20.0),
("f_lab", "a_brd", 10.0), ("f_lab", "a_mlk", 15.0),
("hh_1", "f_cap", 25.0), ("hh_1", "f_lab", 25.0),
("a_brd", "c_brd", 15.0), ("a_mlk", "c_mlk", 35.0),
("gov", "gov", 0.0), ("s_i", "s_i", 0.0), ("row", "row", 0.0),
]
sam = cge.SAM.from_long(pd.DataFrame(entries, columns=["row", "col", "value"]), name="hosoe")
sam.check_balance(abs_tol=1e-9)
spec = cge.ModelSpec(
activities=["a_brd", "a_mlk"], commodities=["c_brd", "c_mlk"],
households=["hh_1"], factors=("f_lab", "f_cap"),
government="gov", investment="s_i", rest_of_world="row",
sigma_va=1.0, margins=False, numeraire_factor="f_lab")
econ = cge.calibrate(sam, spec)
base = cge.solve_period(econ)
assert base.converged and abs(base.walras) < 1e-9
assert abs(base.X[econ.activity("a_brd")] - 15) < 1e-8
assert abs(base.X[econ.activity("a_mlk")] - 35) < 1e-8
assert abs(base.pq[econ.commodity("c_brd")] - 1) < 1e-8
print(base.X, base.walras)
A produção resolvida é 15 e 35, os preços ao comprador são 1, importação e poupança são 0, e o resíduo de Walras no numerário é 0. Isso é o ano-base publicado, não uma tabela de política: o arquivo GAMS não traz uma.
Exemplo feito: a abolição das tarifas em stdcge e lrgcge
Os capítulos 6 e 10.2 do mesmo manual são os arquivos da biblioteca do GAMS
stdcge
e lrgcge.
Têm uma matriz, com insumos intermediários, imposto indireto sobre o produto (IDT), tarifa
(TRF), governo, investimento e resto do mundo, e um experimento: todas as tarifas a zero. O
lrgcge acrescenta uma curva de demanda pelas exportações e uma de oferta das
importações, ambas com elasticidade 2.
cgelab.examples.hosoe traz a matriz, com as contas de Hosoe separadas em
atividade e mercadoria, as formas funcionais e o fechamento dele. O governo poupa uma fração
fixa da renda, e a poupança externa é fixa em dólares. A tarifa fica dentro do preço de
importação e o imposto indireto dentro do preço bruto do produto, como na calibração dele.
import numpy as np
import cgelab as cge
from cgelab.examples import hosoe
for large in (False, True):
_, econ = hosoe.build(large_country=large)
base = cge.solve_period(econ, hosoe.CLOSURE)
free = cge.solve_period(econ, hosoe.CLOSURE, cge.Scenario(tariff=np.zeros(econ.n_com)))
assert free.converged and abs(free.walras) < 1e-9
print("lrgcge" if large else "stdcge",
np.round(100 * (free.imports / base.imports - 1), 2), # importações, variação %
round(100 * (free.exchange_rate - 1), 2)) # câmbio, variação %
Os programas calculam essas variações e não imprimem tabela, e o GAMS não está instalado
aqui. A referência é por isso validation/hosoe.jl, uma transcrição linha a linha
dos dois arquivos .gms para JuMP (matriz, calibração e equações), resolvida com
Ipopt. As 49 variáveis que os programas exibem coincidem, no ano-base e depois da abolição, a
2,4e-12. A suíte checa o resultado gravado sem Julia.
| Variação % (pão / leite) | stdcge | lrgcge |
|---|---|---|
| Importações | −1.08 / +18.85 | −2.78 / +6.76 |
| Exportações | +17.93 / +12.46 | +10.55 / +9.42 |
| Consumo das famílias | +1.96 / +2.51 | +0.85 / +1.13 |
| Consumo do governo | −6.85 / −6.35 | −7.83 / −7.58 |
| Câmbio | +6.28 | +9.51 |
| Preço mundial de exportação | 0 / 0 | −4.89 / −4.40 |
| Variação equivalente, nível | 1.145 | 0.508 |
O leite pagava a tarifa mais alta, 18% contra 8%, e toma o mercado de importação: as
importações de pão caem. O governo perde a receita da tarifa e corta o consumo. O câmbio se
deprecia para pagar as importações a mais, e as exportações sobem. Como país grande, o
lrgcge paga essa alta com preços mundiais de exportação menores, e o ganho de
bem-estar fica em menos da metade.
A fila
O status é o que já foi rodado neste pacote. "Arquivos localizados" quer dizer que a matriz ou o código foram encontrados e ainda não foram resolvidos aqui.
| Modelo | Dados | Regiões | Status |
|---|---|---|---|
Hosoe, Gasawa e Hashimoto (2004), cap. 5, biblioteca GAMS splcge |
Matriz impressa no arquivo da biblioteca | Uma, fechada | Ano-base reproduzido nesta página |
Hosoe, Gasawa e Hashimoto (2004), caps. 6 e 10.2, biblioteca GAMS stdcge e lrgcge |
Matriz impressa nos arquivos da biblioteca | Uma, aberta | Abolição das tarifas reproduzida nesta página, contra uma transcrição dos programas |
| Lofgren, Harris e Robinson (2002), EGC padrão do IFPRI em GAMS | O manual está aberto. A base de exemplo vinha com o livro e não está no PDF que o CGSpace publica agora | Um país, com comércio, margens e produção doméstica | O próximo, quando o arquivo da base estiver em mãos |
| Mukashov, Senegal, GAMS no padrão IFPRI, artigo sobre equidade regional de renda | Matriz, elasticidades e cenários no repositório | Um modelo nacional na estrutura do IFPRI. Se "regional" é uma partição de domicílios ou várias regiões que comerciam entre si, isso se lê na matriz antes de qualquer número | Arquivos localizados, ainda não resolvido |
| van der Mensbrugghe (2018), modelo GTAP padrão em GAMS, versão 7 | Código GAMS com o artigo. A base GTAP é licenciada | Várias | Precisa da estrutura do GTAP e de uma licença. O ninho de origem não é esse modelo. A base não será commitada |
| Cicowiez e Lofgren (2017), Banco Mundial WPS 8273 | Método e matrizes macro para 133 países, públicos | Uma conta de produção por país | Dado público, sem choque publicado para confrontar. Segunda leva |
| Matrizes de contabilidade social Nexus do IFPRI | A matriz, CC-BY, não um experimento | Um país | Dado público. Segunda leva: calibrar, e só reivindicar uma tabela quando o choque do artigo estiver descrito por completo |