In this cook book you will find recipes for using GGIR in specific non-default scenarios.
Handling externally derived epoch data
This refers to the situation where external software or hardware was used to derive epoch level aggregates from accelerometer data.
In this section you will find key parameters needed for working with these data formats. Please refer to the other parts of the GGIR documentation for guidance on how to tailor the rest of your analysis towards your study protocol and research interests.
Please be aware the date-time formats may be country specific. So,
when working with externally derived epoch data always check that
parameter extEpochData_timeformat
setting is correct for
the data you are processing. You can do this by opening one of the files
in notepad or eclipse. See our
Annex page for guidance on how to specify date and time formats in
R.
Actiwatch data
in .AWD format
This is a text file saved with .AWD extension. An example of how the first couple of hundred lines of an .AWD file may look like can be found here.
GGIR(datadir = "/media/actiwatch_awd", # folder with epoch level .AWD file
outputdir = "/media/myoutput",
dataFormat = "actiwatch_awd",
extEpochData_timeformat = "%d-%b-%Y %H:%M:%S",
windowsizes = c(60, 900, 3600), # 60 is the expected epoch length
acc.metric = "ExtAct")
To classify sleep from Actiwatch, consider parameter
HASIB.algo = "Oakley1997"
.
in .CSV format
An example of how the first couple of hundred lines of this file may look like can be found here. Note that the example file is in Dutch but it should also work for files in English.
GGIR(datadir = "/media/actiwatch_csv", # folder with epoch level .AWD file
outputdir = "/media/myoutput",
dataFormat = "actiwatch_csv",
extEpochData_timeformat = "%m/%d/%y %I:%M:%S %p",
windowsizes = c(15, 900, 3600),
acc.metric = "ExtAct")
To classify sleep from Actical, consider parameter
HASIB.algo = "Oakley1997"
.
UK Biobank data in .CSV format
This is only applicable the UK Biobank 5 second epoch csv exports and NOT to the raw accelerometer data (multiple values per second). Please see https://wadpac.github.io/GGIR/ for all documentation on processing raw accelerometer data.
GGIR(datadir = "/media/ukbiobank",
outputdir = "/media/myoutput",
dataFormat = "ukbiobank_csv",
extEpochData_timeformat = "%m/%d/%Y %H:%M:%S",
windowsizes = c(5, 900, 3600), # We know that data was stored in 5 second epoch
desiredtz = "Europe/London", # We know that data was collected in the UK
acc.metric = "LFENMO")
Please note that currently no method exists in GGIR to detect sleep from these 5 second aggregate files.
ActiGraph count data in .CSV format
Examples of how the first couple of hundred lines of these files may look like can be found here, here, and here.
GGIR(datadir = "/examplefiles",
outputdir = "",
dataFormat = "actigraph_csv",
extEpochData_timeformat = "%m/%d/%Y %H:%M:%S",
windowsizes = c(5, 900, 3600),
do.neishabouricounts = TRUE,
acc.metric = "NeishabouriCount_x",
threshold.in = round(100 * (5/60), digits = 2),
threshold.mod = round(2500 * (5/60), digits = 2),
threshold.vig = round(10000 * (5/60), digits = 2))
Sensewear data in .xls format
Sensewear comes in xls(x) files with many column from which GGIR only uses: “METs” as indicator for acceleration where the uses can use MET levels as acceleration threshold, “Step Counter” which is treated as externally generated step count, and “Sleep” which is used as classification for sleep.
At a bare minimum the GGIR command to process these files looks as follows:
GGIR(datadir = "C:/yoursenseweardatafolder",
outputdir = "D:/youroutputfolder",
dataFormat = "sensewear_xls",
extEpochData_timeformat = "%d-%b-%Y %H:%M:%S",
windowsizes = c(60, 900, 3600),
acc.metric = "ExtAct",
threshold.in = 1.5,
threshold.mod = 3,
threshold.vig = 6)
To use the sleep classification as stored inside the data use
parameter HASIB.algo = "data"
.
Actical in .csv format
An example of how the first couple of hundred lines of this file may look like can be found here
At a bare minimum the GGIR command to process these files looks as follows:
GGIR(datadir = "C:/youracticaldatafolder",
outputdir = "D:/youroutputfolder",
dataFormat = "actical_csv",
extEpochData_timeformat = "%d-%b-%Y %H:%M",
windowsizes = c(60, 900, 3600),
acc.metric = "ExtAct")
To classify sleep from Actical, consider parameter
HASIB.algo = "Oakley1997"
.
Philips Health Band in .xlsx format
The Philips Health Band data comes with .xlsx file pairs per
recording. One starts with DataList
the other one starts
with Sleep_Wake_
. Examples of how the first couple of
hundred lines of such files may look like can be found here
for DataList
and here
for Sleep_Wake
.
At a bare minimum the GGIR command to process these files looks as follows:
GGIR(datadir = "C:/yourphbdatafolder",
outputdir = "D:/youroutputfolder",
dataFormat = "phb_xlsx",
extEpochData_timeformat = "%m-%d-%Y %H:%M:%S",
windowsizes = c(60, 900, 3600),
acc.metric = "ExtAct")
When HASIB.algo = "data"
GGIR attempts to extract and
uses the sleep classification that is stored inside the xlsx files with
column name “sleepWake”. If no sleep classification is stored inside the
data, GGIR uses the activity indicator as stored as “activitycounts”.
You can specify HASIB.algo = c("data", "Oakley1997")
to
make GGIR fall back on Oakley1997 if this would be the case.
Fitbit as folder with .json format files
Fitbit data comes with multiple .json file per recording (individual) stored in the same folder, with one folder for each recording.
GGIR uses the .json file names starting with sleep, calories, and steps for sleep, magnitude of movement, and steps, respectively.
Examples of how these files may look like can be found here for sleep, [here for steps](https://github.com/wadpac/GGIRread/blob/main/inst/testfiles/steps-1995-06-23_Fitbit.json, and here for calories.
At a bare minimum the GGIR command to process these files looks as follows:
GGIR(datadir = "C:/yourfitbitdatafolder",
outputdir = "D:/youroutputfolder",
dataFormat = "fitbit_json",
windowsizes = c(60, 900, 3600),
acc.metric = "ExtAct")
Note that parameter extEpochData_timeformat
is not
expected for Fitbit as we assume that the timestamps are always stored
with the same internal format inside the .json files.
To use the sleep classification as stored inside the data use
parameter HASIB.algo = "data"
.
Handling study protocol
Not worn during night
Data type: Any Study protocol: Worn during the day, taken off during the night Wear location: Any
GGIR(HASPT.algo = c("NotWorn", "HDCZA"),
HASIB.algo = "vanHees2015",
do.imp = FALSE, # Do not impute nonwear because sensor was never worn 24/7
HASPT.ignore.invalid = NA, # Treat nonwear as potential part of guider window
ignorenonwear = FALSE, # Consider nonwear as potential sleep
includenightcrit = 8,
includedaycrit = 8)
If “NotWorn” is specified then a second guider can be supplied to the same parameter as shown above. This second guider will be used if the accelerometer is worn for more than 75 percent of the night. The example above shows this for HDCZA.