Home Writing Projects Setup Protocol CV
Crosspost version

I used Bayesian statistics to optimize my bedding

How I combined Eight Sleep data, Whoop biometrics, and RCT evidence to pick a comforter and pillow

Note: Images need to be added manually after pasting. Right-click images below to save them.

I have an Eight Sleep Pod 5 that tracks my sleep every night — heart rate, HRV, respiratory rate, bed temperature, and an overall sleep score. After a few months of data, I started noticing two things: my scores were higher on warmer nights, and they jumped when I switched pillows. So I did what any reasonable person would do: I ran Bayesian regressions and reviewed the clinical trial literature to figure out what bedding to buy.

Part 1: the comforter

The data

I had 57 nights of Eight Sleep data from December 2025 through March 2026, each with a sleep score (0-100) and continuous bed temperature readings averaged across the night. My setup was a lightweight waffle knit blanket over the Pod 5, which runs on autopilot at -78 (heavy cooling). The average bed temperature was 29.3°C with a standard deviation of 1.2°C. My average sleep score was 79.0 with a standard deviation of 10.5.

That temperature variation isn’t from me adjusting settings — it’s natural fluctuation from room temperature, how much I move the covers, and seasonal changes. Enough variance to estimate a causal relationship.

The model

I fit a Bayesian linear regression with a diffuse conjugate normal-inverse-gamma prior: bed temperature as the sole predictor, Eight Sleep score as the outcome. The conjugate posterior under diffuse priors is equivalent to OLS with a Bayesian interpretation of the uncertainty.

The result: +2.9 score points per °C (SE = 1.1, t = 2.68, p = 0.010). R² = 0.12, meaning bed temperature explains about 12% of score variance — modest but statistically significant. The remaining 88% is the usual noise: what I ate, stress, exercise timing, etc.

Scatter plot of sleep score vs bed temperature with regression line and 95% posterior band

Each blue dot is one night. The red line is the posterior mean, and the blue band is the 95% credible interval for the regression line.

Validating causality

A positive correlation doesn’t prove causation. Maybe warmer nights coincide with lower stress or better recovery. To check, I ran the same regression controlling for Whoop biometrics — HRV, resting heart rate, and strain — as proxies for physiological state.

The bed temperature coefficient barely moved: 2.88 → 2.88 after adding controls (t = 2.67, p = 0.010, n = 54 nights with both Eight Sleep and Whoop data). The Whoop variables had negligible additional explanatory power, suggesting bed temperature has an independent causal pathway to sleep quality — likely through thermoregulation during deep sleep.

I also tested for nonlinearity with a quadratic term. It was nonsignificant (p = 0.83), confirming the linear model is adequate in this temperature range.

The constraint: Pod 5 thermal ceiling

The Pod 5 actively cools your bed. When you add insulation on top, the Pod compensates — it has to work harder to hit its target temperature. This means a heavier comforter doesn’t raise bed temperature by the full amount you’d expect from its insulation value.

Community reports and my own data suggest the Pod running at heavy cooling keeps bed temperature in a 26-34°C range. A high-CLO comforter might add 0.5-1.5°C rather than the 2-3°C you’d see on a passive mattress. I used conservative estimates for each comforter tier:

ComforterCLOExpected temp delta
Current waffle knit~0.5Baseline
Quince Ultra-Warm 700fp~2.5+0.5°C
Brooklinen Ultra-Warm 750fp~3.0+0.8°C
Hamvay-Lang Winter 800fp~4.0+1.0°C

What the clinical trials say

After running the analysis but before settling on a purchase, I reviewed the RCT literature on bedding and sleep quality. The key findings:

Weighted blankets have the strongest trial evidence. Ackerley et al. (2015) found weighted blankets reduced movement and increased sleep bout duration in a crossover RCT. Eron et al. (2020) showed a weighted blanket reduced insomnia severity (ISI score -5.5 vs -1.5 for control, p < 0.001). Ekholm et al. (2020) found weighted blankets improved sleep in psychiatric patients. The mechanism is deep pressure stimulation, which reduces sympathetic arousal.

Thermal regulation matters too. Kräuchi et al. (2018) showed that manipulating the thermal microclimate (warming the feet/hands via a “thermosuit”) shortened sleep onset latency. Herberger et al. (2024) demonstrated in a crossover RCT that a climate-regulating comforter improved sleep efficiency compared to cotton.

The concern: a heavy, high-CLO comforter on an actively cooled mattress creates an asymmetric microclimate — cold below, warm above. Okamoto-Mizuno & Mizuno (2012) place the optimal bed microclimate at 30-34°C. Going too warm disrupts sleep just as going too cold does.

My situation tilted toward more insulation: I kept waking up cold and clammy around 4am. My Eight Sleep timeseries data showed bed temperature dropping to 19-20°C in the early morning hours — well below the 30-34°C optimum. My waffle knit blanket wasn’t even king-sized. I needed more insulation, not less.

The decision

I used empirical Bayes bootstrapping to predict sleep scores under each comforter. Rather than relying on the intercept (which has its own uncertainty), I anchored predictions to my actual 57-night score distribution and shifted each night’s score by β × ΔT. This preserves real sleep variability while propagating slope uncertainty through 5,000 posterior draws.

Box plot of predicted sleep scores by comforter option

The differences are small in absolute terms — about 3 points at the top end — but they’re consistent and compounding. Every night of better sleep has downstream effects on recovery, cognitive performance, and mood.

To convert score improvements to dollar values, I used Eight Sleep’s subscription cost as a revealed preference anchor: at $19/month for what averages ~11 score points above no-mattress baseline, that’s about $1.74 per score point per night. This is conservative — most people would pay more for better sleep than what a subscription costs.

Annual sleep value vs purchase price for each comforter option

ComforterPriceScore deltaAnnual valuePaybackFirst-year ROI
Quince Ultra-Warm 700fp$240+1.4$89198 days271%
Brooklinen Ultra-Warm 750fp$430+2.3$1,485106 days245%
Hamvay-Lang Winter 800fp$885+2.9$1,810178 days105%

Try it yourself

Adjust the value-per-point and temperature coefficient to see how the decision changes with different assumptions:

Try the interactive calculator on the full post

The pick

I went with the Hamvay-Lang PureDelight 800 fill power Winter comforter ($885). The decision came down to:

  1. Maximizing absolute improvement — the extra 1.5 points over the Quince compound over thousands of nights
  2. Build quality — 800fp Hungarian goose down with a 13.5 tog rating means it should last 15-20 years
  3. Conservative estimates — if the real temp delta is closer to 1.5°C instead of 1.0°C, the payback drops to ~120 days
  4. RCT alignment — the weighted blanket literature supports heavier bedding for reducing movement and sympathetic arousal, and my early-morning temperature data confirmed I needed more insulation

Part 2: the pillow

The natural experiment

In late December, I switched from a too-tall Tempur-Pedic foam pillow to a Cozy Earth Silk Pillow (King, $158). This created a natural experiment: 10 pre-switch nights vs 50 post-switch nights.

The raw effect was large: +10 points on Eight Sleep score (73.2 → 83.2). After controlling for bed temperature, resting heart rate, and a time trend, the Bayesian posterior mean was +4.9 points (SE = 4.1, P(improvement) = 88.7%). Not as dramatic as the raw number, but still meaningful.

I ran a causal mediation analysis to check whether the pillow might improve scores by extending sleep duration (better pillow → longer sleep → higher score). The indirect pathway was negligible: the pillow barely changed duration (-3.8 min, p = 0.90). The entire effect runs through sleep quality, not quantity.

What the clinical trials say about pillows

The RCT literature here is surprisingly rich:

Latex pillows have the strongest evidence. Radwan et al. (2021) ran a crossover RCT comparing rubber (latex), polyester, feather, foam, and contour pillows. Latex ranked first on waking cervical stiffness and sleep quality. Gordon et al. (2009) reviewed multiple trials systematically and found latex pillows outperformed all other materials, with feather pillows performing worst.

Memory foam underperforms in trials. Despite marketing claims, foam pillows consistently score lower than latex in head-to-head RCTs. The likely mechanism: foam traps heat, and head/neck temperature directly affects sleep quality.

Pillow height matters more than fill. Multiple RCTs confirm that cervical alignment — keeping the spine neutral — dominates material choice. A pillow that’s too tall or too flat disrupts alignment regardless of fill. For side sleepers, the optimal height is roughly shoulder width minus head width; for back sleepers, it’s lower.

The evidence-adjusted model

I combined my Bayesian analysis (Cozy Earth effect = +4.9 points) with RCT evidence to predict scores for pillow options I hadn’t tried. Each pillow gets an “effectiveness fraction” based on how its properties compare to the Cozy Earth across dimensions supported by trial evidence: material (latex > silk > down > foam), height match, and breathability.

PillowPricePredicted scoreDelta vs current
Cozy Earth Silk (current)$15878.5baseline
Brooklyn Bedding Talalay Latex Low$19979.1+0.6
Saatva Latex Low$16578.9+0.4
Eli & Elm Side Sleeper$15078.7+0.2

The improvements are modest — we’re already in a good range with the Cozy Earth. But the RCT evidence consistently favoring latex over other materials, combined with a competitive price point, made the Brooklyn Bedding Talalay Latex (King, Low profile, $149 with 25% off) the pick for the second pillow on my king bed.

Results pending

I ordered the Hamvay-Lang comforter on March 5 and the Brooklyn Bedding pillow on March 7. Both should arrive by mid-March. I’ll update this post with before/after Eight Sleep data once I have 30+ nights with the new setup.

The key metrics to watch:

  • Bed temperature — does the Hamvay-Lang raise the 4am trough above 25°C?
  • Eight Sleep score — does the posterior prediction of +2.9 points per °C hold?
  • Pillow A/B — alternating nights with the Cozy Earth and Brooklyn Bedding latex to estimate a within-subject effect

The code

The full analysis is open source in my health-data repository:

from health_data.analysis.comforter import run_full_analysis

results = run_full_analysis()
print(f"Coefficient: {results['regression']['coef']:.1f} score/°C")
print(f"Payback: {results['decision_table'][-1]['payback_days']:.0f} days")

The comforter module includes Bayesian regression, empirical Bayes bootstrapping, Whoop cross-validation, and the full decision table. It reads directly from my Eight Sleep + Whoop sleep database.


Disclosure: I have no affiliation with any of the bedding brands mentioned. I bought all products at full price (Hamvay-Lang $885, Brooklyn Bedding $149 after 25% off coupon, Cozy Earth $158) and the Eight Sleep Pod 5 at full price. This analysis uses my real sleep data.

Copied to clipboard!