English · Português

Replicações

Um modelo publicado, refeito a partir da matriz de contabilidade social que o artigo usou. A página registra o número que bateu e o mecanismo que o pacote não tem.

cgelab · github.com/GustavoHM/cgelab

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)stdcgelrgcge
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ção0 / 0−4.89 / −4.40
Variação equivalente, nível1.1450.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.

ModeloDadosRegiõesStatus
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