We introduce the Takens-Laplacian: a spectral graph construction for longitudinal health data where visit-similarity edges are computed over delay-embedded trajectory vectors rather than instantaneous observations. Combined with a per-subject constitution proxy and nonlinear decoding, the resulting Graph Resonance Model (GRM) predicts future health state changes on a persistence-free evaluation target with R²=0.49 on real wearable data (54 subjects, Fitbit Sense) and R²=0.52 on a synthetic benchmark. Predicting next-day "bad health days" (composite score above median) reaches AUC=0.83, and treatment response shows significant state-dependence (η²=0.37, p<0.05). The trajectory signal replicates across three datasets. We report both positive results and systematic negative findings from 12 ablation experiments.
Wearable health monitoring produces daily multi-channel time series (heart rate, sleep, activity, stress). We ask whether spectral graph methods — where each patient visit is a node and edges encode similarity — can learn a latent health manifold that predicts future state changes.
The key challenge: on standard next-day prediction targets, persistence (yesterday ≈ today) dominates all methods. We show this is a target design problem. On persistence-free targets (smoothed score deltas), trajectory- aware spectral methods reveal signal invisible to snapshot approaches.
Contributions:
- The Takens-Laplacian graph construction (10x GRM improvement over snapshot graphs)
- Three-component architecture: trajectory + constitution + topology
- Validation on synthetic + two real wearable datasets
- Systematic ablation documenting 12 negative results
Instead of using only today's measurements, concatenate today + yesterday +
day before into one "fat" vector: x^(k)_{i,t} = [x_today, x_yesterday, x_2days_ago].
This captures not just where the patient is, but which direction they are
moving (getting better? getting worse? stable?). Default window k=3.
Average of everything we've seen for this patient so far:
μ_{i,t} = (1/t) Σ x_{i,s}. A simple running average that estimates the
patient's stable "normal" — their personal baseline heart rate, typical sleep
pattern, usual activity level. Uses only past data (no future leakage).
Recovers R²=0.93 of true constitution on synthetic data.
Build a network where each patient-day is a dot, and dots are connected when they represent similar health trajectories (not just similar symptoms today). Two visits get linked only if the patients had similar symptoms AND were changing in similar ways over the prior days.
Mathematically: KNN graph on delay-embedded vectors with Gaussian weights,
plus edges for consecutive days (same patient) and shared treatment context.
The graph Laplacian is decomposed into smooth "modes" (eigenvectors) that
describe the broadest patterns of health variation across the population.
GRM weighting: g_m = 1/(1+ρ²λ_m) with ρ=0.1 (less smoothing preserves
sharp transitions between health states).
The model sees three things about each patient-day:
- Where they are heading (trajectory: today + recent history)
- What their normal looks like (constitution: personal running average)
- Where they sit on the health landscape (GRM: graph coordinates)
These are concatenated and fed to either Ridge regression (fast, linear) or Random Forest (nonlinear, better on real data).
Main target: how much will the patient's 3-day-averaged health score change over the next h days? A "nothing changes" prediction always scores R²≈0, so any positive R² is genuine predictive signal.
For patients not seen during training: find their nearest neighbors in the training graph using the same trajectory features, then approximate their graph coordinates (Nyström extension). This avoids recomputing the full eigendecomposition (O(N³) for N training visits) — the projection costs O(M·K) per new visit, where M is the number of KNN neighbors queried and K is the number of retained modes. For a training graph of 10,000 visits with M=12 neighbors and K=16 modes, projecting a new patient-day takes ~192 dot products regardless of training set size.
The input features must match what the graph was built from — using snapshot features for a trajectory-built graph silently produces garbage (Section 5.3).
| Dataset | N | Days | Channels | Source |
|---|---|---|---|---|
| Synthetic | 200 | 120 | 15 | Switching state-space, 7 regimes |
| PMData | 16 | 150 | 21 | Fitbit + wellness + training load |
| LifeSnaps | 54 | 88 (median) | 18 | Fitbit Sense + EMA + Big Five |
LifeSnaps quality-filtered: removed binary mood columns, physiology-only dysregulation score, subjects with ≥40 days and ≥50% core feature fill.
Synthetic (transductive):
| Model | h=1 | h=7 | h=21 |
|---|---|---|---|
| Persistence (Δ=0) | 0.000 | 0.000 | 0.000 |
| Snapshot GRM Ridge | 0.022 | 0.130 | 0.183 |
| Takens-Laplacian GRM Ridge | 0.229 | 0.199 | 0.234 |
| Takens Ridge | 0.517 | 0.368 | 0.431 |
| Takens+prior+GRM Ridge | 0.524 | 0.404 | 0.470 |
LifeSnaps (transductive, quality-filtered):
| Model | h=1 | h=7 |
|---|---|---|
| Persistence (Δ=0) | -0.001 | 0.000 |
| PCA Ridge | 0.013 | 0.018 |
| Takens RF | 0.460 | 0.440 |
| Takens+prior RF | 0.484 | 0.445 |
| Takens+prior+GRM RF | 0.489 | 0.422 |
PMData (transductive):
| Model | h=1 |
|---|---|
| Takens RF | 0.379 |
| Takens+GRM RF | 0.500 |
Trajectory signal replicates across all three datasets. Constitution proxy adds +6% at h≥7. GRM adds +0.05 on LifeSnaps, +0.12 on PMData.
We define a "bad day" as a day when the composite health score (built from resting heart rate, sleep efficiency, daily steps, and sleep duration) falls above the population median — meaning the person is doing worse than their typical day. This is not a clinical diagnosis; it is a data-derived threshold.
AUC measures how well the model separates "bad days" from "normal days" (0.5 = coin flip, 1.0 = perfect separation).
| Dataset | Model | AUC |
|---|---|---|
| Synthetic | GRM+lag Logistic | 0.656 |
| LifeSnaps | GRM+lag Logistic | 0.829 |
| PMData | GRM+lag Logistic | 0.716 |
Kruskal-Wallis test on post-treatment score change, clustered by embedding at treatment time (synthetic, 524 clean treatment windows):
| Embedding | η² (h=7) | p |
|---|---|---|
| PCA | 0.368 | <0.05 |
| Takens | 0.265 | <0.05 |
| GRM | 0.148 | <0.05 |
Treatment response is state-dependent across all embedding types.
Oracle features reveal the theoretical ceiling:
| Features added | R² (h=1) |
|---|---|
| Observations delay-embedded | 0.515 |
| + true current regime | 0.542 |
| + true next regime | 0.843 |
| All oracle features | 0.858 |
The 0.34 gap between our best (0.52) and the ceiling (0.86) lives entirely in next-regime prediction. Observations carry more signal than true latents (0.52 vs 0.33) because the observation model encodes regime offsets and constitution.
On next-day-score, all methods converge to R²≈0.55 once lag features are included. PCA ≈ GRM ≈ Takens. This is not a method failure — persistence (autocorrelation >0.6) absorbs variance. The smoothed-delta target is essential to reveal that trajectory methods carry 25x more genuine signal than snapshot methods.
Snapshot GRM: R²=0.022. Takens-Laplacian GRM: R²=0.229 (Ridge), 0.528 (RF). Building the graph from delay-embedded vectors is the single largest architectural improvement. The graph must encode trajectory similarity, not just instantaneous symptom similarity.
When the graph is built from 45D trajectory vectors but the inductive projection uses 15D snapshots, GRM collapses to R²=−0.13. Matching the projection input to the graph feature space recovers R²=0.39. This is a silent failure mode with no error message — the model runs, produces numbers, and they are wrong.
| Task | Best component | Why |
|---|---|---|
| Acute trajectory (h=1) | Takens | Velocity dominates |
| Long horizon (h≥7) | Constitution proxy | Baseline determines drift |
| Regime transitions | GRM modes | Graph position encodes state |
| "Bad day" prediction | GRM+lag | Topology + persistence |
No single component dominates. The combined architecture leverages each where it contributes.
- Small real-world N (16 and 54 subjects) — GRM needs N≥200 for robust graph topology
- Synthetic SNR=0.64 is below typical wearable SNR (~1.5–2.5) — real data should produce stronger treatment stratification
- GRM RF drops from R²=0.53 to 0.39 inductively — Nyström loses topology
- Treatment events are exercise loads, not clinical interventions
- TCM label alignment is modest (AMI=0.15)
Trajectory-aware spectral graph methods extract predictive structure from longitudinal health data that snapshot methods miss entirely. The key is building the graph from delay-embedded trajectories and evaluating on persistence-free targets. The method replicates across synthetic and real wearable data, with the combined [trajectory + constitution + topology] architecture achieving R²=0.49 on LifeSnaps and AUC=0.83 for predicting next-day "bad days" on real Fitbit data.
All experiments on synthetic benchmark unless noted. Each tested in isolation against the best configuration at the time.
| Experiment | Result | Why it failed |
|---|---|---|
| k=5 delay embedding | GRM RF: 0.39→0.27 | Curse of dimensionality in 75D KNN |
| 90-day rolling window | No improvement | Constitution proxy already captures it |
| Density correction (Q@W@Q) | GRM RF: 0.39→0.005 | Over-corrects edge weights on Takens graph |
| Takens-PCA (SSA compression) | 0.517→0.500 | PCA removes useful phase-space redundancy |
| Takens+GRM RF (inductive) | 0.521→0.503 | RF overfits high-D concatenated space |
| GRM propagation vectors | +0.000 | Fully redundant to eigenmodes for linear head |
| Regime-probability stacking | +0.007 | Soft probabilities redundant to delay embedding |
| Sign-sqrt GRM transform | +0.003 at h=1, −0.004 at h=21 | Helps short-term, hurts where constitution dominates |
| GRM polynomial features | +0.000 | Regime boundaries not quadratic in eigenmode space |
| 14+90 day multi-window | No improvement | Truncated rolling stats noisy on 120-day subjects |
| Complex eigenvalues (directed graph) | Not needed | Graph well-connected (degree 16.4, 0 isolated) |
| Flaredown dataset (17K users) | Unusable | 90% NaN — users track different symptoms |
On standard next-day-score with lag features:
| Model | R² |
|---|---|
| Persistence only | 0.478 |
| PCA+lag | 0.579 |
| GRM+lag | 0.564 |
| Takens+lag | 0.583 |
All within ±0.02 of each other. These numbers are misleading. The lag feature dominates, and all embeddings contribute marginal decorrelation. Reporting only these metrics would wrongly conclude that graph topology adds nothing.
n_modes ∈ {4,8,16,32,64,128} × ρ ∈ {0.1,0.5,1.0,2.0,5.0} on Takens- Laplacian (synthetic, h=1):
- Ridge: saturates at n=32 (R²=0.281). ρ=0.1 best everywhere.
- RF: peaks at n=32 (R²=0.528). Declines at n>64 (overfitting).
- ρ=5.0 collapses signal (0.098) — over-smoothing destroys steep regime boundaries.
| Projection | GRM Ridge | GRM RF |
|---|---|---|
| Snapshot surrogate (broken) | 0.015 | −0.131 |
| Trajectory-matched surrogate | 0.294 | 0.362 |
| Trajectory-matched Nyström | 0.232 | 0.394 |
Nyström preserves more topology than the linear surrogate for RF. Both require trajectory-matched input features.
Reducing obs_noise from 0.28 to 0.12 (SNR 0.64→~1.5, realistic for wearables):
| Metric | SNR=0.64 | SNR~1.5 | Δ |
|---|---|---|---|
| Treatment η² (GRM, h=7) | 0.148 | 0.265 | +0.117 |
| Regime accuracy (Takens) | 0.526 | 0.582 | +0.056 |
| Takens Ridge h=1 | 0.517 | 0.559 | +0.042 |
Treatment stratification nearly doubles with realistic noise levels.
TCM label alignment with Takens-Laplacian GRM (synthetic, KMeans k=5):
| Label | Snapshot AMI | Takens AMI | Δ |
|---|---|---|---|
| true_regime | 0.360 | 0.404 | +12% |
| tcm_like_label | 0.135 | 0.149 | +10% |
| qi_like_label | 0.171 | 0.175 | +3% |
Direction correct but effects modest. TCM categories align better with trajectory-aware topology, consistent with the hypothesis that TCM describes dynamical patterns, not static symptom clusters.
Regime-change prediction (7-class, change-only subset):
| Model | Accuracy |
|---|---|
| GRM Logistic | 0.232 |
| PCA Logistic | 0.179 |
| Takens Logistic | 0.171 |
| Random | 0.143 |
GRM leads on state transitions (+9pp over random) but absolute accuracy is low. Treatment response regime-change η²=0.034 (GRM) vs 0.000 (PCA) — GRM uniquely predicts whether treatment triggers a state change, but the effect size is small (3.4% variance explained).
These results are exploratory. Validating TCM connections requires clinical data with actual TCM diagnostic assessments.
Belkin, M. & Niyogi, P. (2003). Laplacian eigenmaps for dimensionality reduction and data representation. Neural Computation, 15(6), 1373–1396.
Coifman, R.R. & Lafon, S. (2006). Diffusion maps. Applied and Computational Harmonic Analysis, 21(1), 5–30.
Pang, J.C. et al. (2023). Geometric constraints on human brain function. Nature, 618, 566–574.
Takens, F. (1981). Detecting strange attractors in turbulence. Lecture Notes in Mathematics, 898, 366–381.
Yfantidou, S. et al. (2022). LifeSnaps: a 4-month multi-modal dataset capturing unobtrusive snapshots of our lives in the wild. Scientific Data, 9.