Skip to main content
. 2024 Oct 24;24(21):6826. doi: 10.3390/s24216826

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]