Introduction and Background:

Bellabeat is a high-tech company that manufactures health-focused smart products. The company was founded in 2013 by Urška Sršen and Sando MurIt and since then it has grown rapidly and quickly positioned itself as a tech-driven wellness company for women. Collecting data on activity, sleep, stress, and reproductive health has allowed Bellabeat to empower women with knowledge about their health and habits. Its products include: Bellabeat app, Leaf, Time, Spring, and Bellabeat membership.

Ask:

Business Task:

Analyze Fitbit data to gain insight and help guide marketing strategy for Bellabeat to grow as a global player.

Primary Stakeholders:

  1. Urška Sršen: Bellabeat’s co-founder and a Chief Creative Officer.
  2. Sando Mur: Mathematician and Bellabeat’s co-founder and a key member of the Bellabeat executive team.

Secondary Stakeholders:

Bellabeat marketing analytics team.

Key Question:

  1. What are some important trends in smart device usage?
  2. How could these trends aid Bellabeat’s marketing strategy?
  3. How could these trends explain smart device’s role in people’s health?
  4. What insights can be gained to better understand people’s preferences?
  5. Which data-driven decisions could help increase Bellabeat’s customer base?

Prepare:

FitBit Fitness Tracker Data (CC0: Public Domain, dataset made available through Mobius): This Kaggle data set contains personal fitness tracker from thirty fitbit users. Thirty eligible Fitbit users consented to the submission of personal tracker data, including minute-level output for physical activity, heart rate, and sleep monitoring. It includes information about daily activity, steps, and heart rate that can be used to explore users’ habits.

There exists limitations regarding the data due to sample size and absence of some important factors such as: location, age, gender.

The datasets for daily activity, weight log information, daily calories, daily intensities, daily steps, heartrate by seconds, minute METs, and daily sleep will be utilized for the analysis.

R Studio was chosen for this project as the benefits of using R include the ability to quickly process lots of data and create high-quality data visualizations. You can also easily reproduce and share your analysis.

Installing and Loading R Packages:

install.packages("tidyverse")
## Installing package into '/home/rstudio-user/R/x86_64-pc-linux-gnu-library/4.0'
## (as 'lib' is unspecified)
install.packages("here")
## Installing package into '/home/rstudio-user/R/x86_64-pc-linux-gnu-library/4.0'
## (as 'lib' is unspecified)
install.packages("skimr")
## Installing package into '/home/rstudio-user/R/x86_64-pc-linux-gnu-library/4.0'
## (as 'lib' is unspecified)
install.packages("janitor")
## Installing package into '/home/rstudio-user/R/x86_64-pc-linux-gnu-library/4.0'
## (as 'lib' is unspecified)
install.packages("dplyr")
## Installing package into '/home/rstudio-user/R/x86_64-pc-linux-gnu-library/4.0'
## (as 'lib' is unspecified)
install.packages("knitr")
## Installing package into '/home/rstudio-user/R/x86_64-pc-linux-gnu-library/4.0'
## (as 'lib' is unspecified)
install.packages("ggplot2")
## Installing package into '/home/rstudio-user/R/x86_64-pc-linux-gnu-library/4.0'
## (as 'lib' is unspecified)
library(tidyverse)
## ── Attaching packages ─────────────────────────────────────── tidyverse 1.3.2 ──
## ✔ ggplot2 3.4.0      ✔ purrr   0.3.4 
## ✔ tibble  3.1.8      ✔ dplyr   1.0.10
## ✔ tidyr   1.2.1      ✔ stringr 1.4.0 
## ✔ readr   2.1.3      ✔ forcats 0.5.1 
## ── Conflicts ────────────────────────────────────────── tidyverse_conflicts() ──
## ✖ dplyr::filter() masks stats::filter()
## ✖ dplyr::lag()    masks stats::lag()
library(here)
## here() starts at /cloud/project
library(skimr)
library(janitor)
## 
## Attaching package: 'janitor'
## 
## The following objects are masked from 'package:stats':
## 
##     chisq.test, fisher.test
library(dplyr)
library(knitr)
library(ggplot2)

Importing Data and Creating Data Frames:

I pre-processed the datasets in Excel and changed the formatting of date and/or time where appropriate. Any insufficient and duplicate data was removed. Then the files were imported into R Studio and the data frames were created.

daily_activity <- read.csv("dailyActivity_merged.csv")
daily_calories <- read.csv("/cloud/project/Fitbase Data/dailyCalories_merged.csv")
daily_intensities <- read.csv("/cloud/project/Fitbase Data/dailyIntensities_merged.csv")
daily_steps <- read.csv("/cloud/project/Fitbase Data/dailySteps_merged.csv")
heart_rate_sec <- read.csv("/cloud/project/Fitbase Data/heartrate_seconds_merged.csv")
minute_METs <- read.csv("/cloud/project/Fitbase Data/minuteMETsNarrow_merged.csv")
sleep_day <- read.csv("/cloud/project/Fitbase Data/sleepDay_merged.csv")
weight_log <- read.csv("/cloud/project/Fitbase Data/weightLogInfo_merged.csv")

Process:

Getting to Know Your Data:

The head () function is used to access the first n rows of a dataframe or series. While glimpse() and colnames() functions are used to explore the dataframes.

daily_activity:

head(daily_activity)
##           Id ActivityDate TotalSteps TotalDistance TrackerDistance
## 1 1503960366    4/12/2016      13162          8.50            8.50
## 2 1503960366    4/13/2016      10735          6.97            6.97
## 3 1503960366    4/14/2016      10460          6.74            6.74
## 4 1503960366    4/15/2016       9762          6.28            6.28
## 5 1503960366    4/16/2016      12669          8.16            8.16
## 6 1503960366    4/17/2016       9705          6.48            6.48
##   LoggedActivitiesDistance VeryActiveDistance ModeratelyActiveDistance
## 1                        0               1.88                     0.55
## 2                        0               1.57                     0.69
## 3                        0               2.44                     0.40
## 4                        0               2.14                     1.26
## 5                        0               2.71                     0.41
## 6                        0               3.19                     0.78
##   LightActiveDistance SedentaryActiveDistance VeryActiveMinutes
## 1                6.06                       0                25
## 2                4.71                       0                21
## 3                3.91                       0                30
## 4                2.83                       0                29
## 5                5.04                       0                36
## 6                2.51                       0                38
##   FairlyActiveMinutes LightlyActiveMinutes SedentaryMinutes Calories
## 1                  13                  328              728     1985
## 2                  19                  217              776     1797
## 3                  11                  181             1218     1776
## 4                  34                  209              726     1745
## 5                  10                  221              773     1863
## 6                  20                  164              539     1728
colnames(daily_activity)
##  [1] "Id"                       "ActivityDate"            
##  [3] "TotalSteps"               "TotalDistance"           
##  [5] "TrackerDistance"          "LoggedActivitiesDistance"
##  [7] "VeryActiveDistance"       "ModeratelyActiveDistance"
##  [9] "LightActiveDistance"      "SedentaryActiveDistance" 
## [11] "VeryActiveMinutes"        "FairlyActiveMinutes"     
## [13] "LightlyActiveMinutes"     "SedentaryMinutes"        
## [15] "Calories"
glimpse(daily_activity)
## Rows: 940
## Columns: 15
## $ Id                       <dbl> 1503960366, 1503960366, 1503960366, 150396036…
## $ ActivityDate             <chr> "4/12/2016", "4/13/2016", "4/14/2016", "4/15/…
## $ TotalSteps               <int> 13162, 10735, 10460, 9762, 12669, 9705, 13019…
## $ TotalDistance            <dbl> 8.50, 6.97, 6.74, 6.28, 8.16, 6.48, 8.59, 9.8…
## $ TrackerDistance          <dbl> 8.50, 6.97, 6.74, 6.28, 8.16, 6.48, 8.59, 9.8…
## $ LoggedActivitiesDistance <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ VeryActiveDistance       <dbl> 1.88, 1.57, 2.44, 2.14, 2.71, 3.19, 3.25, 3.5…
## $ ModeratelyActiveDistance <dbl> 0.55, 0.69, 0.40, 1.26, 0.41, 0.78, 0.64, 1.3…
## $ LightActiveDistance      <dbl> 6.06, 4.71, 3.91, 2.83, 5.04, 2.51, 4.71, 5.0…
## $ SedentaryActiveDistance  <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ VeryActiveMinutes        <int> 25, 21, 30, 29, 36, 38, 42, 50, 28, 19, 66, 4…
## $ FairlyActiveMinutes      <int> 13, 19, 11, 34, 10, 20, 16, 31, 12, 8, 27, 21…
## $ LightlyActiveMinutes     <int> 328, 217, 181, 209, 221, 164, 233, 264, 205, …
## $ SedentaryMinutes         <int> 728, 776, 1218, 726, 773, 539, 1149, 775, 818…
## $ Calories                 <int> 1985, 1797, 1776, 1745, 1863, 1728, 1921, 203…

daily_calories:

head(daily_calories)
##           Id ActivityDay Calories
## 1 1503960366   4/12/2016     1985
## 2 1503960366   4/13/2016     1797
## 3 1503960366   4/14/2016     1776
## 4 1503960366   4/15/2016     1745
## 5 1503960366   4/16/2016     1863
## 6 1503960366   4/17/2016     1728
colnames(daily_calories)
## [1] "Id"          "ActivityDay" "Calories"
glimpse(daily_calories)
## Rows: 940
## Columns: 3
## $ Id          <dbl> 1503960366, 1503960366, 1503960366, 1503960366, 1503960366…
## $ ActivityDay <chr> "4/12/2016", "4/13/2016", "4/14/2016", "4/15/2016", "4/16/…
## $ Calories    <int> 1985, 1797, 1776, 1745, 1863, 1728, 1921, 2035, 1786, 1775…

daily_intensities:

head(daily_intensities)
##           Id ActivityDay SedentaryMinutes LightlyActiveMinutes
## 1 1503960366   4/12/2016              728                  328
## 2 1503960366   4/13/2016              776                  217
## 3 1503960366   4/14/2016             1218                  181
## 4 1503960366   4/15/2016              726                  209
## 5 1503960366   4/16/2016              773                  221
## 6 1503960366   4/17/2016              539                  164
##   FairlyActiveMinutes VeryActiveMinutes SedentaryActiveDistance
## 1                  13                25                       0
## 2                  19                21                       0
## 3                  11                30                       0
## 4                  34                29                       0
## 5                  10                36                       0
## 6                  20                38                       0
##   LightActiveDistance ModeratelyActiveDistance VeryActiveDistance
## 1                6.06                     0.55               1.88
## 2                4.71                     0.69               1.57
## 3                3.91                     0.40               2.44
## 4                2.83                     1.26               2.14
## 5                5.04                     0.41               2.71
## 6                2.51                     0.78               3.19
colnames(daily_intensities)
##  [1] "Id"                       "ActivityDay"             
##  [3] "SedentaryMinutes"         "LightlyActiveMinutes"    
##  [5] "FairlyActiveMinutes"      "VeryActiveMinutes"       
##  [7] "SedentaryActiveDistance"  "LightActiveDistance"     
##  [9] "ModeratelyActiveDistance" "VeryActiveDistance"
glimpse(daily_intensities)
## Rows: 940
## Columns: 10
## $ Id                       <dbl> 1503960366, 1503960366, 1503960366, 150396036…
## $ ActivityDay              <chr> "4/12/2016", "4/13/2016", "4/14/2016", "4/15/…
## $ SedentaryMinutes         <int> 728, 776, 1218, 726, 773, 539, 1149, 775, 818…
## $ LightlyActiveMinutes     <int> 328, 217, 181, 209, 221, 164, 233, 264, 205, …
## $ FairlyActiveMinutes      <int> 13, 19, 11, 34, 10, 20, 16, 31, 12, 8, 27, 21…
## $ VeryActiveMinutes        <int> 25, 21, 30, 29, 36, 38, 42, 50, 28, 19, 66, 4…
## $ SedentaryActiveDistance  <dbl> 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, …
## $ LightActiveDistance      <dbl> 6.06, 4.71, 3.91, 2.83, 5.04, 2.51, 4.71, 5.0…
## $ ModeratelyActiveDistance <dbl> 0.55, 0.69, 0.40, 1.26, 0.41, 0.78, 0.64, 1.3…
## $ VeryActiveDistance       <dbl> 1.88, 1.57, 2.44, 2.14, 2.71, 3.19, 3.25, 3.5…

daily_steps:

head(daily_steps)
##           Id ActivityDay StepTotal
## 1 1503960366   4/12/2016     13162
## 2 1503960366   4/13/2016     10735
## 3 1503960366   4/14/2016     10460
## 4 1503960366   4/15/2016      9762
## 5 1503960366   4/16/2016     12669
## 6 1503960366   4/17/2016      9705
colnames(daily_steps)
## [1] "Id"          "ActivityDay" "StepTotal"
glimpse(daily_steps)
## Rows: 940
## Columns: 3
## $ Id          <dbl> 1503960366, 1503960366, 1503960366, 1503960366, 1503960366…
## $ ActivityDay <chr> "4/12/2016", "4/13/2016", "4/14/2016", "4/15/2016", "4/16/…
## $ StepTotal   <int> 13162, 10735, 10460, 9762, 12669, 9705, 13019, 15506, 1054…

heart_rate_sec:

head(heart_rate_sec)
##           Id       Time Value
## 1 2022484408 7:21:00 AM    97
## 2 2022484408 7:21:05 AM   102
## 3 2022484408 7:21:10 AM   105
## 4 2022484408 7:21:20 AM   103
## 5 2022484408 7:21:25 AM   101
## 6 2022484408 7:22:05 AM    95
colnames(heart_rate_sec)
## [1] "Id"    "Time"  "Value"
glimpse(heart_rate_sec)
## Rows: 1,048,575
## Columns: 3
## $ Id    <dbl> 2022484408, 2022484408, 2022484408, 2022484408, 2022484408, 2022…
## $ Time  <chr> "7:21:00 AM", "7:21:05 AM", "7:21:10 AM", "7:21:20 AM", "7:21:25…
## $ Value <int> 97, 102, 105, 103, 101, 95, 91, 93, 94, 93, 92, 89, 83, 61, 60, …

minute_METs:

head(minute_METs)
##           Id ActivityMinute METs
## 1 1503960366    12:00:00 AM   10
## 2 1503960366    12:01:00 AM   10
## 3 1503960366    12:02:00 AM   10
## 4 1503960366    12:03:00 AM   10
## 5 1503960366    12:04:00 AM   10
## 6 1503960366    12:05:00 AM   12
colnames(minute_METs)
## [1] "Id"             "ActivityMinute" "METs"
glimpse(minute_METs)
## Rows: 1,048,575
## Columns: 3
## $ Id             <dbl> 1503960366, 1503960366, 1503960366, 1503960366, 1503960…
## $ ActivityMinute <chr> "12:00:00 AM", "12:01:00 AM", "12:02:00 AM", "12:03:00 …
## $ METs           <int> 10, 10, 10, 10, 10, 12, 12, 12, 12, 12, 12, 12, 10, 10,…

sleep_day:

head(sleep_day)
##           Id  SleepDay TotalSleepRecords TotalMinutesAsleep TotalTimeInBed
## 1 1503960366 4/12/2016                 1                327            346
## 2 1503960366 4/13/2016                 2                384            407
## 3 1503960366 4/15/2016                 1                412            442
## 4 1503960366 4/16/2016                 2                340            367
## 5 1503960366 4/17/2016                 1                700            712
## 6 1503960366 4/19/2016                 1                304            320
colnames(sleep_day)
## [1] "Id"                 "SleepDay"           "TotalSleepRecords" 
## [4] "TotalMinutesAsleep" "TotalTimeInBed"
glimpse(sleep_day)
## Rows: 413
## Columns: 5
## $ Id                 <dbl> 1503960366, 1503960366, 1503960366, 1503960366, 150…
## $ SleepDay           <chr> "4/12/2016", "4/13/2016", "4/15/2016", "4/16/2016",…
## $ TotalSleepRecords  <int> 1, 2, 1, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, …
## $ TotalMinutesAsleep <int> 327, 384, 412, 340, 700, 304, 360, 325, 361, 430, 2…
## $ TotalTimeInBed     <int> 346, 407, 442, 367, 712, 320, 377, 364, 384, 449, 3…

weight_log:

head(weight_log)
##           Id      Date WeightKg WeightPounds Fat   BMI IsManualReport
## 1 1503960366  5/2/2016     52.6     115.9631  22 22.65           TRUE
## 2 1503960366  5/3/2016     52.6     115.9631  NA 22.65           TRUE
## 3 1927972279 4/13/2016    133.5     294.3171  NA 47.54          FALSE
## 4 2873212765 4/21/2016     56.7     125.0021  NA 21.45           TRUE
## 5 2873212765 5/12/2016     57.3     126.3249  NA 21.69           TRUE
## 6 4319703577 4/17/2016     72.4     159.6147  25 27.45           TRUE
##         LogId
## 1 1.46223e+12
## 2 1.46232e+12
## 3 1.46051e+12
## 4 1.46128e+12
## 5 1.46310e+12
## 6 1.46094e+12
colnames(weight_log)
## [1] "Id"             "Date"           "WeightKg"       "WeightPounds"  
## [5] "Fat"            "BMI"            "IsManualReport" "LogId"
glimpse(weight_log)
## Rows: 67
## Columns: 8
## $ Id             <dbl> 1503960366, 1503960366, 1927972279, 2873212765, 2873212…
## $ Date           <chr> "5/2/2016", "5/3/2016", "4/13/2016", "4/21/2016", "5/12…
## $ WeightKg       <dbl> 52.6, 52.6, 133.5, 56.7, 57.3, 72.4, 72.3, 69.7, 70.3, …
## $ WeightPounds   <dbl> 115.9631, 115.9631, 294.3171, 125.0021, 126.3249, 159.6…
## $ Fat            <int> 22, NA, NA, NA, NA, 25, NA, NA, NA, NA, NA, NA, NA, NA,…
## $ BMI            <dbl> 22.65, 22.65, 47.54, 21.45, 21.69, 27.45, 27.38, 27.25,…
## $ IsManualReport <lgl> TRUE, TRUE, FALSE, TRUE, TRUE, TRUE, TRUE, TRUE, TRUE, …
## $ LogId          <dbl> 1.46223e+12, 1.46232e+12, 1.46051e+12, 1.46128e+12, 1.4…

Analyze:

The n_distinct() function is used to determine unique participants and the nrow() function indicates observations in each dataframe.

n_distinct(daily_activity$Id)
## [1] 33
n_distinct(sleep_day$Id)
## [1] 25
n_distinct(weight_log$Id)
## [1] 8
n_distinct(minute_METs$Id)
## [1] 27
n_distinct(heart_rate_sec$Id)
## [1] 7
nrow(daily_activity)
## [1] 940
nrow(sleep_day)
## [1] 413
nrow(weight_log)
## [1] 67
nrow(minute_METs)
## [1] 1048575
nrow(heart_rate_sec)
## [1] 1048575

Understanding Some Summary Statistics:

daily_activity:

daily_activity %>%  
  select(TotalSteps,
         TotalDistance,
         SedentaryMinutes,
         Calories,
         VeryActiveMinutes) %>%
  summary()
##    TotalSteps    TotalDistance    SedentaryMinutes    Calories   
##  Min.   :    0   Min.   : 0.000   Min.   :   0.0   Min.   :   0  
##  1st Qu.: 3790   1st Qu.: 2.620   1st Qu.: 729.8   1st Qu.:1828  
##  Median : 7406   Median : 5.245   Median :1057.5   Median :2134  
##  Mean   : 7638   Mean   : 5.490   Mean   : 991.2   Mean   :2304  
##  3rd Qu.:10727   3rd Qu.: 7.713   3rd Qu.:1229.5   3rd Qu.:2793  
##  Max.   :36019   Max.   :28.030   Max.   :1440.0   Max.   :4900  
##  VeryActiveMinutes
##  Min.   :  0.00   
##  1st Qu.:  0.00   
##  Median :  4.00   
##  Mean   : 21.16   
##  3rd Qu.: 32.00   
##  Max.   :210.00

sleep_day:

sleep_day %>%  
  select(TotalSleepRecords,
  TotalMinutesAsleep,
  TotalTimeInBed) %>%
  summary()
##  TotalSleepRecords TotalMinutesAsleep TotalTimeInBed 
##  Min.   :1.00      Min.   : 58.0      Min.   : 61.0  
##  1st Qu.:1.00      1st Qu.:361.0      1st Qu.:403.8  
##  Median :1.00      Median :432.5      Median :463.0  
##  Mean   :1.12      Mean   :419.2      Mean   :458.5  
##  3rd Qu.:1.00      3rd Qu.:490.0      3rd Qu.:526.0  
##  Max.   :3.00      Max.   :796.0      Max.   :961.0  
##  NA's   :3         NA's   :3          NA's   :3

weight_log:

weight_log %>%  
  select(WeightKg, BMI) %>%
  summary()
##     WeightKg           BMI       
##  Min.   : 52.60   Min.   :21.45  
##  1st Qu.: 61.40   1st Qu.:23.96  
##  Median : 62.50   Median :24.39  
##  Mean   : 72.04   Mean   :25.19  
##  3rd Qu.: 85.05   3rd Qu.:25.56  
##  Max.   :133.50   Max.   :47.54

minute_METs:

minute_METs %>%  
  select(METs) %>%
  summary()
##       METs       
##  Min.   :  0.00  
##  1st Qu.: 10.00  
##  Median : 10.00  
##  Mean   : 14.47  
##  3rd Qu.: 11.00  
##  Max.   :157.00

heart_rate_sec:

heart_rate_sec %>%  
  select(Value) %>%
  summary()
##      Value       
##  Min.   : 38.00  
##  1st Qu.: 64.00  
##  Median : 75.00  
##  Mean   : 77.02  
##  3rd Qu.: 87.00  
##  Max.   :203.00

Observations:

  • The average user is taking 7638 steps a day.
  • On average, users are getting 21.16 minutes of very active or vigorous activity a day.
  • Participants are averaging 991.2 minutes, or 16.52 hours of sedentary time a day.
  • Furthermore, this summary shows the average user is burning 2304 calories a day.
  • The average heartrate is 77 beats per minute (bpm).
  • The summary of minute METs shows the average user has a MET of 14.47. One MET is the energy you use when at rest.
  • The summary of the sleep data frame displays the average user sleeps once per day for 419.5 minutes, or roughly 7 hours. The average participant is spending 458.6 minutes in bed, or 7.64 hours.
  • The data shows that the average BMI is 25.19.

Share:

To create data visualizations, ggplot() function was used.

ggplot(data=daily_activity, aes(x=TotalSteps, y=SedentaryMinutes)) + geom_point(color="blue") + geom_smooth() + labs(title = "Relationship Between Sedentary Minutes And Total Steps")
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'

The above graph shows negative relation between sedentary minutes and total steps.

ggplot(data=sleep_day, aes(x=TotalMinutesAsleep, y=TotalTimeInBed,)) + geom_point(color="blue") + geom_smooth() + labs(title = "Relationship Between Total Time In Bed And Total Minutes Asleep")
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'
## Warning: Removed 3 rows containing non-finite values (`stat_smooth()`).
## Warning: Removed 3 rows containing missing values (`geom_point()`).

There is a positive relationship between total minutes asleep and total time in bed which means people are spending most of their time in bed asleep.

ggplot(data=daily_activity, aes(y=TotalSteps, x=Calories,)) + geom_point(color="blue") + geom_smooth() + labs(title = "Relationship Between Calories Burned And Total Steps")
## `geom_smooth()` using method = 'loess' and formula = 'y ~ x'

The above visualization indicates a positive relationship which means the more steps a user took the more calories they burned.

combined_data <- merge(weight_log, daily_activity, by="Id")

ggplot(data=combined_data, aes(y=BMI, x=SedentaryMinutes,)) + geom_point(color="blue") + geom_smooth() + labs(title = "Relationship Between BMI And Sedentary Minutes")
## `geom_smooth()` using method = 'gam' and formula = 'y ~ s(x, bs = "cs")'

The more BMI means you are spending most of your time sedentary.

Act:

Recommendations:

  • Bellabeat should incorporate vital metrics such as hydration, hormone level, aesthetics of the products.
  • It should be more active on social media and encourage users to share tips and post about their lifestyle.
  • Create weekly fitness and wellness challenges to encourage use.
  • Recommend users get 75 minutes of vigorous activity a week and enable alert notifications.
  • Send users inspirational reminders regarding health.
  • Bellabeat should make its products more autonomous.
  • Enable notifications to encourage activity if a user has spent an hour in bed awake.
  • Bellabeat should offer 30-day free trial subscription.
  • It should partner with health & fitness companies.
  • It should offer discounts for members.