Case Study 1 — The Long Run of a Labor Market: Steady States and Mixing Rates
Field: economics / labor markets. This case study ties directly to the chapter anchor — diagonalization decouples a repeated process into independent modes, and the dominant eigenvalue governs the long run. Here the dominant eigenvalue is $1$, so the system settles into a steady state, exactly as the Markov weather model of §25.6.
The question an economist actually asks
A labor economist studying a regional workforce does not much care what any one worker does next month. She cares about the aggregate: a decade from now, what fraction of working-age adults will be employed, what fraction unemployed-and-searching, and what fraction out of the labor force entirely? And, just as important: how long does it take the economy to reach that long-run mix after a shock — a recession, a plant closing, a stimulus? Both questions — the destination and the speed — are eigenvalue questions, and diagonalization answers them in one stroke.
Model each adult as being in one of three states each month: Employed ($E$), Unemployed ($U$, meaning jobless but actively seeking), or Out of the labor force ($O$, neither working nor seeking — students, retirees, discouraged workers, caregivers). Transitions between these states happen monthly with roughly stable probabilities, estimated from survey data. Suppose the monthly transition probabilities are:
- From Employed: stay employed $0.92$, become unemployed $0.05$, leave the labor force $0.03$.
- From Unemployed: find a job $0.30$, stay unemployed $0.50$, give up searching $0.20$.
- From Out: enter employment $0.05$, enter as a searcher $0.05$, stay out $0.90$.
Encode the population distribution as a vector $\mathbf{x} = (x_E, x_U, x_O)$ summing to $1$, and one month's evolution is multiplication by the transition matrix whose columns are the "from" distributions: $$P_{\text{trans}} = \begin{bmatrix} 0.92 & 0.30 & 0.05 \\ 0.05 & 0.50 & 0.05 \\ 0.03 & 0.20 & 0.90 \end{bmatrix}.$$ Each column sums to $1$ — everyone in a given state this month goes somewhere next month — so this is a column-stochastic matrix, and after $k$ months the distribution is $P_{\text{trans}}^k\,\mathbf{x}_0$. The long run is a matrix power taken to the limit, and §25.4 told us exactly how to read it.
Diagonalize, and the long run reveals itself
By the long-run principle of §25.6.1, everything depends on the eigenvalues. Let numpy diagonalize the matrix:
# Labor-market Markov chain: eigenvalues, steady state, and convergence.
import numpy as np
np.set_printoptions(suppress=True, precision=4)
Pt = np.array([[0.92, 0.30, 0.05],
[0.05, 0.50, 0.05],
[0.03, 0.20, 0.90]])
print("column sums:", Pt.sum(axis=0)) # [1. 1. 1.] -> column-stochastic
w, V = np.linalg.eig(Pt)
print("eigenvalues:", np.sort(w)[::-1]) # [1. 0.87 0.45]
i = np.argmin(np.abs(w - 1)) # the eigenvalue equal to 1
steady = np.real(V[:, i]); steady = steady / steady.sum()
print("steady-state (E, U, O):", steady) # [0.5594 0.0909 0.3497]
The eigenvalues are $1$, $0.87$, and $0.45$. The eigenvalue $1$ is guaranteed — every column-stochastic matrix has it (§25.6) — and its eigenvector, normalized to sum to $1$, is the steady-state distribution: $$\mathbf{x}_\infty \approx (0.5594,\; 0.0909,\; 0.3497).$$ In the long run, about 56% employed, 9% unemployed, 35% out of the labor force — regardless of where the economy starts. (The unemployment fraction is the clean exact value $1/11 \approx 0.0909$.) This is the dominant-eigenvector limit of §25.6.1 with $\lambda_1 = 1$: the steady-state mode is preserved forever while the other two modes, scaling as $0.87^k$ and $0.45^k$, decay away. The economy is funneled onto the steady state no matter its initial composition.
Watch the funneling happen from two very different starting points — an economy that begins fully employed versus one that begins fully unemployed:
# Two opposite starting economies converge to the SAME steady state.
for label, x0 in [("all employed", np.array([1., 0., 0.])),
("all unemployed", np.array([0., 1., 0.]))]:
print(label)
for k in (1, 6, 24, 60):
print(f" month {k:>2}:", np.linalg.matrix_power(Pt, k) @ x0)
Starting from all employed, the distribution slides from $(0.92, 0.05, 0.03)$ at month $1$ through $(0.7275, 0.0902, 0.1824)$ at month $6$ and $(0.5731, 0.0909, 0.336)$ at month $24$, reaching $(0.5595, 0.0909, 0.3496)$ by month $60$. Starting from all unemployed, it climbs from below — $(0.5403, 0.1077, 0.352)$ at month $5$ — and lands at the identical $(0.5594, 0.0909, 0.3497)$ by month $60$. Two opposite shocks, one destination. The starting point is forgotten; the steady state is structural. This is the decoupling anchor of the chapter made economic: the transient memory of the initial condition lives entirely in the decaying modes, and those modes die.
The mixing rate: how fast, not just where
The destination is the eigenvalue $1$. The speed is the second-largest eigenvalue, here $\lambda_2 = 0.87$. This is the slowest-decaying transient mode, and it dictates how long the economy takes to forget a shock. After $k$ months, the deviation from steady state shrinks like $0.87^k$: the spectral gap $1 - \lambda_2 = 0.13$ is small, so convergence is slow. Concretely, $0.87^k$ falls below $0.01$ only when $k > \ln(0.01)/\ln(0.87) \approx 33$ months — nearly three years for a shock to substantially wash out. An economist reads this immediately: this labor market has long memory; a recession's footprint lingers for years, not months.
The lesson of the second eigenvalue is one of the most practically important in all of applied linear algebra. The dominant eigenvalue tells you the equilibrium; the gap to the next eigenvalue tells you the relaxation time. A market with $\lambda_2 = 0.4$ (large gap) snaps back from shocks in months; one with $\lambda_2 = 0.95$ (tiny gap) takes a decade. Same equilibrium, wildly different dynamics — and the difference is invisible in the steady state alone. It is only visible in the spectrum, which diagonalization hands you.
Why diagonalization, and not just simulation?
One could find the steady state by brute force — multiply $P_{\text{trans}}$ by a starting vector hundreds of times and watch it settle. Why diagonalize? Three reasons, each an instance of the chapter's themes:
-
Exactness and insight. Diagonalization gives the steady state as an eigenvector — an exact object, not a numerical approximation — and tells you why it is the steady state (it is the $\lambda = 1$ mode). Simulation gives a number; diagonalization gives an explanation.
-
The convergence rate for free. Simulation tells you the chain has converged only after it has; the second eigenvalue tells you the rate in advance, before running anything. You learn the relaxation time is $\sim 33$ months without simulating $33$ months.
-
Powers at any horizon. With $P_{\text{trans}} = PDP^{-1}$, the distribution at any month $k$ is $P D^k P^{-1}\mathbf{x}_0$ — one formula, evaluated instantly for $k = 12$ or $k = 1200$, no iteration. To plot the unemployment rate over a century, you diagonalize once and read off every point.
This is the same machinery that ranks the web (PageRank, Chapter 29 — a stochastic matrix the size of the internet, whose dominant eigenvector is the importance score of every page), projects national populations (the Leslie matrix of Exercise 25, where the dominant eigenvalue exceeds $1$ and the economy grows), and prices long-horizon financial transitions. Whenever a system steps forward by a fixed linear rule, its fate is written in the eigenvalues of that rule: the largest one names the destination or the growth rate, and the gap to the next names the speed. Diagonalization is the lens that reads the writing — turning a wall of repeated matrix multiplications into a short, legible story about modes, rates, and the long run.