Table 5.
Performance of PPG-based devices compared to ECG for HR and HRV features. Accuracy between PPG- and ECG-derived measurements was quantified with mean absolute error. Agreement between PPG- and ECG-derived measurements was quantified with the spearman correlation coefficient, ICC coefficient, and Bland–Altman analysis. Bold text for each feature indicates the best performing device for the specific part of the day.
Time | Device | Mean Absolute Error | Spearman Correlation ρ (p-Value) | ICC (p-Value) | Mean Error (Bias) | Bland–Altman Limits of Agreement CI 95% (+, −) |
---|---|---|---|---|---|---|
Heart Rate, BPM | ||||||
Full Day | Corsano | 1.36 | 0.98 (<0.001) | 0.97 (<0.001) | 1.14 | [5.99, −3.71] |
Whoop | 1.50 | 0.96 (<0.001) | 0.93 (<0.001) | 0.80 | [7.47, −5.86] | |
Awake | Corsano | 1.84 | 0.96 (<0.001) | 0.95 (<0.001) | 1.59 | [7.17, −3.98] |
Whoop | 1.71 | 0.95 (<0.001) | 0.94 (<0.001) | 0.90 | [7.37, −5.58] | |
Asleep | Corsano | 0.85 | 0.98 (<0.001) | 0.98 (<0.001) | 0.65 | [4.2, −2.9] |
Whoop | 1.31 | 0.96 (<0.001) | 0.92 (<0.001) | 0.71 | [7.38, −5.96] | |
Variability in Heart Rate (SD of HR), BPM | ||||||
Full Day | Corsano | 1.65 | 0.73 (<0.001) | 0.44 (<0.001) | 0.93 | [7.03, −5.18] |
Whoop | 1.92 | 0.65 (<0.001) | 0.35 (<0.001) | 0.68 | [7.74, −6.38] | |
Awake | Corsano | 1.98 | 0.56 (<0.001) | 0.31 (<0.001) | 0.80 | [7.6, −6] |
Whoop | 2.12 | 0.54 (<0.001) | 0.33 (<0.001) | 0.16 | [7.42, −7.1] | |
Asleep | Corsano | 1.27 | 0.87 (<0.001) | 0.57 (<0.001) | 1.04 | [6.02, −3.95] |
Whoop | 1.72 | 0.75 (<0.001) | 0.38 (<0.001) | 1.13 | [7.74, −5.48] | |
N−N Intervals, ms (Mean of the N-N intervals) | ||||||
Full Day | Corsano | 13.20 | 0.98 (<0.001) | 0.98 (<0.001) | −10.38 | [32.33, −53.08] |
Whoop | 16.04 | 0.97 (<0.001) | 0.96 (<0.001) | −9.49 | [54.94, −73.92] | |
Awake | Corsano | 17.10 | 0.97 (<0.001) | 0.97 (<0.001) | −14.70 | [31.88, −61.28] |
Whoop | 17.93 | 0.96 (<0.001) | 0.96 (<0.001) | −10.74 | [52.78, −74.26] | |
Asleep | Corsano | 9.04 | 0.99 (<0.001) | 0.99 (<0.001) | −5.83 | [29.6, −41.26] |
Whoop | 14.28 | 0.97 (<0.001) | 0.96 (<0.001) | −8.33 | [56.12, −72.79] | |
SDNN, ms (SD of the N−N intervals) | ||||||
Full Day | Corsano | 13.89 | 0.78 (<0.001) | 0.69 (<0.001) | 4.41 | [50.67, −41.85] |
Whoop | 17.31 | 0.72 (<0.001) | 0.57 (<0.001) | 3.18 | [64.11, −57.75] | |
Awake | Corsano | 16.47 | 0.62 (<0.001) | 0.55 (<0.001) | 1.08 | [52.28, −50.12] |
Whoop | 19.71 | 0.62 (<0.001) | 0.48 (<0.001) | −3.01 | [62.55, −68.57] | |
Asleep | Corsano | 10.92 | 0.91 (<0.001) | 0.8 (<0.001) | 7.91 | [45.7, −29.89] |
Whoop | 15.06 | 0.82 (<0.001) | 0.66 (<0.001) | 8.79 | [62.11, −44.53] | |
SDSD, ms (SD of successive differences between adjacent N-N intervals) | ||||||
Full Day | Corsano | 12.52 | 0.7 (<0.001) | 0.65 (<0.001) | −9.43 | [22.77, −41.64] |
Whoop | 9.42 | 0.76 (<0.001) | 0.75 (<0.001) | −2.96 | [26.07, −31.99] | |
Awake | Corsano | 17.99 | 0.58 (<0.001) | 0.43 (<0.001) | −15.43 | [20.04, −50.9] |
Whoop | 11.86 | 0.67 (<0.001) | 0.63 (<0.001) | −6.45 | [24.4, −37.3] | |
Asleep | Corsano | 6.89 | 0.89 (<0.001) | 0.87 (<0.001) | −3.57 | [18.27, −25.4] |
Whoop | 7.14 | 0.86 (<0.001) | 0.84 (<0.001) | 0.13 | [25.46, −25.19] | |
RMSSD, ms (Square root of mean of the sum of squares of differences between adjacent N-N intervals) | ||||||
Full Day | Corsano | 12.53 | 0.7 (<0.001) | 0.65 (<0.001) | −9.43 | [22.78, −41.64] |
Whoop | 9.42 | 0.76 (<0.001) | 0.75 (<0.001) | −2.96 | [26.07, −31.99] | |
Awake | Corsano | 17.99 | 0.58 (<0.001) | 0.43 (<0.001) | −15.43 | [20.04, −50.91] |
Whoop | 11.86 | 0.67 (<0.001) | 0.63 (<0.001) | −6.45 | [24.4, −37.3] | |
Asleep | Corsano | 6.89 | 0.89 (<0.001) | 0.87 (<0.001) | −3.57 | [18.27, −25.4] |
Whoop | 7.14 | 0.86 (<0.001) | 0.84 (<0.001) | 0.13 | [25.46, −25.19] | |
CVSD (Coefficient of variation of successive differences between adjacent N-N intervals) | ||||||
Full Day | Corsano | 0.01 | 0.66 (<0.001) | 0.53 (<0.001) | −0.01 | [0.03, −0.05] |
Whoop | 0.01 | 0.71 (<0.001) | 0.66 (<0.001) | 0.00 | [0.03, −0.04] | |
Awake | Corsano | 0.02 | 0.49 (<0.001) | 0.32 (<0.001) | −0.02 | [0.03, −0.06] |
Whoop | 0.01 | 0.6 (<0.001) | 0.54 (<0.001) | −0.01 | [0.03, −0.05] | |
Asleep | Corsano | 0.01 | 0.87 (<0.001) | 0.82 (<0.001) | 0.00 | [0.02, −0.03] |
Whoop | 0.01 | 0.82 (<0.001) | 0.76 (<0.001) | 0.00 | [0.03, −0.03] | |
CVNN (Coefficient of variation equal to the ratio of SDNN divided by Mean N-N intervals) | ||||||
Full Day | Corsano | 0.02 | 0.74 (<0.001) | 0.59 (<0.001) | 0.01 | [0.06, −0.05] |
Whoop | 0.02 | 0.68 (<0.001) | 0.48 (<0.001) | 0.00 | [0.08, −0.07] | |
Awake | Corsano | 0.02 | 0.56 (<0.001) | 0.42 (<0.001) | 0.00 | [0.07, −0.06] |
Whoop | 0.02 | 0.57 (<0.001) | 0.4 (<0.001) | 0.00 | [0.08, −0.08] | |
Asleep | Corsano | 0.01 | 0.9 (<0.001) | 0.75 (<0.001) | 0.01 | [0.05, −0.03] |
Whoop | 0.02 | 0.8 (<0.001) | 0.57 (<0.001) | 0.01 | [0.07, −0.05] | |
LF: variance (power) in HRV in the low Frequency (0.04 to 0.15 Hz), ms2 | ||||||
Full Day | Corsano | 392.70 | 0.76 (<0.001) | 0.45 (<0.001) | 21.02 | [1906.22, −1864.18] |
Whoop | 427.39 | 0.7 (<0.001) | 0.33 (<0.001) | 119.11 | [2195.07, −1956.84] | |
Awake | Corsano | 479.81 | 0.62 (<0.001) | 0.34 (<0.001) | −41.58 | [2002.9, −2086.06] |
Whoop | 464.56 | 0.61 (<0.001) | 0.32 (<0.001) | 44.94 | [2069.97, −1980.09] | |
Asleep | Corsano | 282.50 | 0.89 (<0.001) | 0.61 (<0.001) | 75.75 | [1627.54, −1476.04] |
Whoop | 386.94 | 0.78 (<0.001) | 0.35 (<0.001) | 182.01 | [2218.12, −1854.1] | |
HF: variance (power) in HRV in the High Frequency (0.15 to 0.40 Hz), ms2 | ||||||
Full Day | Corsano | 312.58 | 0.66 (<0.001) | 0.29 (<0.001) | −49.69 | [1519.79, −1619.16] |
Whoop | 268.87 | 0.68 (<0.001) | 0.25 (<0.001) | 63.74 | [1769.18, −1641.71] | |
Awake | Corsano | 404.71 | 0.56 (<0.001) | 0.21 (<0.001) | −142.96 | [1525.31, −1811.23] |
Whoop | 298.56 | 0.6 (<0.001) | 0.22 (<0.001) | 4.81 | [1591.43, −1581.81] | |
Asleep | Corsano | 202.24 | 0.84 (<0.001) | 0.43 (<0.001) | 34.86 | [1351.93, −1282.2] |
Whoop | 236.42 | 0.78 (<0.001) | 0.28 (<0.001) | 112.07 | [1845.99, −1621.85] | |
Ratio: LF/HF | ||||||
Full Day | Corsano | 1.62 | 0.65 (<0.001) | 0.51 (<0.001) | 1.24 | [6.17, −3.7] |
Whoop | 1.34 | 0.69 (<0.001) | 0.59 (<0.001) | 0.80 | [5.24, −3.65] | |
Awake | Corsano | 2.16 | 0.55 (<0.001) | 0.29 (<0.001) | 1.93 | [7.6, −3.74] |
Whoop | 1.58 | 0.57 (<0.001) | 0.44 (<0.001) | 1.15 | [6.03, −3.72] | |
Asleep | Corsano | 1.13 | 0.8 (<0.001) | 0.73 (<0.001) | 0.60 | [4.46, −3.26] |
Whoop | 1.17 | 0.78 (<0.001) | 0.69 (<0.001) | 0.51 | [4.57, −3.55] | |
Sample Entropy | ||||||
Full Day | Corsano | 0.41 | 0.45 (<0.001) | 0.4 (<0.001) | −0.23 | [0.69, −1.15] |
Whoop | 0.45 | 0.45 (<0.001) | 0.4 (<0.001) | 0.21 | [1.3, −0.87] | |
Awake | Corsano | 0.46 | 0.32 (<0.001) | 0.26 (<0.001) | −0.30 | [0.7, −1.29] |
Whoop | 0.59 | 0.32 (<0.001) | 0.25 (<0.001) | 0.41 | [1.62, −0.8] | |
Asleep | Corsano | 0.36 | 0.58 (<0.001) | 0.53 (<0.001) | −0.17 | [0.67, −1.01] |
Whoop | 0.33 | 0.65 (<0.001) | 0.61 (<0.001) | 0.05 | [0.88, −0.79] |