QS Experiments / QS - Can pink noise increase deep sleep?

Abstract

What did i do?

I've measured pink noise stimulations count and DEEP sleep length to find out if stimulations prolong DEEP sleep.

How did i do it?

I've slept 145 nights with Dreem 2 headband and did a statistical analysis

What did i learn?

On average, pink noise stimulations increase my DEEP sleep by ~11 minutes per night. Additional ~1h20m of DEEP sleep per week seems to be a significant effect.

Introduction

There is a some scientific evidence that pink noise can increase deep sleep quality (delta power) and quantity. But that's not happends, when pink noise not synced with accurately detected deep sleep stage (by EEG). Dreem 2 EEG Headband have this feature.

The purpose of this self experiment (n=1) is to find out if pink noise stimulations can increase amount of DEEP sleep.
Since Dreem doesnt provide me a access to raw EEG signal (all my requests were refused) delta power is not analyzed (but they claim power increase it by 11.79%, p-value = 3.52e-5).

Materials & Methods

Participants

1 adult male anthropometrics was described in previous article

Experimental design

During 145 nights (from 2020-08-27 to 2021-08-21) amount of pink noise stimulations and DEEP sleep length was assessed by Dreem 2 EEG Headband which was validated[1] against gold standard PSG. In a stimulus study, accuracy was also checked and shows strong correlations to PSG and spectrogram agreement. There were 22 nights without stimulations at all and 123 nights with stimulations. Amount of stimulations were different for each day and determined by Dreem 2 internal algorhytms.

Subjective sleep quality, mood, depression, anxiety, stress, fatigue and sleepiness was assessed by a popular in scientific research questionnaires described in previous experiment

Results

The data summary shown below

DEEP in hours

Linear regression

effect p-value effect size
DEEP, minutes 0.035 0.0006* weak

We can see a slope of 0.035 minutes increase in DEEP sleep stage for each additional 1 stimulation with weak effect size. Even with weak effect size, average of 310 stimulations per night extended DEEP sleep for additional 11 minutes. 95% Confidence for slope is very narrow [0.0346,0.0359].

DEEP, minutes

Discussion

The main result of this experiment is a statistically significant association between pink noise stumulations count and DEEP sleep time.
Dreem 2 seem to be able to increase DEEP sleep time for an additional 11 minutes. Since my average DEEP is around 90 minutes the effect is about +11% of DEEP sleep. Not so huge, but its additional ~1 hour per week.

In conclusion, when i'm planning to sleep with Dreem 2 i'll make Stimulations feature ON.
Amount of DEEP sleep decreases during aging and using this feature may slow down this process.

Limitations:

Data availability & Information

Welcome for questions, suggestions and critics in comments below.

Dreem 2 device unmodified data is fully available here and format is explained by manufacturer.

Data for questionaires will be presented soon.

R Code:

library(effectsize)
library(lubridate)
library(ggplot2)


ggplotRegression <- function (fit) {
 
  require(ggplot2)
 
  ggplot(fit$model, aes_string(x = names(fit$model)[2], y = names(fit$model)[1])) +
    geom_point() +
    stat_smooth(method = "lm", col = "red") +
    labs(title = paste("Adj R2 = ",signif(summary(fit)$adj.r.squared, 5),
                       "Intercept =",signif(fit$coef[[1]],5 ),
                       " Slope =",signif(fit$coef[[2]], 5),
                       " P =",signif(summary(fit)$coef[2,4], 5)))
}


dreem <- read.csv("https://blog.kto.to/uploads/dreem.csv", skip = 5, sep = ';', header = TRUE)
dreem <- dreem[!is.na(dreem$Type),]


starttime = vector(); stims = vector(); deeptime = vector(); remtime = vector(); waso = vector(); sol = vector(); lighttime = vector()
for (i in 1:nrow(dreem)) {
  deeptime[i] <- period_to_seconds(hms(dreem$Deep.Sleep.Duration[i]))
}

dreem$DEEP <- (deeptime/60)

l <- lm(DEEP ~ Number.of.Stimulations, data=dreem)
summary(dreem)
length(dreem$Number.of.Stimulations[dreem$Number.of.Stimulations>0])
length(dreem$Number.of.Stimulations[dreem$Number.of.Stimulations==0])
summary(anova(l))
s <- summary(l); s
interpret_r2(s$adj.r.squared[1])
confint(l , level = 0.05)

ggplotRegression(l)
Call:
lm(formula = DEEP ~ Number.of.Stimulations, data = dreem)

Residuals:
    Min      1Q  Median      3Q     Max
-43.055 -14.494  -2.857  12.111  54.287

Coefficients:
                       Estimate Std. Error t value Pr(>|t|)    
(Intercept)            92.81139    3.55987  26.072  < 2e-16 ***
Number.of.Stimulations  0.03528    0.01002   3.521 0.000577 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 20.94 on 143 degrees of freedom
Multiple R-squared:  0.07978,    Adjusted R-squared:  0.07335
F-statistic:  12.4 on 1 and 143 DF,  p-value: 0.0005771
interpret_r2(s$adj.r.squared[1])
[1] "weak"
confint(l , level = 0.05)
                           47.5 %      52.5 %
(Intercept)            92.5877661 93.03500637
Number.of.Stimulations  0.0346501  0.03590891

Statistical analysis

RStudio version 1.3.959 and R version 4.0.2 was user for  a simple linear regression model and to calculate slopes and p-values.
Effect sizes based on adjusted R2, Cohen's 1988 rules