I am a junior data analyst working in the marketing analyst team at Bellabeat, a high-tech manufacturer of health-focused products for women. Bellabeat is a successful small company, but they have the potential to become a larger player in the global smart device market. Urška Sršen, cofounder and Chief Creative Officer of Bellabeat, believes that analyzing smart device fitness data could help unlock new growth opportunities for the company. I have been asked to focus on one of Bellabeat’s products and analyze smart device data to gain insight into how consumers are using their smart devices. The insights I discover will then help guide marketing strategy for the company. I will present my analysis to the Bellabeat executive team along with high-level recommendations for Bellabeat’s marketing strategy.
The data set that I was provided with is a FitBit Fitness Tracker Data by Mobius at Kaggle.com. This dataset generated by respondents to a distributed survey via Amazon Mechanical Turk between 03.12.2016-05.12.2016. Thirty five eligible Fitbit users consented to the submission of personal tracker data,
I am analyzing data that will provide daily usage information about
wearers, like:
1. Frequency of measured activity (steps, distance, calories)
2. Weight measurement frequency (weight in kg, body fat and BMI)
3. Frequency of measuring sleep by sleeping minutes of individuals
After these find outs I will be able to select one Bellabeat product to recommend to apply further application of these insights.
Limitations:
1. Only 35 participants
2. Big range of use days between 8 and 63 per participant
3. No personal information is included, only ID numbers
4. A lot of measurements of data are different between the first and
second months of use
install.packages(“tidyverse”)
install.packages(“skimr”)
install.packages(“janitor”)
install.packages(“dplyr”)
After installing run them by typing library(package_name)
Locating and opening data sets, in my case:
load("Fitbit_datasets.RData")
Joining monthly dailyActivity and weightLogInfo data sets together so they would represent a full range.
activity <- full_join(dailyActivity_merged,dailyActivity_merged2,by=NULL)
weight<-full_join(weightLogInfo_merged,weightLogInfo_merged2,by=NULL)
Simplifying sleep measurement to minutes and hours per person. Keeping two months separately as they differ by number of people.
sleep1 <- minuteSleep_merged %>%
group_by(Id)%>%
summarize(TotalMinutesAsleep = sum(value))%>%
mutate(TotalHoursAsleep = round(TotalMinutesAsleep/60, digits=2))
sleep2 <- minuteSleep_merged2%>%
group_by(Id)%>%
summarize(TotalMinutesAsleep = sum(value))%>%
mutate(TotalHoursAsleep = round(TotalMinutesAsleep/60, digits = 2))
Counting each individual Id for a better presentation on the charts.
activity$number <- match(activity$Id, unique(activity$Id))
sleep1$number <-match(sleep1$Id,unique(sleep1$Id))
sleep2$number <-match(sleep2$Id,unique(sleep2$Id))
weight$number <-match(weight$Id,unique(weight$Id))
In weight data set separating date from time and converting it into the date and time format. Also arranging and changing the format to day/month/year.
weight_separated <- weight %>%
separate(Date, into = c("Date", "Time", "AM/PM"), sep = " ") %>%
mutate(Date = as.Date(Date, format = "%m/%d/%Y")) %>%
arrange(Date) %>%
mutate(Date = format(Date, "%d/%m/%y"))
I will be working with four data sets that I have summarized in the
previous steps:
- activity
- sleep1
- sleep2
- weight
I am starting with exploring “activity” data set, because it will provide general information on frequency of people wearing their smart watches. These measurements are being taken by default without entering any other mode or providing additional information.
count(activity,Id)
## Id n
## 1 1503960366 50
## 2 1624580081 50
## 3 1644430081 40
## 4 1844505072 43
## 5 1927972279 43
## 6 2022484408 43
## 7 2026352035 43
## 8 2320127002 43
## 9 2347167796 33
## 10 2873212765 43
## 11 2891001357 8
## 12 3372868164 30
## 13 3977333714 42
## 14 4020332650 63
## 15 4057192912 36
## 16 4319703577 43
## 17 4388161847 39
## 18 4445114986 46
## 19 4558609924 43
## 20 4702921684 46
## 21 5553957443 43
## 22 5577150313 41
## 23 6117666160 38
## 24 6290855005 39
## 25 6391747486 9
## 26 6775888955 35
## 27 6962181067 45
## 28 7007744171 38
## 29 7086361926 43
## 30 8053475328 42
## 31 8253242879 31
## 32 8378563200 43
## 33 8583815059 39
## 34 8792009665 41
## 35 8877689391 43
After running this code it appears, that 35 people were using FitBit to track their activity very differently, ranging from 9 to 63 days.
Counting the average number of days to track activity: 1397 entries / 35 participants = 40 days of use which equals to 63.36% or almost 2/3 of days.
Finding minumum, maximum and average of Total steps and Calories (not including 0.
activity%>%
filter(TotalSteps != 0, Calories != 0)%>%
summarize(
average_steps = mean(TotalSteps),
min_steps = min(TotalSteps),
max_steps = max(TotalSteps),
average_calories = mean(Calories),
min_calories = min(Calories),
max_calories = max(Calories)
)
## average_steps min_steps max_steps average_calories min_calories max_calories
## 1 8078.963 4 36019 2337.014 50 4900
ggplot(activity,aes(x=Calories,y=TotalSteps,color=number))+
geom_point()+
geom_smooth(method = "lm",color="red")+
scale_color_gradient(low = "blue", high = "red")+
geom_rect(xmin=1200,xmax=3500,ymin=0,ymax=16000,fill = "yellow", alpha = 0.005)+
labs(title="Steps and Calories")
## `geom_smooth()` using formula = 'y ~ x'
The chart above shows dependence between total steps of participants and calories burnt.There are total 1,397 entries. Red line proves dependence between these two variables. Yellow rectangle summarizes the most common range of total steps (0 to 16,000) and calories(1,200 to 3,500) of participants. The number on the right side represents participants.
ggplot(data=sleep1)+
geom_col(mapping = aes(x=number, y=TotalHoursAsleep, fill=TotalHoursAsleep))+
labs(title="1st month sleep tracking",x="Participants",y="Hours asleep")
The findings are:
1. 12 people didn’t use it at all
2. only 23 people used it of which:
- 6 recorded numbers from 2 to 42 hours
- 7 people from 96 to 180 hours
- 10 people recorded 200+ hours
ggplot(data=sleep2)+
geom_col(mapping = aes(x=number, y=TotalHoursAsleep, fill=TotalHoursAsleep))+
labs(title="2nd month sleep tracking",x="Participants",y="Hours asleep")
The findings are:
1. 11 people didn’t use it at all
2. only 24 people used it of which:
- 9 recorded numbers from 1 to 69 hours
- 6 people from 118 to 193 hours
- 9 people recorded 200+ hours
ggplot(data=weight)+
geom_bar(mapping=aes(x=number, fill=IsManualReport))+
labs(title="Weight tracking",x="Participants",y="Count")
The chart shows that there are only 13 people who entered their weight, however, one individual who was entering data manually has 43 records and another, who’s weight was recorded probably by ‘smart scale’ or some similar device has 32 records. Remaining participants ranged from 1 to 6 records.
ggplot(weight_separated, aes(x = Date, y = WeightKg, colour=number)) +
geom_point(size=5) +
scale_color_gradient(low = "blue", high = "red")+
theme(axis.text.x = element_text(angle = 90))+
labs(title="Weight",x="Date",y="Weight in kg")
Chart above shows weight range and date when measurements were taken. No significant weight changes during two months of measurements were recorded.
-Daily activity is being measured automatically whenever person wears
smart device.
-The average use of smart watches was 40 out of 63 days or almost 2/3 of
all time.
-Average steps are 8,079 which is almost 2,000 below advised 10,000 a
day. -Referring to the “healthline.com” the average male and female need
roughly 2,200–3,000 and 1,600–2,200 calories per day depending on
height, weight and activity level. The average calorie expenditure of
participants is 2,337 which fits well the range mentioned above. I can
assume that this could be one of the indicators why measuring weight
didn’t change much when I was analyzing “weight” data.
Only 24 and 23 people used smart watches to record their sleep during
the first and second months accordingly which is 2/3 of all
participants. 1/3 of these people or 33% only recorded their sleep for
30 hours (3 days) on average, another 1/4 or 25% recorded on average
their sleep during 147 hours (2.5 weeks) and remaining or 42% made
records of 200 and more hours which is roughly the statistics of one
month of time the data was collected.
Comparing to day time wearing which is 100% of all participants, or
35, during the night 66% of people attempted to wear their smart watch.
During the day people wore their watch on average more than 2/3 of all
days that data was collected, where during the night this range was
reduced to less than 1/3. Looking at these statistics and referring to
the limited data that I have, I can try to make some assumptions, why
would it be such a strong difference between day and night
wearing:
1. People are less interested in knowing information about their sleep
than their active time. This could be due to the lack of education,
disbelieve in accuracy or general unwillingness.
2. Discomfort that the watch can cause. Depends on the model that
wearers use, the watch can be quiet bulky causing discomfort when you
sleep. I think, this is where Bellabeat’s Leaf product stands out.
Out of 35 people only 13 were tracking their weight. 11 did it
irregularly with entries varying from 1 to 6 times and 2 did it
consistently, every, or every second day.
3 out of 13 participants were measuring their weight wtith the use of
some smart device, that would transfer data to the database and the rest
were entering their weight manually.
Other highlights are:
- 2 individuals who were tracking the weight through all period were
consistently, but slowly gaining weight, which is plus 1.5 and 2.5 kg by
the end of the period.
- One individual measured the weight two times in the middle of data
gathering period. Second entry showed +4kg in 3 days. After that no more
entries of data.
Based on the insights provided above I would choose Bellabeat’s “Leaf” product for further improvement. Leaf is a classic wellness tracker that can be worn as a bracelet, necklace, or clip. The Leaf tracker connects to the Bellabeat app to track activity, sleep, and stress.
By aligning product improvements and features with the insights gathered from the Fitbit data, Bellabeat can enhance the Leaf product’s value proposition and empower users to lead healthier and more balanced lifestyles. The versatility of Leaf’s wearable design, allowing users to wear it in various ways, including during sleep, further enhances its appeal and usability for users seeking comprehensive wellness tracking solutions.