前回の記事でGoogle Analyticsのデータから指標の相関と目標を立てたりした。
今回はユーザー単位での分析をしてみる。 前回の記事
今回の目的はユーザーの利用期間の違いによってどのような属性の違いがあるかを探索することとする。
そこで、以下の種類で分類して各指標を見ていく。
今回の分析で使用するかは不明だが、せっかくipというデータも含まれているので、国名の列を追加しておく。
ベースラインに日本とアメリカを設定しておくことで、後々可視化した時に便利なので、この設定も追加しておく。
mutate(ip_country = ip_to_country(ip), ip_country = fct_lump(ip_country, n = 5), ip_country = fct_relevel(ip_country, "Japan", "United States"))
まずは、16万行あるアクセスデータからかくユーザーの終了日(最終日)- 開始日で利用期間の列を追加する。
ユーザー毎に集計するためにuseridでグループ化を行う。 見た目に違いは無いように見えるが、これでユーザー単位の様々な計算ができるようになる。
group_by(userid)
min(),max()関数を使うことで、グループ(userid)毎の最大、最小の数値を取得することができる。この場合だと日付型のデータなので、最小=最初の日、最大=最後の日を取得できる。
あと一緒にユーザーの国名も追加しておく。
summarize(start_date = min(timestamp, na.rm = TRUE), end_date = max(timestamp, na.rm = TRUE), ip_country = first(ip_country))
上記の関数を実行することで、各ユーザーを行とした以下のデータを作ることができた。
行数=ユーザー数=2880人が存在することがわかった。
ここで、かくユーザーの最初と最後のアクセス日時が判明したので、最後の日-最初の日を計算して利用期間を特定する。
mutate(
lifetime = end_date - start_date,
lifetime = round(as.numeric(lifetime, units = "days")),
lifetime_pct_total = (lifetime / max(lifetime)) * 100,
lifetime_pct_total_category = cut(lifetime_pct_total, breaks = c(-Inf, 16,84, Inf), include.lowest = TRUE, dig.lab = 10),
lifetime_pct_total_category = recode(lifetime_pct_total_category, `[-Inf,16]` = "Beginners", `(16,84]` = "Majority", `(84, Inf]` = "Eariy Adopters")
)
わかりやすいように改行を入れた。 それぞれの処理を説明していく。
以下の処理で利用期間の列を追加している。
lifetime = end_date - start_date
日付で計算すると、difftimeというデータ型になる。
なので、以下の処理で日付型のデータに変換している。
lifetime = round(as.numeric(lifetime, units = "days"))
イノベーター理論から、閾値を設定する。
上記の処理を行うために、数値を%に変換した列を追加している。
この時に注意したいのが母数は全体の合計ではなく、列の最大値をとっていること。
こうすることでユーザーの順位として計算することができる。
lifetime_pct_total = (lifetime / max(lifetime)) * 100
上記の理論から16%以下、それ以上、84%の3つにデータをカテゴリ分けする。
lifetime_pct_total_category = cut(lifetime_pct_total, breaks = c(-Inf, 16,84, Inf), include.lowest = TRUE, dig.lab = 10)
そうすると、以下のような分布ができた。
このままの名前だと、わかりにくいので置換する。
lifetime_pct_total_category = recode(lifetime_pct_total_category, `[-Inf,16]` = "Beginners", `(16,84]` = "Majority", `(84, Inf]` = "Eariy Adopters")
ここまできてようやく分析できるフォーマットが整った。
分析する準備が整ったので、早速いろいろ可視化をしてみる。
ヒストグラムで見てみる。
このグラフはX軸が利用期間、Yが頻度(人数)、色が分類だ。
そして以下のことが読み取れる。
累計を折れ線グラフで表すと以下のようになる。
国毎に棒グラフで見てみると以下のようになる。
アメリカだとBeginnersとEariy Adoptersが同じくらいなのに対して、日本はEariy Adoptersのほうが多いということがわかる。
ヒストグラムで見てみると、、ちょっと見づらくなったかな。
箱ひげ図で見てみると、国毎、ユーザー層毎の分布の違いが比べやすくなった。