knitr::include_graphics("GGIR-MASTERLOGO-RGB.png")
See also complementary vignettes on: General introduction to GGIR, Day segment analyses, GGIR parameters, Embedding external functions (pdf), and Reading ad-hoc csv file formats.
The physical activity research field has used so called cut-points to segment accelerometer time series based on level of intensity. In this vignette we have compiled a list of published cut-points with instructions on how to use them with GGIR. As newer cut-points are frequently published the list below may not be up to date. Please let us know if you are aware of any published cut-points that we missed!
This vignette focuses on cut-points for metrics that attempt to quantify average acceleration per epoch in gravitational units. The strength of these metrics is that their values are not affected by sampling rate and epoch length improving comparability across studies.
However, GGIR also facilitates some metrics whose values are not expressed in
gravitational units that were historically used. For example, the metric as
described by Neishabouri (see GGIR argument do.neishabouricounts
) which reflects
the indicator of accumulated body movement over time, referred to as counts,
calculated by the ActiLife software from the ActiGraph accelerometer brand.
Cut-points for counts corresponding to the ActiGraph brand have been recurrently
proposed in the literature, for example, see this systematic review
with a stratification by age group. Note that cut-points for ActiGraph counts proposed before
the introduction of multiday raw data collection are most likely
hardware-based calculations which may not perfectly align with ActiGraph
software-based (Actilife) calculations of counts that Neishabouri described.
As a result, older cut-points may need to be used with caution.
The cut-points you find in the literature for ActiGraph counts cannot be applied to Neishabouri counts directly because both are epoch length specific. The cut-points from the literature need to be corrected by a conversion factor. The conversion factor is calculated as the epoch length in the new study (e.g. 5 seconds) divided by the epoch length in the original study (e.g. 60 seconds). Note that no correction for differences in sampling rate is needed because Neishabouri counts already account for this via down-sampling.
If we would want to use cut-point "100 counts per minute" from the literature on 5 second epoch data, the GGIR function call would look like this:
GGIR([...], mode = 1:5, windowsizes = c(5, 900, 3600), do.neishabouricounts = TRUE, acc.metric = "NeishabouriCount_y", threshold.in = 100 * (5/60), [...])
The argument mvpathreshold
is used in part 2 to quantify the time
accumulated over a user-specified threshold over which the
moderate-to-vigorous intensity is expected to occur. The mvpathreshold
is applied over all the metrics extracted in part 1 with the arguments
do.metric (e.g., do.enmo
, do.mad
, do.neishabouricounts
).
In part 5, threshold.lig
, threshold.mod
, and threshold.vig
are
used to indicate the thresholds to separate inactivity from light, light
from moderate, and moderate from vigorous, respectively.These thresholds
are applied over the metric defined with acc.metric
(default =
"ENMO"). Here a summary table for the parameters definition to calculate
some of the acceleration metrics that has been previously used for the
calibration of cut-points and how to define them to be used in the physical
activity intensity classification with cut-points.
+--------------+-------------------------------+---------------------------------------+
| Metric | To derive metric | Define metric for cut-points |
+==============+:==============================+:======================================+
| ENMO | do.enmo = TRUE
| acc.metric = "ENMO"
|
+--------------+-------------------------------+---------------------------------------+
| ENMOa | do.enmoa = TRUE
| acc.metric = "ENMOa"
|
+--------------+-------------------------------+---------------------------------------+
| LFENMO | do.lfenmo = TRUE
| acc.metric = "LFENMO"
|
+--------------+-------------------------------+---------------------------------------+
| MAD | do.mad = TRUE
| acc.metric = "MAD"
|
+--------------+-------------------------------+---------------------------------------+
| Neishabouri\ | do.neishabouricounts = TRUE
| acc.metric = "NeishabouriCount_x"
\ |
| counts | | acc.metric = "NeishabouriCount_y"
\ |
| | | acc.metric = "NeishabouriCount_z"
\ |
| | | acc.metric = "NeishabouriCount_vm"
|
+--------------+-------------------------------+---------------------------------------+
+---------------+--------------------+-------------+------------------------+------------------+
| Cut-points | Device\ | Age | Relevant arguments | thresholds |
| | Attachment site | | | |
+===============+:===================+:============+:=======================+:=================+
| Roscoe 2017* | GENEActiv\ | 4-5 yr | do.enmoa = TRUE
\ | Light: 61.8\ |
| | Non-dominant wrist | | do.enmo = FALSE
\ | Moderate: 100.4\ |
| | | | acc.metric = "ENMOa"
| Vigorous: N/A |
+---------------+--------------------+-------------+------------------------+------------------+
| Roscoe 2017* | GENEActiv\ | 4-5 yr | do.enmoa = TRUE
\ | Light: 94.5\ |
| | Dominant wrist | | do.enmo = FALSE
\ | Moderate: 108.5\ |
| | | | acc.metric = "ENMOa"
| Vigorous: N/A |
+---------------+--------------------+-------------+------------------------+------------------+
*These publications used acceleration metrics that sum their values per epoch rather than average them per epoch like GGIR does. So, to use their cut-point in GGIR, we provide a scaled version of the cut-points presented in the paper as: (CutPointFromPaper_in_gsecs/85.7) * 1000
. Note that sample frequency of 87.5 as reported in the publication was incorrect and based on correspondence with authors we replaced this by 85.7.
+------------------+--------------------+----------+-----------------------------------+------------------+
| Cut-points | Device\ | Age | Relevant arguments | thresholds |
| | Attachment site | | | |
+:=================+:===================+:=========+:==================================+:=================+
| Phillips 2013* | GENEA\ | 8-14 yr | do.enmoa = TRUE
\ | Light: 87.5\ |
| | Left wrist | | do.enmo = FALSE
\ | Moderate: 250\ |
| | | | acc.metric = "ENMOa"
| Vigorous: 750 |
+------------------+--------------------+----------+-----------------------------------+------------------+
| Phillips 2013* | GENEA\ | 8-14 yr | do.enmoa = TRUE
\ | Light: 75\ |
| | Right wrist | | do.enmo = FALSE
\ | Moderate: 275\ |
| | | | acc.metric = "ENMOa"
| Vigorous: 700 |
+------------------+--------------------+----------+-----------------------------------+------------------+
| Phillips 2013* | GENEA\ | 8-14 yr | do.enmoa = TRUE
\ | Light: 37.5\ |
| | Hip | | do.enmo = FALSE
\ | Moderate: 212.5\ |
| | | | acc.metric = "ENMOa"
| Vigorous: 637.5 |
+------------------+--------------------+----------+-----------------------------------+------------------+
| Schaefer 2014* | GENEActiv\ | 6-11 yr | do.bfen = TRUE
\ | Light: 190\ |
| | Non-dominant wrist | | lb = 0.2
\ | Moderate: 314\ |
| | | | hb = 15
\ | Vigorous: 998 |
| | | | do.enmo = FALSE
\ | |
| | | | acc.metric = "BFEN"
| |
+------------------+--------------------+----------+-----------------------------------+------------------+
| Hildebrand 2014\ | ActiGraph\ | 7-11 yr | Default values\ | Light: 35.6\ |
| Hildebrand 2016 | Non-dominant wrist | | do.enmo = TRUE
\ | Moderate: 201.4\ |
| | | | acc.metric = "ENMO"
| Vigorous: 707.0 |
+------------------+--------------------+----------+-----------------------------------+------------------+
| Hildebrand 2014\ | GENEActiv\ | 7-11 yr | Default values\ | Light: 56.3\ |
| Hildebrand 2016 | Non-dominant wrist | | do.enmo = TRUE
\ | Moderate: 191.6\ |
| | | | acc.metric = "ENMO"
| Vigorous: 695.8 |
+------------------+--------------------+----------+-----------------------------------+------------------+
| Hildebrand 2014\ | ActiGraph\ | 7-11 yr | Default values\ | Light: 63.3\ |
| Hildebrand 2016 | Hip | | do.enmo = TRUE
\ | Moderate: 142.6\ |
| | | | acc.metric = "ENMO"
| Vigorous: 464.6 |
+------------------+--------------------+----------+-----------------------------------+------------------+
| Hildebrand 2014\ | GENEActiv\ | 7-11 yr | Default values\ | Light: 64.1\ |
| Hildebrand 2016 | Hip | | do.enmo = TRUE
\ | Moderate: 152.8\ |
| | | | acc.metric = "ENMO"
| Vigorous: 514.3 |
+------------------+--------------------+----------+-----------------------------------+------------------+
| Aittasalo 2015 | ActiGraph\ | 13-15 yr | Default values\ | Light: 26.9\ |
| | Hip | | do.mad = TRUE
\ | Moderate: 332\ |
| | | | do.enmo = FALSE
\ | Vigorous: 558.3 |
| | | | acc.metric = "MAD"
| |
+------------------+--------------------+----------+-----------------------------------+------------------+
| Aittasalo 2015 | Hookie AM20\ | 13-15 yr | Default values\ | Light: 28.7\ |
| | Hip | | do.mad = TRUE
\ | Moderate: 338\ |
| | | | do.enmo = FALSE
\ | Vigorous: 558.3 |
| | | | acc.metric = "MAD"
| |
+------------------+--------------------+----------+-----------------------------------+------------------+
*These publications used acceleration metrics that sum their values per epoch rather than average them per epoch like GGIR does. So, to use their cut-point in GGIR, we provide a scaled version of the cut-points presented in the paper as: (CutPointFromPaper_in_gmins/(sampleRateFromPaper * EpochLengthInSecondsPaper)) * 1000
** This publication used acceleration metrics that expressed their cut-points in g units. So, to use their cut-point in GGIR, we provide a cut-point multiplied by 1000.
+-------------------+--------------------+---------------+-----------------------------------+------------------+
| Cut-points | Device\ | Age | Relevant arguments | thresholds |
| | Attachment site | | | |
+:==================+:===================+:==============+:==================================+:=================+
| Esliger 2011* | Left wrist | 40-65 yr | do.enmoa = TRUE
\ | Light: 45\ |
| | | | do.enmo = FALSE
\ | Moderate: 134\ |
| | | | acc.metric = "ENMOa"
| Vigorous: 377 |
+-------------------+--------------------+---------------+-----------------------------------+------------------+
| Esliger 2011* | Right wrist | 40-65 yr | do.enmoa = TRUE
\ | Light: 80\ |
| | | | do.enmo = FALSE
\ | Moderate: 92\ |
| | | | acc.metric = "ENMOa"
| Vigorous: 437 |
+-------------------+--------------------+---------------+-----------------------------------+------------------+
| Esliger 2011* | Waist | 40-65 yr | do.enmoa = TRUE
\ | Light: 16\ |
| | | | do.enmo = FALSE
\ | Moderate: 46\ |
| | | | acc.metric = "ENMOa"
| Vigorous: 428 |
+-------------------+--------------------+---------------+-----------------------------------+------------------+
| Hildebrand 2014\ | ActiGraph\ | 21-61 yr | Default values\ | Light: 44.8\ |
| Hildebrand 2016 | Non-dominant wrist | | do.enmo = TRUE
\ | Moderate: 100.6\ |
| | | | acc.metric = "ENMO"
| Vigorous: 428.8 |
+-------------------+--------------------+---------------+-----------------------------------+------------------+
| Hildebrand 2014\ | GENEActiv\ | 21-61 yr | Default values\ | Light: 45.8\ |
| Hildebrand 2016 | Non-dominant wrist | | do.enmo = TRUE
\ | Moderate: 93.2\ |
| | | | acc.metric = "ENMO"
| Vigorous: 418.3 |
+-------------------+--------------------+---------------+-----------------------------------+------------------+
| Hildebrand 2014\ | ActiGraph\ | 21-61 yr | Default values\ | Light: 47.4\ |
| Hildebrand 2016 | Hip | | do.enmo = TRUE
\ | Moderate: 69.1\ |
| | | | acc.metric = "ENMO"
| Vigorous: 258.7 |
+-------------------+--------------------+---------------+-----------------------------------+------------------+
| Hildebrand 2014\ | GENEActiv\ | 21-61 yr | Default values\ | Light: 46.9\ |
| Hildebrand 2016 | Hip | | do.enmo = TRUE
\ | Moderate: 68.7\ |
| | | | acc.metric = "ENMO"
| Vigorous: 266.8 |
+-------------------+--------------------+---------------+-----------------------------------+------------------+
| Vähä-Ypyä 2015 | Hookie AM20\ | 35 (SD=11) yr | do.mad = TRUE
\ | Light: N/A\ |
| | Hip | | do.enmo = FALSE
\ | Moderate: 91\ |
| | | | acc.metric = "MAD"
| Vigorous: 414 |
+-------------------+--------------------+---------------+-----------------------------------+------------------+
| Dillon 2016*^,†^ | GENEActiv\ | 50-69 yr | do.enmoa = TRUE
\ | Light: 105.6\ |
| | Non-dominant wrist | | do.enmo = FALSE
\ | Moderate: 174.2\ |
| | | | acc.metric = "ENMOa"
| Vigorous: 330 |
+-------------------+--------------------+---------------+-----------------------------------+------------------+
| Dillon 2016*^,†^ | GENEActiv\ | 50-69 yr | do.enmoa = TRUE
\ | Light: 127.8\ |
| | Dominant wrist | | do.enmo = FALSE
\ | Moderate: 187.6\ |
| | | | acc.metric = "ENMOa"
| Vigorous: 396.4 |
+-------------------+--------------------+---------------+-----------------------------------+------------------+
| Buchan 2023*^,†^ | activPAL\ | 23 (SD=4) yr | **Default values\ | Light: 26.4\ |
| | Right thigh | | do.enmo = TRUE
\ | Moderate: N/A\ |
| | | | acc.metric = "ENMO"
| Vigorous: N/A |
+-------------------+--------------------+---------------+-----------------------------------+------------------+
| Buchan 2023*^,†^ | activPAL\ | 23 (SD=4) yr | do.mad = TRUE
\ | Light: 30.1\ |
| | Right thigh | | do.enmo = FALSE
\ | Moderate: N/A\ |
| | | | acc.metric = "MAD"
| Vigorous: N/A |
+-------------------+--------------------+---------------+-----------------------------------+------------------+
*These publications used acceleration metrics that sum their values per epoch rather than average them per epoch like GGIR does. So, to use their cut-point in GGIR, we provide a scaled version of the cut-points presented in the paper as: (CutPointFromPaper_in_gmins/(sampleRateFromPaper * EpochLengthInSecondsPaper)) * 1000
^†^ In this publication, there are cut-point based on data sampled at 30 Hz and 100 Hz. When scaling the cut-points as specified in (*), the resulting thresholds are virtually the same (the ones presented in this table).
+------------------+--------------------+-------------------+------------------------+-----------------+
| Cut-points | Device\ | Age | Relevant arguments | thresholds |
| | Attachment site | | | |
+:=================+:===================+:==================+:=======================+:================+
| Sanders 2019* | GENEActiv\ | 60-86 yr | Default values\ | Light: 20\ |
| | Non-dominant wrist | | do.enmo = TRUE
\ | Moderate: 32\ |
| | | | acc.metric = "ENMO"
| Vigorous: N/A |
+------------------+--------------------+-------------------+------------------------+-----------------+
| Sanders 2019** | GENEActiv\ | 60-86 yr | Default values\ | Light: 57\ |
| | Non-dominant wrist | | do.enmo = TRUE
\ | Moderate: 104\ |
| | | | acc.metric = "ENMO"
| Vigorous: N/A |
+------------------+--------------------+-------------------+------------------------+-----------------+
| Sanders 2019* | ActiGraph\ | 60-86 yr | Default values\ | Light: 6\ |
| | Hip | | do.enmo = TRUE
\ | Moderate: 19\ |
| | | | acc.metric = "ENMO"
| Vigorous: N/A |
+------------------+--------------------+-------------------+------------------------+-----------------+
| Sanders 2019** | ActiGraph\ | 60-86 yr | Default values\ | Light: 15\ |
| | Hip | | do.enmo = TRUE
\ | Moderate: 69\ |
| | | | acc.metric = "ENMO"
| Vigorous: N/A |
+------------------+--------------------+-------------------+------------------------+-----------------+
| Migueles 2021 | ActiGraph\ | ≥70 yr \ | Default values\ | Light: 18\ |
| | Non-dominant wrist | (mean: 78.7 yr) | do.enmo = TRUE
\ | Moderate: 60\ |
| | | | acc.metric = "ENMO"
| Vigorous: N/A |
+------------------+--------------------+-------------------+------------------------+-----------------+
| Migueles 2021 | ActiGraph\ | ≥70 yr \ | Default values\ | Light: 22\ |
| | Dominant wrist | (mean: 78.7 yr) | do.enmo = TRUE
\ | Moderate: 64\ |
| | | | acc.metric = "ENMO"
| Vigorous: N/A |
+------------------+--------------------+-------------------+------------------------+-----------------+
| Migueles 2021 | ActiGraph\ | ≥70 yr \ | Default values\ | Light: 7\ |
| | Hip | (mean: 78.7 yr) | do.enmo = TRUE
\ | Moderate: 14\ |
| | | | acc.metric = "ENMO"
| Vigorous: N/A |
+------------------+--------------------+-------------------+------------------------+-----------------+
| Fraysse 2020^†^ | GENEActiv\ | ≥70 yr \ | do.enmoa = TRUE
\ | Light: 42.5\ |
| | Non-dominant wrist | (mean: 77 yr) | do.enmo = FALSE
\ | Moderate: 98\ |
| | | | acc.metric = "ENMOa"
| Vigorous: N/A |
+------------------+--------------------+-------------------+------------------------+-----------------+
| Fraysse 2020^†^ | GENEActiv\ | ≥70 yr \ | do.enmoa = TRUE
\ | Light: 62.5\ |
| | Dominant wrist | (mean: 77 yr) | do.enmo = FALSE
\ | Moderate: 92.5\ |
| | | | acc.metric = "ENMOa"
| Vigorous: N/A |
+------------------+--------------------+-------------------+------------------------+-----------------+
| Dibben 2020^‡^ | GENEActiv\ | 70.7 (SD=14.1) yr | do.enmoa = TRUE
\ | Light: 18.6\ |
| | Right wrist | | do.enmo = FALSE
\ | Moderate: 45.5\ |
| | | | acc.metric = "ENMOa"
| Vigorous: N/A |
+------------------+--------------------+-------------------+------------------------+-----------------+
| Dibben 2020^‡^ | GENEActiv\ | 70.7 (SD=14.1) yr | do.mad = TRUE
\ | Light: 18.3\ |
| | Right wrist | | do.enmo = FALSE
\ | Moderate: 26.2\ |
| | | | acc.metric = "MAD"
| Vigorous: N/A |
+------------------+--------------------+-------------------+------------------------+-----------------+
| Dibben 2020^‡^ | GENEActiv\ | 70.7 (SD=14.1) yr | do.enmoa = TRUE
\ | Light: 16.7\ |
| | Left wrist | | do.enmo = FALSE
\ | Moderate: 43.6\ |
| | | | acc.metric = "ENMOa"
| Vigorous: N/A |
+------------------+--------------------+-------------------+------------------------+-----------------+
| Dibben 2020^‡^ | GENEActiv\ | 70.7 (SD=14.1) yr | do.mad = TRUE
\ | Light: 18.7\ |
| | Left wrist | | do.enmo = FALSE
\ | Moderate: 22.8\ |
| | | | acc.metric = "MAD"
| Vigorous: N/A |
+------------------+--------------------+-------------------+------------------------+-----------------+
| Dibben 2020^‡^ | GENEActiv\ | 70.7 (SD=14.1) yr | do.enmoa = TRUE
\ | Light: 7.6\ |
| | Hip | | do.enmo = FALSE
\ | Moderate: 40.6\ |
| | | | acc.metric = "ENMOa"
| Vigorous: N/A |
+------------------+--------------------+-------------------+------------------------+-----------------+
| Dibben 2020^‡^ | GENEActiv\ | 70.7 (SD=14.1) yr | do.mad = TRUE
\ | Light: 1\ |
| | Hip | | do.enmo = FALSE
\ | Moderate: 2.4\ |
| | | | acc.metric = "MAD"
| Vigorous: N/A |
+------------------+--------------------+-------------------+------------------------+-----------------+
*Cut-points derived from applying the Youden index on ROC curves.\
** Cut-points derived from increasing Sensitivity over Specificity for light and vice versa for moderate on ROC curves (see paper for more details).\
^†^ These publications used acceleration metrics that sum their values per epoch rather than average them per epoch like GGIR does. So, to use their cut-point in GGIR, we provide a scaled version of the cut-points presented in the paper as: (CutPointFromPaper_in_gmins/(sampleRateFromPaper * EpochLengthInSecondsPaper)) * 1000
^‡^ More cut-points excluding data on aided walking and washing up activities can be found in the publication.
Sensor calibration
In all of the studies above, excluding Hildebrand et al. 2016, no effort was made to calibrate the acceleration sensors relative to gravitational acceleration prior to cut-point development. Theoretically this can be expected to cause a bias in the cut-point estimates proportional to the calibration error in each device, especially for cut-points based on acceleration metrics which rely on the assumption of accurate calibration such as metrics: ENMO, EN, ENMOa, and by that also metric SVMgs used by studies such as Esliger 2011, Phillips 2013, and Dibben 2020.
Idle sleep mode and ActiGraph
As discussed in the main package vignette, studies using the ActiGraph sensor often forget to clarify whether idle sleep mode was used and if so, how it was accounted for in the data processing.
How about all the criticism towards cut-point methods?
For a more elaborate reflection on the limitations of cut-points and a motivation why cut-points still have value in GGIR see: https://www.accelting.com/updates/why-does-ggir-facilitate-cut-points/
Any scripts or data that you put into this service are public.
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.