Male, 43. His workouts, time off and illness signals over six years, laid out before any claim about cause.
exploratory analysis · first look at his data
The question, in his words
as soon as I start going to the gym (working out), after a week or two I get sick
(a cold) and can't go to the gym again. But without exercise (working out), my lower back
starts to ache, and so on. My blood tests, however, are normal.
email, 2026-09-27
at least two years, and most likely longer. I get a cold at least once a month;
maybe it's not necessarily because of the gym, but the gym just makes it worse.
email, 2026-09-28, asked how many episodes
Interpreting the question and planning the analysis
Central question
Does resuming regular workouts predict getting sick?
Do other variables predict getting sick?
Planning considerations
In the first upload of data, we have no indication of when he actually got sick.
His Apple Health export records no colds. Its only symptom entries are nine digestive ones,
all in one week of June 2023 (streamed inventory of the whole export).
He sent no separate list of dates.
So we will first try to detect illness episodes automatically.
We came up with an educated guess at automatic illness-detection criteria, based on the
available data.
Available data, from his Apple Watch unless noted:
resting heart rate, one a day: 2,196 readings, 2020-09 → 2026-09
breathing rate during sleep: 85,803 readings, 2021-09 → 2026-09
wrist temperature, one a night (second watch only): 728 readings, 2024-09 → 2026-09
workouts: 1,149 records from several apps, 2020-10 →
2026-08
not used for detection: 319 ECG spot checks (2024-09 →); Withings weight and blood
pressure (its sleep-mat data is not in the export); Ottai CGM (2026-03 →, too recent)
Automatic illness detection criteria, version 1:
a night is flagged when, compared with his own nights 3–30 before it, resting
heart rate is at least 1 SD above normal, and HRV at least 1 SD below, and
breathing rate or wrist temperature at least 1 SD above;
an illness episode is at least 2 flagged nights, joined across gaps of up to 2 nights; a
new episode needs 7 clear nights after the last one.
We officially registered this definition before any illness signal had been computed,
to keep ourselves honest.
Otherwise we could guess "a million times" and pick the guess that fit the data best.
That would be bad because, with enough guesses, one of them will show a link by pure
chance — flip enough coins and one of them lands heads ten times in a row. The test would
then measure how hard we searched, not whether the gym matters. And a definition tuned to
fit these five years would not recognise his next cold.
Missed Tuesday/Friday trainer sessions cannot be the illness label.
A missed session is the gym stopping, so "training comes before illness" would
be true by construction.
We keep them as a cross-check only.
Checking the data for that schedule: gym sessions starting 05:00–07:59 fall on
Mon 62, Tue 64, Wed 40, Thu 61, Fri 50, Sat 4, Sun 0. Tuesday and Friday do not stand out, and most early sessions start in the
7 o'clock hour, not the 6. An early Tuesday/Friday pattern appears only in 2026
(19 of that year's 39 gym sessions). So the trainer schedule is not yet
visible in the data; we need to ask him when it began.
Hard training looks like illness in these signals.
A heavy week at the gym also raises resting heart rate and lowers HRV.
That is why version 1 requires a third signal, and at least two nights: recovery from a
workout takes about one.
Season is a rival explanation.
Colds peak in winter. If gym restarts also clustered in autumn, gym and colds would
line up without either causing the other.
The test compares each restart with random dates in the same weeks of other years.
Result: restarts do not cluster in autumn or winter. By month they fall Jan 3, Feb 1, Mar 2, Apr 1, May 4, Jun 1, Jul 2, Sep 2, Oct 2, Nov 3, Dec 1.
And the season-matched test gave almost the same answer as a test ignoring season
(p = 0.33 against 0.31). Season changed nothing here, partly because
there was no gym effect for it to explain.
Restarts by month and by season (northern hemisphere: winter is December–February).
The dashed line is what an even spread across the calendar would give.
Restarts by month dashed line: an even spread, 1.8 eachRestarts by season dashed line: an even spread, 5.5 each
"Resuming regular workouts" needs a working definition.
Ours, version 1: a restart is a gym session with no gym session in the
14 days before it. This is our choice; he gave no length of break.
Writing it down this way shows a gap: 3 of our 22 restarts were a
single session with nothing after it (2023-05-02, 2024-04-29, 2026-01-04).
One visit is not "resuming regular workouts".
We do not change version 1 now that results exist. A version 2 that requires, say, a
second session within 14 days would be registered as a new question, with its own date.
Definition of a gym session.
A gym session is inferred from the workout type, not from the location: Apple Health
does not record location for indoor workouts.
The raw records: the export holds one workout record per workout, 1,149 in all.
Each carries Apple's type string (for example
HKWorkoutActivityTypeTraditionalStrengthTraining), the app that
recorded it, and its start and end times, read as his local clock.
The type filter, fixed in the registration: a workout counts as gym if its type is
traditional strength training (181 records), functional strength training (114 records), cross training (8 records), elliptical (136 records). Everything else is not gym — walking, tai chi, yoga, paddling, cycling, and
Gentler Streak's untyped "Other".
Merging duplicates: the Apple Watch, Gentler Streak and Motra often each record the same
visit. Records that overlap in time, or come within 5 minutes of each other, are merged
into one session. That turns 439 records into 355 sessions, which
fall on 256 different days inside the analysis window.
Where this can be wrong: type is not place. An elliptical session could be at home, and a
gym visit logged under another type would be missed. The export cannot tell us which.
"Other" is the biggest unknown: Gentler Streak wrote 226 untyped workouts, and all
of them are excluded. If many are gym visits, we are undercounting the gym. Not yet
checked; if they are, the fix is a version 2 of this definition, registered separately.
Only the first central question is confirmatory.
"Do other variables predict getting sick?" was not registered with a specific variable.
Anything found there is a lead, to be confirmed on new data, not a finding.
Leads so far: none. No other variable has been screened yet. The only extra runs were
three variations on the gym question itself, named in advance as exploratory, and none
showed a link: without the third signal, rate ratio 1.16, p = 0.52; strength sessions only, rate ratio 1.83, p = 0.33; at-risk nights 7–14 only, rate ratio 0.00, p = 1.00.
The definitions, as registered
registered
2026-09-29 16:44 Pacific (commit 9b2061c), before any illness signal was computed
gym session
a workout typed TraditionalStrengthTraining, FunctionalStrengthTraining, CrossTraining, Elliptical; overlapping records from
different apps merged into one visit
restart
a gym session with no gym session in the 14 days before it.
Our choice, not his words: he said "start going", and gave no length of break
at risk
nights 5–21 after a restart — his "a week or two",
widened
flagged night
against his own nights 3–30 before: resting HR ≥ +1 SD and
HRV ≤ −1 SD and (breathing rate or wrist temperature ≥ +1 SD)
episode
≥ 2 flagged nights, joined across gaps of up to 2 nights; a new one needs 7
clear nights
loose variant
exploratory: the same, without the third signal. Drawn outlined.
The registered result says nothing either way: the detector does not see his colds
6 episodes in five years under the registered definition; he reports about
one a month. 2 began in an at-risk window, which covers
373 of 1814 valid nights, so 1.2 were expected
by chance. Rate ratio 1.93, one-sided p = 0.33
(season-matched, 10,000 permutations). With so few events the null's 95th percentile
is 4.3: nothing plausible could have cleared it.
Then, a check against his own colds. On 2026-09-30 he reported 5 colds
(July 16 to September 30, 2026). Scored against them, the registered detector flagged
0 of their 25 nights and caught 0 of the 5 colds, although his
watch recorded every one of those nights. A detector that cannot see his colds cannot say whether
the gym brings them on, so this result is neither a yes nor a no.
A second detector, fixed in writing first. Version 2 compares each night with the two
months before it rather than four weeks, using medians, and combines 10 overnight signals from
three devices: the Apple Watch, the Withings mat and the Garmin. Nothing in it was tuned to his
colds: it was registered on October 5, 2026 before it was scored, once, against them. It caught
2 of the 5 colds, and flagged 5 of their 25 nights against 4 of
the 65 other nights from July to September — 3.2 times as often, but with a
one-sided p of 0.06, and nights in a row are not independent, so the true uncertainty is
wider. One flag began two days before he felt ill. It sees something of his colds, weakly; five
colds cannot say more. The colds he records from now on are the fair test, and the gym question
will be asked again with this detector once there are enough of them.
Six years, one row each
Top lane: gym sessions, with each block of training shaded and each break
labelled. Middle lane: every other workout. Bottom lane: illness. The chart is wider than
the page: drag it sideways, or use the slider underneath, to move through the year. Hover
any mark for its date and type.
gym blockrestartat-risk nights 5–21episode, registered definition (6)episode, loose only (7)no valid signal
JanDec
What he logged
Every workout type in the export, with the icon used above. "Counts as gym"
is the registration's choice; walks, yoga and the untyped "Other" are not gym.
Apple's type string
records
counts as
span
recorded by
🚶
HKWorkoutActivityTypeWalking
Walking
342
—
2020-10 → 2026-08
Apple Watch — Subject, Gentler Streak, Subject’s Apple Watch, Welltory
❔
HKWorkoutActivityTypeOther
Other — untyped
226
—
2022-07 → 2025-06
Gentler Streak
🏋️
HKWorkoutActivityTypeTraditionalStrengthTraining
Traditional strength training
181
gym
2020-10 → 2026-07
Gentler Streak, Health, Motra, Subject’s Apple Watch
🔄
HKWorkoutActivityTypeElliptical
Elliptical (no emoji exists for the machine)
136
gym (not strict)
2020-10 → 2026-07
Apple Watch — Subject, Gentler Streak, Subject’s Apple Watch, Welltory
💪
HKWorkoutActivityTypeFunctionalStrengthTraining
Functional strength training
114
gym
2022-07 → 2026-08
Apple Watch — Subject, Gentler Streak, Welltory
☯️
HKWorkoutActivityTypeTaiChi
Tai chi
44
—
2025-07 → 2026-02
Apple Watch — Subject, Gentler Streak
🛶
HKWorkoutActivityTypePaddleSports
Paddle sports
27
—
2022-01 → 2022-07
Gentler Streak, Subject’s Apple Watch
🪜
HKWorkoutActivityTypeStairClimbing
Stair climbing
19
—
2022-02 → 2022-07
Gentler Streak, Subject’s Apple Watch
🧘
HKWorkoutActivityTypeYoga
Yoga
13
—
2026-02 → 2026-07
Apple Watch — Subject, Gentler Streak
🚴
HKWorkoutActivityTypeCycling
Cycling
13
—
2020-10 → 2023-07
Gentler Streak, Subject’s Apple Watch
🚣
HKWorkoutActivityTypeRowing
Rowing
8
—
2022-07 → 2022-07
Gentler Streak
🤸
HKWorkoutActivityTypeCrossTraining
Cross training
8
gym (not strict)
2023-11 → 2023-12
Atlon
🙆
HKWorkoutActivityTypeFlexibility
Flexibility
7
—
2024-09 → 2025-03
Gentler Streak
🧊
HKWorkoutActivityTypeCooldown
Cooldown
6
—
2023-06 → 2025-04
Apple Watch — Subject, Gentler Streak
🧠
HKWorkoutActivityTypeMindAndBody
Mind and body
3
—
2025-08 → 2026-07
ATMO - NeuroYoga, Wakeout, re-zen
🩰
HKWorkoutActivityTypePilates
Pilates
1
—
2025-10 → 2025-10
Apple Watch — Subject
🛌
HKWorkoutActivityTypePreparationAndRecovery
Preparation and recovery
1
—
2022-07 → 2022-07
Gentler Streak
Gym blocks and the breaks between them
A block runs from a restart to the last session before a break longer than
14 days. Median 7.0 gym days per
block, over every block including the 7 before the
analysis window opened.
block starts
last session
days off before
gym days
block length (days)
counted as restart
2020-10-03
2020-10-19
—
7
17
before window
2020-11-05
2020-11-17
17
4
13
before window
2020-12-21
2020-12-21
34
1
1
before window
2021-01-14
2021-01-23
24
3
10
before window
2021-02-17
2021-04-26
25
19
69
before window
2021-05-24
2021-07-15
28
17
53
before window
2021-08-10
2021-10-20
26
25
72
before window
2021-11-10
2021-12-15
21
8
36
yes
2022-01-10
2022-04-28
26
29
109
yes
2022-05-17
2022-07-29
19
28
74
yes
2022-10-25
2023-01-26
88
33
94
yes
2023-03-07
2023-03-30
40
7
24
yes
2023-05-02
2023-05-02
33
1
1
yes
2023-06-06
2023-07-27
35
11
52
yes
2023-09-11
2023-09-18
46
3
8
yes
2023-11-02
2024-03-07
45
40
127
yes
2024-04-29
2024-04-29
53
1
1
yes
2024-05-20
2024-06-13
21
6
25
yes
2024-07-05
2024-07-11
22
2
7
yes
2024-09-23
2024-10-10
74
4
18
yes
2024-11-14
2024-11-18
35
2
5
yes
2024-12-09
2025-02-04
21
14
58
yes
2025-02-19
2025-03-17
15
9
27
yes
2025-10-21
2025-12-18
218
14
59
yes
2026-01-04
2026-01-04
17
1
1
yes
2026-01-28
2026-03-01
24
16
33
yes
2026-03-22
2026-04-14
21
5
24
yes
2026-05-22
2026-06-05
38
3
15
yes
2026-07-07
2026-08-07
32
10
32
yes
Each episode, up close
Sixty nights around each episode: the four signals as z-scores against his
own baseline, dashed line at the ±1 SD threshold, red dots where a signal crossed it in the
illness direction. Red band: the episode. Icons underneath: gym sessions; blue line: a
restart; hatched strip: at-risk nights.
2021-12-08 · loose only · 4 nights
28 d after the last restart; 2 gym days in the 14 days before
2021-12-27 · loose only · 3 nights
47 d after the last restart; 2 gym days in the 14 days before
2022-02-28 · loose only · 4 nights
49 d after the last restart; 5 gym days in the 14 days before
2022-09-07 · strict · 10 nights
113 d after the last restart; 0 gym days in the 14 days before
2022-11-14 · strict · 4 nights
20 d after the last restart; 5 gym days in the 14 days before
2023-03-02 · strict · 7 nights
128 d after the last restart; 0 gym days in the 14 days before
2023-09-15 · strict · 5 nights
4 d after the last restart; 2 gym days in the 14 days before
2024-03-24 · loose only · 2 nights
143 d after the last restart; 0 gym days in the 14 days before
2024-05-13 · loose only · 3 nights
14 d after the last restart; 1 gym day in the 14 days before
2024-12-28 · strict · 4 nights
19 d after the last restart; 6 gym days in the 14 days before
2025-03-16 · loose only · 4 nights
25 d after the last restart; 5 gym days in the 14 days before
2025-05-25 · strict · 6 nights
95 d after the last restart; 0 gym days in the 14 days before
2025-11-25 · loose only · 2 nights
35 d after the last restart; 4 gym days in the 14 days before
Which signals exist when
The watch changed on 2024-09-13; wrist temperature exists only after. The band
is the analysis window. ECGs are listed but not yet used.
PerSci is not medical advice. Analyses describe one person's own data and are not a diagnosis or a treatment recommendation. Full disclaimer · Privacy Policy