3 Quickstart
This chapter gets you from a fresh install to a solved CGE model in as few steps as possible, using the freely available GTAP 10 database and the classic GTAP model (version 6.2).
Before continuing, make sure you have completed all prerequisites in the Dependencies chapter:
- R (>= 4.3.0) installed
teemsR package installed- GTAP 10 FlexAgg HAR files downloaded
teems-solverDocker image built
3.1 Generate example scripts
ems_example() writes a set of ready-to-run R scripts to disk, with your data paths already injected at the top of each file. Point it at your HAR files and a project directory:
library(teems)
paths <- ems_example(
model = "GTAPv6",
type = "scripts",
dat_input = "v6_data/gsddat.har",
par_input = "v6_data/gsdpar.har",
set_input = "v6_data/gsdset.har",
write_dir = "~/my_project"
)paths is a character vector of the written script file paths. Each script is self-contained and immediately runnable — no further editing is required to get a first run off the ground.
3.2 Step 1: verify the solver with a null run
Run null.R first. A null run applies no shocks, so every model variable should return zero. Note that the examples below use source() to run a specific script but for interactive runs opening the scripts generated by ems_example() within RStudio is recommended.
source(paths[basename(paths) == "null.R"])
# null.R performs these checks automatically:
check # TRUE — all variable values are 0
var_check # TRUE — output contains the expected number of variables
coeff_check # TRUE — output contains the expected number of coefficients3.3 Step 2: run a uniform shock
full_uniform.R applies a 1% population shock (pop) uniformly across all regions. It is the simplest non-trivial run and a good sanity check before customizing anything.
source(paths[basename(paths) == "full_uniform.R"])
# full_uniform.R checks that the shock came through:
check # TRUE — all pop values equal 1 (percentage change)outputs is a tibble where each row corresponds to a solved variable or coefficient. The dat list column holds the result data for that row in data.table format.
# Inspect results for one variable
outputs$dat$popSee the Composing results chapter for a full guide to working with outputs.
3.4 Next steps
The other scripts in paths cover the full range of shock and swap configurations available for GTAPv6. Recommended progression:
| Script | Try it when… |
|---|---|
part_uniform.R |
You want to shock a single region or sector |
part_uniform_part_swap.R |
You need to change the closure for part of the model |
custom_full.R |
You have heterogeneous shock values from external data |
full_uniform.R with a different variable |
You want to explore other exogenous variables |
For a deeper look at each script pattern and how to customize them, see the Example files chapter. For data aggregation options (region and sector mappings), see Loading and specifying sets.