How ideas, diseases, and technologies spread across networks over time
2026-02-26
You should know
What exponential and logistic growth look like, and how a process can speed up when more people are already involved.
You will learn
How ideas, technologies, or behaviours spread through space, and why adoption often follows an S-shaped pattern over time.
Why this matters
This chapter connects mathematical growth models to real geographic change, from farming techniques to social media to public-health behaviour.
If this gets hard, focus on…
The storyline of adoption: slow at first, fast in the middle, and slower again near saturation. That pattern matters more than every detail of the formula.
In the autumn of 1918, influenza arrived in the United States in three waves, spreading along the rail and shipping networks that connected its cities. Philadelphia, which held a Liberty Loan parade on 28 September despite warnings from health officials, saw 759 deaths on a single day two weeks later. San Francisco, which imposed mask mandates and banned public gatherings before the virus arrived, fared considerably better. The geography of the epidemic — which cities were hit first, how rapidly it moved between them, where interventions interrupted the chain — was not random. It followed the structure of the contact network and the hierarchy of city sizes.
Spatial diffusion is the process by which something — a pathogen, a technology, an agricultural practice, a political idea — spreads through a population distributed across space. The mechanism is contact: adjacent or connected places influence each other. The pattern is partly hierarchical (large cities before small ones, as information and people flow preferentially through the urban system) and partly contagious (nearby places before distant ones, as local contact dominates). Both mechanisms appear in the spread of hybrid corn across the American Midwest in the 1930s, mobile phone adoption across sub-Saharan Africa in the 2000s, and SARS-CoV-2 genomic lineages propagating through airline networks in 2020. The mathematics needed to model all of this is simpler than it looks: discrete time steps, a probability of transmission, and an adjacency structure that encodes which places are in contact with which.
How do innovations spread through a population distributed across space?
A farmer in Iowa adopts hybrid corn in 1935. By 1940, neighboring counties have adopted it. By 1950, it’s widespread across the Midwest. By 1960, it’s standard practice nationwide.
Why this pattern? 1. Hierarchical diffusion: Large cities adopt first, then spread to smaller towns (down the urban hierarchy) 2. Contagious diffusion: Adoption spreads to nearby locations through social contact and observation
The mathematical question: Can we model both mechanisms — proximity-based contagion and size-based hierarchy — in a single framework?
Stage 1: Who can adopt?
Only locations that have heard about the innovation can adopt it. Information spreads through: - Contact with adopters (neighbors, trade partners) - Media coverage (proportional to city size or existing adoption)
Stage 2: Who actually adopts?
Among those aware, adoption depends on: - Benefits (economic advantage, social status) - Costs (upfront investment, risk, learning curve) - Social pressure (more adopters → stronger influence)
This creates an S-curve (logistic) at each location, but the timing varies spatially.
Represent locations as nodes in a network: - Edges connect locations that can transmit the innovation - Edge weights represent transmission probability (function of distance, trade volume, etc.)
Adjacency matrix A: - A_{ij} = 1 if locations i and j are connected (neighbors) - A_{ij} = 0 otherwise - For weighted networks: A_{ij} = w_{ij} (transmission strength)
Divide each location’s population into: - S: Susceptible (not yet adopted) - I: Adopters (have adopted the innovation)
At each time step t:
I_{i}(t+1) = I_{i}(t) + \beta \cdot S_{i}(t) \cdot \sum_{j} A_{ij} \frac{I_j(t)}{N_j}
Where: - I_i(t) is the number of adopters in location i at time t - S_i(t) = N_i - I_i(t) is the number of susceptibles - N_i is the total population of location i - \beta is the transmission rate (probability of adoption upon contact) - A_{ij} is the adjacency weight (contact frequency between i and j)
Interpretation:
The change in adopters depends on: 1. How many susceptibles remain (S_i(t)) 2. The fraction of adopters in neighboring locations (I_j(t) / N_j) 3. How strongly connected the locations are (A_{ij})
Once the innovation arrives, adoption within a location often follows a logistic curve:
\frac{dI_i}{dt} = r_i I_i \left(1 - \frac{I_i}{N_i}\right)
But the start time of the curve varies — late-arriving locations lag behind.
Combined model:
The innovation spreads between locations via the network (contagion), and within each location via the logistic S-curve (internal diffusion).
For computational implementation:
I_i(t+1) = I_i(t) + \Delta I_{\text{internal}} + \Delta I_{\text{external}}
Internal diffusion (logistic within the location):
\Delta I_{\text{internal}} = r I_i(t) \left(1 - \frac{I_i(t)}{N_i}\right) \Delta t
External diffusion (contagion from neighbors):
\Delta I_{\text{external}} = \beta (N_i - I_i(t)) \sum_{j} A_{ij} \frac{I_j(t)}{N_j} \Delta t
Constraint: I_i(t+1) \leq N_i (can’t exceed total population)
Problem: Three cities with populations and adjacency:
| City | Population | Initial adopters |
|---|---|---|
| A | 1000 | 100 |
| B | 500 | 0 |
| C | 800 | 0 |
Adjacency matrix (binary, undirected):
A = \begin{pmatrix} 0 & 1 & 0 \\ 1 & 0 & 1 \\ 0 & 1 & 0 \end{pmatrix}
A is connected to B. B is connected to both A and C. C is connected to B.
Parameters: \beta = 0.2 (transmission rate), r = 0.1 (internal growth rate), \Delta t = 1 year.
Calculate I_A(1), I_B(1), I_C(1) after one time step.
City A (t=1):
Internal diffusion:
\Delta I_{\text{int}, A} = 0.1 \times 100 \times \left(1 - \frac{100}{1000}\right) = 10 \times 0.9 = 9
External diffusion (only neighbor is B, which has 0 adopters):
\Delta I_{\text{ext}, A} = 0.2 \times 900 \times \left(1 \times \frac{0}{500}\right) = 0
I_A(1) = 100 + 9 + 0 = 109
City B (t=1):
Internal diffusion (starts at 0):
\Delta I_{\text{int}, B} = 0.1 \times 0 \times \left(1 - \frac{0}{500}\right) = 0
External diffusion (neighbors: A with 100/1000, C with 0/800):
\Delta I_{\text{ext}, B} = 0.2 \times 500 \times \left(1 \times \frac{100}{1000} + 1 \times \frac{0}{800}\right)
= 100 \times (0.1 + 0) = 10
I_B(1) = 0 + 0 + 10 = 10
City C (t=1):
Internal diffusion:
\Delta I_{\text{int}, C} = 0
External diffusion (only neighbor is B with 0/500):
\Delta I_{\text{ext}, C} = 0.2 \times 800 \times \left(1 \times \frac{0}{500}\right) = 0
I_C(1) = 0
Summary after 1 year: - City A: 109 adopters - City B: 10 adopters (innovation has jumped to B) - City C: 0 adopters (still waiting)
Below is an interactive spatial diffusion simulation.
<label>
Network type:
<select id="network-select">
<option value="grid">Grid (nearest neighbors)</option>
<option value="hub">Hub-and-spoke</option>
<option value="random">Random network</option>
<option value="distance">Distance-weighted</option>
</select>
</label>
<label>
Transmission rate (β):
<input type="range" id="beta-slider" min="0.05" max="0.5" step="0.05" value="0.2">
<span id="beta-value">0.20</span>
</label>
<label>
Internal growth rate (r):
<input type="range" id="r-diffusion-slider" min="0.05" max="0.3" step="0.05" value="0.1">
<span id="r-diffusion-value">0.10</span>
</label>
<div class="button-group">
<button id="step-btn">Step Forward</button>
<button id="play-btn">Play</button>
<button id="reset-btn">Reset</button>
</div>
<p id="diffusion-stats"></p>
Try this: - Grid network: Diffusion spreads outward in waves from the center - Hub network: Central city infects all spokes rapidly, then they spread internally - Random network: Irregular diffusion pattern, depends on network structure - Distance-weighted: Closer neighbors exert stronger influence - Increase β: Faster spatial spread - Increase r: Faster internal adoption once innovation arrives
Key insight: Network structure determines diffusion speed and pattern. A well-connected hub accelerates spread; isolated nodes lag behind.
Early adopters (large cities, well-connected nodes): - Innovation arrives early - S-curve starts sooner - High adoption by time T
Late adopters (small towns, peripheral nodes): - Innovation arrives late - S-curve starts later - Low adoption by time T
Result: At any snapshot in time, locations are at different stages of the adoption curve.
Physical barriers: - Mountains, oceans → low adjacency weights - Poor roads → slow transmission
Social barriers: - Language differences - Cultural resistance - Incompatible infrastructure (e.g., technology standards)
Economic barriers: - High cost → only wealthy locations adopt - Network externalities → need critical mass
To accelerate diffusion: 1. Seed innovation in hubs (large, central cities) 2. Subsidize early adoption (reduce cost barrier) 3. Improve connectivity (roads, communication networks) 4. Demonstrate benefits (pilot programs in visible locations)
The model treats all individuals within a location as identical. In reality: - Some people are innovators (adopt early regardless of neighbors) - Others are laggards (resist even with high social pressure)
Solution: Divide population into categories with different adoption thresholds.
The model emphasizes contagious diffusion (neighbor-to-neighbor). Real diffusion often includes: - Hierarchical jumps (New York → Los Angeles, skipping intermediate towns) - Media influence (independent of spatial proximity)
Solution: Add long-range connections weighted by city size.
Not all innovations succeed. Some spread initially but then reverse (CB radios, fax machines, MySpace).
The logistic model assumes monotonic growth. Reversals require a decline phase after saturation.
Networks evolve: - New roads are built - Cities grow or shrink - Trade patterns shift
Dynamic networks require updating adjacency A(t) over time.
The same framework models disease spread:
S → I → R - S: Susceptible (not infected) - I: Infected (can transmit disease) - R: Recovered (immune, removed from transmission)
Equations:
\frac{dS_i}{dt} = -\beta S_i \sum_j A_{ij} \frac{I_j}{N_j}
\frac{dI_i}{dt} = \beta S_i \sum_j A_{ij} \frac{I_j}{N_j} - \gamma I_i
\frac{dR_i}{dt} = \gamma I_i
Where \gamma is the recovery rate.
Key parameter: Basic reproduction number R_0 = \beta / \gamma - R_0 > 1: epidemic spreads - R_0 < 1: epidemic dies out
Spatial structure affects R_0 — clustered networks slow spread; well-mixed networks accelerate it.
A discrete-time model updates state at fixed intervals:
x(t+1) = f(x(t))
Example: x(t+1) = 2x(t) (doubling each step)
Solution: x(t) = x(0) \cdot 2^t (exponential growth)
An equilibrium x^* is stable if small perturbations decay:
|f(x^* + \epsilon) - x^*| < |\epsilon|
Graphical method: Plot x(t+1) vs. x(t). Equilibria are where the curve crosses the diagonal. Stable if slope < 1 at the crossing.
When multiple locations interact:
\mathbf{x}(t+1) = \mathbf{A} \mathbf{x}(t) + \mathbf{b}
Where \mathbf{x} is a vector of states, \mathbf{A} is the adjacency/interaction matrix.
Eigenvalues of \mathbf{A} determine long-term behavior (growth, decay, oscillation).