3. suggestions.csv - LisaGotzian/HeartSteps GitHub Wiki

At two to five points during the day, a notification is sent, randomly selected and if the person was available. The walking suggestions and the responses are recorded in suggestions.csv, a 8274x87 data frame.

This table includes the following data:

  • notification time and response time as well as the type of walking suggestion: "active" if a person has been active or "sedentary" if a person has been sedentary
  • the context the user was in during the notification
    • recognized activity (still, active etc.) & when voting the suggestion up or down
    • front end application
    • location data
    • weather data
  • aggregated step counts before and after the suggestions
  • identifier: user.index, ema.index and decision.index

plot

Columns Description
user.index User ID
ema.index Ema ID
decision.index Decision index
decision.index.nogap Decision index without travel days
sugg.select.utime Date-time when user selected to receive walking suggestion
sugg.select.slot Intended decision time slot based on the selected notification time
sugg.select.updated Date-time, for the time at which the user updated their notification time slots
sugg.tz Time zone of the notification, updated when phone restarted, not when actually changed timezone
sugg.gmtoff Minutes difference of local timezone to UTC at notification
sugg.decision.utime Date-time, when the walking suggestion is sent, 1 NA
sugg.decision.slot Actual decision time slot based on when the notification was sent, usually 90 sec after decision, in 96 cases different from the intended time slot (sugg.select.slot) plus 735 NA due to connect issues. The 96 cases are due to timezone issues
sugg.context.utime Date-time, the time for which the decision context like location and weather etc. is recorded. Is always sugg.decision.utime, unless the phone was not connected to the server at the time of decision, then 30 min prior, this is the case for 709 observations, 735 NA
sugg.response.utime Date-time, the time at which the user either rated the message (thumbs up/down, snooze) or the notification timed out
sugg.device.utime Date-time of most recent phone usage before suggestion sugg.decision.utime
sugg.device.since Hours between suggestion (sugg.decision.utime) and most recent phone usage (sugg.device.utime)
interaction.count Number of times the screen was turned on between suggestion notification and a response

Availability & Notification Variables

Columns Description
connect Logical, had active connection at decision time slot: in 6380 cases at time of decision or in 709 cases 30 min prior (735 false, 7539 true)
is.randomized Logical, if time point was randomly selected (3070 false, 4469 true, 735 NA)
snooze.status Logical, if snooze is enabled at the decision time slot (7496 false, 43 true, 735 NA)
intransit Logical, was in transit (walking or in a vehicle) at time of suggestion, based on recognized.activity (6628 false, 911 true, 735 NA)
avail Logical, if the person was available: had an active connection (7539), did not snooze (7496) and was not in transit (6628) = 1684 false, 6590 true
send Logical, if a notification has been sent after a decision. For this, the time point must be randomly selected (4469) and the person must be available (6590) = 3621 false, 3918 true, 735 NA
send.active Logical, suggestion type was an active notification because user was tagged as active within 90 seconds of the decision time slot
send.sedentary Logical, suggestion type was a sedentary notification because user was tagged as inactive within 90 seconds of the decision time slot
is.prefetch Logical. Each suggestion time slot is associated with prefetch data, generated 30 minutes ahead in the event that the user is not connected to the server at the time slot. “is.prefetch” Is TRUE if the decision result is based on prefetched contextual information, retrieved 30 minutes prior to the decision time slot (6380 false, 709 true, 735 NA)

Decision & Response Context

Columns Description Response Columns Description
recognized.activity Google Activity Recognition result; the Detected Activity type with the highest confidence level, evaluated within 90 seconds of the decision time slot. More information: https://developers\.google\.com/android/reference/com/google/android/gms/location/DetectedActivity recognized.activity.response Google Activity Recognition result; the Detected Activity type with the highest confidence level, evaluated at the time of response. More information: https://developers\.google\.com/android/reference/com/google/android/gms/location/DetectedActivity
tag.active Logical, if user was tagged as active based on recognized.activity
tag.indoor Logical, if user was tagged as indoor based on recognized.activity
tag.outdoor Logical, if user was tagged as outdoor based on recognized.activity
tag.outdoor_snow Logical, if user was tagged as outdoor based on recognized.activity and there was snowfall
front.end.application Android package name of the application that in use at the notification time. If the screen was turned off, then "NA".
returned.message From decision, Message text sent to the user, converted to ASCII. If the decision result is "false", the string “do_not_notify". response Suggestion message rating ("no_response", "good", "bad", "snoozed_for_X_hours")
dec.city City name corresponding to the GPS coordinate at notification response.city City name corresponding to the GPS coordinate at response
dec.location.exact Location description ("work", "home", or establishment name) based on the GPS coordinate at notification response.location.exact Location description ("work", "home", or establishment name) based on the GPS coordinate at response
dec.location.category Location category ("work", "home" or the Google Place Type) based on the GPS coordinate at notification response.location.category Location category ("work", "home" or the Google Place Type) based on the GPS coordinate at response
dec.weather.condition Current weather condition classification from Weather Underground's API, based on the GPS coordinate at notification response.weather.condition Current weather condition classification from Weather Underground's API, based on the GPS coordinate at response
dec.temperature Temperature in Celsius, based on the GPS coordinate at notification response.temperature Temperature in Celsius, based on the GPS coordinate at response
dec.windspeed Wind speed in miles per hour, based on the GPS coordinate at notification response.windspeed Wind speed in miles per hour, based on the GPS coordinate at response
dec.precipitation.chance Precipitation chance (between 0 and 100) up to 60 minutes from EMA notification, based on the GPS coordinate at notification response.precipitation.chance Precipitation chance (between 0 and 100) up to 60 minutes from EMA notification, based on the GPS coordinate at response
dec.snow Snowfall in millimeters, based on the GPS coordinate at notification response.snow Snowfall in millimeters, based on the GPS coordinate at response

Step counts before and after decision points

  • jbminsX and gfminsX: Amount of minutes in which a participant was walking X minutes after decision point (Jawbone or "Google Fit" for phone accelerometer)
  • jbstepsX and gfstepsX: Jawbone/Google Fit steps X minutes after decision point
  • suffix "pre": step counts in slot before decision point
  • suffix ".zero": step counts, but NA was imputed with 0. NAs occurred in a user's Jawbone data e.g. if the user just didn't wear the Jawbone for a whole day, or if she was traveling internationally and left the tracker at home.
Columns Description
jbmins10 Amount of minutes in which a participant was walking 10 minutes after decision point (jawbone)
jbsteps10 Jawbone steps 10 minutes after decision point
jbmins40 See above, 40 min jawbone
jbsteps40 See above, 40 min jawbone
jbmins30 See above, 30 min jawbone
jbsteps30 See above, 30 min jawbone
jbmins60 See above, 60 min jawbone
jbsteps60 See above, 60 min jawbone
jbmins90 See above, 90 min jawbone
jbsteps90 See above, 90 min jawbone
jbmins120 See above, 120 min jawbone
jbsteps120 See above, 120 min jawbone
jbsteps10.zero Jawbone steps, but NA was imputed with 0. NAs occurred in a user's Jawbone data e.g. if the user just didn't wear the Jawbone for a whole day, or if she was traveling internationally and left the tracker at home.
jbsteps30.zero See above, 30 min, jawbone imputed
jbsteps40.zero See above, 40 min, jawbone imputed
jbsteps60.zero See above, 60 min, jawbone imputed
jbsteps90.zero See above, 90 min, jawbone imputed
jbsteps120.zero See above, 120 min, jawbone imputed
jbmins30pre Amount of minutes in which a participant was walking 10 minutes before decision point (jawbone)
jbsteps30pre Jawbone steps 10 minutes before decision point
jbmins40pre See above, 40 min jawbone
jbsteps40pre See above, 40 min jawbone
jbmins60pre See above, 60 min jawbone
jbsteps60pre See above, 60 min jawbone
jbsteps30pre.zero See above, 30 min, jawbone imputed
jbsteps40pre.zero See above, 40 min, jawbone imputed
jbsteps60pre.zero See above, 60 min, jawbone imputed
gfmins10 See above, 10 min google fit
gfsteps10 See above, 10 min google fit
gfmins30 See above, 30 min google fit
gfsteps30 See above, 30 min google fit
gfmins60 See above, 60 min google fit
gfsteps60 See above, 60 min google fit
gfmins30pre See above, 30 min google fit
gfsteps30pre See above, 30 min google fit
gfmins60pre See above, 60 min google fit
gfsteps60pre See above, 60 min google fit