統計に使う言語"R"で投稿動画を分析したかった

あらまし

Rという言語があることはなんとなく知っていたが、

本屋さんでRについてのブルーバックスの本が並んでいるのを見て、

そう言えばRあるじゃん、やってみようという気分になり、やってみることにした。

(本は買わなかった…ごめん)

統計にはデータが必要だが自分の投稿動画は数がそれなりに(150くらい)あり、再生数などを分析するのに良いかなと思った。

Rのインストール

Rはコマンドプロンプト(例の黒い画面)やターミナル(例の白い画面)など、コンソールで動くアプリケーションだ。

自分はHomebrewというパッケージ管理ソフトを使い、MacOS(High Sierra)にインストールした。

特に困りはしなかったが時間はかかった。

ニコニコAPIを叩いてJSONを入手

site.nicovideo.jp

上のリンク先などを参照して「見切り発車P」タグのついた動画データを、上限が100個だったので2回に分けて入手した。

ここではcurlというサーバーにリクエストを送る際に使うコマンドを使ったが、たぶん単純にブラウザで開くだけでもJSONは表示されるはず。

何度かパースエラーなどが起きつつも、無事JSONをゲットした。

JSONCSVにコンバート

頑張ってコンバートしても良かったのだが、

konklone.io

上のリンク先にJSONを投げ込むと変換したものがダウンロードできた。

どういうサイトなのかあまり調べていないので、ご利用は自己責任でお願いしたい。

CSVを結合

この時点では再生数順に1位から100位までの動画情報と、100位から158位までの動画情報が別々になっていたので、まとめた。

と言っても難しくはなく、

cat *.csv > all.csv

のようにコマンドを入れるとall.csvができる。

タイトル行が2回分入っているなどの問題を手動で直せば158個のデータが入ったcsvが完成する。

いよいよR

いよいよR言語を使ってみた。

csvファイルを読み込むには csvdata <- read.csv("ファイル名") のようにする。

この場合ファイル名に入っているデータがcsvdataという変数に入る

summary( 変数名 )というコマンドで変数の概要が見られるらしいので、見てみる。

f:id:mi_ki_ri:20180309222624p:plain

このようにいろいろ出てきた。

ここで、viewCounterのところのテーブルが再生数を表す。

以下のような情報が分かる。

  • 一番低い再生数は111
  • 中央値は368
  • 平均値は399
  • 最大値は1080

平均値が約400もあるとは意外だった。200くらいのような体感だった。

コメントやマイリストにしても10行かないかも行くかもぐらいの体感だったが、平均値・中央値ともに10は超えてきたとは。まあ半分は行かないという証明でもあるが…。

Rで作図

R言語の特徴は作図に強いことであるらしい。

統計結果を図に表してプレゼンとかができるわけだ。

自分もいくつか作図してみた。それを踏まえた作図の手順を。

tips-r.blogspot.jp

こちらのサイトを参考にさせていただいた。

  • png( "ファイル名", width=800, height=600 ) のようにしてpngバイスへの入り口を作っておく。
  • prot( 0, 0, xlim=c(x軸最小,x軸最大) ylim=c(y軸最小, y軸最大), xlab="", ylab=""  ) のようにして空の描画領域を作る。
  • hist()やcurve()などで心ゆくまで描画。
  • dev.off()でpngバイスへのリンクを切る。同時にファイルが確定される。

こうして「ファイル名」にpngファイルが出てくる。

そんな感じでいくつか作ったが、まともになったのは3例だけだった。

例1:時系列再生数グラフ

f:id:mi_ki_ri:20180309223803p:plain

x軸=時系列(つまり投稿順), y軸=再生数 のグラフ。

2013年あたりが再生数のピークだったらしい。

例2:時系列再生数(対数)グラフ

f:id:mi_ki_ri:20180309223933p:plain

X軸=時系列、Y軸=再生数で前と同じだが、Y軸を対数にしてみたグラフ。

違いは分かるがその違いが何を意味するのか分かるほどの知識がない(泣)

例3:偏差値の分布図

f:id:mi_ki_ri:20180309224123p:plain

紫が自分の動画(158個)再生数の偏差値の分布を表している。

緑は158個の正規分布したランダムな値の偏差値。

本来緑のような釣り鐘状(サンプル数が少ないためかちょっと形がいびつ)になるはずだが、

やや40〜50の層が厚く、その分高偏差値の動画が飛び出ている。

つまり再生数の偏差値は完全なランダムではなく、何らかの理由で飛び出したり層が厚くなったりするということである。

では完全なランダムではなくする何らかの理由とはなにか。

それこそが作り手の個性ってやつなのさハハハハハ。

あるいは場所(ニコ動)の個性か。

やや低ぐらいの偏差値が多いが、たまに高偏差値の化物が出てくる場所であるらしい。

次の目標

一般的な投稿データ(タグ:ボーカロイドのデータなど)との比較をしてみたい。

偏差値などは人と比べてなんぼのような気がするし…

試したのだが、データの数が合わないとうまくグラフが描けないという事態になり、

ランダムなサンプリングの必要があるらしいところまでは分かった。

自分の動画(158個)とサンプリングされたタグ:ボカロの動画(158個)で比較すればうまく行きそうだ。