Rを使ってニコニコ動画のデータを分析してみる

職場で統計に関する仕事をすることになり、最近Rの勉強をしています。
R のインストール – RjpWiki

とりあえず、ニコニコ動画のそれぞれのカテゴリの合計再生数ランキングにおける1位から300位までの動画のデータを作成したのでこれで試してみます(ランキングの上位を取得したデータなので、当たり前ですが偏りがあります。本来ならもっとランダムに取得できたらよかったんですが)。
http://am-yu.net/wp-content/uploads/2013/11/nico.txt
左から、カテゴリー、カテゴリーの中の再生数の順位、動画ID、再生数、コメント数、マイリスト数、です。

上記のテキストボックスを全て選択してコピーしたら、Rで下記のように入力

> nico.table <- read.table("clipboard", header=TRUE, sep="\t")

とりあえず、マイリストと再生数のプロットを表示してみる。options関数のscipen=100というのは、指数表現をしないための処理です。これをしないと、大きい数だと数値にEがついた指数表記になるので分かりにくい。

> options(scipen=100)
> plot(nico.table$mylist, nico.table$view)

mylist-view-plot

なんだか相関ありそうです。なので、相関係数がわかるcor関数を使ってみます。

> cor(nico.table$mylist, nico.table$view)

結果は、0.8042205となりました。

続いて、マイリストと再生数から回帰分析(この場合、単回帰分析)をやってみます。

> nico.lm <- lm(view~mylist, data=nico.table)
> summary(nico.lm)

Call:
lm(formula = view ~ mylist, data = nico.table)

Residuals:
     Min       1Q   Median       3Q      Max 
-4182156  -203555   -84197    84145  6976612 

Coefficients:
               Estimate  Std. Error t value            Pr(>|t|)    
(Intercept) 227181.8448   5192.2143   43.75 <0.0000000000000002 ***
mylist          29.5189      0.2287  129.07 <0.0000000000000002 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 426600 on 9098 degrees of freedom
Multiple R-squared:  0.6468,    Adjusted R-squared:  0.6467 
F-statistic: 1.666e+04 on 1 and 9098 DF,  p-value: < 0.00000000000000022

こんな感じになりました。ここから分かるのは、マイリストがひとつ増えると再生数は29増えているということです。この29を係数というよう。ただし、マイリストが0だと再生数は227181という結果に。さすがに再生数が227181もあれば、マイリスト数は四桁ぐらいありそうな気もするのですが・・・。
決定係数(Multiple R-squared)が0.6468というのは、まあまあな結果ですが、もうちょっと高くなってほしいところです。

なお、コメント数と再生数はあまり相関がないようでした。相関係数も0.2044571とあまり相関がないと思えるような数値です。
mylist-view-plot

つづいて、コメント数とマイリスト数のカテゴリーから再生数を回帰分析してみます(この場合は重回帰分析)。

> summary(lm(view~comment+mylist+category, data=nico.table))

Call:
lm(formula = view ~ comment + mylist + category, data = nico.table)

Residuals:
     Min       1Q   Median       3Q      Max 
-3381624  -120313   -20704    57568  5871272 

Coefficients:
                                   Estimate     Std. Error t value
(Intercept)                   458110.790621   20406.426974  22.449
comment                            0.156682       0.008722  17.963
mylist                            27.987145       0.250434 111.755
categoryVOCALOID             -630814.309857   31374.219032 -20.106
categoryアイドルマスター     -317110.961431   28864.818790 -10.986
categoryアニメ                -12433.918100   29347.159089  -0.424
categoryエンターテイメント    106665.934560   29113.386618   3.664
categoryゲーム                509400.081645   27310.232120  18.652
categoryスポーツ             -134746.740882   28839.904059  -4.672
categoryその他               -202226.575099   28856.164369  -7.008
categoryニコニコインディーズ -461938.390788   28835.251038 -16.020
categoryニコニコ技術部       -245046.857931   28835.412492  -8.498
categoryニコニコ手芸部       -447233.901167   28841.869805 -15.506
categoryニコニコ動画講座     -435429.184107   28835.644012 -15.100
categoryラジオ               -278669.923883   28833.067209  -9.665
category演奏してみた         -297898.342611   29078.455908 -10.245
category音楽                 -251321.838955   29860.152106  -8.417
category科学                 -138335.968775   28833.243542  -4.798
category歌ってみた           -150877.940676   30400.038282  -4.963
category作ってみた           -407013.615414   28833.883751 -14.116
category自然                 -294252.049790   28832.701283 -10.205
category車載動画             -415746.255156   28840.963791 -14.415
category政治                 -257016.798451   28832.655268  -8.914
category東方                   75172.100380   29169.418758   2.577
category動物                  -54617.171479   28896.550444  -1.890
category日記                 -258395.680688   28832.994579  -8.962
category描いてみた           -413111.914172   28960.151289 -14.265
category踊ってみた           -205980.374550   28937.420108  -7.118
category旅行                 -432117.294196   28841.012412 -14.983
category料理                 -225005.742962   28837.551332  -7.803
category例のアレ             -198518.592365   28844.804519  -6.882
category歴史                 -382551.982680   28834.286537 -13.267
                                         Pr(>|t|)    
(Intercept)                  < 0.0000000000000002 ***
comment                      < 0.0000000000000002 ***
mylist                       < 0.0000000000000002 ***
categoryVOCALOID             < 0.0000000000000002 ***
categoryアイドルマスター     < 0.0000000000000002 ***
categoryアニメ                            0.67181    
categoryエンターテイメント                0.00025 ***
categoryゲーム               < 0.0000000000000002 ***
categoryスポーツ              0.00000302234127517 ***
categoryその他                0.00000000000258837 ***
categoryニコニコインディーズ < 0.0000000000000002 ***
categoryニコニコ技術部       < 0.0000000000000002 ***
categoryニコニコ手芸部       < 0.0000000000000002 ***
categoryニコニコ動画講座     < 0.0000000000000002 ***
categoryラジオ               < 0.0000000000000002 ***
category演奏してみた         < 0.0000000000000002 ***
category音楽                 < 0.0000000000000002 ***
category科学                  0.00000162982290032 ***
category歌ってみた            0.00000070645119690 ***
category作ってみた           < 0.0000000000000002 ***
category自然                 < 0.0000000000000002 ***
category車載動画             < 0.0000000000000002 ***
category政治                 < 0.0000000000000002 ***
category東方                              0.00998 ** 
category動物                              0.05878 .  
category日記                 < 0.0000000000000002 ***
category描いてみた           < 0.0000000000000002 ***
category踊ってみた            0.00000000000117717 ***
category旅行                 < 0.0000000000000002 ***
category料理                  0.00000000000000674 ***
category例のアレ              0.00000000000628002 ***
category歴史                 < 0.0000000000000002 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 353100 on 9068 degrees of freedom
Multiple R-squared:  0.7588,    Adjusted R-squared:  0.758 
F-statistic: 920.4 on 31 and 9068 DF,  p-value: < 0.00000000000000022

R-18がないのは別に配慮したわけではなく、たまたまR-18がデフォルトとなりました。つまり、ただたんにマイリスト数と27.987145を掛け、コメント数と0.156682をかけて切片(Intercept)の458110.790621を足しただけの数値は、R-18の動画の再生数の基準ということになります。VOCALOIDの場合はここから630814.309857を引いたものとなります・・・。あれ? これだと一見、VOCALOID動画のほうが再生数低いような気がしますね。そんなわけないんですが。
VOCALOIDの係数が低いのは、動画の再生数にたいするマイリストの割合が、VOCALOID動画は高い傾向があるのが原因かと思われます。
実際、カテゴリーだけを考慮した回帰分析だと、VOCALOIDの係数はプラスとなっているようです。

> summary(lm(view~category, data=nico.table))

Call:
lm(formula = view ~ category, data = nico.table)

Residuals:
     Min       1Q   Median       3Q      Max 
 -695356  -196609   -76660    28225 15941523 

Coefficients:
                             Estimate Std. Error t value             Pr(>|t|)    
(Intercept)                    558774      32090  17.413 < 0.0000000000000002 ***
categoryVOCALOID               753839      45383  16.611 < 0.0000000000000002 ***
categoryアイドルマスター      -173745      45383  -3.828             0.000130 ***
categoryアニメ                 608215      45383  13.402 < 0.0000000000000002 ***
categoryエンターテイメント     574374      45383  12.656 < 0.0000000000000002 ***
categoryゲーム                1006425      42452  23.708 < 0.0000000000000002 ***
categoryスポーツ               -71304      45383  -1.571             0.116175    
categoryその他                 -99343      45383  -2.189             0.028621 *  
categoryニコニコインディーズ  -499479      45383 -11.006 < 0.0000000000000002 ***
categoryニコニコ技術部        -198058      45383  -4.364      0.0000129011797 ***
categoryニコニコ手芸部        -532805      45383 -11.740 < 0.0000000000000002 ***
categoryニコニコ動画講座      -379395      45383  -8.360 < 0.0000000000000002 ***
categoryラジオ                -270652      45383  -5.964      0.0000000025570 ***
category演奏してみた           119985      45383   2.644             0.008211 ** 
category音楽                   635702      45383  14.008 < 0.0000000000000002 ***
category科学                  -123552      45383  -2.722             0.006492 ** 
category歌ってみた             931765      45383  20.531 < 0.0000000000000002 ***
category作ってみた            -427308      45383  -9.416 < 0.0000000000000002 ***
category自然                  -307999      45383  -6.787      0.0000000000122 ***
category車載動画              -497197      45383 -10.956 < 0.0000000000000002 ***
category政治                  -281587      45383  -6.205      0.0000000005719 ***
category東方                   568683      45383  12.531 < 0.0000000000000002 ***
category動物                   151049      45383   3.328             0.000877 ***
category日記                  -291452      45383  -6.422      0.0000000001411 ***
category描いてみた            -118129      45383  -2.603             0.009257 ** 
category踊ってみた              64139      45383   1.413             0.157605    
category旅行                  -513905      45383 -11.324 < 0.0000000000000002 ***
category料理                  -161949      45383  -3.569             0.000361 ***
category例のアレ              -111561      45383  -2.458             0.013981 *  
category歴史                  -422626      45383  -9.313 < 0.0000000000000002 ***
---
Signif. codes:  0 ‘***’ 0.001 ‘**’ 0.01 ‘*’ 0.05 ‘.’ 0.1 ‘ ’ 1

Residual standard error: 555800 on 9070 degrees of freedom
Multiple R-squared:  0.4023,    Adjusted R-squared:  0.4004 
F-statistic: 210.5 on 29 and 9070 DF,  p-value: < 0.00000000000000022

うーん。なんとも中途半端なエントリーになってしまった。もうちょっとRの使い方や、ニコ動のデータの分析について詳しくかけたらよかったのだけれども・・・。
もともと、コメント数がもうちょっと相関あると思ってやってみたことなので・・・。
ちなみに、コメント数5000000未満を省くと相関あるんじゃないかと思ってやってみた結果が以下。

> nico2.table <- nico.table[nico.table$comment < 5000000,]
> plot(nico2.table$comment, nico2.table$view)
> cor(nico2.table$comment, nico2.table$view)
[1] 0.4717702

mylist-view-plot

少し相関が高くなってきましたが、もうちょっと高いのが理想です。

コメント

タイトルとURLをコピーしました