5D Library › Dynamical Systems of Neurotransmitters and Endocrinology · 中文
Chapter 8 Practice and a Pre-registered Trial
Part 1 A four-step check of personal daily rhythm
The first seven chapters come down to four things that can be done, and recorded, every day. They are not treatments or standards, but a way of keeping a record that shows a person the rhythm of their own week.
- Morning light. Minutes spent outdoors in daylight within two hours of getting up (Chapter 4). Do not look at the sun.
- Blocking high-frequency fragments. No short videos or feeds in the first hour after getting up and the last hour before bed (Chapter 1).
- Slow breathing and recovery. Ten minutes a day of breathing at about six breaths a minute (Chapter 5); those who can may measure RMSSD for 1 to 5 minutes lying down on waking, breathing naturally, and compare it with their own average over the past four weeks.
- Complete and regular sleep. Whether there are at least 7 hours from falling asleep to getting up (the consensus recommendation for adults is at least 7 hours a night (Watson et al. 2015)), and how much the midpoint of sleep varies from day to day (sleep regularity (Phillips et al. 2017)).
Calculation
The check applied to a week of (simulated) self-records. The targets are the author’s starting points for self-observation, not clinical standards.
# The four-step daily rhythm check applied to one week of (simulated) self-records.
# Targets are the author's starting values for self-observation, not clinical norms.
import statistics
week = [ # wake, sleep onset (h, 24 h clock; >24 = after midnight), outdoor light min within 2 h of waking,
# phone-free first and last hour (True/False), paced-breathing min, waking lnRMSSD
dict(wake=7.0, onset=23.5, light=25, phone_free=True, breath=10, ln_rmssd=3.62),
dict(wake=6.8, onset=23.3, light=15, phone_free=True, breath=10, ln_rmssd=3.70),
dict(wake=7.2, onset=24.6, light=0, phone_free=False, breath=0, ln_rmssd=3.31),
dict(wake=7.0, onset=23.6, light=30, phone_free=True, breath=12, ln_rmssd=3.58),
dict(wake=7.1, onset=25.2, light=5, phone_free=False, breath=0, ln_rmssd=3.25),
dict(wake=9.0, onset=25.8, light=40, phone_free=False, breath=10, ln_rmssd=3.40),
dict(wake=8.5, onset=23.4, light=35, phone_free=True, breath=10, ln_rmssd=3.66),
]
BASELINE_MEAN, BASELINE_SD = 3.60, 0.15 # the person's own previous four weeks
light_days = sum(d["light"] >= 20 for d in week)
free_days = sum(d["phone_free"] for d in week)
breath_days = sum(d["breath"] >= 10 for d in week)
z = (statistics.mean(d["ln_rmssd"] for d in week) - BASELINE_MEAN) / BASELINE_SD
dur = [d["wake"] + 24 - d["onset"] for d in week]
mid_sd = statistics.pstdev((d["onset"] + d["wake"] + 24) / 2 for d in week) * 60
checks = [
("1 morning outdoor light >= 20 min (days)", f"{light_days}/7", light_days >= 5, ">= 5 days"),
("2 phone-free first and last hour (days)", f"{free_days}/7", free_days >= 5, ">= 5 days"),
("3 paced breathing >= 10 min (days)", f"{breath_days}/7", breath_days >= 5, ">= 5 days"),
("3 waking lnRMSSD vs own baseline (z)", f"{z:+.1f}", z >= -1.0, ">= -1.0"),
("4 nights with >= 7 h onset-to-wake", f"{sum(x >= 7 for x in dur)}/7", sum(x >= 7 for x in dur) >= 6, ">= 6 nights"),
("4 sleep-midpoint variability (min, SD)", f"{mid_sd:.0f}", mid_sd <= 45, "<= 45 min"),
]
for name, value, ok, target in checks:
print(f"{name:42s} {value:>6} target {target:12s} {'OK' if ok else 'LOOK'}")
# 1 morning outdoor light >= 20 min (days) 4/7 target >= 5 days LOOK
# 2 phone-free first and last hour (days) 4/7 target >= 5 days LOOK
# 3 paced breathing >= 10 min (days) 5/7 target >= 5 days OK
# 3 waking lnRMSSD vs own baseline (z) -0.6 target >= -1.0 OK
# 4 nights with >= 7 h onset-to-wake 5/7 target >= 6 nights LOOK
# 4 sleep-midpoint variability (min, SD) 44 target <= 45 min OKIn this week, morning outdoor light and the phone-free hours each fell short on three days, and 7 hours of sleep on two; on days 3 and 5 all three fell short together, and those two days also had the lowest waking lnRMSSD of the week. This does not show which is cause and which effect, but the use of the four-step check is precisely to make such co-occurring patterns visible. An RMSSD below one’s own average is not a diagnosis: colds, alcohol, hard exercise and short sleep all lower it temporarily.
Note
If you have persistent sleep problems, low mood, anxiety or physical discomfort, see a doctor rather than managing it yourself with this checklist.
Part 2 A pre-registered randomised controlled trial
The question
In founders and business owners with high self-rated stress, does daily outdoor morning daylight plus slow breathing at about six breaths a minute, for eight weeks, raise resting cardiac vagal activity (RMSSD) compared with keeping their usual routine? And what does it do to the cortisol awakening response (CAR)?
Design
| Element | Specification |
|---|---|
| Participants | Founders or business owners aged 25–60 with scores in the higher range of the Perceived Stress Scale (Cohen et al. 1983); excluding shift workers, people with cardiovascular disease or arrhythmia, those taking beta-blockers or corticosteroids, pregnancy or breastfeeding, bipolar disorder, current psychiatric treatment, eye disease or light sensitivity |
| Design | Parallel two-group randomised controlled trial, stratified by sex and baseline RMSSD; 8 weeks |
| Intervention | At least 20 minutes outdoors within 60 minutes of getting up (not looking at the sun); 10 minutes a day of paced breathing at 6 breaths a minute (in 4 s, out 6 s, with a phone pacer) |
| Control | Usual routine; the same intervention is offered after the trial (waiting list) |
| Primary outcome | Mean waking resting lnRMSSD over 7 days in week 8 (lying down after getting up, natural breathing, 5-minute chest-strap recording), with baseline as covariate |
| Secondary outcomes | Cortisol awakening response (saliva at waking and 30 and 45 minutes after, on two consecutive working days, as area under the curve with respect to increase, AUCi); perceived stress; sleep duration and regularity (wrist actigraphy); adherence to morning light (wrist recorder with light sensor) |
| Blinding | Participants cannot be blinded. Laboratory staff assaying saliva, staff processing HRV data and the statistician do not know the allocation |
| Analysis | Intention to treat; primary outcome by analysis of covariance, two-sided α = 0.05; secondary outcomes reported as estimates with confidence intervals, not as confirmatory tests |
Choice of measures
The primary outcome is RMSSD, measured apart from the practice, for the reason given in Chapter 5: during slow breathing, RMSSD is insensitive to the resonance; the question is whether weeks of practice change the resting state. Measurement is fixed on waking, lying down, with natural breathing, averaged over 7 days to reduce day-to-day variation (Laborde et al. 2017).
The cortisol awakening response is a secondary outcome, measured according to the expert consensus guidelines: the first sample immediately on waking, then samples 30 and 45 minutes later, with waking and sampling times verified electronically, because a delay of a few minutes in sampling changes the result considerably (Stalder et al. 2016).
Note
Corrected on checking. The original idea placed CAR beside RMSSD as an outcome and implicitly expected CAR to fall. Checking revealed two problems. First, bright morning light itself acutely raises cortisol: in experiments moving people into bright light after waking, cortisol rose promptly after the light (Scheer and Buijs 1999; Leproult et al. 2001). Second, the relation of CAR to chronic stress is not one-directional: job stress and general life stress go with a larger CAR, while fatigue, burnout and exhaustion go with a smaller one (Chida and Steptoe 2009). CAR is therefore unsuitable as a primary outcome with a fixed direction. This protocol makes it a secondary outcome with no assumed direction, to be reported as found. The choice of primary outcome is left for the author to confirm (see section 3 of the Editorial Notes).
Sample size
Calculation
import math
from statistics import NormalDist
N = NormalDist()
def n_per_group(sd, delta, rho, alpha=0.05, power=0.80):
"""Two parallel groups, outcome analysed with baseline as covariate (ANCOVA): the residual SD is
sd * sqrt(1 - rho^2), where rho is the baseline-follow-up correlation. Two-sided alpha."""
s = sd * math.sqrt(1 - rho ** 2)
za, zb = N.inv_cdf(1 - alpha / 2), N.inv_cdf(power)
return math.ceil(2 * ((za + zb) * s / delta) ** 2 + za ** 2 / 4)
# Primary outcome: 7-day mean of waking lnRMSSD (natural log of ms), spontaneous breathing, at week 8.
# Between-person SD about 0.5 ln units; smallest worthwhile difference 0.15 (about 16 % in RMSSD).
for rho in (0.6, 0.7, 0.8):
print(f"baseline correlation {rho}: {n_per_group(0.5, 0.15, rho)} per group for 80 % power, "
f"{n_per_group(0.5, 0.15, rho, power=0.90)} for 90 %")
n = n_per_group(0.5, 0.15, 0.7, power=0.90)
print(f"plan: {n} completers per group ({2 * n} in all); recruit {math.ceil(2 * n / 0.8)} allowing 20 % loss")
# Secondary outcome, CAR as AUCi (nmol/L x h) from samples at waking, +30 and +45 min on 2 days.
print(f"CAR AUCi, SD 2.5, difference 1.0, rho 0.4: {n_per_group(2.5, 1.0, 0.4)} per group for 80 % power")
# baseline correlation 0.6: 113 per group for 80 % power, 151 for 90 %
# baseline correlation 0.7: 90 per group for 80 % power, 121 for 90 %
# baseline correlation 0.8: 64 per group for 80 % power, 86 for 90 %
# plan: 121 completers per group (242 in all); recruit 303 allowing 20 % loss
# CAR AUCi, SD 2.5, difference 1.0, rho 0.4: 84 per group for 80 % powerIf the between-person SD of lnRMSSD is 0.5 and the correlation between baseline and week 8 is 0.7, detecting a difference of 0.15 (about 16 % in RMSSD) needs 90 completers per group for 80 % power or 121 for 90 %. The protocol plans 121 completers per group for 90 % power and, allowing for 20 % loss, recruits 303 people in all. The SD and correlation are assumptions and will be checked in a 20-person pilot.
Decision rule
Calculation
SESOI = 0.15 # ln units of waking RMSSD: the smallest difference worth acting on (about 16 %)
def verdict(diff, lo, hi):
"""diff = intervention minus usual routine at week 8 (ANCOVA, adjusted for baseline), with its 95 %
confidence interval. Fixed before any data are seen."""
if lo >= SESOI:
v = "increase of at least the smallest worthwhile size"
elif lo > 0:
v = "increase; not shown to reach the smallest worthwhile size"
elif hi < 0:
v = "decrease compared with usual routine"
elif lo >= -SESOI and hi <= SESOI:
v = "no difference worth acting on"
else:
v = "unclear"
return f"lnRMSSD {diff:+.2f} ({lo:+.2f} to {hi:+.2f}): {v}"
# Invented results, to show how the trial will be reported.
print(verdict(0.06, -0.04, 0.16))
print(verdict(0.21, 0.16, 0.26))
print(verdict(0.02, -0.08, 0.12))
print("CAR (AUCi), perceived stress and sleep are reported with intervals but cannot make the trial")
print("positive. A rise or a fall in CAR is reported as found: the direction is not fixed in advance.")
# lnRMSSD +0.06 (-0.04 to +0.16): unclear
# lnRMSSD +0.21 (+0.16 to +0.26): increase of at least the smallest worthwhile size
# lnRMSSD +0.02 (-0.08 to +0.12): no difference worth acting on
# CAR (AUCi), perceived stress and sleep are reported with intervals but cannot make the trial
# positive. A rise or a fall in CAR is reported as found: the direction is not fixed in advance.The example results are invented, to show in advance how the results will be reported.
What this trial cannot show
The trial compares a two-part intervention with the status quo; even a positive result cannot tell whether the effect came from the light, the slow breathing, both together, or the expectation and attention that come from setting time aside each day. The control group has no placebo activity, so expectancy effects cannot be ruled out. The trial does not test any patient population, and a positive result would not show that the intervention treats anxiety, insomnia or any disease.
Ethics and conflicts of interest
The trial must be approved by an independent ethics committee, with written informed consent, and the protocol and analysis plan must be registered before the first participant is enrolled (Chan et al. 2013; Nosek et al. 2018). Participants may withdraw at any time; any discomfort (dizziness, eye discomfort and the like) is recorded and reported as an adverse event.
Disclosure
The author uses this book as the methodological basis of his community cognition courses, 5D Ascension Cards (Dimensional Shift Card Decks) and the Yafu AI knowledge base, and so has a direct commercial interest in its subject and in the result of the Chapter 8 trial. To limit the influence of that interest: the protocol, analysis code and decision rule are published before enrolment; participants are not recruited from the author’s course members; the trial is run and analysed by researchers independent of the author’s business; and the results, data and code will be published whatever they show. The book promotes no course, card deck or product and makes no health or therapeutic claim.
References
Fan, Y. (2026). Dynamical Systems of Neurotransmitters and Endocrinology: Dopamine Reward Prediction Error, Serotonergic Homeostasis, HPA-Axis Allostatic Load and the Challenge Hypothesis, Read Beside East Asian Classics of Mind Regulation [神经递质与内分泌的动力系统] (Version 1.0.0). 5D Library. https://doi.org/10.5281/zenodo.23738782 · Licensed under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International (CC BY-NC-ND 4.0).