Japan.R に行って来ました

かなり久しぶりの日記。
何でこんなに間が空いたかっていうと、ただただ色々忙しかったという他には無いわけですが・・・・・・。

それはさておき、今後の世の中は統計分析がホットになる、なんて記事があったり、レコメンデーションや自然言語処理の本なんかも出版されていて、世間では統計分析の技術が徐々にもてはやされつつあるようです。

次の10年、「統計分析」こそテクノロジー分野でいちばんホットな職業になる - Publickey

そして、統計分析用のプログラミング言語 R も徐々に注目が集まっているようです。

http://www.okada.jp.org/RWiki/?R%CB%DC%A5%EA%A5%B9%A5%C8
ここ2年ぐらいでかなりの数のR解説書が出版されてる。

こうした背景から、最近ちょっと R を勉強してみたいなー、などと思ってたわけです。しかしこれといって処理したいデータもなく・・・、という状況できっかけを欠いた状態でした。

しかし、ATNDの新着フィードを眺めていたら、ちょうどRの初心者向け勉強会を発見!

第1回 Japan.R 午前の部: はじめての「R」 : ATND

これはいいタイミングとばかりに喜び勇んで行って参りました。
つうか、統計数理研究所なんて場所あったんですね・・・。
しかも同じ都内とはいえ、立川はマジで遠い・・・。


勉強会の内容は、以下の通り。

  1. R の紹介
  2. R のインストール/アンインストール/アップデート
  3. 変数・関数の使い方
  4. ベクトルの扱い方
  5. 図の表示
  6. 応用:RMeCabの紹介

非常に初心者向けだったので、入門にはばっちりでした。

で、Rの使い方をひと通り習ってきたので、
早速使ってみることに。

まず統計分析の元データとして、ニコニコ動画の月間ランキングと、各動画のはてなブックマーク取得数並べたデータを用意してみます。

これはRubyで適当なスクリプトを組んで取得しました。

#ニコニコ月間ランキング
#http://www.nicovideo.jp/ranking/mylist/hourly/all?rss=2.0

#はてなブックマーク件数取得 API
#http://api.b.st-hatena.com/entry.count?url=

require 'rss'
require 'net/http'
require 'kconv'

require 'rexml/document'
include REXML

rss = RSS::Parser.parse("http://www.nicovideo.jp/ranking/mylist/monthly/all?rss=2.0")

# puts title,rank,bookmark_count
rss.items.each do |item|
  count = nil
  nico_title = item.title.kconv(Kconv::SJIS,Kconv::UTF8).split(//)[1]
  rank = item.title.kconv(Kconv::SJIS,Kconv::UTF8).split(//)[0]
  rank_num = rank.gsub(/|/,'')
  req =Net::HTTP::Get.new('/entry.count?url='+item.link)
  Net::HTTP.start('api.b.st-hatena.com',80) do |http|
    count = http.request(req)
  end
  puts nico_title + ',' + rank_num + ',' + count.body
  sleep(10)
end

で、取得したCSVファイルを元に、R でcsvファイルを読み込み、散布図として表示します。

> data <- read.csv("<データ名>.csv")
> plot(data[,3],data[,2],main="niconico_monthly-hatena-bm",xlab="hatena_bm_count",ylab="nico_monthly_ranking")

散布図は以下のとおりになりました。

こうして見ると、ニコニコ動画の月間ランキング順位とはてなブックマークの取得数はほとんど相関がないことがわかりますね。

ニコニコ動画の中でもはてな民がブクマする動画はジャンルが偏ってるので、こうなるのでしょうか。

こうやっていろいろなデータを解析できるとそれなりに便利かも。
でも活用の前に自分には統計学の勉強が必要なわけですが。