職場で統計に関する仕事をすることになり、最近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)
なんだか相関ありそうです。なので、相関係数がわかる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とあまり相関がないと思えるような数値です。
つづいて、コメント数とマイリスト数のカテゴリーから再生数を回帰分析してみます(この場合は重回帰分析)。
> 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
少し相関が高くなってきましたが、もうちょっと高いのが理想です。
コメント