# Published cut-points and how to use them in GGIR

NOTE: If you are viewing this page via CRAN note that the main GGIR documentation has been migrated to the GGIR GitHub pages.

# 1 Considerations

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. Please note that GGIR refers to cut-points as thresholds, but we are referring to the same thing: A value or a set of values to help split levels of movement intensity. 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!

## 1.1 Cut-points expressed in gravitational units (this vignette)

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.

## 1.2 Cut-points NOT expressed in gravitational units (not in this vignette)

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),
         [...])

As a side note - Although counts are epoch length specific it is possible to convert them into gravitational units by dividing the count value by the sampling rate as used by the count algorithm (30 Hertz for ActiGraph counts) multiplied by the number of seconds in the time window for which the count value was derived. For example, 100 counts per minute equates to an average acceleration per minute of 100 / (30 x 60) = 0.055 g, and 1950 counts per minute equals 1.0833 g. Note that the absolute acceleration values from different acceleration metrics are not comparable. However, expressing data in g-units can at least ease evaluating the validity of metrics relative to criterion acceleration and removes the non-informative connection to sampling rate (van Hees et al. 2013 https://doi.org/10.1371/journal.pone.0061691). As this calculation shows, count-units and g-unit metrics only differ by a constant, by which there is no practical difference in their ability to explain variance in human behaviour. Similarly, if you would like to convert an average daily acceleration of 0.05 g back to counts per day then you would have to multiply by (30 Hertz x 60 seconds x 1440 minutes), which gives 129600 counts per day.

# 2 Relevant arguments to use cut-points in GGIR

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 counts | `do.neishabouricounts = TRUE` | `acc.metric = "NeishabouriCount_x"` `acc.metric = "NeishabouriCount_y"` `acc.metric = "NeishabouriCount_z"` `acc.metric = "NeishabouriCount_vm"`

# 3 Summary of published cut-points

## 3.1 Cut-points for preschoolers

Cut-points | Device Attachment site | Age | Relevant arguments | thresholds
--- | --- | --- | --- | ---
Roscoe 2017* | GENEActiv Non-dominant wrist | 4-5 yr | `do.enmoa = TRUE` `do.enmo = FALSE` `acc.metric = "ENMOa"` | Light: 61.8 Moderate: 100.4 Vigorous: N/A
Roscoe 2017* | GENEActiv Dominant wrist | 4-5 yr | `do.enmoa = TRUE` `do.enmo = FALSE` `acc.metric = "ENMOa"` | Light: 94.5 Moderate: 108.5 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.

## 3.2 Cut-points for children/adolescents

Cut-points | Device Attachment site | Age | Relevant arguments | thresholds
--- | --- | --- | --- | ---
Phillips 2013* | GENEA Left wrist | 8-14 yr | `do.enmoa = TRUE` `do.enmo = FALSE` `acc.metric = "ENMOa"` | Light: 87.5 Moderate: 250 Vigorous: 750
Phillips 2013* | GENEA Right wrist | 8-14 yr | `do.enmoa = TRUE` `do.enmo = FALSE` `acc.metric = "ENMOa"` | Light: 75 Moderate: 275 Vigorous: 700
Phillips 2013* | GENEA Hip | 8-14 yr | `do.enmoa = TRUE` `do.enmo = FALSE` `acc.metric = "ENMOa"` | Light: 37.5 Moderate: 212.5 Vigorous: 637.5
Schaefer 2014* | GENEActiv Non-dominant wrist | 6-11 yr | `do.bfen = TRUE` `lb = 0.2` `hb = 15` `do.enmo = FALSE` `acc.metric = "BFEN"` | Light: 190 Moderate: 314 Vigorous: 998
Hildebrand 2014 Hildebrand 2016 | ActiGraph Non-dominant wrist | 7-11 yr | Default values `do.enmo = TRUE` `acc.metric = "ENMO"` | Light: 35.6 Moderate: 201.4 Vigorous: 707.0
Hildebrand 2014 Hildebrand 2016 | GENEActiv Non-dominant wrist | 7-11 yr | Default values `do.enmo = TRUE` `acc.metric = "ENMO"` | Light: 56.3 Moderate: 191.6 Vigorous: 695.8
Hildebrand 2014 Hildebrand 2016 | ActiGraph Hip | 7-11 yr | Default values `do.enmo = TRUE` `acc.metric = "ENMO"` | Light: 63.3 Moderate: 142.6 Vigorous: 464.6
Hildebrand 2014 Hildebrand 2016 | GENEActiv Hip | 7-11 yr | Default values `do.enmo = TRUE` `acc.metric = "ENMO"` | Light: 64.1 Moderate: 152.8 Vigorous: 514.3
Aittasalo 2015 | ActiGraph Hip | 13-15 yr | Default values `do.mad = TRUE` `do.enmo = FALSE` `acc.metric = "MAD"` | Light: 26.9 Moderate: 332 Vigorous: 558.3
Aittasalo 2015 | Hookie AM20 Hip | 13-15 yr | Default values `do.mad = TRUE` `do.enmo = FALSE` `acc.metric = "MAD"` | Light: 28.7 Moderate: 338 Vigorous: 558.3

*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.

## 3.3 Cut-points for adults

Cut-points | Device Attachment site | Age | Relevant arguments | thresholds
--- | --- | --- | --- | ---
Esliger 2011* | Left wrist | 40-65 yr | `do.enmoa = TRUE` `do.enmo = FALSE` `acc.metric = "ENMOa"` | Light: 45 Moderate: 134 Vigorous: 377
Esliger 2011* | Right wrist | 40-65 yr | `do.enmoa = TRUE` `do.enmo = FALSE` `acc.metric = "ENMOa"` | Light: 80 Moderate: 92 Vigorous: 437
Esliger 2011* | Waist | 40-65 yr | `do.enmoa = TRUE` `do.enmo = FALSE` `acc.metric = "ENMOa"` | Light: 16 Moderate: 46 Vigorous: 428
Hildebrand 2014 Hildebrand 2016 | ActiGraph Non-dominant wrist | 21-61 yr | Default values `do.enmo = TRUE` `acc.metric = "ENMO"` | Light: 44.8 Moderate: 100.6 Vigorous: 428.8
Hildebrand 2014 Hildebrand 2016 | GENEActiv Non-dominant wrist | 21-61 yr | Default values `do.enmo = TRUE` `acc.metric = "ENMO"` | Light: 45.8 Moderate: 93.2 Vigorous: 418.3
Hildebrand 2014 Hildebrand 2016 | ActiGraph Hip | 21-61 yr | Default values `do.enmo = TRUE` `acc.metric = "ENMO"` | Light: 47.4 Moderate: 69.1 Vigorous: 258.7
Hildebrand 2014 Hildebrand 2016 | GENEActiv Hip | 21-61 yr | Default values `do.enmo = TRUE` `acc.metric = "ENMO"` | Light: 46.9 Moderate: 68.7 Vigorous: 266.8
Mielke 2023 | GENEActiv Non-dominant wrist | 35 (SD=11) yr | Default values `do.enmo = TRUE` `acc.metric = "ENMO"` | Light: 36 Moderate: 92 Vigorous: 283
Mielke 2023 | ActiGraph Non-dominant wrist | 35 (SD=11) yr | Default values `do.enmo = TRUE` `acc.metric = "ENMO"` | Light: 25 Moderate: 78 Vigorous: 249
Mielke 2023 | GENEActiv Dominant wrist | 35 (SD=11) yr | Default values `do.enmo = TRUE` `acc.metric = "ENMO"` | Light: 30 Moderate: 85 Vigorous: 270
Mielke 2023 | ActiGraph Dominant waist | 35 (SD=11) yr | Default values `do.enmo = TRUE` `acc.metric = "ENMO"` | Light: 40 Moderate: 65 Vigorous: 190
Vähä-Ypyä 2015 | Hookie AM20 Hip | 35 (SD=11) yr | `do.mad = TRUE` `do.enmo = FALSE` `acc.metric = "MAD"` | Light: N/A Moderate: 91 Vigorous: 414
Dillon 2016*,† | GENEActiv Non-dominant wrist | 50-69 yr | `do.enmoa = TRUE` `do.enmo = FALSE` `acc.metric = "ENMOa"` | Light: 105.6 Moderate: 174.2 Vigorous: 330
Dillon 2016*,† | GENEActiv Dominant wrist | 50-69 yr | `do.enmoa = TRUE` `do.enmo = FALSE` `acc.metric = "ENMOa"` | Light: 127.8 Moderate: 187.6 Vigorous: 396.4
Buchan 2023*,† | activPAL Right thigh | 23 (SD=4) yr | **Default values `do.enmo = TRUE` `acc.metric = "ENMO"` | Light: 26.4 Moderate: N/A Vigorous: N/A
Buchan 2023*,† | activPAL Right thigh | 23 (SD=4) yr | `do.mad = TRUE` `do.enmo = FALSE` `acc.metric = "MAD"` | Light: 30.1 Moderate: N/A 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).

## 3.4 Cut-points for older adults

Cut-points | Device Attachment site | Age | Relevant arguments | thresholds
--- | --- | --- | --- | ---
Sanders 2019* | GENEActiv Non-dominant wrist | 60-86 yr | Default values `do.enmo = TRUE` `acc.metric = "ENMO"` | Light: 20 Moderate: 32 Vigorous: N/A
Sanders 2019** | GENEActiv Non-dominant wrist | 60-86 yr | Default values `do.enmo = TRUE` `acc.metric = "ENMO"` | Light: 57 Moderate: 104 Vigorous: N/A
Sanders 2019* | ActiGraph Hip | 60-86 yr | Default values `do.enmo = TRUE` `acc.metric = "ENMO"` | Light: 6 Moderate: 19 Vigorous: N/A
Sanders 2019** | ActiGraph Hip | 60-86 yr | Default values `do.enmo = TRUE` `acc.metric = "ENMO"` | Light: 15 Moderate: 69 Vigorous: N/A
Migueles 2021 | ActiGraph Non-dominant wrist | ≥70 yr (mean: 78.7 yr) | Default values `do.enmo = TRUE` `acc.metric = "ENMO"` | Light: 18 Moderate: 60 Vigorous: N/A
Migueles 2021 | ActiGraph Dominant wrist | ≥70 yr (mean: 78.7 yr) | Default values `do.enmo = TRUE` `acc.metric = "ENMO"` | Light: 22 Moderate: 64 Vigorous: N/A
Migueles 2021 | ActiGraph Hip | ≥70 yr (mean: 78.7 yr) | Default values `do.enmo = TRUE` `acc.metric = "ENMO"` | Light: 7 Moderate: 14 Vigorous: N/A
Bammann 2021 | ActiGraph Hip | 62.9 (SD=3.6) yr | Default values `do.enmo = TRUE` `acc.metric = "ENMO"` | Moderate: 94 Vigorous: 230
Bammann 2021 | ActiGraph Dominant Wrist | 62.9 (SD=3.6) yr | Default values `do.enmo = TRUE` `acc.metric = "ENMO"` | Moderate: 122 Vigorous: 234
Bammann 2021 | ActiGraph Non-dominant Wrist | 62.9 (SD=3.6) yr | Default values `do.enmo = TRUE` `acc.metric = "ENMO"` | Moderate: 100 Vigorous: 245
Bammann 2021 | ActiGraph Dominant Ankle | 62.9 (SD=3.6) yr | Default values `do.enmo = TRUE` `acc.metric = "ENMO"` | Moderate: 342
Bammann 2021 | ActiGraph Non-dominant Ankle | 62.9 (SD=3.6) yr | Default values `do.enmo = TRUE` `acc.metric = "ENMO"` | Moderate: 331
Fraysse 2020† | GENEActiv Non-dominant wrist | ≥70 yr (mean: 77 yr) | `do.enmoa = TRUE` `do.enmo = FALSE` `acc.metric = "ENMOa"` | Light: 42.5 Moderate: 98 Vigorous: N/A
Fraysse 2020† | GENEActiv Dominant wrist | ≥70 yr (mean: 77 yr) | `do.enmoa = TRUE` `do.enmo = FALSE` `acc.metric = "ENMOa"` | Light: 62.5 Moderate: 92.5 Vigorous: N/A
Dibben 2020‡ | GENEActiv Right wrist | 70.7 (SD=14.1) yr | `do.enmoa = TRUE` `do.enmo = FALSE` `acc.metric = "ENMOa"` | Light: 18.6 Moderate: 45.5 Vigorous: N/A
Dibben 2020‡ | GENEActiv Right wrist | 70.7 (SD=14.1) yr | `do.mad = TRUE` `do.enmo = FALSE` `acc.metric = "MAD"` | Light: 18.3 Moderate: 26.2 Vigorous: N/A
Dibben 2020‡ | GENEActiv Left wrist | 70.7 (SD=14.1) yr | `do.enmoa = TRUE` `do.enmo = FALSE` `acc.metric = "ENMOa"` | Light: 16.7 Moderate: 43.6 Vigorous: N/A
Dibben 2020‡ | GENEActiv Left wrist | 70.7 (SD=14.1) yr | `do.mad = TRUE` `do.enmo = FALSE` `acc.metric = "MAD"` | Light: 18.7 Moderate: 22.8 Vigorous: N/A
Dibben 2020‡ | GENEActiv Hip | 70.7 (SD=14.1) yr | `do.enmoa = TRUE` `do.enmo = FALSE` `acc.metric = "ENMOa"` | Light: 7.6 Moderate: 40.6 Vigorous: N/A
Dibben 2020‡ | GENEActiv Hip | 70.7 (SD=14.1) yr | `do.mad = TRUE` `do.enmo = FALSE` `acc.metric = "MAD"` | Light: 1 Moderate: 2.4 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.

# 4 Notes on cut-point validity

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/why-does-ggir-facilitate-cut-points/

# 5 References

- Aittasalo 2015: https://doi.org/10.1186/s13102-015-0010-0
- Bammann 2021: https://doi.org/10.1371/journal.pone.0252615
- Dibben 2020: https://doi.org/10.1186/s13102-020-00196-7
- Dillon 2016: https://doi.org/10.1371%2Fjournal.pone.0109913
- Esliger 2011: https://doi.org/10.1249/mss.0b013e31820513be
- Fraysse 2020: https://doi.org/10.3389%2Ffspor.2020.579278
- Hildebrand 2014: https://doi.org/10.1249/mss.0000000000000289
- Hildebrand 2016: https://doi.org/10.1111/sms.12795
- Mielke 2023: https://doi.org/10.1111/sms.14416
- Migueles 2021: https://doi.org/10.3390%2Fs21103326
- Phillips 2013: https://doi.org/10.1016/j.jsams.2012.05.013
- Sanders 2018: https://doi.org/10.1080/02640414.2018.1555904
- Schaefer 2014: https://doi.org/10.1249%2FMSS.0000000000000150
- Roscoe 2017: https://doi.org/10.1007/s00431-017-2948-2
- Vähä-Ypyä 2015: https://doi.org/10.1371/journal.pone.0134813