U.S. Airport Sentinel Network
2025

I built this project around a simple question: if the United States could monitor only a few airports for a new disease, which ones should it choose?
It was my final project for CS166 at Minerva University.
My first guess was betweenness centrality. Airports that sit on many shortest paths looked like natural sentinels. After 10,500 stochastic epidemic runs, that guess was wrong. Airports with the largest outgoing passenger flows detected outbreaks around day 30. Betweenness took until day 67. Random placement took until day 86.
The 56-day gap came from moving the same surveillance capacity. It did not require more tests or more staff.
The model
I combined 2024 domestic traffic data from the U.S. Bureau of Transportation Statistics with airport and route records from OpenFlights. The resulting graph has 620 airports. Each airport is a node, each direct route is an edge, and expected passenger movement sets the edge weight.
The graph matters because "busy" is only one way for an airport to be important. An airport can handle many passengers, connect otherwise distant parts of the network, or send a large flow of people outward. I tested those properties separately.
Each airport also runs a stochastic SEIRD model. Its population moves between susceptible, exposed, infectious, recovered, and deceased states. On every simulated day, passengers travel first. Local disease transmission happens after they arrive.
Travel is probabilistic. The number of passengers on a route is drawn from a Poisson distribution, and their health states are sampled from the population at the origin airport. This lets an exposed or infectious traveler start a distant outbreak before the origin looks badly affected.
I varied the number of sentinel airports, the screening policy, and the chance that a traveler would be tested. I sampled uncertain epidemiological parameters, including an R0 between 2.0 and 3.0, and repeated each setup with different random seeds. The finished study contains 10,500 epidemic runs and almost 1.9 million daily observations.
Where the sentinels went
I compared five placement strategies: random airports, total passenger volume, outgoing passenger flow, betweenness centrality, and PageRank. Each strategy received the same surveillance budget.
Outgoing flow, PageRank, and total passenger volume all detected the outbreak around day 30 under uniform random screening. Random placement needed another 56 days on average.
Betweenness was the interesting miss. I expected it to perform well because it finds airports that lie on many shortest paths. The disease did not travel along shortest paths with equal probability. It followed passenger volume. An airport could be structurally central and still see too few infected travelers to make a good early sensor.
Placement bought more time than testing
Increasing the probability of testing a traveler from 5% to 20% moved the average detection day from 58 to 46. That bought 12 days. Moving the same capacity from random airports to high-flow airports bought 56.
The high-flow strategy selected ATL, ORD, DEN, DFW, DTW, MSP, LAS, CLT, IAH, and PHL. Together they handled about 22% of domestic passenger flow in the data. The exact list should change as traffic changes. The graph can be rebuilt with newer traffic data, then limited surveillance can move to the airports most likely to encounter an outbreak early.
What early warning can do
The model measures detection, not epidemic control. Low-intensity screening removed fewer than 1% of infected travelers, so the final epidemic size and mortality barely changed across strategies. That let me isolate the value of information.
At first, the unchanged epidemic curves looked like a disappointing result. They clarified the purpose of a sentinel network. A detection signal creates time. Public health officials still have to use it to expand diagnostic capacity, prepare hospitals, procure supplies, sequence samples, or communicate risk.
The results also contained a statistical trap. Across all runs, earlier detection appeared to be associated with higher mortality. The relationship disappeared when I compared epidemics with similar R0 values. Faster diseases reached the sentinels sooner and killed more people, so the aggregate data produced a Simpson's paradox. Detection was correlated with severity because both depended on R0.
What I would change
The model makes several strong assumptions. It uses 2024 traffic as a stand-in for mobility before a pandemic. It estimates the population served by each airport from passenger volume. It also leaves out behavioral changes, government restrictions, and any adaptive response after the first detection. The results compare placement strategies inside a controlled model. They are not a forecast.
I also simulated more than the original question required. Since I cared about the first positive test, many runs could have stopped there. I carried every run through 180 days instead. The study took about ten hours on an M3 machine. The extra compute revealed that detection times could differ sharply even when the epidemic curves later converged on nearly the same outcome.
A second version would make the response adaptive. The first positive test would trigger additional testing, hospital preparation, or targeted travel measures. That would let the model connect the warning time measured here to the decisions made with it.