The Sleep Regularity Index (SRI) was proposed by Phillips and colleagues (2017) and further developed and shared as open-source R package sleepreg by Windred and colleagues (2021). The SRI can have a value between -100 and 100, where 100 reflects perfect regularity (identical days), 0 reflects random pattern, and -100 reflects perfect reversed regularity in sleep.
R package 'sleepreg' was tailored to GGIR 2.0-0 as available at the time and does not work with more recent GGIR versions. We now know that GGIR 2.0-0 came with various bugs and is best not used. Therefore, an effort has been made to address this. Once the 'sleepreg' maintainers accept the proposed changes, it will upgrade the sleepreg package code to work with both historical and later GGIR versions. In the mean time you can use the proposed upgrade to package 'sleepreg' by installing it via R command: remotes::install_github("vincentvanhees/sleepreg", ref = "upgradeGGIRversion")
.
Complementary to this effort, GGIR offers two modified implementations of SRI, which we refer to as SRI1 and SRI2. In this Annex we discuss each aspect of their calculation and how they differ from the original SRI calculation in 'sleepreg'.
However, first we would like to list all aspects that all these implementations have in common:
In 'sleepreg', 'Sleep' is by default defined as the combination of:
The 'sleepreg' package comes various options to modify the configuration of the calculation as discussed in the package documentation and in the supplementary materials to Windred et al. 2021.
In SRI1, 'Sleep' is defined as all sustained inactivity bouts, which can optionally be smoothed with a rolling average window. The rolling window size in hours is specified with parameter SRI1_smoothing_wsize_hrs
, and the fraction of time that is needed to be sustained inactivity bout is set with parameter SRI1_smoothing_frac
.
The advantage of this calculation is that it does not rely on hard assumptions about accurate detection of sleep and naps by GGIR. However, SRI1 with default non-smoothing settings may need to be interpreted as a rest regularity index. Only when using the smoothing parameters SRI1 may better reflect a true indicator of sleep regularity.
SRI1 is calculated in GGIR part 3 and stored in the csv-output of GGIR part 4.
GGIR offers experimental functionality to classify daytime naps, which is subject to ongoing investigation in young population of pre-schoolers. We are still looking for community support to help improve and evaluate the nap detection for adult populations. Please reach out (v.vanhees at acceleting dot com) if you would be interested in applying for funding or have funding and want to sponsor this development. Once the nap detection functionality has matured we will document it more elaborately. However, if you have been helping to explore the nap detection and are confident that GGIR classifies both sleep and naps accurately, e.g. after inspecting the visual reports, then SRI2 would be superior over SRI1 as measure of sleep regularity.
In SRI2, 'Sleep' is defined as all sleep classified with GGIR part 4, minus WASO, plus daytime naps as classified in GGIR part 5.
SRI2 comes with parameter SRI2_WASOmin
which allows us to define the minimum WASO length to be considered, any WASO shorter than this will be ignored and treated as sleep. In part 6, SRI is only derived when parameter SRI2_WASOmin
is specified. If no nap parameters
are set the resulting SRI estimate will only reflect the main SPT window in the day.
In the initial publication by Phillips 2017 it was proposed to only calculate SRI based on seven, or a multitude of seven, consecutive days of data without missing values. This to avoid a possible role of imbalanced data to the final estimate. However, this renders many datasets unsuitable for analysis and leads to a painful loss in sample size and statistical power. This was improved upon by Windred 2021, which allows for gaps in data. Next, SRI is calculated as one value across all valid days in the recording.
GGIR calculates and stores the SRI per day-pair.
The benefit of the approach taken in GGIR is that it enables the user to study the day-pair to day-pair variation in SRI, and the role of day-pair inclusion criteria. Further, the access to SRI at day-pair level makes it possible to account for an imbalanced datasets via multilevel regression analysis applied to the output of GGIR, with day-pair as one of the model levels.
Entire days are ignored when there are more than 6 hours of nonwear.
Per day-pair GGIR calculates the fraction of the 30 second epoch-pairs between both days that are valid, which can be found in the GGIR part 4 output under the variable name SriFractionValid
.
By default, day-pairs are excluded if this fraction is below 0.66 or if the fraction of valid data for the individual day is below 0.66. This threshold is coupled with the 16-hour default value for parameter includenightcrit
(16/24 = 0.66). For example, if you set parameter includenightcrit = 12
, the fraction threshold will be: 12 / 24 = 0.5
.
The benefit of the approach taking by GGIR is that it looks at both the completeness of matching data points between day pairs and data completeness in the day itself.
The day-pair level estimates are stored as variable SleepRegularityIndex1
in the GGIR part 4 .csv-report on sleep. Further, GGIR also stores the person-level aggregates such as: the plain average over all valid days, the average of all valid weekend days, and the average of all valid week days. No GGIR input arguments are needed to invoke the SRI calculation in part 3. The calculation is automatically performed after updating GGIR and processing your data.
SRI2 estimates are stored as variable SleepRegularityIndex2
in the GGIR part 6 output.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.