How Can a Wellness Technology Company Play It Smart?

Wellness technology will improve and grow with an understanding of what people want from their wellness technology. One way to understand what they want is to observe what they do. In this case, we can observe how and when they use their wearable fitness devices. For this case study we will explore the Daily Activity, Sleep and Heart Rate data sets to better understand how a small set of 33 users used their FitBit Fitness Tracker devices during for a 5 week period.

Business Task

By reviewing the provided user data, we can look and see what features users are using consistently or not. Additionally, we can see what metrics are useful to provide health insight for the user. In the following case study, I will provide insight and input into Bellabeat’s marketing strategy though an analysis of smart device usage and market trends.

Preparation

– Install and load packages
## package 'tidyverse' successfully unpacked and MD5 sums checked
## 
## The downloaded binary packages are in
##  C:\Users\home\AppData\Local\Temp\Rtmp4saEJo\downloaded_packages
## package 'hrbrthemes' successfully unpacked and MD5 sums checked
## 
## The downloaded binary packages are in
##  C:\Users\home\AppData\Local\Temp\Rtmp4saEJo\downloaded_packages
## package 'skimr' successfully unpacked and MD5 sums checked
## 
## The downloaded binary packages are in
##  C:\Users\home\AppData\Local\Temp\Rtmp4saEJo\downloaded_packages
## package 'ggthemes' successfully unpacked and MD5 sums checked
## 
## The downloaded binary packages are in
##  C:\Users\home\AppData\Local\Temp\Rtmp4saEJo\downloaded_packages
## package 'viridis' successfully unpacked and MD5 sums checked
## 
## The downloaded binary packages are in
##  C:\Users\home\AppData\Local\Temp\Rtmp4saEJo\downloaded_packages
– Review and clean the data
  1. Load the Daily Activity, Sleep Day, and Heartrate data files

  2. Review the data frames

dailyActivity

##  [1] "Id"                       "ActivityDate"            
##  [3] "TotalSteps"               "TotalDistance"           
##  [5] "TrackerDistance"          "LoggedActivitiesDistance"
##  [7] "VeryActiveDistance"       "ModeratelyActiveDistance"
##  [9] "LightActiveDistance"      "SedentaryActiveDistance" 
## [11] "VeryActiveMinutes"        "FairlyActiveMinutes"     
## [13] "LightlyActiveMinutes"     "SedentaryMinutes"        
## [15] "Calories"
## 'data.frame':    940 obs. of  15 variables:
##  $ Id                      : num  1.5e+09 1.5e+09 1.5e+09 1.5e+09 1.5e+09 ...
##  $ ActivityDate            : chr  "4/12/2016" "4/13/2016" "4/14/2016" "4/15/2016" ...
##  $ TotalSteps              : int  13162 10735 10460 9762 12669 9705 13019 15506 10544 9819 ...
##  $ TotalDistance           : num  8.5 6.97 6.74 6.28 8.16 ...
##  $ TrackerDistance         : num  8.5 6.97 6.74 6.28 8.16 ...
##  $ LoggedActivitiesDistance: num  0 0 0 0 0 0 0 0 0 0 ...
##  $ VeryActiveDistance      : num  1.88 1.57 2.44 2.14 2.71 ...
##  $ ModeratelyActiveDistance: num  0.55 0.69 0.4 1.26 0.41 ...
##  $ LightActiveDistance     : num  6.06 4.71 3.91 2.83 5.04 ...
##  $ SedentaryActiveDistance : num  0 0 0 0 0 0 0 0 0 0 ...
##  $ VeryActiveMinutes       : int  25 21 30 29 36 38 42 50 28 19 ...
##  $ FairlyActiveMinutes     : int  13 19 11 34 10 20 16 31 12 8 ...
##  $ LightlyActiveMinutes    : int  328 217 181 209 221 164 233 264 205 211 ...
##  $ SedentaryMinutes        : int  728 776 1218 726 773 539 1149 775 818 838 ...
##  $ Calories                : int  1985 1797 1776 1745 1863 1728 1921 2035 1786 1775 ...
## [1] 33
##    TotalSteps   
##  Min.   :    0  
##  1st Qu.: 3790  
##  Median : 7406  
##  Mean   : 7638  
##  3rd Qu.:10727  
##  Max.   :36019

sleepDay

## [1] "Id"                 "SleepDay"           "TotalSleepRecords" 
## [4] "TotalMinutesAsleep" "TotalTimeInBed"
## 'data.frame':    413 obs. of  5 variables:
##  $ Id                : num  1.5e+09 1.5e+09 1.5e+09 1.5e+09 1.5e+09 ...
##  $ SleepDay          : chr  "4/12/2016 12:00:00 AM" "4/13/2016 12:00:00 AM" "4/15/2016 12:00:00 AM" "4/16/2016 12:00:00 AM" ...
##  $ TotalSleepRecords : int  1 2 1 2 1 1 1 1 1 1 ...
##  $ TotalMinutesAsleep: int  327 384 412 340 700 304 360 325 361 430 ...
##  $ TotalTimeInBed    : int  346 407 442 367 712 320 377 364 384 449 ...
## [1] 24
##  TotalMinutesAsleep
##  Min.   : 58.0     
##  1st Qu.:361.0     
##  Median :433.0     
##  Mean   :419.5     
##  3rd Qu.:490.0     
##  Max.   :796.0

heartrate

## [1] "Id"    "Time"  "Value"
## 'data.frame':    2483658 obs. of  3 variables:
##  $ Id   : num  2.02e+09 2.02e+09 2.02e+09 2.02e+09 2.02e+09 ...
##  $ Time : chr  "4/12/2016 7:21:00 AM" "4/12/2016 7:21:05 AM" "4/12/2016 7:21:10 AM" "4/12/2016 7:21:20 AM" ...
##  $ Value: int  97 102 105 103 101 95 91 93 94 93 ...
## [1] 14
##        Id           
##  Min.   :2.022e+09  
##  1st Qu.:4.388e+09  
##  Median :5.554e+09  
##  Mean   :5.514e+09  
##  3rd Qu.:6.962e+09  
##  Max.   :8.878e+09
  1. Transform dailyActivity data set
  1. Convert the ActivityDate column from chr format to date format using the lubridate mdy function
## 'data.frame':    940 obs. of  15 variables:
##  $ Id                      : num  1.5e+09 1.5e+09 1.5e+09 1.5e+09 1.5e+09 ...
##  $ ActivityDate            : Date, format: "2016-04-12" "2016-04-13" ...
##  $ TotalSteps              : int  13162 10735 10460 9762 12669 9705 13019 15506 10544 9819 ...
##  $ TotalDistance           : num  8.5 6.97 6.74 6.28 8.16 ...
##  $ TrackerDistance         : num  8.5 6.97 6.74 6.28 8.16 ...
##  $ LoggedActivitiesDistance: num  0 0 0 0 0 0 0 0 0 0 ...
##  $ VeryActiveDistance      : num  1.88 1.57 2.44 2.14 2.71 ...
##  $ ModeratelyActiveDistance: num  0.55 0.69 0.4 1.26 0.41 ...
##  $ LightActiveDistance     : num  6.06 4.71 3.91 2.83 5.04 ...
##  $ SedentaryActiveDistance : num  0 0 0 0 0 0 0 0 0 0 ...
##  $ VeryActiveMinutes       : int  25 21 30 29 36 38 42 50 28 19 ...
##  $ FairlyActiveMinutes     : int  13 19 11 34 10 20 16 31 12 8 ...
##  $ LightlyActiveMinutes    : int  328 217 181 209 221 164 233 264 205 211 ...
##  $ SedentaryMinutes        : int  728 776 1218 726 773 539 1149 775 818 838 ...
##  $ Calories                : int  1985 1797 1776 1745 1863 1728 1921 2035 1786 1775 ...

b.Add new columns with new measurements included - Activity durations changed to hours; Calculate Steps per hour; Calculate total active minutes

  1. Transform sleepDay dataset
  1. Convert datetime column to date
  1. Transform heartrate dataset

a.Convert datetime column to date

  1. Obtain average heart rate
  1. Merge the sleep activity to the daily activity report

  2. Merge heart data with daily activity report

  3. Since NA values mean nothing was recorded for that measurement, replace them all with 0.

Analysis

  1. I wanted to compare the time spent being sedentary against the number of calories burned, expecting a negative correlation. There is not a significant correlation, however, suggesting that the amount of calories is not directly affected by the amount of time spent being sedentary, and there are likely other variables that contribute to calories burned.

  1. Additionally, I compared the number of calories burned to the number of steps taken. As expected, there is a clear positive correlation between the number of steps taken and the number of calories burned so that more calories are burned when there are more steps taken.

  1. Turning to the sleep data, I wanted to show the total time slept in comparison to how many times each user sleeps in a day. There were less records here than in the previous tables, but you can see that the more times a user sleeps in a day, they sleep for a shorter period of time than those users that slept just once in a day.

  1. Using the combined data report, we can see the relationship between Steps, Activity Duration, and Calories burned. The more steps and longer the ativity, more calories are burned.

  1. Finally, I used Excel to review the the average of total hours slept compared to the average of very active hours per user. We can see a clear correlation for when the users record higher levels of very active hours, we also see a corresponding average of total hours slept. This could be due to some causation, or point to a user who is more apt to use both features.

Ideas for the Bellabeat App

  • Right away we can see that users are not using all features. Bellabeat may want to consider a way to make the features more seamless to the user, while still allowing them some anonymity.

Bellabeat may want to consider a food diary for their users to help keep track of their food intake to compare against the rest of their exercise and fitness routines, such as steps taken and their level of activity.

  • There appear to be users who are not using the full suite of available trackers, meaning they are not consistently measuring all possible wellness factors. Bellabeat could benefit from further marketing and recommending all tracking functions to their users in a simple, convenient, single cost package. Additionally, hosting an online coaching community for users could help motivate them and keep them active.

  • Some additional measurements could be included such as blood pressure, blood sugar, temperature, O2 levels, and water intake.

Conclusions and Recommendations

With these few analyses, we can see that there are areas where users are utilizing certain trackers more than others. For a more complete picture of user health for each user there needs to be more compliance in the use of the trackers. Certain privacy concerns could be limiting the data pool, or some problem with convenience of the device(s) being used for tracking. Bellabeat has several separate products, but perhaps finding a way to integrate more trackers into a single device could help improve the data collection. Providing and integrating generally accepted benchmarks would also provide goals and targets for the users to work toward. To conclude, Bellabeat will benefit from more customer involvement and outreach from the company and other users in the pursuit of increasing consistent usage.

Thank you for your time, and good fitness to you!