How NE-PULSE decides
In simple words
An earthquake sends two kinds of waves through the ground. The faster P wave arrives first; the slower, stronger S wave follows. Both spread outward from one point at several kilometres per second.
A phone lying on a table moves a tiny bit when these waves pass. Its motion sensor notices. So does it notice a door slamming, someone typing on it, or being picked up. One phone alone cannot tell the difference reliably.
Many phones can. If phones across a city start moving in the order a wave from one point would reach them, and far more of them than could by chance, that is strong evidence of an earthquake. NE-PULSE measures exactly that, and shows every number it used.
Words used on this site
- P wave
- the first, faster seismic wave (≈ 6 km/s), a push-pull motion.
- S wave
- the second, slower wave (≈ 3.4 km/s), a side-to-side motion; usually stronger.
- Epicentre
- the point on the surface above where the earthquake started.
- Intensity (MMI)
- how strongly shaking is felt at a place, from I (not felt) to X (extreme).
- PGA
- peak ground acceleration, the strongest acceleration measured, in m/s² or cm/s².
- STA/LTA
- the ratio of short-term to long-term average motion. A sudden rise means something started.
- Area / unit
- a 1 km square. All phones in it count as one independent witness.
- p-value
- the probability that the pattern happened by pure coincidence. Smaller is stronger evidence.
All detection runs on the server, on the raw samples phones send, with deterministic code. The same code runs in the simulator used to test it. The full derivation, with every constant and its source, is in docs/MODEL.md of the repository.
1 · Each phone
Samples arrive with irregular browser timestamps. They are resampled to a 50 Hz grid shared by all phones, then band-passed with a 4th-order Butterworth high-pass at 0.5 Hz and a 2nd-order low-pass at 12 Hz. The high-pass removes gravity whatever the phone's orientation, so only the vector magnitude of the three axes is used.
|a|(t) = √(ax² + ay² + az²) after band-pass, m/s²A classic STA/LTA detector (1 s / 30 s) watches the energy |a|². A trigger needs:
STA / max(LTA, A_min² / R) ≥ R = 4 and √STA ≥ A_min A_min = max(0.02 m/s², 2 × measured sensor resolution)The onset is refined with Maeda's AIC picker, and 2.56 s later the pick is classified. It is rejected if the phone fell (|a| < 0.3 g), turned by more than 2° (picked up), was already moving, or the motion was a spike (5–95 % energy duration under 0.4 s, or crest factor above 8). Phones only count after being still for 30 s. A phone that is walked around, held in the hand or kept in a pocket never becomes a sensor.
2 · Each area
Phones are grouped into 1 km squares. A square votes when at least a third of its listening phones trigger within 2 s, so one building counts once. Each square's background vote rate is learned from its own history, starting from a deliberately pessimistic 2 votes per hour:
λ_u = (α₀ + votes) / (β₀ + listening time) α₀ = 1, β₀ = 1800 s3 · The network
Votes are located by grid search for a point source at 8 km depth with IASP91 upper-crust velocities (P 5.80, S 3.36 km/s). Each vote may be a P or an S arrival. Hypotheses are scored with a robust kernel, so outliers are ignored:
score = Σ_inliers 1 − (rᵢ/τᵢ)² rᵢ = tᵢ − t₀ − Rᵢ/v τᵢ = 3 √(σ_pick² + σ_clock² + σ_model²)Significance: how likely is it that at least k of the M sensitive squares inside the footprint triggered by chance inside their predicted windows? With pᵤ = 1 − exp(−λᵤ wᵤ), the exact Poisson-binomial tail is computed and multiplied by the number of independent hypotheses searched (look-elsewhere effect):
p = P(K ≥ k), K ~ PoissonBinomial(p₁…p_M) p_adj = min(1, p × N_space × N_time)The model assumes squares are independent. Correlated noise breaks that assumption, so it is defended separately. Silent squares inside the footprint count against an event. Quiet phones near places reporting strong shaking contradict it: a person shaking a phone, or a group doing it on a countdown, cannot make the ground move. Triggers the source cannot explain lower its consistency. A plane-wave fit catches fronts moving at the speed of sound or traffic. Evidence must come from several networks and from phones with a streaming history.
Levels
| Candidate | Corroborated | Confirmed | |
|---|---|---|---|
| Independent 1 km areas | … | … | … |
| Chance coincidence (adjusted p) | … | … | … |
| Sensitive areas in the footprint that triggered | … | … | … |
| Nearby triggers explained by the source | … | … | … |
| Quiet phones that should have felt the shaking (rejects deliberate shaking) | … | … | … |
| Plane-wave sweep slower than (rejects sound and traffic) | … | … | … |
| Distinct internet networks | … | … | … |
| Spread of triggered areas | … | … | … |
| Established phones (≥ 12 h old, ≥ 4 h streamed) | … | … | … |
| Share of established phones | … | … | … |
| Travel-time residual RMS | … | … | … |
| Criteria must hold continuously for | … | … | … |
Read live from the running server. Changing a threshold changes this table and the configuration hash on the network page.
MMI
MMI = 1.78 + 1.55 log₁₀(PGA) if log₁₀(PGA) ≤ 1.57 MMI = −1.60 + 3.70 log₁₀(PGA) otherwise (PGA in cm/s², Worden et al., 2012)What it cannot do
- Browsers stop sharing motion when the screen is off or the page is hidden. Continuous coverage needs a native app.
- Phones resolve roughly light shaking and above (intensity III–IV at best). Small or distant earthquakes will be missed.
- A phone's own vibration alert looks like shaking to that phone. Only agreement between areas filters it out.
- Thresholds were chosen from physics and simulation. Real detection rates must still be measured against catalogue earthquakes.
- It is too slow and sparse to be an early-warning system, and it does not claim to be one.