キーワード調査の前に(3)

前に、というか調査後の話なのですが。今回から、キーワードに言及したIDも集計するようにしてみました。感想サイト探しの手伝いになるかも。まあ気になったから調べてみただけですが。こういうデータを調べるのにもRは超便利で最高ですね。
まずids.outというファイルにID情報を出力しておいて、Rで読み込む。

> df <- read.delim("ids.out")
> head(df)
               id group list
1    ascidian4031    31   32
2       karinchan    27   31
3        cointoss    27   30
4             CPP    27   29
5           amado    27   28
6 amaterasumamolu    26   27

なんとなく偏差値を出したくなったので、sscoreという関数を作って偏差値も出してみる。

sscore <- function(l){
    sigma = sqrt(var(l)/(length(l)/(length(l)-1)))
    mu = mean(l)
    10*(l - mu)/sigma + 50
}
> g <- df$group
> df <- data.frame(df, z=sscore(g), p=g/35, r=rank(1/g, ties.method="min"))

z=偏差値、p=網羅率、r=順位。偏差値の計算間違ってるのかなと思うほど高い・・・!まあ、正規分布に従ってないから高くなるのはしょうがないんだけど。あとサンプルが多いからどうしても陽性になってしまうのかな。

> shapiro.test(g)
        Shapiro-Wilk normality test
data:  g 
W = 0.5817, p-value < 2.2e-16
> head(df, 30)
                id group list         z         p  r
1     ascidian4031    31   32 112.27763 0.8857143  1
2        karinchan    27   31 103.27826 0.7714286  2
3         cointoss    27   30 103.27826 0.7714286  2
4              CPP    27   29 103.27826 0.7714286  2
5            amado    27   28 103.27826 0.7714286  2
6  amaterasumamolu    26   27 101.02842 0.7428571  6
7          Kugetsu    26   27 101.02842 0.7428571  6
8       kab_studio    26   30 101.02842 0.7428571  6
9         hebiashi    26   26 101.02842 0.7428571  6
10        gekikame    26   30 101.02842 0.7428571  6
11     nogawasunam    25   25  98.77858 0.7142857 11
12           spyre    25   31  98.77858 0.7142857 11
13          azejdc    25   29  98.77858 0.7142857 11
14    kazama_akira    25   28  98.77858 0.7142857 11
15           riyot    24   25  96.52874 0.6857143 15
16          anemoe    24   25  96.52874 0.6857143 15
17      starcherry    24   30  96.52874 0.6857143 15
18       andashion    24   25  96.52874 0.6857143 15
19          Suigin    24   25  96.52874 0.6857143 15
20         tryarks    23   26  94.27890 0.6571429 20
21         chieftk    23   25  94.27890 0.6571429 20
22           crow2    23   23  94.27890 0.6571429 20
23       chillover    23   23  94.27890 0.6571429 20
24      kkobayashi    22   25  92.02906 0.6285714 24
25        heta_kan    22   24  92.02906 0.6285714 24
26          zeroes    22   25  92.02906 0.6285714 24
27     asylum_mayo    22   23  92.02906 0.6285714 24
28          sandol    22   22  92.02906 0.6285714 24
29       moonphase    22   24  92.02906 0.6285714 24
30             ue6    22   24  92.02906 0.6285714 24

グラフ

次に、全体の構成を見てみます。95%ラインより上は言及数いくつなのでしょう?

> which.min(abs(cumsum(table(g))/sum(table(g)) - 0.95))
13

なるほど。13作品以上見れば95%なのか。案外少ないな。グラフはこんな感じ

> plot(density(g))

> plot(cumsum(table(g)/sum(table(g))), type="l", xlab="count", ylab="percentile")
> abline(h=0.95, col=2)
> abline(v=13, col=4)