(O+P)ut

頭の整理のために、Slerで働く若手インフラエンジニアが、【 (O+P)ut = OutPut 】していく場です。

【クリスマス前】出会いマッチングアプリの登録者推移【R言語】

データを解析するにあたって、おもしろいデータか否かというのはとても重要です。分析、解析するデータの選定ですね。

今回は、少しおもしろそうなデータを用意しました。出会い系マッチングアプリの登録者数です。

f:id:mtiit:20171227223729p:plain

個人的に、クリスマスを境にしてどのような変化があるのか興味がありました。

私の仮説は、下記になります。


クリスマスに近づくにしたがって登録者の伸びは加速し、クリスマスを境に増加がゆるやかになる



さて、結果はどうなのでしょうか。

まずは、データの用意です。今回は、" CROSS ME " というアプリを用いて検証します。

こちらのアプリは、登録者が自分の いいね などのランキングを全体の登録者数との立ち位置として確認できるため、全体の登録者数を取得できます。協力者に頼んで、男性と女性でアカウントを作成し、毎日0時に登録者をメモするという作業を繰り返しました...(まさかの手動) ちなみに登録者数の閲覧は課金せずとも可能です。

さて、そんなこんなで取得したデータは下記です。

12/7,54768,26733
12/8,55482,27056
12/9,56171,27296
12/10,57101,27644
12/11,58316,28018
12/12,59142,28340
12/13,59997,28724
...

一列目は日付、ニ列目は男性の登録者数、三列目は女性の登録者数。

今回はRで推移を可視化するためにデータを読み込みます。
CSVファイルで読み込めるので、ファイル名をhoge.csvとすると下記のように簡単に値を取得できます。

> data_crossme <- read.csv("./hoge.csv")
> dim(data_crossme)
[1] 20  3

用意した日付は12/7 0:00~12/27 0:00 の計20です。

データの差分は diff で取得できます。

> diff(data_crossme[[2]]) #男性
 [1]  689  930 1215  826  855  942  819
 [8] 1033  778 1095  764 1014  627  712
[15]  998 1003 2371  852  844
> diff(data_crossme[[3]]) #女性
 [1] 240 348 374 322 384 316 328 356 329
[10] 339 239 310 187 232 228 324 299 282
[19] 263

あれ...男性の値が飛びぬけてる日があるような....

そして、同じように日付をx座標にするため、文字列を日付に変更します。こちらは strptime を用いて形式を指定してあげれば変換できます。

> day_data <- strptime(data_crossme[[1]],"%m/%d")
> day_data
 [1] "2017-12-08 JST" "2017-12-09 JST"
 [3] "2017-12-10 JST" "2017-12-11 JST"
 [5] "2017-12-12 JST" "2017-12-13 JST"
...

準備が整いました。増減を可視化してみます。

> plot(x=day_data[2:length(day_data)],y=,diff(data_crossme[[2]]),ylim=c(0,2500),xlab="",ylab="")
> par(new=T)
> plot(x=day_data[2:length(day_data)],y=,diff(data_crossme[[3]]),ylim=c(0,2500),xlab="",ylab="",pch=2)

f:id:mtiit:20171227230131p:plain
△マークが女性、〇マークが男性です。

△マークは特に日による変化は見られません。一方、〇マークは1日だけ突出している日があります。
よく見ると、12/24 0:00~12/25 0:00 のところだけ2000を超える異様なデータとなっています。

仮説がはずれました。分析するまでもなく見られた結果は、

クリスマスイブに、男性側のみ登録者数が急増する


でした。理由はなんなのでしょうか...直前すぎてどうともならない気がするんですが...

以上、興味本位のデータ可視化でした。