13. Circadian Rhythm Analysis
Source:vignettes/chapter13_CircadianRhythm.Rmd
chapter13_CircadianRhythm.Rmd
MXLX
Detection of the continuous least (LX) and most (MX) active X hours
in a day, where X is defined by argument winhr
. For both
GGIR calculates the average acceleration, the start time, and if
argument iglevels
is specified also the intensity gradient.
If argument winhr
is a vector then descriptive values for
LX and MX are derived per value in winhr
.
Within GGIR part 2 MXLX is calculated per calendar day and, if
argument qwindow
is specified, per segment of the day.
Within GGIR part 5 MXLX is calculated per window, and if used in
combination with the GENEActiv or Axivity accelerometer brand LUX
estimates per LX and MX are included.
The MX metric described here should not be confused by the MX metrics as proposed by Rowlands et al. which looks at accumulated most active time which may not always be continuous in time. The MX metrics by Rowlands et al. are discussed here.
Cosinor analysis and Extended Cosinor analysis
Disclaimer: This functionality is currently (2024) being revised. Once the enhancements have been incorporated in a GGIR release this section will also be updated.
The (Extended) Cosinor analysis quantifies the circadian 24 hour cycle. Cosinor analysis refers to fiting a cosine function to a time series, while the extended cosinor analysis refers to fitting a cosine function to the transformed time series afrer Marler et al. Statist. Med. 2006 (doi: 10.1002/sim.2466).
To do this GGIR uses R package ActCR as a
dependency. Specify argument cosinor = TRUE
to perform
these analysis.
GGIR performs cosinor analysis both in part 2 and 6.
The implementation within GGIR part 2 is as follows:
- Acceleration values are averaged per minute, and then log
transformation as
log(acceleration converted to _mg_ + 1)
. - Invalid data points such as caused by non-wear are set to missing
(
NA
) in order to prevent the imputation approach used elsewhere in GGIR to influence the Cosinor analysis. We do this because imputation technique generally come with some assumptions about circadian rhythm. - GGIR looks for the first valid data point in the recording and then selects the maximum integer number of recording days following this data point and feeds these to the ActCosinor and ActExtendCosinor functions of ActCR. The time offset between the start and the following midnight is then used to reverse offset the ActCR results, to ensure that acrophase and acrotime can be interpreted relative to midnight.
- In relation to Day Saving Time: Duplicated time stamps when clock moves backward are ignored and missing time stamps when clock moves forward are inserted as missing values.
- Time series corresponding to the fitted models are stored inside the part 2 milestone data to facilitate visual inspection. For the moment they are not used in any GGIR visualisation, but you may want to look them up and try to plot them yourself.
The implementation within GGIR part 6 is as follows: - Only the time
series are used in the interval as defined with parameter
part6Window
. - Make sure to set
save_ms5raw_without_invalid = FALSE
, after the revision it
will also handle setting this to TRUE but for the moment TRUE introduces
errors.
Intradaily Variability (IV) and Interdaily Stability (IS)
Disclaimer: This functionality is currently (2024) being revised. Once the enhancements have been incorporated in a GGIR release this section will also be updated.
IV and IS - Default
The original implementation (argument
IVIS.activity.metric = 1
) uses the continuous numeric
acceleration values. However, as we later realised, this is not
compatible with the original approach by van Someren and colleagues,
which uses a binary distinction between active and inactive. Therefore,
a second option was added (argument
IVIS.activity.metric = 2
), which needs to be used in
combination with accelerometer metric ENMO, and collapses the
acceleration values into a binary score of rest versus active. This is
the current default.
IV and IS - Cosinor analysis compatible
IS is sometimes used as a measure of behavioural robustness when
conducting Cosinor analysis. However, to work with the combination of
the two outcomes it seems important that IS is calculated from the same
time series. Therefore, when cosinor = TRUE
IV and IS are
calculated twice: Once as part of the default IV and IS analysis as
discussed above, and once as part of the Cosinor analysis using the same
log transformed time series. More specifically, the IV and IS algorithm
is applied with IVIS.activity.metric = 2
and a threshold
IVIS_acc_threshold = log(20 + 1)
to make the binary
distinction between active and inactive, and
IVIS_per_daypair = TRUE
. The setting
IVIS_per_daypair
was specifically designed for this context
to handle the potentially missing values in the time series as used for
Cosinor analysis. Applying the default IVIS algorithm would not be able
to handle the missing values and would result in a loss of information
if all non-matching epochs across the entire recording were excluded.
Instead, IV and IS are calculated as follows:
- Per day pair based on matching valid epochs only IV and IS and calculated. Here, a log is kept of the number of valid epochs per day pair.
- Omit day pairs where the fraction of valid epoch pairs is below 0.66 (0.66 is hard-coded at the moment).
- Calculate average IS across days weighted by fraction of valid epochs per day pairs.
The new Cosinor-compatible IV and IS estimates are stored as output
variables cosinorIV
and cosinorIS
.