This report presents a prototype input-output (IO) model for Kenya, constructed using official production accounts data from the Kenya National Bureau of Statistics (KNBS) Economic Survey 2025. The model estimates inter-sectoral production linkages, output multipliers, and backward and forward linkage indices for eight aggregated sectors of the Kenyan economy.
Key findings:
The results support the case for targeted industrial policy and provide a quantitative basis for assessing sectoral spillovers from fiscal stimulus and structural transformation strategies.
An input-output framework provides a structured approach to analysing interdependencies across sectors in an economy. Originally developed by Wassily Leontief (1936), the framework captures how output from one sector serves as intermediate input for another, and how changes in final demand propagate through the production system via direct and indirect channels.
The model is particularly relevant for policy analysis in developing economies, where understanding sectoral linkages is essential for designing effective industrialisation strategies, evaluating the impact of fiscal interventions, and assessing structural transformation pathways.
This report constructs a prototype IO model using real data from the Kenya National Bureau of Statistics (KNBS) Economic Survey 2025, drawing on Table 2.1 (GDP by Activity), Table 2.4 (Growth Rates), and Table 2.6 (Annual Production Accounts by Industry) for the 2024 fiscal year (provisional estimates at current prices, KSh Million).
The model demonstrates:
The model follows a demand-driven input-output framework, where total output is determined as a function of inter-industry relationships and final demand. The underlying production technology assumes fixed technical coefficients — that is, each sector requires inputs from other sectors in fixed proportions per unit of output (the Leontief production function).
The fundamental accounting identity for sector \(i\) is:
\[ X_i = \sum_{j=1}^{n} z_{ij} + F_i \]
where \(X_i\) is total output, \(z_{ij}\) is the intermediate delivery from sector \(i\) to sector \(j\), and \(F_i\) is final demand for sector \(i\)’s output (consumption, investment, government spending, and net exports).
Defining the technical coefficients matrix \(\mathbf{A}\) with elements \(a_{ij} = z_{ij} / X_j\), the system can be expressed in matrix form as:
\[ \mathbf{X} = \mathbf{A}\mathbf{X} + \mathbf{F} \]
Solving for total output yields the Leontief demand model:
\[ \mathbf{X} = (\mathbf{I} - \mathbf{A})^{-1} \mathbf{F} \]
The matrix \(\mathbf{L} = (\mathbf{I} - \mathbf{A})^{-1}\) is the Leontief inverse, whose elements \(l_{ij}\) capture the total (direct + indirect) output required from sector \(i\) per unit of final demand for sector \(j\).
| Concept | Formula | Interpretation |
|---|---|---|
| Technical coefficient | \(a_{ij} = z_{ij} / X_j\) | Input from sector i per unit of output in sector j |
| Output multiplier | \(m_j = \sum_i l_{ij}\) | Total output generated economy-wide per unit increase in final demand of sector j |
| Backward linkage (BL) | Normalised column sum of \(\mathbf{L}\) | Extent to which a sector draws inputs from the rest of the economy |
| Forward linkage (FL) | Normalised row sum of \(\mathbf{L}\) | Extent to which a sector supplies inputs to other sectors |
Sectors with both BL > 1 and FL > 1 are classified as key sectors — they are strongly integrated into the production system both as purchasers and suppliers of intermediate goods (Rasmussen, 1956; Hirschman, 1958).
The model draws on 2024 provisional data from Table 2.6 of the Economic Survey 2025, aggregated into eight sectors for tractability. All values are in KSh Million at current prices.
The eight sectors are constructed by aggregating the 20+ ISIC-aligned sub-sectors reported by KNBS into analytically meaningful groupings that balance sectoral detail with model parsimony.
# ── Sector labels ──
sectors <- c(
"Agriculture",
"Manufacturing",
"Construction",
"Trade",
"Transport",
"Financial",
"ICT",
"Public Services"
)
n <- length(sectors)
# ── Total output at basic prices (KSh Million, 2024*) ──
# Source: Table 2.6, Economic Survey 2025 (KNBS)
#
# Sector aggregation:
# Agriculture = Agriculture, forestry & fishing
# Manufacturing = Manufacturing + Mining & quarrying + Electricity supply
# + Water supply, sewerage & waste management
# Construction = Construction
# Trade = Wholesale & retail trade; repairs
# Transport = Transportation & storage
# Financial = Financial & insurance activities
# ICT = Information & communication
# Public Services = Public administration & defence + Education
# + Health & social work + Real estate
# + Professional, scientific & technical activities
# + Administrative & support service activities
# + Accommodation & food services + Other services
# + Activities of households as employers
total_output <- c(
4476418, # Agriculture
4435186, # Manufacturing (3,691,742 + 218,471 + 455,966 + 69,007)
2171266, # Construction
2412339, # Trade
3484863, # Transport & storage
1614214, # Financial & insurance
701267, # ICT
5758435 # Public services (aggregated)
)
# ── Total intermediate consumption (KSh Million, 2024*) ──
intermediate_consumption <- c(
830316, # Agriculture
2831010, # Manufacturing (2,515,349 + 109,501 + 96,659 + 109,501)
1144143, # Construction
1192628, # Trade
1423903, # Transport & storage
329373, # Financial & insurance
336724, # ICT
1784770 # Public services (aggregated)
)
# ── Value added = Output - Intermediate consumption ──
value_added <- total_output - intermediate_consumption
# ── Final demand (approximated from GDP contribution, Table 2.1, 2024*) ──
final_demand <- c(
3646102, # Agriculture
1285363, # Manufacturing
1027123, # Construction
1219711, # Trade
2060960, # Transport & storage
1284840, # Financial & insurance
364542, # ICT
3973894 # Public services
)
names(total_output) <- sectors
names(intermediate_consumption) <- sectors
names(value_added) <- sectors
names(final_demand) <- sectors
accounts_df <- data.frame(
Sector = sectors,
`Output (KSh M)` = format(total_output, big.mark = ","),
`Intermediate Consumption (KSh M)` = format(intermediate_consumption, big.mark = ","),
`Value Added (KSh M)` = format(value_added, big.mark = ","),
`IC/Output Ratio` = round(intermediate_consumption / total_output, 3),
check.names = FALSE
)
knitr::kable(accounts_df,
caption = "Table 1: Sectoral Production Accounts, Kenya 2024 (KSh Million)",
align = c("l", rep("r", 4)))
| Sector | Output (KSh M) | Intermediate Consumption (KSh M) | Value Added (KSh M) | IC/Output Ratio | |
|---|---|---|---|---|---|
| Agriculture | Agriculture | 4,476,418 | 830,316 | 3,646,102 | 0.185 |
| Manufacturing | Manufacturing | 4,435,186 | 2,831,010 | 1,604,176 | 0.638 |
| Construction | Construction | 2,171,266 | 1,144,143 | 1,027,123 | 0.527 |
| Trade | Trade | 2,412,339 | 1,192,628 | 1,219,711 | 0.494 |
| Transport | Transport | 3,484,863 | 1,423,903 | 2,060,960 | 0.409 |
| Financial | Financial | 1,614,214 | 329,373 | 1,284,841 | 0.204 |
| ICT | ICT | 701,267 | 336,724 | 364,543 | 0.480 |
| Public Services | Public Services | 5,758,435 | 1,784,770 | 3,973,665 | 0.310 |
library(ggplot2)
plot_df <- data.frame(
Sector = rep(sectors, 3),
Component = rep(c("Total Output", "Intermediate Consumption", "Value Added"), each = n),
Value = c(total_output, intermediate_consumption, value_added) / 1e6
)
plot_df$Sector <- factor(plot_df$Sector, levels = rev(sectors))
plot_df$Component <- factor(plot_df$Component,
levels = c("Total Output", "Intermediate Consumption", "Value Added"))
ggplot(plot_df, aes(x = Sector, y = Value, fill = Component)) +
geom_bar(stat = "identity", position = "dodge", width = 0.7) +
coord_flip() +
scale_fill_manual(values = c("#1B4F72", "#D4AC0D", "#27AE60")) +
labs(
title = "Sectoral Production Accounts — Kenya, 2024",
subtitle = "Source: KNBS Economic Survey 2025, Table 2.6",
y = "KSh Trillion",
x = NULL,
fill = NULL
) +
theme_minimal(base_size = 13) +
theme(
legend.position = "top",
plot.title = element_text(face = "bold"),
panel.grid.major.y = element_blank()
)
Figure 1: Sectoral Output, Intermediate Consumption and Value Added (2024)
The Economic Survey provides aggregate intermediate consumption per sector but does not publish a full inter-industry transaction matrix or Supply-Use Table. The inter-sectoral flows are therefore estimated by distributing each sector’s intermediate consumption across supplying sectors proportionally to their share of total output — a standard proportionality assumption widely applied when full SUTs are unavailable (Eurostat, 2008; UN, 2018).
\[ z_{ij} = IC_j \times \frac{X_i}{\sum_k X_k} \]
This assumption implies that each purchasing sector sources its intermediate inputs in the same proportion as the economy-wide output structure. While this introduces estimation error, it provides a reasonable first-order approximation of inter-industry structure.
# ── Estimate inter-industry transaction matrix (Z) ──
output_shares <- total_output / sum(total_output)
Z <- matrix(0, nrow = n, ncol = n)
for (j in 1:n) {
Z[, j] <- intermediate_consumption[j] * output_shares
}
colnames(Z) <- sectors
rownames(Z) <- sectors
cat("Estimated Transaction Matrix Z (KSh Million, 2024):\n")
## Estimated Transaction Matrix Z (KSh Million, 2024):
print(round(Z, 0))
## Agriculture Manufacturing Construction Trade Transport
## Agriculture 148353 505819 204425 213088 254410
## Manufacturing 146987 501160 202542 211125 252067
## Construction 71958 245345 99155 103357 123400
## Trade 79947 272586 110165 114833 137101
## Transport 115492 393777 159144 165888 198057
## Financial 53497 182400 73716 76840 91741
## ICT 23241 79241 32025 33382 39855
## Public Services 190841 650682 262971 274115 327271
## Financial ICT Public Services
## Agriculture 58849 60163 318886
## Manufacturing 58307 59609 315949
## Construction 28545 29182 154674
## Trade 31714 32422 171848
## Transport 45814 46836 248251
## Financial 21221 21695 114992
## ICT 9219 9425 49956
## Public Services 75703 77393 410213
The technical coefficients matrix \(\mathbf{A}\) describes the production technology of the economy. Each element \(a_{ij}\) represents the value of inputs from sector \(i\) required to produce one unit of output in sector \(j\).
# ── Technical coefficients matrix ──
A <- Z / matrix(total_output, nrow = n, ncol = n, byrow = TRUE)
cat("Technical Coefficients Matrix A:\n")
## Technical Coefficients Matrix A:
print(round(A, 4))
## Agriculture Manufacturing Construction Trade Transport
## Agriculture 0.0331 0.1140 0.0942 0.0883 0.0730
## Manufacturing 0.0328 0.1130 0.0933 0.0875 0.0723
## Construction 0.0161 0.0553 0.0457 0.0428 0.0354
## Trade 0.0179 0.0615 0.0507 0.0476 0.0393
## Transport 0.0258 0.0888 0.0733 0.0688 0.0568
## Financial 0.0120 0.0411 0.0340 0.0319 0.0263
## ICT 0.0052 0.0179 0.0147 0.0138 0.0114
## Public Services 0.0426 0.1467 0.1211 0.1136 0.0939
## Financial ICT Public Services
## Agriculture 0.0365 0.0858 0.0554
## Manufacturing 0.0361 0.0850 0.0549
## Construction 0.0177 0.0416 0.0269
## Trade 0.0196 0.0462 0.0298
## Transport 0.0284 0.0668 0.0431
## Financial 0.0131 0.0309 0.0200
## ICT 0.0057 0.0134 0.0087
## Public Services 0.0469 0.1104 0.0712
library(reshape2)
A_melt <- melt(A)
colnames(A_melt) <- c("Supplying_Sector", "Purchasing_Sector", "Coefficient")
ggplot(A_melt, aes(x = Purchasing_Sector, y = Supplying_Sector, fill = Coefficient)) +
geom_tile(color = "white", linewidth = 0.5) +
geom_text(aes(label = sprintf("%.3f", Coefficient)), size = 3, color = "white") +
scale_fill_gradient(low = "#2C3E50", high = "#E74C3C") +
labs(
title = "Technical Coefficients Matrix (A)",
subtitle = "Input requirement per unit of output, Kenya 2024",
x = "Purchasing Sector",
y = "Supplying Sector"
) +
theme_minimal(base_size = 11) +
theme(
axis.text.x = element_text(angle = 45, hjust = 1),
plot.title = element_text(face = "bold"),
legend.position = "right"
)
Figure 2: Heatmap of Technical Coefficients Matrix
The Leontief inverse \(\mathbf{L} = (\mathbf{I} - \mathbf{A})^{-1}\) captures the total (direct and indirect) requirements matrix. Each element \(l_{ij}\) represents the total output required from sector \(i\) to satisfy one additional unit of final demand for sector \(j\), accounting for all rounds of inter-industry feedback.
# ── Leontief inverse ──
I_mat <- diag(n)
L <- solve(I_mat - A)
colnames(L) <- sectors
rownames(L) <- sectors
cat("Leontief Inverse Matrix L = (I - A)^{-1}:\n")
## Leontief Inverse Matrix L = (I - A)^{-1}:
print(round(L, 4))
## Agriculture Manufacturing Construction Trade Transport
## Agriculture 1.0547 0.1882 0.1554 0.1458 0.1205
## Manufacturing 0.0542 1.1865 0.1539 0.1444 0.1194
## Construction 0.0265 0.0913 1.0754 0.0707 0.0584
## Trade 0.0295 0.1014 0.0837 1.0786 0.0649
## Transport 0.0426 0.1465 0.1210 0.1135 1.0938
## Financial 0.0197 0.0679 0.0560 0.0526 0.0434
## ICT 0.0086 0.0295 0.0243 0.0228 0.0189
## Public Services 0.0704 0.2421 0.1999 0.1875 0.1550
## Financial ICT Public Services
## Agriculture 0.0602 0.1416 0.0914
## Manufacturing 0.0596 0.1403 0.0905
## Construction 0.0292 0.0687 0.0443
## Trade 0.0324 0.0763 0.0493
## Transport 0.0468 0.1102 0.0711
## Financial 1.0217 0.0511 0.0330
## ICT 0.0094 1.0222 0.0143
## Public Services 0.0774 0.1821 1.1176
Output multipliers measure the total increase in economy-wide output resulting from a one-unit increase in final demand for each sector. A multiplier of 1.5, for example, indicates that a KSh 1 million increase in final demand for that sector generates KSh 1.5 million in total output across the economy.
# ── Output multipliers (column sums of Leontief inverse) ──
output_multipliers <- colSums(L)
names(output_multipliers) <- sectors
mult_df <- data.frame(
Sector = sectors,
Multiplier = round(output_multipliers, 4)
)
mult_df <- mult_df[order(-mult_df$Multiplier), ]
knitr::kable(mult_df,
caption = "Table 2: Output Multipliers by Sector",
row.names = FALSE,
align = c("l", "r"))
| Sector | Multiplier |
|---|---|
| Manufacturing | 2.0534 |
| Construction | 1.8696 |
| Trade | 1.8159 |
| ICT | 1.7924 |
| Transport | 1.6743 |
| Public Services | 1.5115 |
| Financial | 1.3367 |
| Agriculture | 1.3061 |
mult_df$Sector <- factor(mult_df$Sector, levels = mult_df$Sector)
ggplot(mult_df, aes(x = Sector, y = Multiplier)) +
geom_col(fill = "#1B4F72", width = 0.6) +
geom_hline(yintercept = mean(output_multipliers), linetype = "dashed",
color = "#E74C3C", linewidth = 0.8) +
geom_text(aes(label = round(Multiplier, 3)), vjust = -0.5, size = 3.5,
fontface = "bold") +
annotate("text", x = n - 0.5, y = mean(output_multipliers) + 0.02,
label = paste0("Mean = ", round(mean(output_multipliers), 3)),
color = "#E74C3C", fontface = "italic", size = 3.5) +
labs(
title = "Output Multipliers — Kenya, 2024",
subtitle = "Total economy-wide output per KSh 1 increase in final demand",
x = NULL,
y = "Output Multiplier"
) +
theme_minimal(base_size = 13) +
theme(
axis.text.x = element_text(angle = 35, hjust = 1),
plot.title = element_text(face = "bold"),
panel.grid.major.x = element_blank()
) +
scale_y_continuous(expand = expansion(mult = c(0, 0.1)))
Figure 3: Output Multipliers by Sector
Backward and forward linkage indices provide a complementary perspective on sectoral interdependence (Rasmussen, 1956):
Following Chenery and Watanabe (1958), sectors are classified into four quadrants based on whether their normalised linkages exceed the economy-wide average (index > 1).
backward <- colSums(L)
forward <- rowSums(L)
# Normalise relative to economy-wide mean
backward_norm <- backward / mean(backward)
forward_norm <- forward / mean(forward)
linkage_df <- data.frame(
Sector = sectors,
Backward = round(backward_norm, 3),
Forward = round(forward_norm, 3),
Classification = ifelse(
backward_norm > 1 & forward_norm > 1, "Key Sector",
ifelse(backward_norm > 1, "Strong Backward",
ifelse(forward_norm > 1, "Strong Forward", "Weak Linkage"))
)
)
knitr::kable(linkage_df,
caption = "Table 3: Normalised Backward and Forward Linkages",
align = c("l", "r", "r", "l"))
| Sector | Backward | Forward | Classification | |
|---|---|---|---|---|
| Agriculture | Agriculture | 0.782 | 1.172 | Strong Forward |
| Manufacturing | Manufacturing | 1.230 | 1.167 | Key Sector |
| Construction | Construction | 1.120 | 0.877 | Strong Backward |
| Trade | Trade | 1.087 | 0.908 | Strong Backward |
| Transport | Transport | 1.003 | 1.045 | Key Sector |
| Financial | Financial | 0.800 | 0.806 | Weak Linkage |
| ICT | ICT | 1.073 | 0.689 | Strong Backward |
| Public Services | Public Services | 0.905 | 1.336 | Strong Forward |
ggplot(linkage_df, aes(x = Forward, y = Backward, label = Sector, color = Classification)) +
geom_point(size = 4) +
geom_text(vjust = -1, size = 3.5, show.legend = FALSE) +
geom_hline(yintercept = 1, linetype = "dashed", color = "grey50") +
geom_vline(xintercept = 1, linetype = "dashed", color = "grey50") +
annotate("text", x = 1.25, y = 1.25, label = "Key Sectors",
color = "#27AE60", fontface = "bold", size = 4) +
annotate("text", x = 0.65, y = 1.25, label = "Strong\nBackward",
color = "#2980B9", fontface = "italic", size = 3.5) +
annotate("text", x = 1.25, y = 0.65, label = "Strong\nForward",
color = "#E67E22", fontface = "italic", size = 3.5) +
annotate("text", x = 0.65, y = 0.65, label = "Weak",
color = "#95A5A6", fontface = "italic", size = 3.5) +
scale_color_manual(values = c(
"Key Sector" = "#27AE60",
"Strong Backward" = "#2980B9",
"Strong Forward" = "#E67E22",
"Weak Linkage" = "#95A5A6"
)) +
labs(
title = "Sectoral Linkage Classification — Kenya, 2024",
subtitle = "Rasmussen-Hirschman framework, normalised indices",
x = "Forward Linkage (normalised)",
y = "Backward Linkage (normalised)",
color = "Classification"
) +
theme_minimal(base_size = 13) +
theme(
plot.title = element_text(face = "bold"),
legend.position = "bottom"
) +
coord_cartesian(xlim = c(0.5, 1.6), ylim = c(0.5, 1.6))
Figure 4: Backward vs Forward Linkages (Normalised)
A central application of the IO framework is the assessment of sectoral spillovers from exogenous demand shocks. The following simulation evaluates the economy-wide impact of a 10% increase in final demand for Manufacturing — a policy-relevant scenario consistent with Kenya’s industrialisation agenda under the Bottom-Up Economic Transformation Agenda (BETA) and Vision 2030.
The impact vector is computed as:
\[ \Delta \mathbf{X} = \mathbf{L} \times \Delta \mathbf{F} \]
# ── Demand shock: +10% in Manufacturing final demand ──
shock <- rep(0, n)
shock[2] <- 0.10 * final_demand[2] # 10% of Manufacturing final demand
names(shock) <- sectors
cat("Demand Shock Vector (KSh Million):\n")
## Demand Shock Vector (KSh Million):
print(round(shock, 0))
## Agriculture Manufacturing Construction Trade Transport
## 0 128536 0 0 0
## Financial ICT Public Services
## 0 0 0
# ── Impact on total output ──
impact <- L %*% shock
impact_df <- data.frame(
Sector = sectors,
`Baseline Output` = format(round(total_output, 0), big.mark = ","),
`Change in Output` = format(round(as.vector(impact), 0), big.mark = ","),
`Pct Change` = paste0(round(as.vector(impact) / total_output * 100, 2), "%"),
check.names = FALSE
)
knitr::kable(impact_df,
caption = "Table 4: Impact of 10% Increase in Manufacturing Final Demand",
align = c("l", "r", "r", "r"))
| Sector | Baseline Output | Change in Output | Pct Change | |
|---|---|---|---|---|
| Agriculture | Agriculture | 4,476,418 | 24,193 | 0.54% |
| Manufacturing | Manufacturing | 4,435,186 | 152,506 | 3.44% |
| Construction | Construction | 2,171,266 | 11,734 | 0.54% |
| Trade | Trade | 2,412,339 | 13,037 | 0.54% |
| Transport | Transport | 3,484,863 | 18,834 | 0.54% |
| Financial | Financial | 1,614,214 | 8,724 | 0.54% |
| ICT | ICT | 701,267 | 3,790 | 0.54% |
| Public Services | Public Services | 5,758,435 | 31,121 | 0.54% |
shock_plot <- data.frame(
Sector = factor(sectors, levels = sectors[order(as.vector(impact))]),
Impact = as.vector(impact) / 1e3
)
ggplot(shock_plot, aes(x = Sector, y = Impact)) +
geom_col(fill = "#D4AC0D", width = 0.6) +
coord_flip() +
labs(
title = "Spillover Effects: 10% Manufacturing Demand Shock",
subtitle = "Change in sectoral output (KSh Billion), Kenya 2024",
x = NULL,
y = "Change in Output (KSh Billion)"
) +
theme_minimal(base_size = 13) +
theme(
plot.title = element_text(face = "bold"),
panel.grid.major.y = element_blank()
)
Figure 5: Spillover Effects of a Manufacturing Demand Shock
The results indicate that a 10% increase in Manufacturing final demand generates measurable spillover effects across all sectors of the economy. The strongest indirect impacts are observed in:
These findings suggest strong backward linkages in Manufacturing, confirming its potential as a driver of aggregate output growth and supporting the rationale for industrial policy interventions that target manufacturing value chains.
For broader context, the following chart presents real GDP growth rates by sub-sector from Table 2.4 of the Economic Survey 2025.
# Source: Table 2.4, Economic Survey 2025 (KNBS)
growth_sectors <- c(
"Agriculture", "Manufacturing", "Construction",
"Wholesale & Retail", "Transport & Storage",
"Financial & Insurance", "ICT",
"Accommodation & Food", "Real Estate",
"Public Admin", "Education", "Health"
)
growth_2024 <- c(4.6, 2.8, -0.7, 3.8, 4.4, 7.6, 7.0, 25.7, 5.3, 8.2, 3.9, 6.3)
growth_df <- data.frame(
Sector = factor(growth_sectors, levels = growth_sectors[order(growth_2024)]),
Growth = growth_2024
)
ggplot(growth_df, aes(x = Sector, y = Growth, fill = Growth > 0)) +
geom_col(width = 0.6) +
coord_flip() +
scale_fill_manual(values = c("TRUE" = "#27AE60", "FALSE" = "#E74C3C"), guide = "none") +
geom_text(aes(label = paste0(Growth, "%")),
hjust = ifelse(growth_2024 > 0, -0.2, 1.2), size = 3.5) +
labs(
title = "Real GDP Growth by Sector — Kenya, 2024",
subtitle = "Source: KNBS Economic Survey 2025, Table 2.4",
x = NULL,
y = "Growth Rate (%)"
) +
theme_minimal(base_size = 13) +
theme(
plot.title = element_text(face = "bold"),
panel.grid.major.y = element_blank()
) +
scale_y_continuous(expand = expansion(mult = c(0.15, 0.15)))
Figure 6: Real GDP Growth by Sector, 2024
The findings carry several implications for Kenya’s economic policy:
1. Manufacturing as a growth multiplier. The results indicate that Manufacturing generates the largest economy-wide output response per unit of additional final demand. This supports the policy rationale for targeted interventions — including investment incentives, special economic zones, and value-chain financing — aimed at expanding manufacturing output.
2. Agriculture-Manufacturing linkages are critical. The strong backward linkage from Manufacturing to Agriculture underscores the importance of integrated agro-industrial strategies. Disruptions in agricultural supply (e.g. due to climate shocks) would propagate downstream into manufacturing output, while investments in agricultural productivity would yield amplified returns through inter-industry channels.
3. Transport & logistics as an enabling sector. Transport & Storage emerges as a key conduit for inter-sectoral spillovers, consistent with Kenya’s strategic position as East Africa’s logistics hub. Infrastructure investments in this sector are likely to generate broad-based growth effects.
4. Financial services exhibit low inter-industry dependence. The Financial & Insurance sector has the lowest IC/output ratio (~0.20), reflecting its knowledge-intensive, service-oriented nature. This suggests that growth in financial services operates primarily through final demand channels rather than inter-industry linkages.
The IO framework presented here can be extended to support a range of policy-relevant analyses:
Chenery, H. B. & Watanabe, T. (1958). International Comparisons of the Structure of Production. Econometrica, 26(4), 487-521.
Eurostat (2008). Eurostat Manual of Supply, Use and Input-Output Tables. Luxembourg: Office for Official Publications of the European Communities.
Hirschman, A. O. (1958). The Strategy of Economic Development. New Haven: Yale University Press.
Kenya National Bureau of Statistics (2025). Economic Survey 2025. Nairobi, Kenya. ISBN: 978-9966-102-49-2.
Leontief, W. (1936). Quantitative Input and Output Relations in the Economic Systems of the United States. Review of Economics and Statistics, 18(3), 105-125.
Miller, R. E. & Blair, P. D. (2009). Input-Output Analysis: Foundations and Extensions (2nd ed.). Cambridge University Press.
Rasmussen, P. N. (1956). Studies in Inter-Sectoral Relations. Copenhagen: Einar Harks.
United Nations (2018). Handbook on Supply, Use and Input-Output Tables with Extensions and Applications. New York: United Nations.
Report generated on 2026-04-18 using R R version 4.5.2 (2025-10-31). Data source: Kenya National Bureau of Statistics, Economic Survey 2025.