A Revealed-Preference Ranking of U.S. States

Which state is the best to live in? All the other rankings will give you answers based on arbitrarily weighting various factors. I don’t do that. I base these rankings on migration data, that is, revealed preferences. As such, these rankings tell you which states people actually like, based on how they vote with their feet, rather than which states I think people will like.

Choose a population

Age range

Education selections include only adults aged 25 or older. Children’s moves generally reflect household choices.

Loading migration data…

The main result

Revealed desirability

Scores show each state's revealed desirability relative to the average state: 2× means twice as desirable, and 0.5× means half as desirable.

The companion view

Migration affinity

Pair affinity measures how strongly two states exchange movers after accounting for origin population and destination desirability.

How these rankings work

There are lots of rankings of the best states, cities, and countries to live in. Unfortunately, they’re all trash. They’re indices: someone picks a bunch of low-level statistics (e.g., life expectancy, carbon emissions, child dental visits, foreign-born population, museums per capita, patent creation rate) and combines them into a score. Both the statistics and their weights are chosen arbitrarily. Why does education count for 15.79% and the economy for 12.88% in the U.S. News Best States ranking? Why do GDP size, GDP growth, and GDP per person all feed into the same Economics score in Oxford Economics’ Global Cities Index? Do I even care about university quality, or trust how it’s measured? Face it: location rankings, at least the way they’re currently implemented, are all terrible.

So, we turn to a concept from economics that has never failed us before: revealed preferences. Instead of deciding how much each statistic should matter, why not look at where people actually move? Someone moving from location A to location B is evidence that, between A and B, they prefer B, whatever their reasons may be. We don’t need an explicit weight for crime rates or the economy. If crime rates matter, people will move toward low-crime areas. If the economy matters, people will move toward places with good economies. If the weather matters, people will move toward places with good weather. We don’t need to explicitly weight them, or even define them. We can just look at where people move, and places where people end up migrating to are, by definition, good places to live.

Raw migration counts are misleading, though. If A has ten times B’s population, equal per-person moving rates in both directions produce ten times as many moves from A to B as from B to A. We need to account for the number of people who could move from each origin. We also need to allow some pairs of states to exchange unusually many movers regardless of which one is more attractive.

For our selected period (2022–2024), I use this Poisson working model for survey-weighted flows from the American Community Survey:

\[F_{ij}\sim\operatorname{Poisson}(N_i A_{ij}S_j), \qquad A_{ij}=A_{ji}, \qquad \sum_j\log S_j=0.\]

Here, $F_{ij}$ is the estimated flow from prior state $i$ to current state $j$. $N_i$ is the estimated population in the origin state, so a larger state has more potential movers. $A_{ij}$ captures how strongly states $i$ and $j$ are connected, regardless of direction. $S_j$ captures state $j$’s pull as a destination, which we use as a measure of the state’s overall desirability. The final constraint sets the geometric mean of the $S$ values to 1, giving them a common reference point.

I estimate two things with this model:

  1. Revealed desirability: Compare the two directions of migration within each state pair, adjusting for origin population. Conditioning on a pair’s total two-way flow makes the shared affinity values ($A_{ij}$ and $A_{ji}$) cancel out, leaving information about the relative $S$ values.
  2. Migration affinity: Given those $S$ estimates, use each pair’s total two-way flow to estimate its symmetric $A_{ij}$.

It is also possible to view the results for a filtered population, for example, people with college degrees aged 25–30. For a subgroup $g$, I extend the model to

\[F_{ijg}\sim\operatorname{Poisson}(N_{ig}M_gA_{ij}R_{ijg}S_{jg}).\]

$N_{ig}$ is the subgroup population in origin $i$, and $S_{jg}$ is destination $j$’s pull for that group. $M_g$ accounts for the group moving interstate more or less often overall. $R_{ijg}=R_{jig}$ allows a particular state pair to be more or less connected for that group than it is in the all-person network. I center the $R$ values around 1 and shrink them strongly toward 1; sparse subgroup desirability scores receive gentler shrinkage toward the all-person scores.

Each demographic effect is fitted separately. When you combine filters, the effects are added on the log scale, so the result is an approximation for that combination rather than a direct fit to everyone in the intersection. Maybe when this site is no longer static and I don’t have to worry about combinatorial explosion, you’ll be able to get the exact fits.

The selected-state inflow/outflow ratio divides weighted arrivals by weighted departures. Unlike $S$, it does not adjust for population size or pair affinity. Filtered ratios are stabilized toward the all-person ratio; combined filters approximate the intersection by adding marginal effects.