naichi's lab

3日後の自分(他人)への書き置き

unity1weekの評価数がTOP作品にどれくらい偏ってるのか知りたい

f:id:naichilab:20190211071602p:plain

概要

  • unity1weekで投稿されたゲームで遊ばれた数にかなりのバラツキがある(と思う)。
  • がんばって作ったゲームが埋もれちゃう悲しい。かき混ぜたい。
  • イベントの仕組みを変えて改善したいと考えているので、変更前の状況を把握しておきたい
  • Rを使ってどれくらいのバラツキがあるかみてみよう。(データを見る練習&Rお試し)

注意

統計の知識ゼロなのですげー適当に書いてます。

知識ある方の目にとまることがあればアドバイスください〜

背景

  • unityroomunity1weekという「1週間でゲーム作って」「わーっと遊ぶ」イベントを開催している。
  • 「1週間で作る」ところは参加者のみなさん楽しそうなのでたぶん大丈夫。
  • 問題は「わーっと遊ぶ」ところ。
  • 基本的に一斉公開されて「さあ遊ぼう!」だが、ありがたいことに投稿数が多すぎる。
    • 前回は266作品。1作品3分で遊んだとしても798分=13.3時間。すごい数。
  • 選ぶことすら大変なので、人気TOP作品を掲示している。
  • 人気TOP作品
    • f:id:naichilab:20190211051038p:plain
    • 赤枠が評価もらえた数。(1~10評価の合計なので評価してくれた数ではない)
  • 多くの方はTOP作品だけ遊んで離脱していると思う。(体感)
  • あまり遊ばれなくて悲しいみたいな声がちらほら聞こえてくるのでこれを改善したいと思っている。

次のイベントではもっと相互評価を促そうと思っていて、他の人のゲームを遊べば遊ぶほど自分のゲームも遊ばれやすくするつもり。

この記事ではとりあえず、改善前の既存イベントで「評価数がどの程度偏ってるのかみてみたい!グラフ化してみよう!」ってことをやってみます。

データの準備

SQLでちゃちゃっと評価数を集計

過去十回分のデータ溜まってますがシンプルな練習用データとするために最後の一回分だけにします。266レコード。

select 
    coalesce(r.cnt, 0) cnt
from games g
left join (
    select 
        game_id,
        count(*) cnt 
    from 
        reviews 
    group by 
        game_id
    ) r
on 
    r.game_id = g.id
where 
    g.publish_level = 2
    and g.unity1week_id = 11

RubymineだとそのままTSV出力できて楽だった。

f:id:naichilab:20190211071414p:plain:w320

ヘッダーすらないただの数値が並んだファイルです。

f:id:naichilab:20190211060901p:plain:w320

Rでデータを覗く

Rはインストール済み

blog.naichilab.com

ここからRStudioで作業。

適当なフォルダを作って tsvファイル を入れておく。

新規RScriptを作成。

あとはこの辺みながらがんばる。 統計ソフトRの使い方

スクリプト書いたらcmd+Enterで選択行だけ実行できるみたい。

とりあえずそれだけで覚えれば試せそう。

f:id:naichilab:20190211062344p:plain:w320

データ読み込み

# 作業フォルダ移動
setwd("~/r-projects/unityroom")
# 作業フォルダ表示
getwd()
# tsvファイル読み込み
data = read.table("review_cnt.tsv", header=FALSE, sep="\t");
# 1列目を変数に入れとく
counts = data$V1

要素数

> length(counts)
[1] 266
  • 当然266個

データ要約

> summary(counts)
   Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
   0.00    8.00    9.00   13.17   13.00  108.00 
  • 最小、第1四分位点、中央値、平均値、第3四分位点、最大値
  • 最大値108なのに中央値9、平均13しかない。
  • どう受け取ればいいんだろう。
  • 平均は外れ値の影響受けやすいっぽいからあんまりみてもしゃーないかな。
  • 中央値9は思ったより多い印象。3〜4程度かと思ってた。

標準偏差

> sd(counts)
[1] 11.96
  • 11.9はめっちゃ大きい気がするけどそもそも標準偏差 is 何。
  • 評価数ってそもそも正規分布ではない気がするけどこの数値意味あるんだろうか。
  • バラツキを数値化するって意味では意味なくはないか?

ヒストグラム

> hist(counts,breaks = 30)

f:id:naichilab:20190211064111p:plain:w320

  • 横軸:評価数、縦軸:発生頻度
  • summaryでみた通り、5~15あたりが突出してますね。

箱ひげ図(ボックスプロット)

> boxplot(counts)

f:id:naichilab:20190211063539p:plain:w320

  • 付録. M5実習3:データの図示 - 統計ソフトRの使い方
    • 箱:第1四分位点と第3四分位点
    • 箱の太線:中央値
    • 箱の外側の線:四分位範囲の1.5倍
    • らしい
  • Summaryを図にしたものってことかな?
  • めっちゃ上に外れてる。
  • そもそも正規分布ではない気がするけどこの図って〜(2度目

QQプロット

> qqnorm(counts)

f:id:naichilab:20190211063830p:plain:w320

  • なんかあったので書いてみた。
  • 正規分布だと直線になるらしい
  • めっちゃ下に偏ってるな〜(見方わからん

まとめ

R使えば簡単に集計したりグラフ化できてすごい。

ツールはすごいけど使う人間に知識がないので読み解けないw

そもそもどういうデータを用意すればいいのか。どういう視点で分析すればいいのか。

なんもわからん。

とりあえず素人目にみてもヒストグラムがめっちゃ左に偏ってるのでこれを右にスライドできれば改善できたと言えそう??

まぁ次回イベント後にもっかいみてみましょうか。

完全独習 統計学入門

完全独習 統計学入門