Felix Lennert
  • Home
  • About
  • Selected Work
  • Publications
  • CV
Boston Marathon Strava — Interactive dashboard
Gear, finish times, and relative effort (~1,000 scraped efforts, 2025)
  • Performance
  • Shoes
  • Watches
  • Times, effort & matching
  • Methods

Runners (full marathon, 2025)

1,179

Median finish time

2.75 h

With shoe + watch data

564 shoe · 1,159 watch

Halfway rank vs. finish rank
Finish time distribution

A very fit subsample — median around 2h45; BQ times are often ~3h30 depending on age/gender. A few runners started fast relative to their finish (red cloud upper-left).

Shoe brands (interactive)
Models within brand (broad categories from LLM-assisted cleanup)
Top shoe combinations (% of shoe sample)
Shoe Share (%)
nike alphafly 31
nike vaporfly 16
adidas adios pro 12
asics metaspeed 10
saucony endorphin 9
hoka rocket 2
nb fuelcell supercomp elite 2
on cloudboom 2
puma deviate 2
puma fast-r 2
Sample size
Metric Value
Runners with shoe brand 564
Watch brand × model category (hover segments)
Garmin Forerunner — top model numbers
forerunner n
245 126
965 101
255 97
955 89
265 62
945 52
55 37
935 29
165 24
235 21
Finish time by Forerunner series
Finish time by shoe brand
Finish time by watch brand
Relative effort by shoe brand
Relative effort by watch brand

Matching setup: MatchIt nearest-neighbor on elapsed time (±5 min caliper), Nike vs. Adidas/Asics/Saucony, Garmin-only to reduce HR-device heterogeneity. Original analysis: no significant paired difference in RE (large p).

Paired t-test (Nike vs. other | matched): t = -0.30, df = 58, p = 0.764, mean ΔRE = -7.75.

Data harvest. Segment 12666537 on Strava (~first half of the Boston course); Selenium for pagination and activity pages; random delays between requests. Per-activity scrape pulled overview stats, device block, and shoe block into strava_results.csv.

Cleaning. R/tidyverse: parse inline stats, keep marathon distance on race day 2025-04-21. Watches reduced to brand + coarse model family; shoes parsed for brand, mileage cap at 1,000 km, brands with n ≤ 5 dropped. Shoe models use a precomputed LLM-assisted map in boston_shoe_models.csv (see project folder).

Matching. MatchIt nearest neighbor on elapsed time (5-minute caliper), Nike vs. Adidas/Asics/Saucony among Garmin wearers.

  • Garmin dominates watches; Forerunner is the workhorse line. Nike leads shoe brand counts in this fast cohort.
  • Relative Effort is noisy (zones + subjective input + optical HR). Treat cross-brand RE comparisons as exploratory.
  • Prospective work: harmonize HR sensors (chest strap), larger N, cleaner shoe ontology — the dashboard structure makes it easy to drop in new CSVs and re-freeze.

What this is. Peak thesis-avoidance turned into a dashboard: ~1,000 Strava activities from runners who hit the first-half Boston segment fastest — scraped for gear (watch, shoes), finish time, and Strava Relative Effort.

How it was collected. Segment 12666537 on Strava; Selenium for pagination and activity pages. Full marathon distance and 2025 race date filters keep finishers only. This is a fast, non-representative slice of the field.

Caveats. RE mixes heart-rate zones and subjective perceived exertion; shoe text is user-entered; HR accuracy varies by watch. Selection bias: this sample is the fastest ~1k on the first-half segment, not a random draw from all Boston finishers.

← Long-form article · Selected work