Station Access Explorer#
Study area and data#
We looked at 79 BART and Caltrain stations across the Bay Area, dropping SFO and Stanford since they serve captive audiences rather than everyday riders. For each station, we counted five types of essential amenities within a half-mile walking radius: grocery stores, parks, clinics, pharmacies, and childcare. We then pulled census data on median income, car-free households, and racial composition to understand who actually relies on these stations.
The half-mile buffer is a standard walkability threshold in urban planning: it’s roughly a 10-minute walk. We classified stations as core (higher ridership, more central) or peripheral (lower ridership, suburban or terminus) to test whether location in the network predicts what you can access on foot. The table below shows a sample of the dataset with key fields for each station. Core vs peripheral classification was done using a consensus appraoch across 3 independent methods applied to FY2025 ridership data:
| Station | Agency | Type | Total Amenities | Unmet Need Index |
|---|---|---|---|---|
| 12th St. Oakland City Center | BART | core | 53 | 0.024 |
| 16th St. Mission | BART | core | 45 | 0.058 |
| 19th St. Oakland | BART | core | 39 | 0.073 |
| 24th St. Mission | BART | core | 50 | 0.034 |
| Antioch | BART | peripheral | 5 | 0.076 |
Data notes and scope decisions (click to expand)
Excluded stations. We dropped SFO/Millbrae (BART) and Stanford (Caltrain) from the analysis. SFO serves a captive airport population with fundamentally different trip purposes than everyday riders. Stanford serves a private university campus. Including either would distort both the ridership-based classification and the demographic joins, since their surrounding census tracts do not reflect the populations using those stations for daily needs.
OpenStreetMap completeness. OSM amenity coverage is uneven across the Bay Area. Urban core areas like downtown Oakland and San Francisco have dense, well-maintained OSM data. Peripheral areas like Gilroy, San Martin, and Antioch are more likely to have missing or outdated entries. This means our amenity counts for peripheral stations are likely conservative underestimates. The true gap between core and peripheral access is probably larger than we report. This pattern of missingness is not random: it is concentrated in the same lower-density, lower-income communities that our analysis identifies as underserved. This is closest to what the course calls dark data Type 1 (data that was never collected) rather than data that was collected and lost. We did not impute missing amenities. Imputation would require assumptions about OSM coverage rates we cannot verify, so we report counts as observed and flag this as a source of conservative bias.
ACS demographic joins. Three stations had census tract joins that returned null values for one or more demographic variables due to tract boundary edge cases. We dropped those fields for those stations in the correlation analysis but retained the stations for the permutation tests, which only require amenity counts. This affects the reported sample sizes in the Spearman correlation results (n=76 rather than n=79 for some variables).
What this analysis does not capture. Amenity presence is not the same as amenity access. A clinic within half a mile may have a six-week wait, accept only certain insurance, or have hours that conflict with transit schedules. A grocery store may be a dollar store with limited fresh produce. Our counts treat all amenities of a type as equivalent, which overstates access quality in some areas. This is a known limitation of OSM-based walkability analysis.
Core vs. Peripheral Station Classification#
Method |
Approach |
|---|---|
Percentile split |
Stations at or above the 50th percentile of average weekday ridership → core |
K-means clustering |
2-cluster k-means on log-transformed ridership; higher-centroid cluster → core |
Jenks natural breaks |
Single largest gap in the ridership distribution defines the boundary |
A station is labeled core if at least 2 of 3 methods agree. This resulted in 40 core stations and 39 peripheral stations across both agencies.
Peripheral: tend to be suburban, end-of-line, or low-frequency stops. These are places like Gilroy, San Martin, College Park on Caltrain, or the far East Bay and Antioch terminus on BART.
Core: these are high-density anchors: Embarcadero, Powell, 16th St. Mission, Palo Alto, and similar hubs with high ridership and strong surrounding activity.
| Group | Count | Mean Amenities | Median Amenities | Gini | Mean Unmet Need |
|---|---|---|---|---|---|
| All | 79 | 15.9 | 11.0 | 0.428 | 0.210 |
| Core | 40 | 21.9 | 16.5 | 0.410 | 0.217 |
| Peripheral | 39 | 9.8 | 9.0 | 0.315 | 0.204 |
Interactive station map#
Each bubble is sized by total amenity count and colored by station type — blue for core, orange for peripheral. Stations with a purple halo are in the top quartile of our unmet need index: high car-free household rates paired with low walkable amenities. Click any station to see its full breakdown on the right.
What to look for. Click Coliseum (East Oakland) and then click Montgomery St. (downtown SF). Both are classified as core stations by ridership. Coliseum has 3 amenities and an unmet need score of 0.801; Montgomery has 49 amenities and a score of 0.044. This single comparison illustrates why the core-peripheral label alone does not capture the full equity story.
Station amenity explorer#
Select any station from the dropdown to see its half-mile walking buffer and every nearby amenity plotted by type. The density difference between a downtown Oakland station and a peripheral East Bay station becomes immediately visible.
Try this comparison. Select 12th St. Oakland City Center, then switch to Antioch. 12th St. has 53 amenities across 5 categories. Antioch has 5 amenities, three parks and two grocery stores, with no clinics or pharmacies within walking distance. Antioch riders who are car-free and need a prescription filled or a clinic visit must take an additional transit trip.