Using the HMOG smartphone dataset to explore whether the way people hold and interact with their phones can reveal early tremor-like movement signatures — without any additional hardware or clinic visits.
Essential Tremor affects ~70 million people worldwide. Current diagnosis is subjective, infrequent, and misses day-to-day fluctuations. We asked: can a smartphone do better?
Relies on the Fahn-Tolosa-Marín (FTM) rating scale applied during infrequent clinic visits. It is subjective, catches only severe cases, and cannot track daily symptom changes. Patients are often diagnosed late, when treatment options are more limited.
Modern smartphones have high-rate accelerometers and gyroscopes. We repurposed the HMOG behavioural biometrics dataset — collected for user authentication — to investigate whether normal phone use encodes detectable tremor signatures.
Nine stages from raw CSV files to a 50-feature subject profile. Built incrementally — validated on one subject before scaling to all 99.
Load Accelerometer.csv, Gyroscope.csv, TouchEvent.csv, and StrokeEvent.csv for each session. Files have no headers — columns are manually labelled from the HMOG data schema.
Each sensor gives 3 values: X, Y, Z. We combine them into one magnitude signal using the Euclidean norm. This removes orientation dependence while preserving total movement energy — tremor shakes in all directions simultaneously.
We chop the 76,000-row signal into 4-second windows (400 samples at 100 Hz) with 50% overlap (200-sample step). This lets us detect tremor frequency patterns while not missing events at window edges. Tremor happens at 4–12 times per second — 4 seconds gives enough cycles to detect the rhythm.
For each 4-second window, we compute frequency-domain features using Welch's Power Spectral Density method, and time-domain statistics. The PSD ratio is the most critical — it compares energy in the 4–12 Hz tremor band to the 0.5–4 Hz baseline band. A high ratio = more tremor-like energy.
Features have very different scales — PSD ratio reaches 83, tremor power is ~0.003. Z-score normalisation rescales every feature to mean=0, std=1 so no single feature dominates K-Means due to its raw magnitude.
K-Means groups all 383 windows into 3 clusters based on feature similarity. It picks 3 random centres, assigns every window to the nearest centre, recomputes centres, and repeats until stable. Quality measured by Silhouette Score (−1 to +1).
Isolation Forest builds random decision trees. Normal windows need many splits to isolate. Anomalous windows are isolated in very few splits — they are genuinely unusual. The top 5% most isolatable windows are flagged as anomalous (label = −1).
16 additional features capture how the person physically interacts with the screen. Touch: tap location spread, contact size variability. Stroke: speed variability, length consistency. These capture the "handwriting signature" of steady vs unsteady interaction.
All window-level features are summarised (mean + std) across all windows per session, then averaged across all 24 sessions. This produces a single 50-feature row per subject — a stable "motor fingerprint" representing their movement patterns across months of recorded data.
All 99 subjects processed across all 24 sessions. Key improvements documented at every stage.
Adding gyroscope revealed an entirely new anomaly class: extreme rotation events. ET produces both translational shaking AND rotational twisting.
Cluster 2 (extreme rotation): 4/4 windows anomalous (100%). Cluster 1 (normal): only 3/334 flagged. The model correctly separates movement types.
Gyro std is 9× higher in anomalous windows — the strongest single discriminating signal. PSD ratio, accel std, and kurtosis all elevated.
Averaging across 24 sessions reduces PSD ratio variance by 55% and stroke speed variance by 58%. Single-session analysis is unreliable for tremor screening.
Heavy right skew. Most subjects 1–5, but a tail reaches 16. These outliers show consistently elevated tremor-band energy across all 24 sessions — not one-off spikes.
Remarkably flat 5.1–5.6% range — confirming a tight, reliable healthy baseline. Any ET patient showing rates consistently above ~7–8% would immediately stand out.
Subject-level clustering (k=3) produced a silhouette score of 0.21 — moderate but meaningful separation in a healthy population.
Seven tremor-relevant features, MinMax-normalised and averaged equally, produce a composite risk score per subject. Multi-feature scoring outperforms any single threshold.
Near-normal distribution centred at 0.32. Subject 501973 is a clear outlier at 0.504, followed by a gradual tail. Healthy population shows meaningful spread.
Subject 501973 leads by combining high gyro std + anomaly rate + stroke variability — not the highest PSD ratio, but consistently elevated across all 7 features.
Across all 99 subjects and ~2,376 sessions, anomaly rates ranged only 5.1% to 5.6% — a 0.5 percentage point spread. This tight range establishes a reliable healthy baseline. Any future ET patient consistently above 7–8% would immediately stand out as warranting further clinical assessment.
5.1% – 5.6% across all 99 subjectsAdding gyroscope features increased the silhouette score from 0.226 to 0.448 — a 98% improvement. It also revealed a new anomaly class: extreme rotation events where gyro std was 30× above average. ET produces both translational shaking AND rotational twisting — both must be captured for robust detection.
Silhouette: 0.226 → 0.448 (+98%)The #1 risk subject (501973) had only a moderate PSD ratio of 2.31 — not in the top 5 by that feature alone. It ranked first by combining consistently elevated gyro std, anomaly rate, and stroke variability simultaneously. This validates the composite scoring approach — no single threshold is sufficient.
Top risk score: 0.504 (subject 501973)PSD ratio variance dropped 55% when averaging across 24 sessions vs session 1 only. Stroke speed std variance dropped 58%. Single-session analysis is insufficient for reliable tremor screening — multiple sessions are essential for stable, representative feature estimates per subject.
PSD variance: −55% | Stroke variance: −58%Mean dominant frequency across all 99 subjects was 4.93 Hz — right at the boundary of the clinical tremor range of 4–12 Hz. Even healthy users produce low-amplitude movement in this range during normal phone use. ET patients would be expected to show much higher power concentrated at specific frequencies within this band.
Mean dominant freq: 4.93 Hz (tremor band: 4–12 Hz)The TREMOR12 iPhone app records accelerometer and gyroscope at 100 Hz and exports CSV files directly compatible with our pipeline. A healthy volunteer records 30–60 seconds of natural phone use. Our model should assign it a low risk score — confirming correct identification of normal motor behaviour. No clinic, no hardware needed.
Collect TREMOR12 recordings from ET patients (with FTM severity scores) and age-matched healthy controls. This enables supervised classification and direct correlation of model output with ground-truth clinical labels — transforming this exploratory study into a validated screening tool.
With labelled ET patient data, replace or augment the unsupervised pipeline with SVM, Random Forest, or gradient boosting — trained on the same 50-feature vectors established in this work. The feature engineering is already complete and validated.
Typing sessions involve rapid, precise finger movements expected to reveal stronger tremor signatures than reading. Stratify analysis by task type (reading, typing, map navigation) to identify which phone interactions are most sensitive to ET-like patterns.
Record 60 seconds of natural phone use with Sensor Logger, upload the zip file, and our pipeline will analyse your accelerometer and gyroscope data against the healthy baseline established from 99 subjects across 2,376 sessions.
Search for Sensor Logger on the App Store (iOS) or Google Play (Android). It is free. The developer is Kelvin Choi.
Free appOpen the app and enable only Accelerometer and Gyroscope. Turn everything else off — GPS, magnetometer, audio, camera. Set sample rate to 100 Hz.
100 Hz onlySit down, hold your phone naturally in one hand like you are reading. Keep as still as possible. Hit record and wait 60 seconds. Then stop.
Sit stillIn Sensor Logger, tap the recording and choose Export as ZIP. Then upload that zip file below. Results appear in seconds.
Upload zipOr click to browse for the Sensor Logger export zip
Only your Accelerometer.csv and Gyroscope.csv are used. No data is stored.