Self Reference Ngin

アウトプットの練習・テクノロジーについて

Rで売上ランキングをカラフルに可視化

この記事の目的

  • k-meansを用いて売上データ(擬似データ)をヘビー・ミドル・ライトに分類
  • ggplot2を用いてプロット
  • 技術系の記事初めて書くので、練習のため

パレートの法則

ソーシャルゲームの売上の8割は全ユーザーの2割のヘビーユーザーの課金によるものである」みたいな話のように、全体の数値の大部分が、全体を構成する要素の一部によって賄われている現象のこと。この考え方に従って、課金額がミドルやライトなユーザーをヘビーに変えるための導線を探すことがマーケティング戦略上重要になる。

前準備

対数正規分布を用いて擬似データを作成

sales <- rlnorm(10000, meanlog = 10, sdlog = 1)
dataFrame <- as.data.frame(sales)

k-meansクラスタリング

library(ykmeans)

yk_data <- ykmeans(dataFrame,
                   k = 9,
                   variable.names  = "sales",
                   target.name = "sales",
                   cluster.name = "cluster",
                   n = 100)

少し加工してggplot

library(dplyr)
library(ggplot2)
library(scales)

yk_data <- yk_data %>% 
  arrange(desc(sales)) %>% 
  mutate(cluster = factor(cluster)) %>% 
  mutate(row = row_number())

ggplot(yk_data, aes(x = row, y = sales, group = cluster, colour = cluster)) +
  geom_point() +
  scale_y_continuous() +
  xlab("売上ランク") +
  ylab("売上額") +
  scale_y_continuous(label = comma) +
  theme_bw(base_family = "Osaka")

結果

f:id:hasewo_gamer:20170515031905p:plain

ちょうど曲がってるあたりがヘビーとミドルの境目くらいかなあ
3~5に分類されたユーザーと6~9に分類されたユーザーの行動比較みたいなのをやりたいけど、擬似データなのでここまで

感想

ggplotの書き方すぐ忘れるので備忘録がてら描いてみました
コード載っけてみたけど見にくいので、はっきり見える方法わかったら修正します
サンキュー