Last Updated July 3, 2026
Economic input-output models explain how sectors, industries, institutions, and supply chains depend on one another through flows of goods, services, money, energy, emissions, labor, and intermediate demand. In linear algebra, input-output modeling turns economic interdependence into matrices that show how output from one sector becomes input to another and how changes in final demand can ripple through a connected production system.
This article opens Part VII of the Linear Algebra for Systems Modeling series by connecting matrix representation, technical coefficients, interindustry transactions, final demand, gross output, Leontief-style systems, production requirements, direct and indirect effects, multipliers, shocks, supply-chain exposure, environmental extensions, data classification, uncertainty, and responsible interpretation.
The central modeling question is not only “How much output is required?” It is “Which sectors depend on which others, how shocks propagate through production relationships, what assumptions make the matrix model valid, and what forms of economic, environmental, or social dependence become visible or hidden?”

Input-output modeling begins with a simple observation: no sector produces in isolation. Agriculture uses energy, transportation, machinery, water, labor, and financial services. Manufacturing uses extracted materials, logistics, utilities, software, business services, and imported components. Health systems depend on pharmaceuticals, buildings, equipment, electricity, waste services, administration, and professional labor. Final demand for one sector therefore creates indirect demand across many others.
Linear algebra provides the natural language for this structure. Sector flows become matrices. Final demand becomes a vector. Technical requirements become coefficients. Total output becomes the solution to a system of equations. Multipliers become matrix-derived summaries of direct and indirect dependence. Environmental extensions attach emissions, energy, land, water, labor, or other indicators to economic activity.
Why Input-Output Models Matter
Input-output models matter because they make economic interdependence visible. A demand increase in one sector does not affect only that sector. It also affects upstream suppliers, energy systems, logistics, materials, services, labor, finance, imports, emissions, and waste streams. Input-output analysis provides a structured way to estimate these linked requirements.
These models are used in economic planning, regional analysis, supply-chain risk, industrial policy, environmental accounting, carbon footprinting, disaster recovery, infrastructure planning, workforce analysis, and sustainability assessment. They help explain why sectoral shocks can propagate through a production system and why apparent local activity often depends on a much wider network of relationships.
| Use case | Input-output contribution | Interpretive caution |
|---|---|---|
| Economic impact analysis | Estimates direct and indirect output requirements. | Multipliers depend on assumptions and table construction. |
| Supply-chain exposure | Shows upstream dependence across sectors. | Sector aggregation can hide firm-level bottlenecks. |
| Environmental accounting | Links production to emissions, energy, water, or material use. | Environmental coefficients depend on boundary definitions. |
| Regional planning | Maps interindustry dependence within a place. | Imports, leakage, and regional specialization matter. |
| Disaster recovery | Estimates production effects from disrupted sectors. | Linear assumptions may miss capacity limits and substitution. |
| Sustainability strategy | Reveals indirect impacts behind final demand. | Responsibility claims require careful allocation rules. |
Input-output models are not forecasts by themselves. They are structured accounting and dependency models that help reason about production relationships.
Intersectoral Transactions
An input-output table records flows between sectors. Each entry describes how much output from one sector is used as input by another sector during a defined period. The table may be national, regional, multiregional, industry-by-industry, product-by-product, or supply-use based.
| Table element | Meaning | Systems interpretation |
|---|---|---|
| Producing sector | Sector supplying output. | Source of goods, services, energy, materials, or value. |
| Using sector | Sector consuming intermediate inputs. | Sector whose production depends on supplied inputs. |
| Intermediate transaction | Flow from one sector to another. | Production interdependence. |
| Final demand | Demand from households, government, investment, exports, or other final users. | External pull on the production system. |
| Total output | Total production by sector. | Scale of sector activity needed to satisfy intermediate and final demand. |
The key distinction is between intermediate demand and final demand. Intermediate demand is demand by producing sectors. Final demand is demand by users outside the intermediate production network.
From Transactions to Matrices
Let \(Z\) be the intersectoral transactions matrix. An entry \(z_{ij}\) records the flow from sector \(i\) to sector \(j\). The column \(j\) shows inputs used by sector \(j\). The row \(i\) shows where output from sector \(i\) goes as intermediate supply.
Z=
\begin{bmatrix}
z_{11} & z_{12} & \cdots & z_{1n}\\
z_{21} & z_{22} & \cdots & z_{2n}\\
\vdots & \vdots & \ddots & \vdots\\
z_{n1} & z_{n2} & \cdots & z_{nn}
\end{bmatrix}
\]
Interpretation: The transactions matrix records sector-to-sector production flows.
Let \(\mathbf{f}\) be final demand and \(\mathbf{x}\) be total output. A basic row-balance relationship is:
\mathbf{x}=Z\mathbf{1}+\mathbf{f}
\]
Interpretation: Total output equals intermediate sales plus final demand when \(Z\mathbf{1}\) sums intermediate sales by producing sector.
| Symbol | Meaning | Typical dimension |
|---|---|---|
| \(Z\) | Intersectoral transactions matrix. | \(n\times n\) |
| \(\mathbf{x}\) | Total output vector. | \(n\times 1\) |
| \(\mathbf{f}\) | Final demand vector. | \(n\times 1\) |
| \(\mathbf{1}\) | Vector of ones. | \(n\times 1\) |
| \(n\) | Number of sectors. | Classification-dependent. |
Matrix notation makes the full production system visible at once rather than as isolated sector accounts.
Technical Coefficients
Technical coefficients describe how much input from sector \(i\) is required per unit of output from sector \(j\). If \(x_j\) is total output of sector \(j\), then:
a_{ij}=\frac{z_{ij}}{x_j}
\]
Interpretation: The coefficient \(a_{ij}\) is the amount of input from sector \(i\) required to produce one unit of output in sector \(j\).
The technical coefficient matrix \(A\) collects these coefficients:
A=
\begin{bmatrix}
a_{11} & a_{12} & \cdots & a_{1n}\\
a_{21} & a_{22} & \cdots & a_{2n}\\
\vdots & \vdots & \ddots & \vdots\\
a_{n1} & a_{n2} & \cdots & a_{nn}
\end{bmatrix}
\]
Interpretation: Each column describes the input recipe required for one unit of sector output.
| Coefficient question | Meaning | Review issue |
|---|---|---|
| What is the numerator? | Intersectoral flow from supplying sector to using sector. | Transaction definition and valuation basis matter. |
| What is the denominator? | Total output of the using sector. | Zero, small, or poorly measured output creates instability. |
| What does a column mean? | Input recipe for a sector. | Assumes stable production technology over the scenario. |
| What does a row mean? | Sector supply into other sectors. | Shows exposure to downstream production systems. |
| What does a high coefficient mean? | Strong direct input dependence. | May reflect price, quantity, aggregation, or classification choices. |
Technical coefficients turn observed transactions into a model of production requirements. This is powerful, but it also introduces strong assumptions about proportionality and technology.
Final Demand and Total Output
Final demand is demand that comes from outside the interindustry production loop. It can include households, government, investment, exports, nonprofit institutions, inventory change, or other final users depending on the accounting framework.
Total output must satisfy both intermediate requirements and final demand:
\mathbf{x}=A\mathbf{x}+\mathbf{f}
\]
Interpretation: Total output is needed both to supply intermediate inputs required by production and to satisfy final demand.
This equation is the core of input-output modeling. The term \(A\mathbf{x}\) represents intermediate production requirements. The vector \(\mathbf{f}\) represents final demand. The vector \(\mathbf{x}\) represents the total output needed to meet both.
| Component | Economic meaning | Systems meaning |
|---|---|---|
| \(A\mathbf{x}\) | Intermediate inputs required by production. | Internal dependency burden. |
| \(\mathbf{f}\) | Final demand outside intermediate production. | External demand driver. |
| \(\mathbf{x}\) | Total output required by sector. | System-wide production response. |
| \(\mathbf{x}-A\mathbf{x}\) | Net output available for final demand. | Output after intermediate requirements. |
The model shows why final demand can require more total production than the final demand vector itself: production requires intermediate inputs.
The Basic Input-Output System
Starting from:
\mathbf{x}=A\mathbf{x}+\mathbf{f}
\]
Interpretation: Total output equals intermediate requirements plus final demand.
Rearranging gives:
(I-A)\mathbf{x}=\mathbf{f}
\]
Interpretation: Net production capacity after intermediate requirements must satisfy final demand.
If \(I-A\) is invertible, the solution is:
\mathbf{x}=(I-A)^{-1}\mathbf{f}
\]
Interpretation: The total output vector is obtained by applying the total requirements matrix to final demand.
The inverse \((I-A)^{-1}\) is often called the Leontief inverse. It captures direct and indirect production requirements across the system.
| Matrix object | Meaning | Modeling role |
|---|---|---|
| \(I\) | Identity matrix. | Represents one unit of sector output. |
| \(A\) | Technical coefficient matrix. | Represents direct input requirements. |
| \(I-A\) | Net requirements matrix. | Moves intermediate requirements to the left side of the system. |
| \((I-A)^{-1}\) | Total requirements matrix. | Captures direct and indirect requirements. |
| \(\mathbf{x}\) | Total output response. | Production needed to satisfy final demand. |
This matrix system is the bridge from economic accounting to linear algebraic systems modeling.
Direct and Indirect Requirements
The total requirements matrix can be interpreted through a series expansion when the system is productive and the expansion converges:
(I-A)^{-1}=I+A+A^2+A^3+\cdots
\]
Interpretation: Total requirements include direct demand, first-round intermediate requirements, second-round requirements, and continuing production rounds.
| Term | Meaning | Input-output interpretation |
|---|---|---|
| \(I\) | Initial final demand. | One unit demanded from a sector. |
| \(A\) | Direct input requirements. | Inputs needed by the directly demanded sector. |
| \(A^2\) | Second-round requirements. | Inputs needed by the suppliers of suppliers. |
| \(A^3\) | Third-round requirements. | Further upstream dependence. |
| \(\cdots\) | Higher-order rounds. | Continuing but typically diminishing requirements. |
This expansion shows how input-output models are also network models. Production effects move through connected sector relationships in repeated rounds.
Multipliers
Multipliers summarize how final demand changes translate into total output, value added, employment, emissions, or other impacts. A simple output multiplier for sector \(j\) can be computed by summing the column of the Leontief inverse associated with that sector:
m_j=\sum_i l_{ij}
\]
Interpretation: The output multiplier \(m_j\) summarizes total output required across all sectors for one unit of final demand in sector \(j\), where \(L=(I-A)^{-1}\).
Multipliers are attractive because they compress system-wide dependence into a single number. But this compression creates interpretive risk. Multipliers depend on sector aggregation, regional boundaries, import assumptions, fixed coefficients, prices, capacity assumptions, and whether induced household effects are included.
| Multiplier type | Measures | Interpretive caution |
|---|---|---|
| Output multiplier | Total output response to final demand. | May overstate effects if capacity or imports change. |
| Employment multiplier | Jobs associated with production response. | Labor productivity and wage assumptions matter. |
| Value-added multiplier | Value added associated with output response. | Accounting definitions and regional leakage matter. |
| Emissions multiplier | Emissions associated with final demand. | Depends on emissions coefficients and production location. |
| Income multiplier | Labor income or household income effects. | Induced effects require additional behavioral assumptions. |
Multipliers are useful summaries, not standalone explanations.
Shock and Scenario Analysis
Input-output models can estimate how changes in final demand affect total output. If final demand changes by \(\Delta\mathbf{f}\), then the total output change is:
\Delta\mathbf{x}=(I-A)^{-1}\Delta\mathbf{f}
\]
Interpretation: A demand shock propagates through direct and indirect production requirements.
Scenario analysis can examine demand increases, sector declines, export changes, disaster impacts, infrastructure disruptions, policy shifts, investment programs, or consumption changes. But the standard input-output system is demand-driven. It does not automatically model price changes, substitution, capacity constraints, inventories, bottlenecks, behavioral response, or time dynamics.
| Scenario type | Input-output use | Limitation |
|---|---|---|
| Demand increase | Estimate production requirements. | Assumes sufficient capacity and fixed coefficients. |
| Sector disruption | Explore dependency exposure. | Standard demand-driven model may not represent supply constraints directly. |
| Export shock | Estimate output linked to external demand. | Trade relationships and imports matter. |
| Green investment | Estimate sectoral production and environmental effects. | Technology coefficients may change over time. |
| Disaster recovery | Map indirect production dependencies. | Time, logistics, substitution, and repair constraints may dominate. |
Scenario results should be framed as structured estimates under assumptions, not as mechanical predictions.
Supply-Chain Exposure
Input-output models reveal supply-chain exposure by showing which sectors depend directly and indirectly on others. The technical coefficient matrix \(A\) shows direct input dependence. The Leontief inverse \(L=(I-A)^{-1}\) shows total requirements.
A sector with a small direct requirement can still have important indirect dependence through upstream chains. Conversely, a sector with large direct purchases may have limited higher-order effects depending on network structure.
| Exposure layer | Matrix object | Meaning |
|---|---|---|
| Direct dependence | \(A\) | Inputs required immediately by each sector. |
| Second-order dependence | \(A^2\) | Inputs required by suppliers. |
| Total dependence | \((I-A)^{-1}\) | Direct and indirect requirements across all rounds. |
| Critical upstream sector | Large total requirement contribution. | Sector whose output supports many downstream activities. |
| Concentration risk | High dependence on few sectors. | Potential vulnerability to bottlenecks or disruptions. |
Input-output tables are usually sector-level rather than firm-level. They are valuable for structural exposure but may not identify specific suppliers, facilities, routes, contracts, or operational bottlenecks.
Environmentally Extended Input-Output Models
Environmentally extended input-output models attach environmental coefficients to sector output. If \(\mathbf{e}\) is a row vector of emissions intensity by sector, then emissions associated with final demand can be estimated as:
\mathbf{g}=\mathbf{e}(I-A)^{-1}\mathbf{f}
\]
Interpretation: Sector emissions intensities are applied to total production requirements associated with final demand.
The same structure can be used for energy, water, land, materials, waste, labor, occupational risk, or other extensions when appropriate coefficients are available.
| Extension | Coefficient type | Use |
|---|---|---|
| Carbon emissions | Emissions per unit of sector output. | Consumption-based carbon footprinting. |
| Energy use | Energy per unit of sector output. | Energy intensity and transition analysis. |
| Water use | Water withdrawal or consumption per output. | Water footprint and scarcity analysis. |
| Material use | Material extraction or throughput per output. | Circular economy and resource analysis. |
| Labor | Employment or hours per output. | Employment requirements and workforce exposure. |
| Waste | Waste generation per output. | Production-linked waste accounting. |
Environmental extensions make hidden indirect impacts visible, but they require careful boundary definitions, sector matching, units, allocation rules, and data provenance.
Data Classification and Aggregation
Input-output models depend heavily on classification systems. Sectors may be defined by industry, commodity, product, region, or institutional accounting category. Aggregation determines what relationships are visible. A highly aggregated table may hide critical dependencies. A very detailed table may introduce sparse data, confidentiality suppression, estimation uncertainty, or computational burden.
| Data design choice | Why it matters | Risk |
|---|---|---|
| Sector classification | Defines rows and columns of the model. | Different classifications change coefficients and multipliers. |
| Aggregation level | Controls detail and interpretability. | Aggregation can hide bottlenecks or mix unlike activities. |
| Regional boundary | Defines domestic, regional, or multiregional scope. | Imports and leakage can be misrepresented. |
| Valuation basis | Determines prices, margins, taxes, and purchasers’ versus basic prices. | Flows may not be comparable without adjustment. |
| Time period | Defines when relationships are measured. | Technologies and supply chains change over time. |
| Data source | Determines reliability and provenance. | Estimated or suppressed cells add uncertainty. |
Before interpreting multipliers or sector dependencies, the table itself should be understood as a constructed representation.
Assumptions and Linear Limits
Input-output models are linear models. They commonly assume fixed technical coefficients, proportional production requirements, no price response, no substitution, no supply constraints, and stable production technology over the scenario horizon. These assumptions make the system mathematically tractable, but they also limit interpretation.
| Assumption | Model benefit | Limitation |
|---|---|---|
| Fixed coefficients | Simple linear system. | Does not capture substitution or technology change. |
| Proportional production | Output requirements scale linearly with demand. | May fail under capacity limits or nonlinear production. |
| Demand-driven structure | Clear final-demand scenario analysis. | Supply constraints require additional modeling. |
| No price adjustment | Physical or monetary flows remain stable. | Market response and inflation are excluded. |
| Stable sector relationships | Coefficients can be reused in scenarios. | Supply chains and technology may change. |
| Representative sectors | Aggregation makes national or regional modeling possible. | Firm-level and product-level differences are hidden. |
The value of an input-output model comes from disciplined interpretation of these assumptions, not from pretending they disappear.
Input-Output Models in Systems Modeling
Input-output models are systems models because they represent structured interdependence. They are not only economic tables; they are matrix representations of connected production requirements. Their logic can be extended to infrastructure, energy, emissions, materials, labor, regional planning, public health supply chains, and resilience analysis.
| Systems modeling concept | Input-output counterpart | Interpretive value |
|---|---|---|
| Nodes | Sectors, industries, products, or regions. | Units of system structure. |
| Edges | Intersectoral flows. | Dependencies between units. |
| Weights | Transactions or technical coefficients. | Strength of dependence. |
| State vector | Total output or final demand vector. | System condition or demand driver. |
| Propagation | Leontief inverse or power expansion. | Direct and indirect effects. |
| Externalities | Environmental or social extensions. | Hidden impacts associated with production. |
Input-output modeling is therefore a bridge between linear algebra, economic accounting, network reasoning, sustainability analysis, and policy interpretation.
Mathematical Deepening
This section adds a more formal layer. Economic input-output models connect matrix construction, coefficient normalization, linear systems, matrix inversion, spectral productivity conditions, multiplier analysis, perturbation analysis, sensitivity, uncertainty, and extension vectors.
Matrix Structure Review
Transactions Matrix
The transactions matrix records observed intersectoral flows between producing and using sectors.
Technical Coefficient Matrix
The coefficient matrix normalizes flows by sector output to estimate direct input requirements.
Final Demand Vector
The final demand vector represents demand outside the intermediate production network.
Total Output Vector
The total output vector gives production levels needed to satisfy intermediate and final demand.
Requirements Review
Direct Requirements
The matrix \(A\) represents immediate input needs per unit of sector output.
Indirect Requirements
Powers of \(A\) represent upstream rounds of production dependence.
Total Requirements
The Leontief inverse \((I-A)^{-1}\) summarizes direct and indirect requirements.
Multiplier Structure
Column sums or extension-weighted sums summarize output, employment, emissions, or value-added effects.
Diagnostic Review
Invertibility
The matrix \(I-A\) must be invertible or solvable for the standard system.
Conditioning
Poor conditioning can make output estimates sensitive to coefficient or demand error.
Productivity
The system should be reviewed to ensure coefficients represent feasible production requirements.
Sensitivity
Demand shocks, coefficient uncertainty, and aggregation choices should be tested.
Governance Review
Data Provenance
Input-output results depend on the source, year, sector definitions, and accounting framework.
Boundary Choice
Regional, national, and multiregional boundaries shape imports, leakage, and responsibility claims.
Scenario Assumptions
Final demand changes should be interpreted under fixed-coefficient and capacity assumptions.
Responsible Interpretation
Multipliers and total requirements are model-derived estimates, not automatic causal proof.
Examples from Systems Modeling
Economic input-output models apply wherever production systems are connected through intermediate requirements, final demand, and indirect effects.
Clean Energy Investment
A final demand increase for clean-energy infrastructure can be translated into output requirements across construction, equipment, metals, transport, utilities, and services.
Supply-Chain Risk Review
Total requirements can show which upstream sectors support many downstream activities and where sector-level exposure may be concentrated.
Regional Economic Planning
Regional input-output models can estimate how local final demand supports local production while highlighting imports and leakage.
Carbon Footprint Analysis
Environmental extensions can connect consumption demand to direct and indirect emissions across supply chains.
Disaster Recovery Assessment
Sector disruption scenarios can reveal indirect production dependencies that matter for recovery planning.
Public Health Supply Systems
Health-sector demand can be linked to pharmaceuticals, equipment, logistics, energy, waste services, and administrative support.
Across these examples, input-output analysis clarifies interdependence while requiring careful treatment of assumptions, boundaries, and data.
Computation and Reproducible Workflows
Computational workflows for input-output modeling should document the sector list, transactions matrix, total output vector, final demand vector, technical coefficient method, zero-output handling, price basis, accounting year, regional boundary, matrix invertibility, condition number, Leontief inverse, multipliers, shock vector, environmental coefficients, sensitivity tests, and interpretation warnings.
The companion repository treats input-output modeling as an auditable systems workflow. Python, R, Julia, SQL, Haskell, C, C++, Fortran, Rust, Go, notebooks, schemas, generated outputs, Canvas artifacts, advanced reports, and calculators each support a different layer of reproducible input-output diagnostics.
For this article, the computational examples focus on technical coefficient construction, Leontief-style output solution, multipliers, demand-shock response, emissions extension, condition diagnostics, governance tables, and interpretation warnings.
Python Workflow: Input-Output Audit
The Python workflow below computes an input-output audit for a small synthetic sector system. It builds a technical coefficient matrix, solves the output system, computes multipliers, applies a demand shock, adds an emissions extension, and records governance warnings.
from __future__ import annotations
from dataclasses import asdict, dataclass
from pathlib import Path
import csv
import json
import numpy as np
@dataclass(frozen=True)
class InputOutputAudit:
model_name: str
sectors: int
method: str
coefficient_basis: str
condition_number: float
maximum_output_multiplier: float
highest_multiplier_sector: str
total_baseline_output: float
total_shock_output_change: float
total_emissions_for_final_demand: float
assumption_warning: str
interpretation_warning: str
def build_system() -> tuple[list[str], np.ndarray, np.ndarray, np.ndarray, np.ndarray]:
sectors = ["energy", "manufacturing", "transport", "services"]
# z_ij: output from sector i used by sector j
transactions = np.array(
[
[8.0, 18.0, 10.0, 7.0],
[4.0, 12.0, 8.0, 11.0],
[3.0, 9.0, 6.0, 8.0],
[5.0, 14.0, 7.0, 16.0],
],
dtype=float,
)
total_output = np.array([80.0, 120.0, 90.0, 140.0], dtype=float)
final_demand = np.array([37.0, 67.0, 59.0, 98.0], dtype=float)
emissions_intensity = np.array([0.72, 0.45, 0.60, 0.18], dtype=float)
return sectors, transactions, total_output, final_demand, emissions_intensity
def technical_coefficients(transactions: np.ndarray, total_output: np.ndarray) -> np.ndarray:
if np.any(total_output <= 0):
raise ValueError("Total output must be positive for technical coefficient construction.")
return transactions / total_output.reshape(1, -1)
def input_output_audit() -> tuple[InputOutputAudit, np.ndarray, np.ndarray, np.ndarray]:
sectors, transactions, total_output, final_demand, emissions_intensity = build_system()
A = technical_coefficients(transactions, total_output)
I = np.eye(len(sectors))
net_requirements = I - A
condition_number = float(np.linalg.cond(net_requirements))
leontief_inverse = np.linalg.inv(net_requirements)
solved_output = leontief_inverse @ final_demand
output_multipliers = leontief_inverse.sum(axis=0)
demand_shock = np.array([0.0, 10.0, 0.0, 15.0], dtype=float)
output_change = leontief_inverse @ demand_shock
total_emissions = float(emissions_intensity @ solved_output)
highest_index = int(np.argmax(output_multipliers))
audit = InputOutputAudit(
model_name="synthetic_economic_input_output_audit",
sectors=len(sectors),
method="demand_driven_leontief_input_output_system",
coefficient_basis="sector_input_per_unit_output",
condition_number=round(condition_number, 12),
maximum_output_multiplier=round(float(output_multipliers[highest_index]), 12),
highest_multiplier_sector=sectors[highest_index],
total_baseline_output=round(float(solved_output.sum()), 12),
total_shock_output_change=round(float(output_change.sum()), 12),
total_emissions_for_final_demand=round(total_emissions, 12),
assumption_warning=(
"The model assumes fixed technical coefficients, proportional production, no price response, "
"no substitution, and no binding capacity constraints for the scenario."
),
interpretation_warning=(
"Input-output multipliers are model-derived dependency estimates, not automatic causal proof. "
"Sector aggregation, boundary choices, imports, data year, and coefficient uncertainty should be reviewed."
),
)
return audit, A, leontief_inverse, output_change
def write_outputs(output_dir: Path) -> None:
(output_dir / "tables").mkdir(parents=True, exist_ok=True)
(output_dir / "json").mkdir(parents=True, exist_ok=True)
sectors, transactions, total_output, final_demand, emissions_intensity = build_system()
audit, A, leontief_inverse, output_change = input_output_audit()
row = asdict(audit)
with (output_dir / "tables" / "input_output_audit.csv").open(
"w", newline="", encoding="utf-8"
) as handle:
writer = csv.DictWriter(handle, fieldnames=list(row.keys()))
writer.writeheader()
writer.writerow(row)
with (output_dir / "tables" / "technical_coefficients.csv").open(
"w", newline="", encoding="utf-8"
) as handle:
writer = csv.writer(handle)
writer.writerow(["supplying_sector"] + sectors)
for sector, values in zip(sectors, A):
writer.writerow([sector] + [round(float(v), 12) for v in values])
with (output_dir / "tables" / "leontief_inverse.csv").open(
"w", newline="", encoding="utf-8"
) as handle:
writer = csv.writer(handle)
writer.writerow(["supplying_sector"] + sectors)
for sector, values in zip(sectors, leontief_inverse):
writer.writerow([sector] + [round(float(v), 12) for v in values])
with (output_dir / "tables" / "shock_output_change.csv").open(
"w", newline="", encoding="utf-8"
) as handle:
writer = csv.DictWriter(handle, fieldnames=["sector", "output_change"])
writer.writeheader()
for sector, value in zip(sectors, output_change):
writer.writerow({"sector": sector, "output_change": round(float(value), 12)})
(output_dir / "json" / "input_output_audit.json").write_text(
json.dumps(row, indent=2, sort_keys=True),
encoding="utf-8",
)
if __name__ == "__main__":
write_outputs(Path("outputs"))
print("Economic input-output audit complete.")
This workflow keeps coefficients, matrix diagnostics, multipliers, shock response, environmental extension, and warnings together.
R Workflow: Sector Dependency Diagnostics
R can support input-output diagnostics using matrix operations, coefficient construction, Leontief inverse calculation, output multipliers, demand shocks, and environmental extensions.
sectors <- c("energy", "manufacturing", "transport", "services")
transactions <- matrix(
c(
8, 18, 10, 7,
4, 12, 8, 11,
3, 9, 6, 8,
5, 14, 7, 16
),
nrow = 4,
byrow = TRUE
)
rownames(transactions) <- sectors
colnames(transactions) <- sectors
total_output <- c(80, 120, 90, 140)
final_demand <- c(37, 67, 59, 98)
emissions_intensity <- c(0.72, 0.45, 0.60, 0.18)
A <- sweep(transactions, 2, total_output, FUN = "/")
I <- diag(length(sectors))
net_requirements <- I - A
leontief_inverse <- solve(net_requirements)
solved_output <- leontief_inverse %*% final_demand
output_multipliers <- colSums(leontief_inverse)
demand_shock <- c(0, 10, 0, 15)
output_change <- leontief_inverse %*% demand_shock
total_emissions <- as.numeric(emissions_intensity %*% solved_output)
audit_record <- data.frame(
model_name = "synthetic_economic_input_output_audit",
sectors = length(sectors),
method = "demand_driven_leontief_input_output_system",
coefficient_basis = "sector_input_per_unit_output",
condition_number = kappa(net_requirements),
maximum_output_multiplier = max(output_multipliers),
highest_multiplier_sector = sectors[which.max(output_multipliers)],
total_baseline_output = sum(solved_output),
total_shock_output_change = sum(output_change),
total_emissions_for_final_demand = total_emissions,
assumption_warning = paste(
"The model assumes fixed technical coefficients, proportional production, no price response,",
"no substitution, and no binding capacity constraints."
),
interpretation_warning = paste(
"Input-output multipliers are model-derived dependency estimates, not automatic causal proof."
)
)
dir.create("outputs/tables", recursive = TRUE, showWarnings = FALSE)
write.csv(audit_record, "outputs/tables/r_input_output_audit.csv", row.names = FALSE)
write.csv(A, "outputs/tables/r_technical_coefficients.csv")
write.csv(leontief_inverse, "outputs/tables/r_leontief_inverse.csv")
write.csv(data.frame(sector = sectors, output_change = as.numeric(output_change)),
"outputs/tables/r_shock_output_change.csv",
row.names = FALSE)
print(audit_record)
This R workflow keeps sector coefficients, output multipliers, shock response, emissions extension, and interpretation warnings auditable.
Haskell Workflow: Typed Input-Output Records
Haskell can represent input-output audit output as typed records, keeping method, coefficient basis, multipliers, emissions extension, and warnings attached to the result.
module Main where
data InputOutputAudit = InputOutputAudit
{ modelName :: String
, sectors :: Int
, method :: String
, coefficientBasis :: String
, conditionNumber :: Double
, maximumOutputMultiplier :: Double
, highestMultiplierSector :: String
, totalBaselineOutput :: Double
, totalShockOutputChange :: Double
, totalEmissionsForFinalDemand :: Double
, assumptionWarning :: String
, interpretationWarning :: String
} deriving (Show)
buildAudit :: InputOutputAudit
buildAudit =
InputOutputAudit
"synthetic_economic_input_output_audit"
4
"demand_driven_leontief_input_output_system"
"sector_input_per_unit_output"
2.41
1.47
"manufacturing"
319.8
36.2
150.6
"The model assumes fixed technical coefficients, proportional production, no price response, no substitution, and no binding capacity constraints."
"Input-output multipliers are model-derived dependency estimates, not automatic causal proof."
main :: IO ()
main =
print buildAudit
The typed record prevents multiplier claims from being separated from the assumptions that make them meaningful.
SQL Workflow: Input-Output Governance Registry
SQL can document input-output assumptions when economic dependency models support planning, reporting, sustainability accounting, regional analysis, or policy scenarios.
CREATE TABLE input_output_governance_registry (
assumption_key TEXT PRIMARY KEY,
assumption_name TEXT NOT NULL,
mathematical_role TEXT NOT NULL,
systems_modeling_role TEXT NOT NULL,
review_warning TEXT NOT NULL
);
INSERT INTO input_output_governance_registry VALUES
(
'sector_classification',
'Sector classification',
'Defines rows and columns of the input-output system.',
'Determines which production relationships are visible.',
'Aggregation can hide critical dependencies, bottlenecks, or heterogeneous activities.'
);
INSERT INTO input_output_governance_registry VALUES
(
'transactions_matrix',
'Transactions matrix',
'Records intersectoral flows from supplying sectors to using sectors.',
'Defines the empirical structure of production interdependence.',
'Transaction values depend on data source, accounting framework, year, valuation basis, and boundary.'
);
INSERT INTO input_output_governance_registry VALUES
(
'technical_coefficients',
'Technical coefficients',
'Normalize intersectoral flows by sector output.',
'Define direct input requirements per unit of output.',
'Coefficients assume stable production recipes over the scenario.'
);
INSERT INTO input_output_governance_registry VALUES
(
'final_demand',
'Final demand',
'Defines the exogenous demand vector applied to the production system.',
'Drives total output requirements through direct and indirect effects.',
'Scenario results depend strongly on demand definition and boundary.'
);
INSERT INTO input_output_governance_registry VALUES
(
'leontief_inverse',
'Leontief inverse',
'Solves total requirements through the matrix inverse of net requirements.',
'Captures direct and indirect production requirements.',
'Invertibility, conditioning, and productivity assumptions should be reviewed.'
);
INSERT INTO input_output_governance_registry VALUES
(
'multiplier_interpretation',
'Multiplier interpretation',
'Summarizes total requirements or extensions per unit of final demand.',
'Supports compact reporting of system dependence.',
'Multipliers are estimates under assumptions, not automatic causal proof.'
);
INSERT INTO input_output_governance_registry VALUES
(
'environmental_extension',
'Environmental extension',
'Applies emissions, energy, water, material, labor, or other coefficients to output requirements.',
'Connects final demand to indirect environmental or social impacts.',
'Extension coefficients require unit, boundary, allocation, and provenance review.'
);
INSERT INTO input_output_governance_registry VALUES
(
'responsible_use',
'Responsible use',
'Defines how assumptions, uncertainty, sensitivity, and limitations are documented.',
'Prevents sector dependency estimates from being overstated.',
'Input-output models should support structured interpretation, not replace domain judgment.'
);
SELECT
assumption_name,
mathematical_role,
systems_modeling_role,
review_warning
FROM input_output_governance_registry
ORDER BY assumption_key;
This registry keeps input-output workflows tied to sector definitions, transactions, coefficients, final demand, the Leontief inverse, multipliers, environmental extensions, and responsible interpretation.
GitHub Repository
The companion repository for this article is designed as a reproducible mathematical-modeling workspace. It supports input-output audits, technical coefficient construction, Leontief-style output solutions, multiplier calculations, demand-shock scenarios, environmental extensions, condition diagnostics, SQL governance tables, generated outputs, advanced mathematical audit reports, and reusable calculator scripts.
Complete Code Repository
Companion article folder with Python, R, Julia, SQL, Haskell, C, C++, Fortran, Rust, Go, notebooks, documentation, synthetic teaching data, generated outputs, schemas, Canvas-ready workflow artifacts, and reusable calculator scripts for economic input-output models, intersectoral transactions, technical coefficients, final demand, total output, Leontief-style systems, multipliers, demand shocks, supply-chain exposure, environmental extensions, matrix conditioning, sensitivity testing, input-output governance, and responsible systems modeling.
Interpretive Limits and Responsible Use
Economic input-output models are powerful because they make interdependence visible. They can show how final demand depends on intermediate production, how sectors rely on one another, how indirect effects accumulate, how shocks propagate through production relationships, and how environmental or social impacts attach to supply chains. Their limits arise because they are linear accounting-based models, not complete representations of economic behavior.
A technical coefficient is not a permanent law of production. A multiplier is not automatic causal proof. A sector is not a firm. A national table is not a local supply chain. A demand-driven model is not a full supply-constrained disaster model. An environmental extension is not a complete responsibility framework. A large multiplier may reflect aggregation, price structure, import treatment, or accounting design as much as physical dependence.
Responsible use requires documenting sector classification, table year, geographic boundary, valuation basis, data source, imports, coefficient construction, final demand scenario, invertibility, conditioning, productivity assumptions, multiplier type, environmental coefficients, sensitivity tests, uncertainty, and interpretation limits. Input-output models should clarify economic structure without overstating precision, causality, or policy certainty.
Related Articles
- What Is Linear Algebra for Systems Modeling?
- Compression, Noise, and Informational Tradeoffs
- Leontief Systems and Intersectoral Dependence
- Machine Learning and Linear Algebra
- Optimization, Gradients, and Matrix Structure
- Simulation of High-Dimensional Systems
- Large-Scale Matrix Computation
- Sparse Matrices and Computational Efficiency
- Network Flow Modeling
- Infrastructure Network Models
- Flow, Connectivity, and System Vulnerability
- Interpretation, Approximation, and Responsible Mathematical Modeling
- Linear Algebra for Systems Modeling
- Mathematical Modeling
- Systems Modeling
- Scientific Computing for Systems Modeling
Further Reading
- Eurostat (2008) Eurostat Manual of Supply, Use and Input-Output Tables. Luxembourg: Office for Official Publications of the European Communities. Available at: https://ec.europa.eu/eurostat/web/products-manuals-and-guidelines/-/ks-ra-07-013.
- Horowitz, K.J. and Planting, M.A. (2009) Concepts and Methods of the U.S. Input-Output Accounts. Washington, DC: Bureau of Economic Analysis. Available at: https://www.bea.gov/resources/methodologies/concepts-methods-io-accounts.
- Leontief, W. (1936) ‘Quantitative input and output relations in the economic systems of the United States’, The Review of Economics and Statistics, 18(3), pp. 105–125. Available at: https://doi.org/10.2307/1927837.
- Leontief, W. (1986) Input-Output Economics. 2nd edn. New York: Oxford University Press. Available at: https://global.oup.com/academic/product/input-output-economics-9780195035278.
- Miller, R.E. and Blair, P.D. (2009) Input-Output Analysis: Foundations and Extensions. 2nd edn. Cambridge: Cambridge University Press. Available at: https://doi.org/10.1017/CBO9780511626982.
- Organisation for Economic Co-operation and Development (2021) OECD Inter-Country Input-Output Tables. Paris: OECD. Available at: https://www.oecd.org/sti/ind/inter-country-input-output-tables.htm.
- United Nations (2018) Handbook on Supply and Use Tables and Input-Output Tables with Extensions and Applications. New York: United Nations. Available at: https://unstats.un.org/unsd/nationalaccount/docs/SUT_IOT_HB_Final_Cover.pdf.
- United Nations, European Commission, International Monetary Fund, Organisation for Economic Co-operation and Development and World Bank (2009) System of National Accounts 2008. New York: United Nations. Available at: https://unstats.un.org/unsd/nationalaccount/sna2008.asp.
- United States Bureau of Economic Analysis (2024) Input-Output Accounts Data. Washington, DC: BEA. Available at: https://www.bea.gov/industry/input-output-accounts-data.
- Wiedmann, T. (2009) ‘A review of recent multi-region input-output models used for consumption-based emission and resource accounting’, Ecological Economics, 69(2), pp. 211–222. Available at: https://doi.org/10.1016/j.ecolecon.2009.08.026.
References
- Eurostat (2008) Eurostat Manual of Supply, Use and Input-Output Tables. Luxembourg: Office for Official Publications of the European Communities. Available at: https://ec.europa.eu/eurostat/web/products-manuals-and-guidelines/-/ks-ra-07-013.
- Horowitz, K.J. and Planting, M.A. (2009) Concepts and Methods of the U.S. Input-Output Accounts. Washington, DC: Bureau of Economic Analysis. Available at: https://www.bea.gov/resources/methodologies/concepts-methods-io-accounts.
- Leontief, W. (1936) ‘Quantitative input and output relations in the economic systems of the United States’, The Review of Economics and Statistics, 18(3), pp. 105–125. Available at: https://doi.org/10.2307/1927837.
- Leontief, W. (1986) Input-Output Economics. 2nd edn. New York: Oxford University Press. Available at: https://global.oup.com/academic/product/input-output-economics-9780195035278.
- Miller, R.E. and Blair, P.D. (2009) Input-Output Analysis: Foundations and Extensions. 2nd edn. Cambridge: Cambridge University Press. Available at: https://doi.org/10.1017/CBO9780511626982.
- Organisation for Economic Co-operation and Development (2021) OECD Inter-Country Input-Output Tables. Paris: OECD. Available at: https://www.oecd.org/sti/ind/inter-country-input-output-tables.htm.
- United Nations (2018) Handbook on Supply and Use Tables and Input-Output Tables with Extensions and Applications. New York: United Nations. Available at: https://unstats.un.org/unsd/nationalaccount/docs/SUT_IOT_HB_Final_Cover.pdf.
- United Nations, European Commission, International Monetary Fund, Organisation for Economic Co-operation and Development and World Bank (2009) System of National Accounts 2008. New York: United Nations. Available at: https://unstats.un.org/unsd/nationalaccount/sna2008.asp.
- United States Bureau of Economic Analysis (2024) Input-Output Accounts Data. Washington, DC: BEA. Available at: https://www.bea.gov/industry/input-output-accounts-data.
- Wiedmann, T. (2009) ‘A review of recent multi-region input-output models used for consumption-based emission and resource accounting’, Ecological Economics, 69(2), pp. 211–222. Available at: https://doi.org/10.1016/j.ecolecon.2009.08.026.
