Multi-Regional Input-Output Analysis

June 06, 2026

Introduction

Multi-Regional Input-Output (MRIO) analysis extends traditional input-output analysis to capture economic interdependencies between multiple regions or countries. The miom class in the fio package implements the methodology described in Miller & Blair (2009) for analyzing multi-regional economic systems.

This vignette demonstrates how to:

In a multi-regional system with \(R\) regions and \(N\) sectors per region, the total dimensions of the system are \(RN \times RN\). The intermediate transactions matrix \(\mathbf{Z}\) is partitioned as:

\[ \mathbf{Z} = \begin{bmatrix} \mathbf{Z}^{11} & \mathbf{Z}^{12} & \cdots & \mathbf{Z}^{1R} \\ \mathbf{Z}^{21} & \mathbf{Z}^{22} & \cdots & \mathbf{Z}^{2R} \\ \vdots & \vdots & \ddots & \vdots \\ \mathbf{Z}^{R1} & \mathbf{Z}^{R2} & \cdots & \mathbf{Z}^{RR} \end{bmatrix} \]

where \(\mathbf{Z}^{rs}\) represents intermediate flows from region \(s\) to region \(r\).

Computations of the multi-regional Leontief inverse is the same from the single-region case:

\[ \mathbf{L} = (\mathbf{I} - \mathbf{A})^{-1} \]

where \(\mathbf{A}\) is the multi-regional technical coefficients matrix. Therefore, the multi-regional input-output class miom is able to inherit methods from the iom class, implementing the additional functionality needed for multi-regional analysis.

SHOWCASING THE miom CLASS: 2000 WORLD ECONOMY EXAMPLE

The fiodata package includes the world_2000 dataset, which contains real multi-regional input-output data for 26 countries and 23 sectors from the year 2000. This dataset was created using element-by-element imports from Excel files with import_element() as demonstrated in the World 2000 script.

Let’s load and examine this real-world dataset:

# import real-world dataset
world_2000 <- fiodata::world_2000

# Examine the structure
world_2000$n_countries
#> [1] 26
world_2000$n_sectors
#> [1] 23
nrow(world_2000$intermediate_transactions)
#> [1] 598
ncol(world_2000$intermediate_transactions)
#> [1] 598

# Show the countries and sectors
world_2000$countries
#>  [1] "AUS" "AUT" "BEL" "BRA" "CAN" "CHN" "DEU" "DNK" "ESP" "FIN" "FRA" "GBR"
#> [13] "GRC" "HKG" "IND" "IRL" "ITA" "JPN" "KOR" "MEX" "NDL" "PRT" "SWE" "TWN"
#> [25] "USA" "ROW"
world_2000$sectors
#>  [1] "Agriculture, Hunting, Forestry and Fishing" 
#>  [2] "Mining and Quarrying"                       
#>  [3] "Food, Beverages and Tobacco"                
#>  [4] "Textiles, leather and footwear"             
#>  [5] "Pulp, paper, printing and publishing"       
#>  [6] "Coke, refined petroleum and nuclear fuel"   
#>  [7] "Chemicals and chemicals products"           
#>  [8] "Rubber and plastics"                        
#>  [9] "Other non-metallic mineral"                 
#> [10] "Basic metals and fabricated metal"          
#> [11] "Machinery"                                  
#> [12] "Electrical and optical equipment"           
#> [13] "Transport equipment"                        
#> [14] "Manufacturing, recycling"                   
#> [15] "Electricity, gas and water supply"          
#> [16] "Construction"                               
#> [17] "Wholesale and retail trade"                 
#> [18] "Hotels and restaurants"                     
#> [19] "Transport and storage"                      
#> [20] "Post and telecommunications"                
#> [21] "Financial intermediation"                   
#> [22] "Real state, renting and business activities"
#> [23] "Community, social and personal services"
# Show a small subset of transactions (first 6 countries x sectors)
knitr::kable(
  world_2000$intermediate_transactions[1:6, 1:6],
  digits = 0,
  caption = "Sample of Intermediate Transactions (millions of dollars)"
)
Sample of Intermediate Transactions (millions of dollars)
AUS_Agriculture, Hunting, Forestry and Fishing AUS_Mining and Quarrying AUS_Food, Beverages and Tobacco AUS_Textiles, leather and footwear AUS_Pulp, paper, printing and publishing AUS_Coke, refined petroleum and nuclear fuel
AUS_Agriculture, Hunting, Forestry and Fishing 2976 16 8128 538 163 0
AUS_Mining and Quarrying 17 1881 117 11 34 3355
AUS_Food, Beverages and Tobacco 796 33 3387 68 21 14
AUS_Textiles, leather and footwear 25 15 54 565 29 6
AUS_Pulp, paper, printing and publishing 92 75 834 56 2193 15
AUS_Coke, refined petroleum and nuclear fuel 359 452 61 6 41 331

# Show total production for first few country-sectors
knitr::kable(
  t(world_2000$total_production[1, 1:6]),
  digits = 0,
  caption = "Sample of Total Production (millions of dollars)"
)
Sample of Total Production (millions of dollars)
AUS_Agriculture, Hunting, Forestry and Fishing AUS_Mining and Quarrying AUS_Food, Beverages and Tobacco AUS_Textiles, leather and footwear AUS_Pulp, paper, printing and publishing AUS_Coke, refined petroleum and nuclear fuel
28170 35785 35716 5857 15198 9871

The intermediate transactions matrix shows the flows of goods and services between all country-sector combinations in the global economy. The values represent monetary flows in millions of dollars. Each element represents purchases of intermediate inputs from the supplying country-sector (columns) by the purchasing country-sector (rows). It captures the complete structure of intermediate transactions between 26 countries across 23 economic sectors, providing a comprehensive view of global economic interdependencies in the year 2000.

Multi-Regional Multiplier Analysis

The miom class computes several types of multipliers following Miller & Blair (2009):

world_2000$compute_multiregional_multipliers()

# Show first 10 rows of multipliers for readability
knitr::kable(
  world_2000$multiregional_multipliers[1:10, 1:10],
  digits = 4,
  caption = "Multi-Regional Multipliers (first 10 country-sectors)"
)
Multi-Regional Multipliers (first 10 country-sectors)
shock_country shock_sector shock_label intra_regional_multiplier spillover_multiplier total_multiplier multiplier_to_AUS multiplier_to_AUT multiplier_to_BEL multiplier_to_BRA
AUS Agriculture, Hunting, Forestry and Fishing AUS_Agriculture, Hunting, Forestry and Fishing 1.8179 0.2331 2.0510 1.8179 0.0012 0.0031 0.0019
AUS Mining and Quarrying AUS_Mining and Quarrying 1.6935 0.2127 1.9061 1.6935 0.0011 0.0020 0.0012
AUS Food, Beverages and Tobacco AUS_Food, Beverages and Tobacco 2.3286 0.2703 2.5990 2.3286 0.0015 0.0030 0.0027
AUS Textiles, leather and footwear AUS_Textiles, leather and footwear 2.0626 0.4556 2.5181 2.0626 0.0025 0.0056 0.0029
AUS Pulp, paper, printing and publishing AUS_Pulp, paper, printing and publishing 2.0275 0.3072 2.3347 2.0275 0.0022 0.0039 0.0024
AUS Coke, refined petroleum and nuclear fuel AUS_Coke, refined petroleum and nuclear fuel 2.2922 0.4806 2.7728 2.2922 0.0018 0.0036 0.0021
AUS Chemicals and chemicals products AUS_Chemicals and chemicals products 2.1035 0.5020 2.6055 2.1035 0.0024 0.0079 0.0035
AUS Rubber and plastics AUS_Rubber and plastics 1.9421 0.4697 2.4118 1.9421 0.0023 0.0074 0.0031
AUS Other non-metallic mineral AUS_Other non-metallic mineral 2.0107 0.3092 2.3199 2.0107 0.0017 0.0031 0.0022
AUS Basic metals and fabricated metal AUS_Basic metals and fabricated metal 2.0796 0.3984 2.4779 2.0796 0.0022 0.0034 0.0023

Interpreting the Multipliers

The multipliers table shows several key measures for each country-sector combination (each row is a $1 final-demand shock in shock_country / shock_sector):

Let’s find an interesting example. Take a look at Brazil Agriculture and it’s effects on USA:

# Find Brazil agriculture row
bra_agr_index <- which(grepl("BRA.*Agriculture", world_2000$multiregional_multipliers$shock_label))[1]
bra_agr <- world_2000$multiregional_multipliers[bra_agr_index, ]

# Show key multiplier components
multiplier_cols <- c("shock_label", "intra_regional_multiplier", "spillover_multiplier", "total_multiplier", "multiplier_to_USA")
available_cols <- intersect(multiplier_cols, names(bra_agr))
knitr::kable(bra_agr[, available_cols],
  digits = 4,
  caption = "Example: Brazil Agriculture Multipliers"
)
Example: Brazil Agriculture Multipliers
shock_label intra_regional_multiplier spillover_multiplier total_multiplier multiplier_to_USA
70 BRA_Agriculture, Hunting, Forestry and Fishing 1.6809 0.1691 1.85 0.0385

The multipliers reveal important insights about global economic linkages. The intra-regional multiplier shows the domestic effect within a country when one of its sectors receives a demand shock, while the spillover multiplier captures the total impact on all other countries.

Spillover Matrix

The spillover matrix provides a comprehensive view of how shocks in each country-sector affect all other country-sectors in the system:

spillover_matrix <- world_2000$get_spillover_matrix()

This \(598 \times 598\) matrix contains the complete set of multiplier effects. For example, we can examine how a shock to the US electrical sector affects manufacturing in other countries:

# Effects of a shock to US Electrical sector
electrical_effects <- spillover_matrix[grepl("Manufacturing", rownames(spillover_matrix)), "USA_Electrical and optical equipment"]
knitr::kable(
  electrical_effects,
  digits = 10,
  caption = "Effects of a unit shock to US Electrical sector"
)
Effects of a unit shock to US Electrical sector
x
AUS_Manufacturing, recycling 0.0000278285
AUT_Manufacturing, recycling 0.0000317729
BEL_Manufacturing, recycling 0.0000746418
BRA_Manufacturing, recycling 0.0000750513
CAN_Manufacturing, recycling 0.0010488480
CHN_Manufacturing, recycling 0.0005086378
DEU_Manufacturing, recycling 0.0001300296
DNK_Manufacturing, recycling 0.0000092364
ESP_Manufacturing, recycling 0.0000666478
FIN_Manufacturing, recycling 0.0000274000
FRA_Manufacturing, recycling 0.0001874089
GBR_Manufacturing, recycling 0.0001376910
GRC_Manufacturing, recycling 0.0000050262
HKG_Manufacturing, recycling 0.0000204918
IND_Manufacturing, recycling 0.0001132960
IRL_Manufacturing, recycling 0.0000133946
ITA_Manufacturing, recycling 0.0001741727
JPN_Manufacturing, recycling 0.0002515836
KOR_Manufacturing, recycling 0.0000513328
MEX_Manufacturing, recycling 0.0003234464
NDL_Manufacturing, recycling 0.0000272870
PRT_Manufacturing, recycling 0.0000232974
SWE_Manufacturing, recycling 0.0000563693
TWN_Manufacturing, recycling 0.0001025605
USA_Manufacturing, recycling 0.0000000000
ROW_Manufacturing, recycling 0.0009231601

These values show the output response in each foreign country-sector to a unit shock in USA Electrical and optical equipment.

Net Spillover Effects

Net spillover effects reveal asymmetric cross-regional multiplier linkages. For countries \(r\) and \(s\), \(net[r, s] = spillover_{s→r} - spillover_{r→s}\) (block sums from the spillover matrix).

net_spillover <- world_2000$get_net_spillover_matrix()
knitr::kable(net_spillover, digits = 4, caption = "Net Spillover Effects Matrix")
Net Spillover Effects Matrix
AUS AUT BEL BRA CAN CHN DEU DNK ESP FIN FRA GBR GRC HKG IND IRL ITA JPN KOR MEX NDL PRT SWE TWN USA ROW
AUS 0.0000 -0.0128 0.0161 0.0185 -0.0666 -0.2094 -0.3254 0.0054 -0.0169 0.1028 -0.1678 -0.3081 0.0373 0.2802 0.1332 0.0170 -0.1683 -0.4861 0.2846 -0.0004 0.0029 0.0107 -0.0414 0.6035 -1.4584 -1.6443
AUT 0.0128 0.0000 -0.1123 -0.0255 -0.0542 -0.1683 -3.4544 0.0801 -0.1197 0.0000 -0.5047 -0.3707 0.1085 0.0251 -0.0127 0.0583 -0.7356 -0.3207 -0.0394 -0.0077 -0.2614 0.0610 -0.0481 -0.0705 -0.8216 -2.0690
BEL -0.0161 0.1123 0.0000 -0.1303 -0.1564 -0.2612 -2.1978 0.3258 -0.1575 0.0651 -1.5795 -1.3692 0.2773 0.1062 0.0709 0.0739 -0.4425 -0.5333 -0.0801 -0.0204 -1.2560 0.2428 -0.0370 0.0316 -1.7541 -2.2477
BRA -0.0185 0.0255 0.1303 0.0000 -0.0638 -0.1074 -0.3114 0.0543 -0.0272 0.0703 -0.1351 -0.1205 0.0703 0.1400 -0.0121 0.0602 -0.1189 -0.3053 -0.0575 0.0248 0.1271 0.1395 -0.0003 -0.0139 -1.1401 -1.3336
CAN 0.0666 0.0542 0.1564 0.0638 0.0000 -0.1215 -0.1589 0.0738 -0.0062 0.0598 -0.0793 -0.3592 0.0755 0.4725 0.0422 0.2618 -0.0790 -0.3763 0.0299 0.0400 0.0914 0.0575 0.0410 -0.0074 -4.7295 -0.9500
CHN 0.2094 0.1683 0.2612 0.1074 0.1215 0.0000 -0.0647 0.2008 0.1432 0.1481 0.0488 0.0196 0.1972 3.2840 0.1929 0.2366 0.0578 -0.9235 0.0400 0.1713 0.2811 0.1269 0.0763 -0.1745 -0.4623 -1.0555
DEU 0.3254 3.4544 2.1978 0.3114 0.1589 0.0647 0.0000 2.0943 0.9054 1.1904 0.4801 0.1591 1.2163 0.6132 0.2229 0.9037 0.4094 -0.2973 0.1949 0.2775 1.4774 1.4083 1.6150 0.8653 -0.7504 -1.2917
DNK -0.0054 -0.0801 -0.3258 -0.0543 -0.0738 -0.2008 -2.0943 0.0000 -0.1529 -0.0126 -0.6395 -1.0682 0.0649 0.0549 -0.0269 0.0893 -0.5411 -0.2305 -0.0836 -0.0077 -0.5998 0.0259 -0.8529 -0.0162 -0.7998 -1.9055
ESP 0.0169 0.1197 0.1575 0.0272 0.0062 -0.1432 -0.9054 0.1529 0.0000 0.0762 -0.8883 -0.4055 0.3551 0.1613 -0.0049 0.2886 -0.6444 -0.2458 -0.0200 -0.0514 0.0455 2.4591 0.0988 0.1080 -0.5864 -1.8137
FIN -0.1028 0.0000 -0.0651 -0.0703 -0.0598 -0.1481 -1.1904 0.0126 -0.0762 0.0000 -0.4082 -0.5926 0.1242 0.0389 -0.0104 0.0738 -0.3406 -0.4668 -0.0713 -0.0079 -0.2015 0.0461 -0.3288 -0.0692 -0.9072 -2.3061
FRA 0.1678 0.5047 1.5795 0.1351 0.0793 -0.0488 -0.4801 0.6395 0.8883 0.4082 0.0000 -0.1323 0.7620 0.4191 0.1152 0.8238 0.0105 -0.2843 0.1093 0.0987 0.6057 1.0754 0.7666 0.1600 -0.8321 -1.2457
GBR 0.3081 0.3707 1.3692 0.1205 0.3592 -0.0196 -0.1591 1.0682 0.4055 0.5926 0.1323 0.0000 0.5151 0.5883 0.3410 4.1994 0.0674 -0.3685 0.0660 0.0746 1.0018 0.7635 1.0191 0.5895 -1.0395 -1.1629
GRC -0.0373 -0.1085 -0.2773 -0.0703 -0.0755 -0.1972 -1.2163 -0.0649 -0.3551 -0.1242 -0.7620 -0.5151 0.0000 -0.0519 -0.0550 -0.0608 -1.6529 -0.2026 -0.1080 -0.0129 -0.4536 -0.0221 -0.2269 -0.0965 -0.5765 -3.1367
HKG -0.2802 -0.0251 -0.1062 -0.1400 -0.4725 -3.2840 -0.6132 -0.0549 -0.1613 -0.0389 -0.4191 -0.5883 0.0519 0.0000 0.0359 0.1734 -0.6494 -2.3815 -1.3598 -0.0428 -0.3130 0.0171 -0.0231 -0.4679 -3.2704 -6.2372
IND -0.1332 0.0127 -0.0709 0.0121 -0.0422 -0.1929 -0.2229 0.0269 0.0049 0.0104 -0.1152 -0.3410 0.0550 -0.0359 0.0000 0.0811 -0.0916 -0.3318 -0.0870 0.0157 -0.0116 0.0606 -0.0037 -0.0025 -0.5878 -2.9286
IRL -0.0170 -0.0583 -0.0739 -0.0602 -0.2618 -0.2366 -0.9037 -0.0893 -0.2886 -0.0738 -0.8238 -4.1994 0.0608 -0.1734 -0.0811 0.0000 -0.5089 -0.6792 -0.2360 -0.0227 -0.3643 0.0139 -0.1881 -0.1746 -3.0383 -2.1441
ITA 0.1683 0.7356 0.4425 0.1189 0.0790 -0.0578 -0.4094 0.5411 0.6444 0.3406 -0.0105 -0.0674 1.6529 0.6494 0.0916 0.5089 0.0000 -0.1670 0.0946 0.1297 0.1910 0.7478 0.3421 0.1276 -0.4831 -1.6802
JPN 0.4861 0.3207 0.5333 0.3053 0.3763 0.9235 0.2973 0.2305 0.2458 0.4668 0.2843 0.3685 0.2026 2.3815 0.3318 0.6792 0.1670 0.0000 1.5110 0.4463 0.5557 0.3128 0.3421 1.7225 -0.0264 -0.4335
KOR -0.2846 0.0394 0.0801 0.0575 -0.0299 -0.0400 -0.1949 0.0836 0.0200 0.0713 -0.1093 -0.0660 0.1080 1.3598 0.0870 0.2360 -0.0946 -1.5110 0.0000 0.1797 0.0487 0.1268 0.0371 0.2292 -1.5061 -2.8225
MEX 0.0004 0.0077 0.0204 -0.0248 -0.0400 -0.1713 -0.2775 0.0077 0.0514 0.0079 -0.0987 -0.0746 0.0129 0.0428 -0.0157 0.0227 -0.1297 -0.4463 -0.1797 0.0000 0.0109 0.0932 -0.0369 -0.0638 -4.6417 -0.6929
NDL -0.0029 0.2614 1.2560 -0.1271 -0.0914 -0.2811 -1.4774 0.5998 -0.0455 0.2015 -0.6057 -1.0018 0.4536 0.3130 0.0116 0.3643 -0.1910 -0.5557 -0.0487 -0.0109 0.0000 0.3416 0.1307 0.3147 -1.7635 -2.9057
PRT -0.0107 -0.0610 -0.2428 -0.1395 -0.0575 -0.1269 -1.4083 -0.0259 -2.4591 -0.0461 -1.0754 -0.7635 0.0221 -0.0171 -0.0606 -0.0139 -0.7478 -0.3128 -0.1268 -0.0932 -0.3416 0.0000 -0.1161 -0.0513 -0.5927 -2.1151
SWE 0.0414 0.0481 0.0370 0.0003 -0.0410 -0.0763 -1.6150 0.8529 -0.0988 0.3288 -0.7666 -1.0191 0.2269 0.0231 0.0037 0.1881 -0.3421 -0.3421 -0.0371 0.0369 -0.1307 0.1161 0.0000 -0.0189 -0.9712 -1.8780
TWN -0.6035 0.0705 -0.0316 0.0139 0.0074 0.1745 -0.8653 0.0162 -0.1080 0.0692 -0.1600 -0.5895 0.0965 0.4679 0.0025 0.1746 -0.1276 -1.7225 -0.2292 0.0638 -0.3147 0.0513 0.0189 0.0000 -1.2744 -2.5937
USA 1.4584 0.8216 1.7541 1.1401 4.7295 0.4623 0.7504 0.7998 0.5864 0.9072 0.8321 1.0395 0.5765 3.2704 0.5878 3.0383 0.4831 0.0264 1.5061 4.6417 1.7635 0.5927 0.9712 1.2744 0.0000 0.7676
ROW 1.6443 2.0690 2.2477 1.3336 0.9500 1.0555 1.2917 1.9055 1.8137 2.3061 1.2457 1.1629 3.1367 6.2372 2.9286 2.1441 1.6802 0.4335 2.8225 0.6929 2.9057 2.1151 1.8780 2.5937 -0.7676 0.0000

The interpretation is:

For example, net["USA", "CHN"] > 0 means a unit final-demand shock in China induces more output response in the USA than a comparable shock in the USA induces in China.

Key Sectors Analysis

Key sectors analysis identifies sectors with strong backward and forward linkages in the multi-regional system:

world_2000$compute_key_sectors()

key_sectors_table <- world_2000$key_sectors[, c(
  "country", "sector_name",
  "power_dispersion", "sensitivity_dispersion", "key_sectors"
)]
knitr::kable(head(key_sectors_table), digits = 4, caption = "Key Sectors Analysis")
Key Sectors Analysis
country sector_name power_dispersion sensitivity_dispersion key_sectors
AUS Agriculture, Hunting, Forestry and Fishing 0.9231 0.9372 Non-Key Sector
AUS Mining and Quarrying 0.8579 1.3972 Strong Forward Linkage
AUS Food, Beverages and Tobacco 1.1698 0.7489 Strong Backward Linkage
AUS Textiles, leather and footwear 1.1334 0.5495 Strong Backward Linkage
AUS Pulp, paper, printing and publishing 1.0508 0.7826 Strong Backward Linkage
AUS Coke, refined petroleum and nuclear fuel 1.2480 0.6396 Strong Backward Linkage

Key sectors are defined as those with above-average values in both power dispersion (backward linkages) and sensitivity dispersion (forward linkages). If both values exceed 1, the sector is classified as a key sector.

knitr::kable(
  subset(key_sectors_table, key_sectors == "Key Sector"),
  digits = 4,
  caption = "World Key Sectors"
)
World Key Sectors
country sector_name power_dispersion sensitivity_dispersion key_sectors
10 AUS Basic metals and fabricated metal 1.1153 1.1820 Key Sector
19 AUS Transport and storage 1.0424 1.3665 Key Sector
63 BEL Wholesale and retail trade 1.0474 2.1698 Key Sector
65 BEL Transport and storage 1.1411 1.5131 Key Sector
76 BRA Chemicals and chemicals products 1.1417 1.2050 Key Sector
79 BRA Basic metals and fabricated metal 1.0736 1.1132 Key Sector
119 CHN Textiles, leather and footwear 1.3286 1.1093 Key Sector
120 CHN Pulp, paper, printing and publishing 1.2516 1.0303 Key Sector
122 CHN Chemicals and chemicals products 1.3459 1.9790 Key Sector
123 CHN Rubber and plastics 1.4161 1.0886 Key Sector
125 CHN Basic metals and fabricated metal 1.4585 2.4764 Key Sector
126 CHN Machinery 1.3794 1.2067 Key Sector
127 CHN Electrical and optical equipment 1.4747 1.6025 Key Sector
129 CHN Manufacturing, recycling 1.2086 1.0453 Key Sector
130 CHN Electricity, gas and water supply 1.2553 1.7450 Key Sector
132 CHN Wholesale and retail trade 1.0484 2.1414 Key Sector
134 CHN Transport and storage 1.0038 1.5373 Key Sector
145 DEU Chemicals and chemicals products 1.0474 2.2578 Key Sector
146 DEU Rubber and plastics 1.0202 1.0244 Key Sector
148 DEU Basic metals and fabricated metal 1.0454 2.4121 Key Sector
149 DEU Machinery 1.0253 1.3351 Key Sector
150 DEU Electrical and optical equipment 1.0221 1.6899 Key Sector
151 DEU Transport equipment 1.2205 1.5320 Key Sector
157 DEU Transport and storage 1.0201 1.9335 Key Sector
180 DNK Transport and storage 1.1129 1.1100 Key Sector
191 ESP Chemicals and chemicals products 1.1491 1.1413 Key Sector
194 ESP Basic metals and fabricated metal 1.1418 1.6170 Key Sector
203 ESP Transport and storage 1.0117 1.4705 Key Sector
212 FIN Pulp, paper, printing and publishing 1.0648 1.2643 Key Sector
217 FIN Basic metals and fabricated metal 1.1967 1.1400 Key Sector
219 FIN Electrical and optical equipment 1.1325 1.0286 Key Sector
235 FRA Pulp, paper, printing and publishing 1.0948 1.0433 Key Sector
237 FRA Chemicals and chemicals products 1.1763 1.4539 Key Sector
240 FRA Basic metals and fabricated metal 1.0929 1.6608 Key Sector
242 FRA Electrical and optical equipment 1.1437 1.1142 Key Sector
243 FRA Transport equipment 1.3170 1.0230 Key Sector
260 GBR Chemicals and chemicals products 1.0925 1.4232 Key Sector
263 GBR Basic metals and fabricated metal 1.0614 1.4967 Key Sector
265 GBR Electrical and optical equipment 1.1180 1.1481 Key Sector
268 GBR Electricity, gas and water supply 1.1078 1.2209 Key Sector
269 GBR Construction 1.0719 1.0766 Key Sector
274 GBR Financial intermediation 1.0443 1.7971 Key Sector
302 HKG Food, Beverages and Tobacco 1.1664 1.6876 Key Sector
328 IND Coke, refined petroleum and nuclear fuel 1.0923 1.0242 Key Sector
329 IND Chemicals and chemicals products 1.2440 1.2686 Key Sector
332 IND Basic metals and fabricated metal 1.2139 1.4188 Key Sector
337 IND Electricity, gas and water supply 1.0560 1.3664 Key Sector
341 IND Transport and storage 1.0298 1.3372 Key Sector
364 IRL Transport and storage 1.1478 1.0157 Key Sector
372 ITA Textiles, leather and footwear 1.2000 1.0926 Key Sector
375 ITA Chemicals and chemicals products 1.2347 1.2772 Key Sector
378 ITA Basic metals and fabricated metal 1.1569 1.8881 Key Sector
379 ITA Machinery 1.1753 1.0061 Key Sector
380 ITA Electrical and optical equipment 1.1478 1.0112 Key Sector
383 ITA Electricity, gas and water supply 1.0292 1.0177 Key Sector
387 ITA Transport and storage 1.0400 1.7155 Key Sector
398 JPN Chemicals and chemicals products 1.0680 2.0598 Key Sector
399 JPN Rubber and plastics 1.0769 1.0362 Key Sector
401 JPN Basic metals and fabricated metal 1.0922 2.2050 Key Sector
403 JPN Electrical and optical equipment 1.0510 1.9391 Key Sector
404 JPN Transport equipment 1.2852 1.3949 Key Sector
419 KOR Pulp, paper, printing and publishing 1.2710 1.0932 Key Sector
420 KOR Coke, refined petroleum and nuclear fuel 1.1157 1.2112 Key Sector
421 KOR Chemicals and chemicals products 1.3239 1.8206 Key Sector
424 KOR Basic metals and fabricated metal 1.3695 1.7999 Key Sector
426 KOR Electrical and optical equipment 1.2945 1.3842 Key Sector
433 KOR Transport and storage 1.0373 1.1349 Key Sector
467 NDL Chemicals and chemicals products 1.1497 1.1829 Key Sector
498 PRT Electricity, gas and water supply 1.0681 1.1445 Key Sector
511 SWE Pulp, paper, printing and publishing 1.0473 1.0424 Key Sector
516 SWE Basic metals and fabricated metal 1.0984 1.1055 Key Sector
525 SWE Transport and storage 1.1136 1.9434 Key Sector
536 TWN Chemicals and chemicals products 1.2469 1.2143 Key Sector
539 TWN Basic metals and fabricated metal 1.2025 1.3962 Key Sector
541 TWN Electrical and optical equipment 1.2224 1.1953 Key Sector
553 USA Agriculture, Hunting, Forestry and Fishing 1.0012 1.2661 Key Sector
556 USA Textiles, leather and footwear 1.0948 1.0618 Key Sector
560 USA Rubber and plastics 1.0316 1.0854 Key Sector
563 USA Machinery 1.0216 1.3285 Key Sector
565 USA Transport equipment 1.1251 1.7447 Key Sector
578 ROW Food, Beverages and Tobacco 1.0529 1.5380 Key Sector
579 ROW Textiles, leather and footwear 1.1340 1.1697 Key Sector
580 ROW Pulp, paper, printing and publishing 1.0485 1.2715 Key Sector
581 ROW Coke, refined petroleum and nuclear fuel 1.1331 2.2760 Key Sector
582 ROW Chemicals and chemicals products 1.0845 2.6993 Key Sector
583 ROW Rubber and plastics 1.1301 1.1152 Key Sector
584 ROW Other non-metallic mineral 1.0302 1.0963 Key Sector
585 ROW Basic metals and fabricated metal 1.1366 3.2848 Key Sector
587 ROW Electrical and optical equipment 1.1871 1.6445 Key Sector
588 ROW Transport equipment 1.2550 1.0977 Key Sector
589 ROW Manufacturing, recycling 1.0453 1.0622 Key Sector

Regional Interdependence Analysis

When a region increases its final demand, it doesn’t just buy from local suppliers. It imports intermediate inputs from other regions, which in turn require inputs from their suppliers, creating a chain reaction.

Regional interdependence measures help understand cross-country multiplier linkages. The get_regional_interdependence() method computes several key indicators (Miller & Blair, 2009, section 6.3.2):

interdependence <- world_2000$get_regional_interdependence()
knitr::kable(interdependence, digits = 4) |> head()
#> [1] "|country | self_reliance| total_spillover_out| total_spillover_in| spillover_balance| spillover_export_share|"
#> [2] "|:-------|-------------:|-------------------:|------------------:|-----------------:|----------------------:|"
#> [3] "|AUS     |        1.9685|              7.2876|             3.8940|            3.3937|                 0.6518|"
#> [4] "|AUT     |        1.6145|             11.2717|             2.4211|            8.8505|                 0.8232|"
#> [5] "|BEL     |        1.6499|             17.6001|             6.6666|           10.9334|                 0.7253|"
#> [6] "|BRA     |        1.9189|              5.3547|             2.4314|            2.9233|                 0.6877|"

Now let’s plot the results and make sense of it. China has the greater self-reliance index, meaning that, on average, shocks in that economy causes higher domestic impact.

ggplot(interdependence, aes(x = reorder(country, self_reliance), y = self_reliance)) +
  geom_bar(stat = "identity") +
  coord_flip() +
  labs(
    title = "Self-reliance index by country",
    x = "Country",
    y = "Average intra-regional multiplier"
  ) +
  theme_minimal()

Concerning spillover to other countries, Hong Kong has the greatest value, meaning demand increases in that country triggers demand abroad. It is expected that a small city-state isn’t able to fulfill demand industry-wide, thus stimulating suppliers abroad.

ggplot(interdependence, aes(x = reorder(country, total_spillover_out), y = total_spillover_out)) +
  geom_bar(stat = "identity") +
  coord_flip() +
  labs(
    title = "Total spillover to other countries by country",
    x = "Country",
    y = "Sum of induced multipliers abroad"
  ) +
  theme_minimal()

On the other hand, USA absorbs the most spillover-in effects. It means that USA benefits the most from demand shocks in other countries.

interdependence |>
  subset(!country %in% "ROW") |>
  ggplot(aes(x = reorder(country, total_spillover_in), y = total_spillover_in)) +
  geom_bar(stat = "identity") +
  coord_flip() +
  labs(
    title = "Total spillover absorbed by country",
    x = "Country",
    y = "Sum of induced multipliers at home"
  ) +
  theme_minimal()

The Spillover Balance measures whether a specific region or sector is a net “giver” or a net “receiver” of economic stimulus across boundaries. It is calculated as the difference between the economic activity a region exports via spillovers and what it pulls in from others.

If balance is positive, the region is a net contributor. This means when your region spends money, it leaks a massive amount of demand out to other regions, but when they spend money, your industries don’t catch much of it.

A negative balance indicates the country is a net beneficiary, meaning your economy is highly capable of capturing the spillover effects of external spending. When other regions increase production, your local industries see a massive surge in demand for your intermediate inputs.

Results demonstrates that highly industrialized countries has negative balance, meaning they are able to absorb more spillover effects than leak it.

interdependence |>
  subset(!country %in% "ROW") |>
  ggplot(aes(x = reorder(country, spillover_balance), y = spillover_balance)) +
  geom_bar(stat = "identity") +
  coord_flip() +
  labs(
    title = "Spillover balance by country",
    x = "Country",
    y = "Spillover out - Spillover in"
  ) +
  theme_minimal()

The Spillover Export Share measures the degree of external leakages relative to the total economic impact. It evaluates how much of the total economic multiplier generated by a region’s initial spending escapes to benefit foreign economies rather than staying local.

A higher share (e.g., 60%) indicates that a massive portion of the economic stimulus leaves the region. This typically happens in highly specialized, smaller, or open economies that rely heavily on importing specialized components, parts, or raw materials to complete production.

A lower share (e.g., 10%) means that the vast majority of the multiplier effect stays locked inside the domestic economy. This is characteristic of large, highly diversified economies with mature internal supply chains that can supply almost all of their own intermediate needs.

ggplot(interdependence, aes(x = reorder(country, spillover_export_share), y = spillover_export_share)) +
  geom_bar(stat = "identity") +
  coord_flip() +
  labs(
    title = "Spillover export share by country",
    x = "Country",
    y = "total_spillover_out / (out + in)"
  ) +
  theme_minimal()

Bilateral Trade Analysis

The miom class allows extraction of bilateral trade flows between any two countries using the get_bilateral_trade() method:

# Get bilateral trade flows
trade_flow1 <- world_2000$get_bilateral_trade("BRA", "USA")
knitr::kable(trade_flow1[1:10, 1:5],
  digits = 2,
  caption = paste("Trade flows from", "BRA", "to", "USA", "(first 10 buying sectors, first 5 supplying sectors)")
)
Trade flows from BRA to USA (first 10 buying sectors, first 5 supplying sectors)
BRA_Agriculture, Hunting, Forestry and Fishing BRA_Mining and Quarrying BRA_Food, Beverages and Tobacco BRA_Textiles, leather and footwear BRA_Pulp, paper, printing and publishing
USA_Agriculture, Hunting, Forestry and Fishing 18.23 0.02 92.85 1.80 2.80
USA_Mining and Quarrying 5.19 13.05 0.47 0.20 0.84
USA_Food, Beverages and Tobacco 8.45 0.06 29.15 1.99 0.19
USA_Textiles, leather and footwear 1.56 1.47 2.02 131.26 1.56
USA_Pulp, paper, printing and publishing 0.44 2.22 15.41 8.80 111.75
USA_Coke, refined petroleum and nuclear fuel 10.27 5.17 6.30 2.43 1.53
USA_Chemicals and chemicals products 467.80 31.80 79.89 138.63 129.08
USA_Rubber and plastics 3.79 3.62 20.65 5.88 9.43
USA_Other non-metallic mineral 0.58 1.00 2.26 0.21 0.24
USA_Basic metals and fabricated metal 2.62 11.05 13.40 1.16 4.23

trade_flow2 <- world_2000$get_bilateral_trade("USA", "BRA")
knitr::kable(trade_flow2[1:10, 1:5],
  digits = 2,
  caption = paste("Trade flows from", "USA", "to", "BRA", "(first 10 buying sectors, first 5 supplying sectors)")
)
Trade flows from USA to BRA (first 10 buying sectors, first 5 supplying sectors)
USA_Agriculture, Hunting, Forestry and Fishing USA_Mining and Quarrying USA_Food, Beverages and Tobacco USA_Textiles, leather and footwear USA_Pulp, paper, printing and publishing
BRA_Agriculture, Hunting, Forestry and Fishing 91.70 0.08 211.27 4.86 6.39
BRA_Mining and Quarrying 1.24 20.45 0.88 0.15 1.12
BRA_Food, Beverages and Tobacco 22.36 0.12 145.10 2.35 1.80
BRA_Textiles, leather and footwear 1.94 0.19 1.02 111.85 9.46
BRA_Pulp, paper, printing and publishing 1.64 1.09 37.91 4.97 185.86
BRA_Coke, refined petroleum and nuclear fuel 36.13 19.79 8.43 3.78 15.55
BRA_Chemicals and chemicals products 44.36 12.97 18.40 52.28 48.02
BRA_Rubber and plastics 1.99 1.11 15.42 1.57 5.05
BRA_Other non-metallic mineral 0.36 3.31 12.77 2.27 1.04
BRA_Basic metals and fabricated metal 7.96 31.28 87.30 11.21 58.69

These matrices show the intermediate goods flows from the origin country (columns) to the destination country (rows) by sector. The values represent the monetary flows of intermediate inputs used in production.

Extracting Country-Specific Input-Output Tables

Lastly, one can obtain single-region iom objects from the multi-regional system. The extract_country() method allows you to extract domestic input-output tables for individual countries from the multi-regional system:

# Extract domestic economy for deutschland in the dataset
deutsch_iom <- world_2000$extract_country("DEU")

The extracted iom object contains only the domestic transactions for the specified country:

# Show a subset of the domestic intermediate transactions
knitr::kable(deutsch_iom$intermediate_transactions[1:8, 1:8],
  digits = 0,
  caption = paste("Deutschland Domestic Intermediate Transactions (first 8x8 sectors, millions USD)")
)
Deutschland Domestic Intermediate Transactions (first 8x8 sectors, millions USD)
DEU_Agriculture, Hunting, Forestry and Fishing DEU_Mining and Quarrying DEU_Food, Beverages and Tobacco DEU_Textiles, leather and footwear DEU_Pulp, paper, printing and publishing DEU_Coke, refined petroleum and nuclear fuel DEU_Chemicals and chemicals products DEU_Rubber and plastics
DEU_Agriculture, Hunting, Forestry and Fishing 1667 18 20853 247 285 10 158 160
DEU_Mining and Quarrying 37 68 52 9 42 1201 145 12
DEU_Food, Beverages and Tobacco 2655 21 9895 156 89 74 926 105
DEU_Textiles, leather and footwear 5 0 4 279 4 1 16 22
DEU_Pulp, paper, printing and publishing 74 74 1757 393 12433 117 1426 392
DEU_Coke, refined petroleum and nuclear fuel 365 31 214 62 96 799 925 100
DEU_Chemicals and chemicals products 806 68 544 871 847 292 6702 2698
DEU_Rubber and plastics 147 56 874 190 470 62 1012 2122

# Show total production
knitr::kable(t(deutsch_iom$total_production[1, 1:12]),
  digits = 0,
  caption = paste("Deutschland Total Production (first 12 sectors, millions USD)")
)
Deutschland Total Production (first 12 sectors, millions USD)
DEU_Agriculture, Hunting, Forestry and Fishing DEU_Mining and Quarrying DEU_Food, Beverages and Tobacco DEU_Textiles, leather and footwear DEU_Pulp, paper, printing and publishing DEU_Coke, refined petroleum and nuclear fuel DEU_Chemicals and chemicals products DEU_Rubber and plastics DEU_Other non-metallic mineral DEU_Basic metals and fabricated metal DEU_Machinery DEU_Electrical and optical equipment
44318 11871 117494 27820 77379 35496 110737 46673 35857 135138 142012 154388

You can then perform standard input-output analysis on the domestic economy:

deutsch_iom$compute_tech_coeff()$compute_leontief_inverse()$compute_multiplier_output()

knitr::kable(head(deutsch_iom$multiplier_output, 12),
  digits = 4,
  caption = paste("Deutschland Domestic Output Multipliers (first 12 sectors)")
)
Deutschland Domestic Output Multipliers (first 12 sectors)
sector multiplier_simple multiplier_direct multiplier_indirect
DEU_Agriculture, Hunting, Forestry and Fishing 1.6908 0.4146 1.2762
DEU_Mining and Quarrying 1.7559 0.4657 1.2902
DEU_Food, Beverages and Tobacco 2.0067 0.5981 1.4086
DEU_Textiles, leather and footwear 1.6419 0.3961 1.2458
DEU_Pulp, paper, printing and publishing 1.7893 0.4791 1.3102
DEU_Coke, refined petroleum and nuclear fuel 1.7602 0.4592 1.3010
DEU_Chemicals and chemicals products 1.7729 0.4766 1.2963
DEU_Rubber and plastics 1.7117 0.4319 1.2798
DEU_Other non-metallic mineral 1.7336 0.4434 1.2902
DEU_Basic metals and fabricated metal 1.7580 0.4514 1.3065
DEU_Machinery 1.7582 0.4518 1.3064
DEU_Electrical and optical equipment 1.7421 0.4492 1.2928

REFERENCES

Miller, Ronald E., and Peter D. Blair. Input-Output Analysis: Foundations and Extensions. 2nd ed. Cambridge University Press, 2009. https://doi.org/10.1017/CBO9780511626982.