Armor Pro Research · Data and code
Data and Code: Hurricane Occurrence Along the U.S. Gulf and Atlantic Coasts, 1900-2025
Every table, figure, and number in the report regenerates from public NOAA data and the code below. Released under CC BY 4.0.
This page is the reproducibility record for the 2026 answer and the full report. Everything below is derived from NOAA's public best-track archive with the code in the package; nothing depends on proprietary data.
Reproducibility package: hurricane-occurrence-1900-2025-reproducibility.zip (2.5 MB): all analysis and figure code, all 42 derived tables, the transcribed Keim et al. (2007) return periods, source checksums, and a run script. Add the IBTrACS and RONI source files (links below) and run_all.sh regenerates every result. License: CC BY 4.0. Cite as: Armor Pro Windows & Doors (2026). Hurricane Occurrence Along the U.S. Gulf and Atlantic Coasts, 1900-2025. armorprowindows.com/research.
Source data (public, not redistributed here)
| Source | What we use | Where to get it |
|---|---|---|
| NOAA/NCEI IBTrACS v04r01, North Atlantic | HURDAT2 best track through the 2025 season: positions, 6-hourly winds, status, landfall markers, quadrant wind radii (from 2004). File ibtracs.NA.list.v04r01.csv, SHA-256 ca4a6ed185bd1c456c60a8ab9afbba098d27ca4f71db189be2d682588f82a197 |
ncei.noaa.gov/products/international-best-track-archive |
| NOAA CPC Relative Oceanic Niño Index (RONI) | Monthly values, 1950-present; seasons classified by ASO value with NOAA's five-season persistence rule | cpc.ncep.noaa.gov/products/analysis_monitoring/enso/roni |
| NOAA/AOML continental U.S. hurricane chronology | Reconciliation of the 1971-1990 landfall-marker gap; regional record-reliability dates | aoml.noaa.gov/hrd/hurdat/All_U.S._Hurricanes.html |
| GSHHS/GSHHG shoreline; U.S. county boundaries | Coastal mesh construction; county and state polygons for the Monroe/Miami-Dade and Florida checks | via basemap-data-hires |
| NOAA NWS NHC-6 (Blake et al. 2011), Table 12 | HURISK return periods for the eleven-community comparison | nhc.noaa.gov/pdf/nws-nhc-6.pdf |
| Keim, Muller & Stone (2007), Fig. 5 | 45-site return periods, transcribed (included in the package as data/kms2007_fig5_return_periods.csv) |
J. Climate 20, 3498-3509 |
Derived tables (CSV)
All tables carry full coordinates. "Optimized" hotspot tables list the highest-scoring 50 n mi neighborhoods after 200-km non-maximum suppression; named-place tables use fixed community coordinates.
The catalog and the fields
| File | Contents |
|---|---|
| us_hurricane_landfall_catalog.csv | The strict landfall catalog: every HURDAT2 "L" crossing 1851-2025 with season, storm, time, position, wind, source, and the strict hurricane-status flag; 376 rows, 296 storms, including the twelve reconstructed 1971-1982 crossings |
| us_L_markers.csv | The raw landfall-marker rows extracted from IBTrACS before reconstruction |
| candidate_points_coarse.csv | The 33,916-point coastal mesh: land grid, shoreline vertices, Keys/Dry Tortugas points |
| landfall_fields_coarse.csv | L50 counts at every mesh point for 1851-2025, 1900-2025, 1950-2025 |
| landfall_fields_with_enso.csv | L50 counts at every mesh point by ENSO phase, 1950-2025 |
| fixed_radius_fields_coarse.csv | H50 and M50 counts at every mesh point, 1900-2025 |
| wind_radius_fields_coarse.csv | R64 and R34 envelope counts at every mesh point, 2004-2025 |
Hotspots and named places
| File | Contents |
|---|---|
| landfall_hotspots_1900_2025.csv, 1851_2025, 1950_2025 | Optimized L50 hotspots by window |
| landfall_hotspots_el_nino_1950_2025.csv, la_nina, neutral | Optimized L50 hotspots by ENSO phase |
| h50_hotspots_coarse.csv, m50_hotspots_coarse.csv | Optimized H50 and M50 hotspots, 1900-2025 |
| r64_hotspots_2004_2025.csv, r34_hotspots_2004_2025.csv, r64_hotspot_storm_lists.csv, r64_shrink85_hotspots.csv | Envelope hotspots, contributing storms, and the 85% radius-shrink sensitivity |
| named_place_landfall_counts.csv | L50 at named communities by window and ENSO phase |
| named_place_fixed_counts.csv | H50, exposed years, and M50 at named communities |
| named_place_wind_radius_counts.csv | R64 and R34 at named communities with contributing storms |
| hotspot_poisson_intervals.csv | Exact Poisson intervals for the leading hotspots under each metric |
Uncertainty on the ranking
| File | Contents |
|---|---|
| bootstrap_argmax_wins.csv, bootstrap_margins.csv, bootstrap_max_value.csv | Season block bootstrap with re-optimization (2,000 replicates): how often each hotspot complex holds the maximum, margins between leaders, and the distribution of the leading count |
| position_perturbation_wins.csv, position_perturbation_summary.csv | Landfall positions perturbed by era-dependent uncertainty (60 / 20 / 20→12 / 12 n mi), alone and jointly with season resampling (1,000 replicates each) |
| dispersion_and_point_intervals.csv | Variance-to-mean dispersion tests and season-bootstrap intervals at headline locations |
| landfall_radius_sensitivity.csv, h50_radius_sensitivity.csv | Optimized-hotspot counts at 25, 50, 75, and 100 n mi |
ENSO
| File | Contents |
|---|---|
| enso_phase_years_1950_2025.csv, roni_aso_phases.csv | Season-by-season ASO RONI value and phase assignment |
| landfall_enso_aggregate.csv | Strict landfalls per phase, mean per season, share of seasons with ≥1 and ≥2 |
| enso_rate_ratios.csv | Pairwise phase rate ratios with exact conditional 95% intervals |
Comparisons with the earlier climatologies and NOAA
| File | Contents |
|---|---|
| kms2007_site_comparison.csv, kms2007_comparison_summary.csv | Our three tiers at Keim et al.'s 45 sites over their 1901-2005 window and ours, against their published return periods |
| nhc_exact_location_comparison.csv, nhc_county_comparison.csv, nhc_window_comparison.csv | Empirical H50/M50 at the eleven NHC-6 communities against HURISK values, at exact points and county support, across four windows |
| county_vs_point_h50.csv, florida_multihit_sr192.csv | County-integrated versus point H50 for Monroe and Miami-Dade; the Florida multi-hit statistic against Elsner and Kara (1997) |
Reproducing the results
The package's run_all.sh runs eleven stages in order: mesh and center-passage fields; the landfall catalog and ENSO-conditioned fields; wind-radii envelopes; report tables and comparisons; the ranking bootstrap; position perturbation; the Keim et al. comparison; the NHC-window comparison; the R64 radius-shrink sensitivity; the county and Florida checks; then the figures. Python 3.11+ with pandas, numpy, scipy, geopandas, shapely, pyproj, matplotlib, and basemap (with basemap-data-hires). Random seeds are pinned (season bootstrap 20260815; position perturbation 20260816). Every stage asserts that it reproduces the published maxima before writing output.
Definitions used throughout the tables
L50: a hurricane-strength (≥64 kt) coastline crossing within 50 n mi of the point. H50: a hurricane center passing within 50 n mi at ≥64 kt. M50: at ≥96 kt. R64 / R34: the analyzed 64-kt / 34-kt wind envelope covers the point (2004-2025; R34 counted while the storm is a hurricane). Every metric counts a storm at most once per location. Mean interval = window years / count. Intervals in the tables are exact Poisson bounds unless labeled bootstrap. Units follow the source record: knots and nautical miles (1 kt = 0.514 m s⁻¹; 1 n mi = 1.852 km).