NOTE: With the growing amount of functionality in GGIR we have decided to migrate the narrative documentation to the GitHub pages of GGIR. This to ease maintenance and accessibility. Therefore, many of the sections in this vignette have been replaced by a link to their new location.
This section has been migrated to this section in the GGIR github-pages, which is now the main documentation resource for GGIR.
Cite GGIR:
This section has been migrated to this section in the GGIR github-pages, which is now the main documentation resource for GGIR.
This section has been migrated to this section in the GGIR github-pages, which is now the main documentation resource for GGIR.
You will probably never need to think about most of the arguments listed above, because a lot of arguments are only included to facilitate methodological studies where researchers want to have control over every little detail. See previous paragraph for links to the documentation and how to find the default value of each parameter.
The bare minimum input needed for GGIR
is:
library(GGIR)
GGIR(datadir="C:/mystudy/mydata",
outputdir="D:/myresults")
Argument datadir
allows you to specify where you have
stored your accelerometer data and outputdir
allows you to
specify where you would like the output of the analyses to be stored.
This cannot be equal to datadir
. If you copy paste the
above code to a new R script (file ending with .R) and Source it in
R(Studio) then the dataset will be processed and the output will be
stored in the specified output directory.
Below we have highlighted the key arguments you may want to be aware of. We are not giving a detailed explanation, please see the package manual for that.
mode
- which part of GGIR to run, GGIR is constructed
in five parts with a sixth part under development.overwrite
- whether to overwrite previously produced
milestone output. Between each GGIR part, GGIR stores milestone output
to ease re-running parts of the pipeline.idloc
- tells GGIR where to find the participant ID
(default: inside file header)data_masking_strategy
- informs GGIR how to consider
the design of the experiment.
data_masking_strategy
is set to value 1, then check
out arguments hrs.del.start
and
hrs.del.end
.data_masking_strategy
is set to value 3 or 5, then
check out arguments ndayswindow
, hrs.del.start
and hrs.del.end
.maxdur
- maximum number of days you expect in a data
file based on the study protocol.desiredtz
- time zone of the experiment.chunksize
- a way to tell GGIR to use less memory,
which can be useful on machines with limited memory.includedaycrit
- tell GGIR how many hours of valid data
per day (midnight-midnight) is acceptable.includenightcrit
- tell GGIR how many hours of a valid
night (noon-noon) is acceptable.qwindow
- argument to tell GGIR whether and how to
segment the day for day-segment specific analysis.mvpathreshold
and boutcriter
-
acceleration threshold and bout criteria used for calculating time spent
in MVPA (only used in GGIR part2).epochvalues2csv
- to export epoch level magnitude of
acceleration to a csv files (in addition to already being stored as
RData file)dayborder
- to decide whether the edge of a day should
be other than midnight.iglevels
- argument related to intensity gradient
method proposed by A. Rowlands.do.report
- specify reports that need to be
generated.viewingwindow
and visualreport
- to create
a visual report, this only works when all five parts of GGIR have
successfully run. Note that the visual report was initially developed to
provide something to show to study participants and not for data quality
checking purposes. Over time we have improved the visual report to also
be useful for QC-ing the data. however, some of the scorings as shown in
the visual report are created for the visual report only and may not
reflect the scorings in the main GGIR analyses as reported in the
quantitative csv-reports. Most of our effort in the past 10 years has
gone into making sure that the csv-report are correct, while the
visualreport has mostly been a side project. This is unfortunate and we
hope to find funding in the future to design a new report specifically
for the purpose of QC-ing the anlayses done by GGIR.maxRecordingInterval
- if specified controls whether
neighboring or overlapping recordings with the same participant ID and
brand are appended at epoch level. This can be useful when the intention
is to monitor behaviour over larger periods of time but accelerometers
only allow for a few weeks of data collection. GGIR will never append or
alter the raw input file, this operation is preformed on the derived
data.study_dates_file
- if specified trims the recorded data
to the first and last date in which the study took place. This is
relevant for studies that started the recording several days before the
accelerometers were actually worn by participants. This is used on the
top of data_masking_strategy, so that it may be combined with the
strategies in GGIR.This section has been rewritten and moved. Please, visit the vignette Published cut-points and how to use them in GGIR for more details on the cut-points available, how to use them, and some additional reflections on the use of cut-points in GGIR.
This section has been migrated to this section in the GGIR github-pages, which is now the main documentation resource for GGIR.
This section has been migrated to this section in the GGIR github-pages, which is now the main documentation resource for GGIR.
Create an R-script and put the GGIR call in it. Next, you can source
the R-script with the source
function in R:
source("pathtoscript/myshellscript.R")
or use the Source button in RStudio if you use RStudio.
This section has been migrated to this section in the GGIR github-pages, which is now the main documentation resource for GGIR.
This section has been migrated to this section in the GGIR github-pages, which is now the main documentation resource for GGIR.
GGIR generates the following types of output.
This section has been migrated to this section in the GGIR github-pages, which is now the main documentation resource for GGIR.
This section has been migrated to this section in the GGIR github-pages, which is now the main documentation resource for GGIR.
This section has been migrated to this section in the GGIR github-pages, which is now the main documentation resource for GGIR.
This section has been migrated to this section in the GGIR github-pages, which is now the main documentation resource for GGIR.
This section has been migrated to this section in the GGIR github-pages, which is now the main documentation resource for GGIR.
This section has been migrated to this section in the GGIR github-pages, which is now the main documentation resource for GGIR.
This section has been migrated to this section in the GGIR github-pages, which is now the main documentation resource for GGIR.
This section has been migrated to this section in the GGIR github-pages, which is now the main documentation resource for GGIR.
This section has been migrated to this section in the GGIR github-pages, which is now the main documentation resource for GGIR.
This section has been migrated to this section in the GGIR github-pages, which is now the main documentation resource for GGIR.
This section has been migrated to this section in the GGIR github-pages, which is now the main documentation resource for GGIR.
This section has been migrated to this section in the GGIR github-pages, which is now the main documentation resource for GGIR.
In this chapter we will try to collect motivations and clarification behind GGIR which may not have been clear from the existing publications.
Some tips to increase reproducibility of your findings:
This section has been migrated to this section in the GGIR github-pages, which is now the main documentation resource for GGIR.
This section has been migrated to this section in the GGIR github-pages, which is now the main documentation resource for GGIR.
This section has been migrated to this section in the GGIR github-pages, which is now the main documentation resource for GGIR.
Although many data points are collected we decide to only work with aggregated values (e.g. 1 or 5 second epochs) for the following reasons:
Accelerometers are often used to describe patterns in metabolic energy expenditure. Metabolic energy expenditure is typically defined per breath or per minute (indirect calorimetry), per day (room calorimeter), or per multiple days (doubly labelled water method). In order to validate our methods against these reference standards we need to work with a similar time resolution.
Collapsing the data to epoch summary measures helps to standardise for differences in sample frequency between studies.
There is little evidence that the raw data is an accurate representation of body acceleration. All scientific evidence on the validity of accelerometer data has so far been based on epoch averages.
Collapsing the data to epoch summary measures may help to average out different noise levels and make sensor brands more comparable.
GGIR uses short (default 5 seconds) and long epochs (default 15 minutes). The epochs are aligned to the hour in the day, and to each other. For example, if a recording starts at 9:52:00 then the GGIR will work with epochs derived from 10:00:00 onward. If the recording starts at 10:12 then GGIR will work with epochs derived from 10:15:00 onward.
Motivation:
If the first 15 minute epochs would start at 9:52 then the next one would start at 10:07, which makes it impossible to make statement about behaviour between 10:00 and 13:00.
This section has been migrated to this section in the GGIR github-pages, which is now the main documentation resource for GGIR.
This section has been migrated to this section in the GGIR github-pages, which is now the main documentation resource for GGIR.
This section has been migrated to this section in the GGIR github-pages, which is now the main documentation resource for GGIR.
This section has been migrated to this section in the GGIR github-pages, which is now the main documentation resource for GGIR.
This section has been migrated to this section in the GGIR github-pages, which is now the main documentation resource for GGIR.
This section has been migrated to this section in the GGIR github-pages, which is now the main documentation resource for GGIR.
This section has been migrated to this section in the GGIR github-pages, which is now the main documentation resource for GGIR.
This section has been migrated to this section in the GGIR github-pages, which is now the main documentation resource for GGIR.
This section has been migrated to this section in the GGIR github-pages, which is now the main documentation resource for GGIR.
This section has been migrated to this section in the GGIR github-pages, which is now the main documentation resource for GGIR.
This section has been migrated to this section in the GGIR github-pages, which is now the main documentation resource for GGIR.
The full part 5 output is stored in the results/QC
folder. The default inclusion criteria for days in the cleaned output
from part 5 (stored in the results
folder) are:
includedaycrit.part5
(default 2/3).minimum_MM_length.part5
(default 23). Note that if your experiment started and ended in the
middle of the day then this default setting will exclude those
incomplete first and last days. If you think including these days is
still meaningful for your work then adjust the argument
minimum_MM_length.part5
.Important notes:
results/QC
folder.includenightcrit
as used for
part 4 is not used in part 5.The data_cleaning_file
argument discussed in Data_cleaning_file also allows you to
tell GGIR which person(s) and day(s) should be omitted in part 5. The
the day numbers to be excluded should be listed in a column
day_part5
as header.
This section has been migrated to this section in the GGIR github-pages, which is now the main documentation resource for GGIR.
Difference between fragments and blocks:
Elsewhere in the part5 we use the term block
. A
block
is a sequence of epochs that belong to the same
behavioural class. This may sound similar to the definition of a
fragment, but for blocks we distinguish every behavioural class, which
includes the subcategories such as bouted and unbouted behaviour. This
means that variables Nblock_day_total_IN
and
Nblock_day_total_LIG
are identical to
Nfrag_IN_day
and Nfrag_LIPA_day
, respectively.
In contrast, for fragments we may group LIPA and MVPA together when
refering to the fragmentation of PA.
Differences with R package ActFrag:
This section has been migrated to this section in the GGIR github-pages, which is now the main documentation resource for GGIR.
This section has been migrated to this section in the GGIR github-pages, which is now the main documentation resource for GGIR.
I wanted a short name and not to spend too much time finding it. The abbreviation has lost its functional meaning, which is why we now only use GGIR as the name.
This section has been migrated to this section in the GGIR github-pages, which is now the main documentation resource for GGIR.
This section has been migrated to this section in the GGIR github-pages, which is now the main documentation resource for GGIR.
This section has been migrated to this section in the GGIR github-pages, which is now the main documentation resource for GGIR.
This section has been migrated to this section in the GGIR github-pages, which is now the main documentation resource for GGIR.
This section has been migrated to this section in the GGIR github-pages, which is now the main documentation resource for GGIR.
This section has been migrated to this section in the GGIR github-pages, which is now the main documentation resource for GGIR.
Although GGIR focuses on accelerometer data a few brands come with LUX data.
In part 1 GGIR calculates the peak lux per long epoch at a default resolution of 15 minutes, which can be modified with argument windowsizes. Peak light offers a more reliable estimate of light exposure per time window compared with taking the average. Further, LUX is used in the auto-calibration.
In GGIR part 2 we visualise the LUX values in the qc plot. In part 3 and 4 LUX is not used for sleep classification because relation between light exposure and sleep is weak.
In part 5 we calculate the mean and maximum of the peak LUX per epoch across all waking hours of the day. Here, the mean (peak per epoch) LUX would then indicate average light exposure per time segment, while max peak would indicate the maximum light exposure per day. Further, we calculate the max and mean peak LUX per most active consecutive X hour of the day. This is intended to offer an alternative to LUX exposure during waking hours which relies on correct sleep classification. LUX exposure during M10 may be seen as an alternative if you are unsure whether you can trust the sleep classification in your data set.
A correct citation of research software is important to make your research reproducible and to acknowledge the effort that goes into the development of open-source software.
To do so, please report the GGIR version you used in the text. Additionally, please also cite:
If your work depends on the quantification of physical activity then also cite:
If you used the auto-calibration functionality then also cite:
If you used the sleep detection then also cite:
If you used the sleep detection without relying on sleep diary then also cite:
If you used the sleep regularity index then also cite:
The copyright of the GGIR logo lies with Accelting (Almere, The Netherlands), please contact v.vanhees@acceleting.com to ask for permission to use this logo.