This study aims to determine whether a brief, 60-second cold-water
rinse appended to a conventional hot shower produces a measurable
reduction in resting heart rate 10 minutes post-exposure in healthy
adults. Demonstrating such an effect would provide an inexpensive,
easily adoptable intervention with potential implications for
occupational readiness and post-exercise recovery.
Hypotheses:
Null hypothesis:
Adding a 60‑second cold rinse to the end of a hot morning shower does
not change resting heart rate measured ten minutes later compared with
showering hot only.
Alternative hypothesis:
Adding a 60‑second cold rinse to the end of a hot morning shower
lowers resting heart rate measured ten minutes later compared with
showering hot only.
Experimental Design:
This is a short, manipulative experiment that compares resting heart
rate (HR) after two shower conditions: (1) a normal hot shower only
(control) and (2) the same hot shower immediately followed by a
60‑second cold rinse at 10-12°C (treatment). Each participant completes
both conditions on separate mornings, so everyone acts as their own
control. The order of conditions is randomized to cancel out day‑to‑day
variation.
Shower setup: Participants shower at home using their usual routine
(water = around 38-40°C, 5 min minimum). At the end, they switch the
faucet to full‑cold (verified at 10-12°C) for exactly 60s, starting a
phone timer as soon as the water hits their shoulders. Identical hot
shower is taken by the control group but they do not switch to cold;
they stand under hot water for an extra 60s instead, keeping total
shower time equal.
Measuring DV: Resting HR is recorded 10 min after stepping out of the
shower. Participants dry off and start a wearable HR monitor (Apple
Watch) linked to a logging app. Once seated, they rest hands‑on‑lap,
breathe normally, and record a 60s average HR. This single number is the
outcome for that trial.
Because we actively change water temperature, this is a manipulative
experiment.
Ways to Reduce Error: Avoid staying up late and get an adequate
amount of rest every night, this will help with any inconsistencies that
come from fatigue. Additionally ask participants to avoid caffeine,
heavy meals, and vigorous activity for 2h before each trial. This will
help with outliers as well as help with energy/HR deviations due to
outside sources. To reduce recording bias, participants will label each
trial only as “A” or “B” in the HR app– the analyst gets the key after
data import. This keeps the person crunching numbers blinded to
condition. Also, each person provides both a control and a treatment
value, removing between‑person variability (blinding). Each person also
serves as their own control by taking a normal hot shower on one morning
(no cold rinse). Lastly, we can incorporate randomizing in this way:
flip a coin for every participant to decide whether they try the
cold‑rinse morning first or the hot‑only morning first. This kills any
morning bias– maybe you slept badly the first night or had an exam the
second day. Random order evens that out.
Data Analysis Plan:
For this experiment, I plan to run a two‑tailed paired‑sample t‑test
on resting heart rate values. Each participant supplies two numbers:
(hot only) and (cold rinse) so the test factors in the natural
difference in everyone’s heart rate and checks if the average difference
is zero. Heart rate is continuous, usually close to normal, and the
paired design helps to eliminate noise between subjects. Considering all
of this, I think that this test will work most efficiently for our
sample of 30 people.
Assumptions and Exploratory Data Analysis (EDA):
- Independence: Each cold and hot value comes from the same person,
and one person’s pair has nothing to do with anyone else’s.
- Normality of the paired differences: the set of heart rate
differences should look roughly bell‑shaped.
- No extreme outliers: single wild points can wreck the mean and the
t‑test. I doubt any extreme outliers would be present in this set of
data because we are dealing with heart rate in healthy adults which
shouldn’t deviate too much.
library(tidyverse)
## ── Attaching core tidyverse packages ──────────────────────── tidyverse 2.0.0 ──
## ✔ dplyr 1.1.4 ✔ readr 2.1.5
## ✔ forcats 1.0.0 ✔ stringr 1.5.1
## ✔ ggplot2 3.5.1 ✔ tibble 3.2.1
## ✔ lubridate 1.9.4 ✔ tidyr 1.3.1
## ✔ purrr 1.0.4
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag() masks stats::lag()
## ℹ Use the conflicted package (<http://conflicted.r-lib.org/>) to force all conflicts to become errors
data_raw <- read_csv ("aawasthi.csv")
## New names:
## Rows: 30 Columns: 3
## ── Column specification
## ──────────────────────────────────────────────────────── Delimiter: "," dbl
## (3): ...1, Level 2: Hot to Cold, Level 1: Hot Only
## ℹ Use `spec()` to retrieve the full column specification for this data. ℹ
## Specify the column types or set `show_col_types = FALSE` to quiet this message.
## • `` -> `...1`
data <- data_raw |>
select(`Level 2: Hot to Cold`, `Level 1: Hot Only`) |>
rename(cold = `Level 2: Hot to Cold`, #renamed columns for easier and faster coding
hot = `Level 1: Hot Only`)
data <- data |>
mutate(diff = cold - hot) #made column for the differences
head(data)
data_clean <- data |> filter(hot < 200, cold < 200) #removing clear outlier
ggplot(data_clean, aes(y = diff)) +
geom_boxplot() +
labs(y = "HR difference (cold − hot, bpm)",
title = "Boxplot of paired HR differences") #boxplot visualization

ggplot(data_clean, aes(x = diff)) +
geom_histogram(binwidth = 2) +
labs(x = "HR difference (bpm)",
title = "Histogram of paired differences") #histogram visualization

Interpretation of EDA:
I started by pulling aawasthi.csv into R and trimming the raw table
down to the two columns we care about: Level 2: Hot to Cold and Level 1:
Hot Only, then gave them shorter names (cold and hot) so the code reads
clean. Creating a third column, diff = cold – hot, instantly shows the
paired difference for every participant and keeps all the math in one
tidy data frame.
A quick head() confirmed the import worked: six rows with plausible
bpm values and the new diff column in place. Before plotting, I ran a
sanity check for impossible heart rates. Anything above 200 bpm in a
resting, healthy adult is clearly a typo, so I filtered out those rows
(filter(hot <200, cold <200)). Only one record vanished, leaving
29 usable pairs.
The boxplot of diff has a compact IQR and no points dangling more
than 1.5×IQR from the box—nice evidence that extreme outliers are gone.
Most values sit slightly below zero, hinting that heart rate tends to
drop after the cold rinse.
The histogram is roughly mound‑shaped with a gentle right tail but no
spikes or double peaks. Additionally, just taking a glance at it we can
see it looks normal and visually there is nothing wrong with it.
Because the paired differences appear symmetric and we have no crazy
outliers, I kept the data on the original bpm scale– no log‑10 transform
needed. Using raw beats/min keeps the final t‑test result easy to
explain (“HR dropped by X bpm”), which is friendlier for a first‑year
bio audience than talking about transformed units.
Overall, the EDA shows:
- Clean sample of 29 paired observations
- No remaining impossible values or extreme outliers
- Distribution of differences looks approximately normal
- Visual trend points toward lower HR after the cold rinse
These checks clear the way for a paired‑sample t‑test.
Primary Statistical Analysis
ttest <- t.test(data_clean$cold, data_clean$hot,
paired = TRUE,
alternative = "two.sided")
ttest
##
## Paired t-test
##
## data: data_clean$cold and data_clean$hot
## t = -3.3009, df = 28, p-value = 0.002634
## alternative hypothesis: true mean difference is not equal to 0
## 95 percent confidence interval:
## -8.946167 -2.094651
## sample estimates:
## mean difference
## -5.520409
Data Visualization
vis <- data_clean |>
mutate(id = row_number()) |>
pivot_longer(c(hot, cold),
names_to = "condition",
values_to = "hr")
# decided to go with a paired‑line plot
ggplot(vis, aes(x = condition, y = hr, group = id)) +
geom_line(colour = "grey60") +
geom_point(size = 3) +
labs(title = "Resting Heart Rate 10 min After Shower",
x = NULL,
y = "Heart rate (bpm)") +
theme_linedraw(base_size = 12)

Conclusions
The numbers back up what my morning routine has been telling me for
years. Paired‑sample t‑test tells a clear story: a 60‑second cold rinse
at the end of a normal hot shower lowers resting heart rate ten minutes
later. The statistics back it up—t = ‑3.30 with 28 degrees of freedom
and a p‑value of 0.0026. Because the p‑value is well below the usual
0.05 cut‑off, we reject the null hypothesis that “nothing changes.” The
average paired drop was ‑5.5 beats per minute, and the 95% confidence
interval (‑8.95 bpm to ‑2.09 bpm) sits entirely below zero. In other
words, every plausible true difference points to a slower heart after
the cold rinse. That slower rate suggests a short‑lived boost in
parasympathetic activity, matching what cold‑exposure studies often
report and offering a possible physiological link to the reduced
sick‑leave days Buijze’s study saw in a much larger trial; if the heart
is calmer and the autonomic system is tilted toward recovery, it makes
sense that people might feel more energetic and resilient at work.
This study is a tidy proof‑of‑concept, yet it carries clear caveats.
First, the sample was small, young, and healthy, limiting how far we can
generalize. Second, each participant tried the cold rinse only once; we
do not know whether the benefit compounds, plateaus, or even backfires
with daily use. Third, showers and heart‑rate recordings happened at
home, so faucet temperatures, timer accuracy, and posture could all
vary. Finally, everyone knew when the water turned icy; even though the
physiological change is objective, an “I feel refreshed” mindset could
contribute.
The next step is to scale up and tighten control. A larger,
multi‑week study—ideally in a lab or with smart‑shower valves that
guarantee temperature—could confirm whether the heart‑rate drop sticks
around and whether it translates to measurable gains in mood, sleep
quality, or work performance. Varying the rinse length (15,30,60,90s)
could pinpoint the minimum effective dose. Adding heart‑rate
variability, blood pressure, and salivary cortisol would flesh out the
autonomic story, while pairing the rinse with post‑workout recovery in
athletes could test its usefulness beyond simple morning routines. If
those studies echo our findings, the humble cold finish might earn a
spot alongside stretching and coffee as a low‑cost tool for daily reset
and resilience.
Limitations -Small, homogeneous sample. Our 29 participants were
young and healthy. Older adults, children, or people with heart
conditions might react differently.
-Single exposure per person. Each volunteer tried one hot‑only and
one cold‑rinse shower. We don’t yet know if the heart‑rate drop grows,
stays steady, or disappears with daily use.
-Home‑based protocol. Showers happened in personal bathrooms. Water
temperature, shower length, and timing were self‑reported, leaving room
for measurement error.
-No participant blinding. Everyone felt the cold water, so a
“placebo” effect or excitement could influence results, even if the
heart‑rate drop is real.
-One physiological marker. We tracked resting heart rate only.
Heart‑rate variability, blood pressure, or stress hormones would give a
fuller autonomic picture.
Future directions - Longer, larger RCT. Follow hundreds of
participants for 4–8 weeks, controlling shower temperature in a lab or
with smart valves. Track heart rate, heart‑rate variability, blood
pressure, mood, and sleep to see if benefits stick.
- Exercise recovery study. Test cold rinses immediately after workouts
in athletes and record next‑day performance and muscle soreness.
Citations
Buijze,J.C., Veenstra,E., Vermeulen,H.M.W., Loogman,M., Giele,J.L.,
Ruetgerink,J.J.M., … & Bloem,R.M. (2016). The effect of cold
showering on health and work: A randomized controlled trial. PLOS ONE,
11(9), e0161749. https://doi.org/10.1371/journal.pone.0161749
Al Haddad,H., Laursen,P.B., Ahmaidi,S., & Buchheit,M. (2010).
Influence of cold water immersion on post‑exercise parasympathetic
reactivation. European Journal of Applied Physiology, 109(7), 1189–1197.
https://doi.org/10.1007/s00421‑010‑1459‑9
Disclaimer: This project analyzes simulated data. The questions and
hypotheses are real, but the results and conclusions are simulated.