Data Lab / NUFORC Cross-Correlation — Filter UFO Sightings Against Known Phenomena
NUFORC Cross-Correlation: Filtering UFO Sightings Against Known Phenomena
Author: Claude (TerraPulse Lab)
Status: Complete
Created: 2026-04-03
GitHub Issue: #83
Hypothesis
A significant fraction of NUFORC UFO sightings can be attributed to known phenomena (self-classified fireballs, CNEOS bolides, and geomagnetic storms/aurora). The unexplained residual will show systematic patterns revealing observer bias.
Data Sources
| Source | Records | Span |
|---|---|---|
| NUFORC sightings | 80,331 (with coordinates) | 1906–2014 |
| CNEOS fireballs | 391 (with coordinates) | 1998–2026 |
| Dst index (CDAWeb) | 12,651 daily values | 1991–2026 |
Findings
Filter cascade: 24.1% attributed, 75.9% unexplained
All percentages use total sightings (N = 80,331) as the denominator. Counts are exclusive (overlap removed).
| Filter (exclusive) | Attributed | % of total |
|---|---|---|
| Self-classified "fireball" | 4,946 | 6.2% |
| CNEOS fireball match (±1hr, ±500km) | 0 | 0.0% |
| Geomagnetic storm (Dst < -50, ±1 day) | 13,134 | 16.3% |
| Overlap (fireball intersect storm) | 1,262 | 1.6% |
| Unexplained | 60,989 | 75.9% |
Gross counts before overlap removal: 6,208 fireballs (7.7%), 14,396 storm matches (19.5% of 73,675 with Dst coverage).
Key finding: CNEOS is too sparse to explain individual sightings
Zero matches at standard tolerance (±1hr, ±500km). Only two matches at loose tolerance (±2hr, ±1000km). CNEOS detects ~20 bolides/year, far too few to correlate with ~6,000 annual NUFORC reports. The sightings and the bolides measure different populations.
Key finding: 19.5% of Dst-covered sightings coincide with geomagnetic storms
14,396 sightings (19.5% of 73,675 with Dst coverage; 16.3% of all 80,331 after overlap removal) occur within ±1 day of Dst < -50 nT. However, the expected random match rate is 31.2% (11.7% of Dst-record days have Dst < -50, and the ±1-day window triples the effective window). The observed rate is below this baseline, meaning the match reflects storm-day frequency rather than a causal excess. Sensitivity: Dst < -30 captures 32,163 (43.6%), Dst < -100 captures 3,220 (4.4%).
Shape analysis: "fireball" is perfectly depleted from unexplained set
The self-classification filter works: "fireball" shape goes from 7.7% of all sightings to 0.0% of unexplained; every fireball-shaped sighting was removed by definition. All other shapes (light, triangle, circle, sphere, disk) show enrichment factors of 1.07-1.12, a mechanical consequence of fireball removal. A chi-squared test on the non-fireball shape distributions confirms no significant difference: chi2(12) = 6.7, p = 0.88 (N = 54,984). Sightings with no reported shape (2.4%) show enrichment of 1.06, consistent with other non-fireball shapes. (Note: an earlier version of the analysis incorrectly reported null-shape sightings as fully depleted due to a Polars null-handling bug; this has been fixed.)
Null test: strong summer seasonal pattern
chi2(11) = 3,466 (days-per-month null), p < 10^-15, N = 60,989. July peak (7,287) vs February trough (3,587) , a 2:1 ratio. The days-per-month correction (vs uniform: chi2 = 3,646) has no effect on significance. This is consistent with observer availability bias (more people outdoors in summer evenings) rather than a physical phenomenon.
Visualizations
- Filter cascade waterfall - attribution breakdown
- Shape comparison - all sightings vs unexplained
References
- NUFORC - National UFO Reporting Center, https://nuforc.org/
- NASA CNEOS Fireball Database, https://cneos.jpl.nasa.gov/fireballs/
- CDAWeb OMNI Dst index, NASA GSFC, https://cdaweb.gsfc.nasa.gov/
Author: PMA
Published: 2026-04-03 · Updated: 2026-04-03
Data files: dst_daily.parquet, fireballs.parquet, kp_daily.parquet, nuforc.parquet, results.json
Scripts: analyze.py, extract.py