はじめに
この記事では、Googleからシナリオとデータセットが提供されています。
提供されたシナリオに基づいて、データセットの分析を行い、その過程と結果を共有します。
データセットの出典元 Fitness
ダイジェスト
シナリオ
私はBellabeatのマーケティングアナリストです。スマートデバイス市場の成長を見据え、チーフクリエイティブオフィサーの指示のもと、特定の製品に焦点を当てています。
消費者がスマートデバイスをどのように活用しているかを分析する任務を担当しています。
インサイト
-
歩数や運動時間が不足している一方で、座っている時間が過剰であり、体重も推奨値よりも重いため、多くの人が運動不足に陥っていると考えます。
-
スマートデバイスは一週間の前半に使われる傾向があり、後半にかけて減少しています。
-
座っている時間と消費カロリーには8~17時間までは正の相関にあるが、超過すると負の相関になります。
-
やや激しい運動を50分以上行うと睡眠時間が短くなる傾向にあります。
提案
-
ジムとの業務提携・コラボを行い、歩数や運動時間の不足を補う。
-
座っている時間が推奨よりも大幅に超過しているため、5時間を超過した段階で通知を発する機能を搭載して、座りすぎを抑制する。
-
利用者の年齢データを収集し、それを活用して特定のアクティブ層を中心に広告を展開することで、費用対効果を向上させる。
-
ユーザーの座っている時間、歩数、活動時間を推奨値と比較して可視化し、自身の行動を理解しやすくするシステムの構築。
(例)
$$
\frac{900}{600}
$$
目次
1. シナリオ
私は、女性向け女性向けウェルネス製品メーカーである Bellabeat のマーケティングアナリストチームに所属するジュニアデータアナリストです。
Bellabeat は小さな会社ですが、世界的な スマートデバイス 市場における大きな成長が見込まれています。
Bellabeat のチーフクリエイティブオフィサー Urška Sršenは、 スマートデバイスのフィットネス データを分析することで、会社の新たな成長機会を引き出すことができると考えています。
私は、Bellabeat のある製品に焦点を当て、スマートデバイスのデータを分析し、消費者がスマートデバイスをどのように活用しているかを分析するよう依頼されています。発見したインサイトは、会社のマーケティング戦略を導くのに役立ちます。そこで、Bellabeat のマーケティング戦略に関するハイレベルな提案とともに、その分析結果を Bellabeat の経営者にプレゼンテーションする必要があります。
登場人物と製品
● 登場人物
○ Urška Sršen(ウルシュカ・シュルシェン):Bellabeat の共同設立者兼チーフクリエイティブオフィサー
○ Sando Mur(サンド・ムール):数学者であり Bellabeat の共同設立者、Bellabeat 経営陣の主要メンバー
○ Bellabeat マーケティングアナリティクスチーム: Bellabeat のマーケティング戦略の指針となるデータの収集、分析、レポー
トを担当するデータアナリストのチーム。あなたは半年前にこのチームにジュニア データアナリストとして配属され、Bellabeat
のミッションやビジネス上の目的、そしてその達成のために自分がどう貢献できるか模索中です。
● 製品とサービス
○ アプリ: Bellabeat のアプリは活動量や睡眠、ストレス、月経周期、マインドフルネスなど健康に関するデータをユーザーに提
供しています。このデータはユーザーが自分の現在の習慣をよりよく理解し、健康的な決定を下すのに役立ちます。
Bellabeat のアプリは、同社のスマートウェルネス製品のラインアップとつながっています。
○ Leaf: Bellabeat の定番ウェルネス・トラッカーである Leaf は、ブレスレットやネックレスとして身につけることができます。Leaf
トラッカーは Bellabeat のアプリと連携させることができ、活動量や睡眠、ストレスを記録できます。
○ Time: クラシックな時計とスマートテクノロジーを組み合わせたウェルネスウォッチで、ユーザーの活動量や睡眠、ストレスを
記録します。この時計も Bellabeat のアプリと連携させることができ、毎日のウェルネスに関するインサイトを提供します。
○ Spring: スマートテクノロジーを使って毎日の水分摂取量を記録し、一日を通して適切な水分補給ができるウォーターボトルで
す。スプリングボトルも Bellabeat のアプリと連携させることができ、水分補給レベルを追跡します。
○ Bellabeat メンバーシップ: Bellabeat は、ユーザー向けにサブスクリプション型のメンバーシッププログラムも提供しています。
メンバーになると、ユーザーは自分のライフスタイルや目標に基づき、栄養や活動量、睡眠や健康、美容、マインドフルネスなど、パーソナライズされたガイダンスに 24 時間アクセスできるようになります。
会社概要
ウルシュカ・シュルシェンとサンド・ムールは、健康に焦点を当てたスマート製品を製造するテクノロジー企業、Bellabeat を設立しました。
シュルシェンはアーティストとしての経歴を生かし、世界中の女性向けに情報を提供しインスピレーションを与える美しいデザインの製品を開発しました。活動量や睡眠、ストレス、生殖機能などに関するデータを収集することで Bellabeat は女性たちが自身の健康や習慣に関する知識を身につけられるようにしています。2013 年の設立以来、Bellabeat は急速に成長し、女性のためのテクノロジー主導型ウェルネス企業として頭角を表すようになりました。
2016 年までに Bellabeat は世界中にオフィスを開設し、複数の製品を発売しました。Bellabeat の製品はウェブサイト上の独自の e コマースチャネルに加えて、オンライン小売業者を通じて購入できます。同社ではラジオや街頭看板、印刷物やテレビといった従来の広告媒体に投資してきましたが、デジタル・マーケティングにおおいに注力しています。
Bellabeat は、Google 検索に年間を通して投資し、Facebookと Instagram のページを積極的に運用し、Twitter でも常に消費者に働きかけています。さらに、Youtube の動画広告や Google ディスプレイ ネットワークのディスプレイ広告を配信して、主力マーケティング キャンペーンを後押ししています。
シュルシェンは Bellabeat が保有する消費者データを分析すれば、さらなる成長の機会が見えてくると確信しています。彼女はマーケティング アナリティクス チームに対し、Bellabeat 製品に焦点を当て、人々がスマートデバイスをどのように使用しているかに関するインサイトを得るために、スマートデバイスの使用状況のデータを分析するよう依頼してきました。そしてその情報を活用し、その傾向が Bellabeat のマーケティング戦略にどう反映できるかを、ハイレベルな提言としてまとめてほしいとしています。
2. 問いかけ
-
スマートデバイスの使用傾向はどのようなものでしょうか?
-
これらの傾向は、Bellabeat のユーザーにはどう当てはまるでしょうか?
-
これらの傾向は、Bellabeat のマーケティング戦略にどのような影響を与えるでしょうか?
準備する
シュルシェンはスマートデバイスのユーザーの日常的な習慣を調査した公開データを使用することを推奨しています。彼女は、具体的なデータセットを提示してきました。
● Fitiit Fitness Tracker Data(CC0: パブリックドメイン、データセットは Mobius より公開されています。): この Kaggle のデータセットには、30 人の Fitbit ユーザーの個人的なフィットネストラッカーに関するデータが含まれています。ここでは 30 人のFitbitユーザーの同意のもとに提出された、活動量や心拍数、睡眠モニタリングなどの分単位での出力を含む個人トラッカーデータが閲覧できます。一日の活動量や歩数、心拍数などの情報が含まれており、ユーザーの習慣を探るために活用できます。
データセットには18のcsvファイルがありました。以下はその詳細です。
18のトラッカーデータ
・dailyActivity_merged.csv
・dailyCalories_merged.csv
・dailyIntensities_merged.csv
・dailySteps_merged.csv
・heartrate_seconds_merged.csv
・hourlyCalories_merged.csv
・hourlyIntensities_merged.csv
・hourlySteps_merged.csv
・minuteCaloriesNarrow_merged.csv
・minuteCaloriesWide_merged.csv
・minuteIntensitiesNarrow_merged.csv
・minuteIntensitiesWide_merged.csv
・minuteMETsNarrow_merged.csv
・minuteSleep_merged.csv
・minuteStepsNarrow_merged.csv
・minuteStepsWide_merged.csv
・sleepDay_merged.csv
・weightLogInfo_merged.c
3. プロセス
1.初めに、分析に用いるパッケージをインストールします。
library(tidyverse)
library(ggplot2)
library(janitor)
install.packages("tidyverse")
install.packages("ggplot2")
install.packages("janitor")
#read関数でデータをインポート
daily_activity <- read.csv("dailyActivity_merged.csv")
daily_sleep <- read.csv("sleepDay_merged.csv")
weight_loginfo <- read.csv("weightLogInfo_merged.csv")
2.str()関数を用いてリストに含まれるデータ要素とその型を表示し、データ構造を調べる。
# str()を用いて各データの要素を調べる
str(daily_activity)
str(daily_sleep)
str(weight_loginfo)
3.重複の確認を行います。
sum(duplicated(daily_activity))
sum(duplicated(daily_sleep))
sum(duplicated(weight_loginfo))
4.データフレーム[daily_sleep]に重複が確認されたため、削除します。
daily_sleep <- unique(daily_sleep)
sum(duplicated(daily_sleep))
5.str()
で出力したデータを確認すると、いずれのファイルも日付が文字列データになっています。
これに対処するためまず、clean_names()
関数を用いてデータセットの扱いや分析をしやすくします。
'library(janitor)'
'daily_activity <- clean_names(daily_activity)'
'daily_sleep <-clean_names(daily_sleep)'
'weight_loginfo <-clean_names(weight_loginfo)'
- 続いて
as.Data()
関数を用いて日付形式に変換します。
#as.Data()関数を用いて日付形式に変換。
daily_activity$ActivityDate <- as.Date(daily_activity$ActivityDate, '%m/%d/%Y')
daily_sleep$SleepDay <- as.Date(daily_sleep$SleepDay, '%m/%d/%Y')
weight_loginfo$Date <- as.Date(weight_loginfo$Date,'%m/%d/%Y')
7.被験者数の確認を行います。
length(unique(daily_activity$Id))
length(unique(daily_sleep$Id))
length(unique(weight_loginfo$Id))
- daily_sleepの被験者数の内、9名のユーザーが睡眠情報を提供していないことが確認できます。
- weight_loginfoの被験者の内、25名のユーザーが体重記録を提供していないことが確認できます。
4. 分析と共有
4-1. `summary()'関数を用いて平均の歩数、着席時間、活動時間、睡眠時間、カロリーを求めます。
#summary関数で平均の値を求める
summary(daily_activity$TotalSteps)
summary(daily_activity$SedentaryMinutes)
summary(daily_activity$VeryActiveMinutes)
summary(daily_activity$Calories)
summary(daily_sleep$TotalMinutesAsleep)
summary(weight_loginfo$WeightKg)
library(knitr)
# データフレームを作成
df <- data.frame(
category = c("歩数", "着席時間", "運動時間", "睡眠時間", "カロリー","体重"),
result = c(7638, 991, 21, 7, 2300,72),
Recommendation = c("10000", "420~600", "30", "7~9", "2500","61"),
Achievement = c("不足", "超過" ,"不足", "適正", "適正","超過")
)
kable(df)
注釈
categoryの文頭には、平均がいずれもつきます。
- 歩数や運動時間が不足している一方で、座っている時間が過剰であり、体重も推奨値よりも重いため、多くの人が運動不足に陥っていると考えます。
4-2. スマートデバイスの使用傾向を探ります。
# 曜日の順序を指定
days_order <- c( "日","月", "火", "水", "木", "金", "土")
# week列を作成
daily_activity$week <- factor(format(daily_activity$ActivityDate, "%a"), levels = days_order)
#曜日ごとの傾向を調べる
ggplot(daily_activity, aes(x = week, y = VeryActiveMinutes)) +
geom_col(fill = 'blue') +
labs(x = 'week', y = 'Very Active Minutes', title = '曜日ごとの運動時間')
-
日を追うごとに体力やモチベーションが減少している可能性があります。
-
月曜日は一週間の仕事始めの人が多く、億劫な気持ちになっている可能性があります。
4-3. これらの傾向は、Bellbeatのユーザーにはどう当てはまるでしょうか。
1.激しい運動と消費カロリーの関係を調べます。
#激しい運動と消費カロリーの関係を調べる
library(ggplot2)
ggplot(daily_activity,aes(x = VeryActiveMinutes,y = Calories))+
geom_point(col = 'red')+
geom_smooth()+
labs(x = 'Active Minutes', y = 'to burn calories', title = '激しい運動と消費カロリーの関係')
- 激しい運動と消費カロリーには正の相関関係があると言えます。
2.座っている時間とカロリー消費の関係を調べます。
#着席時間とカロリー消費の関係を調べる
ggplot(daily_activity, aes(x = SedentaryMinutes, y = Calories)) +
geom_point(col = 'green') +
geom_smooth() +
labs(x = 'Sedentary Minutes', y = 'Calories burned', title = '座っている時間と消費カロリーの関係')
- 座っている時間と消費カロリーは約8~17時間までは正の相関関係があります。
- 17時間以降は負の相関になっています。
3.睡眠時間と各活動時間の関係を調べます。
#睡眠時間と各活動時間の関係を調べる
#データフレーム結合前にカラムを統一
daily_activity <- daily_activity %>%
rename(date = ActivityDate)
daily_sleep <- daily_sleep %>%
rename(date = SleepDay)
# daily_activityとdaily_sleepを結合
activity_sleep <- merge(daily_activity,daily_sleep, by=c('Id','date'))
#激しい運動と睡眠時間と関係を調べる
ggplot(data = activity_sleep, aes(x = VeryActiveMinutes, y = TotalMinutesAsleep)) +
geom_point(col = 'orange') +
geom_smooth()+
labs(x = 'Very Active Minutes', y = 'Total Minutes Asleep', title = '激しい運動と睡眠時間の関係')
#やや激しい運動と睡眠時間の関係を調べる
ggplot(data = activity_sleep, aes(x = FairlyActiveMinutes, y = TotalMinutesAsleep)) +
geom_point(col = 'cyan') +
geom_smooth()+
labs(x = 'Fairly Active Minutes', y = 'Total Minutes Asleep', title = 'やや激しい運動と睡眠時間の関係')
#軽い運動と睡眠時間の関係を調べる
ggplot(data = activity_sleep, aes(x = LightlyActiveMinutes, y = TotalMinutesAsleep)) +
geom_point(col = 'purple') +
geom_smooth()+
labs(x = 'Lightl Active Minutes', y = 'Total Minutes Asleep', title = '軽い運動と睡眠時間の関係')
- 激しい運動を50分以上 行うと、睡眠時間が長くなる傾向にある。
- やや激しい運動を50分以上行うと、睡眠時間が短くなる傾向にある。
- 軽い運動を行っても時間に左右されず、比較的安定した睡眠時間になる。
4.体重と各運動を行う人の関係を調べます。
str(weight_loginfo)
#データフレーム結合前にカラムを統一
weight_loginfo <- weight_loginfo %>%
rename(date = Date)
#daily_activityとweight_loginfoを結合
activity_weight <- merge(daily_activity,weight_loginfo,by = c('Id','date'))
#体重と激しい運動の関係を調べる
ggplot(activity_weight,aes(x = VeryActiveMinutes,y = WeightKg))+
geom_point(col = 'yellow')+
geom_smooth()+
labs(x = 'Very Active Minutes',y = 'Weight Kg', title = '体重と激しい運動を行う人の関係')
#体重と軽い運動の関係を調べる。
ggplot(activity_weight,aes(x = LightlyActiveMinutes,y = WeightKg))+
geom_point(col = 'brown')+
geom_smooth()+
labs(x = 'Lightly Active Minutes',y = 'Weight Kg', title = '体重と軽い運動を行う人の関係')
-
上記二つのグラフから体重約 60kg と 85kg のユーザーが最もアクティブな傾向にあることが確認できます。
-
平均体重は72kgですが、60kgと85kg付近の体重に位置するユーザーがBellabeatには多いようです。
5.体重と睡眠時間の関係を調べます。
#daily_sleepとweight_loginfoを結合
sleep_weight <- merge(daily_sleep,weight_loginfo,by = c('Id','date'))
#体重と睡眠時間の関係を調べる
ggplot(sleep_weight,aes(x = TotalMinutesAsleep ,y = WeightKg))+
geom_point(col = 'blue')+
geom_smooth()+
labs(x = 'Total Minutes Asleep',y = 'Weight Kg', title = '体重と睡眠時間の関係')
- 体重と睡眠時間に相関関係は見られませんでした。
- 60kg付近の人以外が情報提供を行っていないため、正確性に欠ける結果となりました。
5. まとめ
1. スマートデバイスの使用傾向はどのようなものでしょうか?
-
一週間の前半に使われる傾向があり、後半にかけて減少しています。
-
加えて、一週間の前半に位置する月曜日の利用率が例外で少ないことが見受けられます。
2. これらの傾向は、Bellbeatのユーザーにはどう当てはまるでしょうか?
-
日を追うごとに体力やモチベーションが減少しています。
-
月曜日は一週間の仕事始めの人が多く、億劫な気持ちになっている可能性があります。
-
激しい運動と消費カロリーには正の相関関係があると言えます。
-
座っている時間と消費カロリーには8~17時間までは正の相関にあるが、一定の時間を超えると負の相関になります。
-
激しい運動を50分以上行うと、睡眠時間が長くなる傾向があるが、やや激しい運動を50分以上行うと睡眠時間が短くなる傾向があります。
-
軽い運動は時間に左右されず、睡眠時間が比較的安定している傾向がある。
-
体重が約60kgと85kgのユーザーがBellabeatで最もアクティブである傾向があり、平均体重が72kgであるにも関わらず、60kgと85kg付近の体重のユーザーが多いことが示されています 。
-
体重と睡眠時間の相関関係は見られず、60kg付近の人以外が情報提供を行っていないため、結果の正確性には疑問があります。
3. これらの傾向は、Bellabeat のマーケティング戦略にどのような影響を与えるでしょうか?
-
ジムとの業務提携・コラボを行い、歩数や運動時間の不足を補う。
-
健康食品とのコラボ商品を発売し、ダイエットを働きかける。
-
座っている時間が推奨よりも大幅に超過しているため、5時間を超えた段階で通知を発する機能を搭載して、座りすぎを抑制する。
-
利用者の年齢データを収集し、それを活用して特定のアクティブ層を中心に広告を展開することで、費用対効果を向上させる。
-
ユーザーの1日の座っている時間/歩いた歩数/活動時間と、それら各項目で推奨されている値をアプリや製品のトップ画面等に表示し簡単に可視化できるシステムの構築。
(例)
$$
\frac{900}{600}
$$
6. 振り返りと展望
振り返り
- geom_point以外にもビジュアライゼーションに適した関数を用いることができたかもしれない。
- もっと他の視点からのアプローチを取り入れたい。
- 5秒で理解できるグラフ作りにこだわった。
- 誰が見てもわかりやすい流れ作り、プロセスの構成ができたと思う。
- ビジュアライゼーションやデータ結合に関するエラーが頻繁に発生し、調べた通りに実行しても解決できないなど苦労したが、最終的に満足のいくものを作成できてとにかく嬉しい。
展望
- 様々な関数を扱えるようにスキルを向上させたい。
- 統計学の知識を学び、データ分析に活かしたい。
- より複雑なデータに対する分析に挑戦していきたい。
- 学習したことを今後の人生に役立てたい。