34日目「kakuyomuの分析(みーにんぐれす)」

私しか見えない情報として、この日記には非公開の34日目から始まるテーマのものがいくつかある。

つまり、34日目が私の宿痾によって書けていないということである。


戒めとして、この話は絶対に34日目として公開できるようにする。そのための前書きである。


kakuyomuの小説の星の数と何か関係している要素を探すために、今回はデータの分析の手法を使って、その要素と星の数の相関の強さを計算していこうと思う。


・お品書き

◻︎最小二乗法というめちゃすごメソッド

◻︎平均、分散、共分散、相関関係ってなんぞや?

◻︎相関係数とスケール不変性

◻︎相関係数の性質

◻︎kakuyomuのデータを分析してみる(信用するな)


◻︎最小二乗法というめちゃすごメソッド


⭐︎材料⭐︎

◻︎二乗の性質

◻︎誤差

◻︎近似


まず、データの分析方法について知る前に、最小二乗法について知っておく。最小二乗法というのは、バラバラに離れているデータのことを、連続な関数で最もよく近似する方法のことである。


また、データの関係性を、簡単に、わかりやすくするだけではなく、わからないデータについても予想を立てることができるというのが近似の良いところである。


では最小二乗法について考えてみよう。データの組、{(x(0),y(0)),(x(1),y(1)),......,(x(n),y(n))}が与えられているとする。これをある関数f(x)で近似することを考える。

f(x)はg(k,x)の線型結合によってかかれるものとする。すると、f(x)=Σ(k=0→m) a(k)g(k,x) (a(k)は実定数)とかくことができる。


f(x)をx(k)に作用させることによって、近似したデータを得ることができる。

このデータと元の離散データの全体の誤差を求めると、それは、E(a(0),a(1),a(2),......,a(m))=

Σ(k=0→n) {y(k)-f(x(k))}^2

とかくことが出来る。ここで、各データ毎の誤差を二乗している理由は至極単純であるが、誤差を二乗しなかった場合、正の誤差と負の誤差が打ち消しあってしまうからである。つまり、正しく誤差が出てくれない可能性があるということだ。二乗することによって、すべての誤差が正になって、絶対値を使うよりも計算がしやすい。


そして、このEを最小とするようなa(0),a(1),......,a(m)を求めることで、最適な近似を導けるというのが最小二乗法の考え方である。このようなa(0),a(1),......,a(m)を求めることでf(x)が定まる。


◻︎平均、分散、共分散ってなんぞや?


⭐︎材料⭐︎

◻︎平均

◻︎二乗平均

◻︎分散

◻︎標準偏差

◻︎共分散


・平均

一次元データの集まりX={x(0),x(1),......,x(n)}について、次のように平均が定められることはよく知られている。

μ[1,X]={Σ(k=0→n) x(k)}/(n+1) (以下単純にμ[X]と書いた時、これはこの意味での平均とみなす)


つまり、データ自体の総和をデータの個数で割ることによって、平均を出すことができる。また、平均という量には別の見方がある。それは最小二乗法の考え方による定義の仕方である。Xを定数を用いて近似することを考える。この時最も二乗誤差が小さいのが平均である。

具体的に言えば、E(μ)=Σ(k=0→n) (x(k)-μ)^2 を最小にするμがXの平均である。

E(μ)はμを変数とした二次関数の和によって表せるので、下に凸な関数。

また、E(μ)は定数関数ではないので、Eが最小となるようなμが一意に存在する。

よって、この方法でも平均を定義することができた。


ここから平均の意味を考えると、平均というのは、データの大きさの一つの指標となる量と言える。


平均については次の性質が成り立つ。aX+b={ax(0)+b,ax(1)+b,......,ax(n)+b}とする。


aμ[X]+b=μ[aX+b] 一次可換則

特に、a=1とした時

μ[X+b]=μ[X]+b

[証明]

μ[X]={Σ(k=0→n) x(k)}/(n+1)であるので、

μ[aX+b]={Σ(k=0→n) ax(k)+b}/(n+1)=[Σ(k=0→n) ax(k)+Σ(k=0→n) b]/(n+1)

=aμ[X]+b◽︎




・二乗平均

一次元データの集まりX={x(0),x(1),......,x(n)}の二乗平均μ(2,X)を次のように定義する。

μ[2,X]={Σ(k=0→n) x(k)^2}/(n+1)


二乗平均には次のような性質が成り立つ。

μ[2,aX+b]=a^2 μ[2,X]+2abμ[X]+b^2


[証明]

定義に基づき計算せよ◽︎


・分散

一次元データの集まりX={x(0),x(1),......,x(n)}の分散V[X]を次のように定義する。

V[X]={Σ(k=0→n) (x(k)-μ[X])^2}/(n+1)


最小二乗法の誤差の考え方と同じで、二乗することにより誤差の打ち消し合いがなくなり、計算もしやすくなる。


ここで、この式の意味について考えてみよう。(x(k)-μ[X])^2はx(k)が平均からどれほど離れているかを表現している。これをデータ全体に渡って足し上げるので、V[X]は離れ具合の合計を足したものの平均、つまり全体としてどれくらい離れているかを表した数値であると思える。


ここで次のような公式が成り立つ。

V[X]=μ[2,X]-μ[1,X]^2

[証明]

V[X]={Σ(k=0→n) x(k)^2 -2μ[X]x(k) +μ[X]^2}/(n+1)

=μ[2,X]-2μ[X]^2+μ[X]^2=μ[2,X]-μ[1,X]^2◽︎


平均と同じように、V[X]にもaX+bに関する定理が存在する。


V[aX+b]=a^2 V[X]


この定理で重要なのは、V[X]に関して、平行移動は値を全く変化させない操作であるということである。つまり、データを定数分ずらしても、当然データの散らばりには全く影響はないということである。


[証明1](定義に従い計算)

V[aX+b]={Σ(k=0→n) (ax(k)+b -aμ[X] -b)^2}/(n+1)=a^2 V[X]◽︎

[証明2](公式による変形)

V[aX+b]=μ[2,aX+b]-μ[aX+b]^2=a^2μ[2,X]+2abμ[X]+b^2 -a^2 μ[X]-2abμ[X]-b^2

=a^2(μ[2,X]-μ[X])=a^2 V[X]◽︎


・共分散

二次元データX,Y={(x(0),y(0)),(x(1),y(1)),......,(x(n),y(n))}について共分散Cov[X,Y]は次のように定められる。


Cov[X,Y]={Σ(k=0→n) (x(k)-μ[X])(y(k)-μ[Y])}/(n+1)


この意味を考えてみよう。(x(k)-μ[X])(y(k)-μ[Y])について考える。正であるなら、x(k),y(k)が両方とも大きいもしくは両方とも小さいというように考えられる。つまり、傾きが正の一次関数でプロットできそうだということを表している。負であるなら、x(k),y(k)は片方が大きく、片方が小さいというように、傾き負の一次関数に沿っているようだということを表している。


ここで、Cov[X,Y]の問題点について触れておこう。


Cov[aX,Y]=Cov[X,aY]=aCov[X,Y]となってしまう、すなわちスケール変換に対して不変でないということが問題である。例えば(2.24,1.58),(3.79,2.67)......というデータと、(224,158),(379,267)......というデータではCov[X,Y]の値が100倍違う。しかし、両方とも同じ傾きの一次関数に沿っているように思える。つまり、指標の値はデータの倍率で変化してほしくないのである。このCov[X,Y]の問題点を克服したのが次の章にある相関係数Rである。


・相関関係

相関関係というのは、二次元のデータにおいて、おおまかに、一方の数字が増加した場合、もう一方の数字が増加または減少すること、もしくは一方の数字ともう一方の数字に連動性があることをいう。今回は一つ目の意味を用いる。


ここで気をつけたいのが因果関係との区別である。


因果関係というのは、一方のデータが原因となり、もう一方のデータが結果として増減することで、データ間にはしっかりと直接的に関係がある。しかし、相関関係にはあっても間接的な関係しかない。


◻︎相関係数とスケール普遍性

相関係数は次のように定義される。


データの組X,Y={(x(0),y(0)),(x(1),y(1)),......,(x(n),y(n))}の相関係数R[X,Y]は

R[X,Y]=Cov[X,Y]/{√(V[X])√(V[Y])}と定義される。


相関係数は共分散の問題点を解決している。次の定理が成り立つ。


R[aX,Y]=R[X,aY]=R[X,Y]、ただしaは正の実数。(スケール不変性)

[証明]

R[aX,Y]=R[X,Y]のみ例として証明しておく。

R[aX,Y]=Cov[aX,Y]/{√(V[aX])√(V[aY])}=Cov[X,Y]/{√(V[X])√(V[Y])}=R[X,Y]◽︎


また、相関係数Rの定義において√(V[X])と√(V[Y])でCov[X,Y]を割る理由というのは、次の不等式を成り立たせるためである。


|R|≦1(相関係数の不等式)


この不等式はコーシー・シュワルツの不等式から簡単に導けるものであるので、証明は省略しておく。要するに、スケール不変性を成り立たせ、正規化するために、√(V[X])と√(V[Y])でCov[X,Y]を割ったのである。


◻︎相関係数の性質

|R|=1⇄X,Y={(x(0),y(0)),(x(1),y(1)),......,(x(n),y(n))}の元はすべて同一直線上にのる。

[証明]

最初に、X,Y={(x(0),y(0)),(x(1),y(1)),......,(x(n),y(n))}の元が同一直線上に乗っているとして、|R|=1を示す。仮定は、あるy=ax+bが存在して、y(k)=ax(k)+bがk=0→nで成り立っていることと同値であるので、それでRを変形する。


R=Cov[X,Y]/{√(V[X])√(V[Y])}=Cov[X,aX+b]/{√(V[X])√(V[aX+b])}

=aCov[X,X]/{|a|√(V[X])√(V[X])}=a/|a|=±1


よって←は示せた。→を示す。|R|=1とR^2=1は同値であるので、R^2=1で考える。

Cov[X,Y]^2=V[X]V[Y]が示せる。シュワルツの不等式の等号成立条件について考えると、ρ(x(k)-μ[X])=y(k)-μ[Y] となるρがkによらず存在することであるので、y(k)=ρx(k)+μ[Y]-ρμ[X] という式に変形できる。つまり、データはy=ρx+μ[Y]-ρμ[X] という一次関数の上に乗っていることがわかる。よって→も示せた。◽︎


つまり、|R|=1ならデータ間に完全な相関関係があることが示せる。


ここで、次のような分類をする。

|R|=1の時、データに完全な相関があるという。

0.8≦|R|<1の時、データに非常に強い相関があるという。

0.5≦|R|<0.8の時、データに強い相関があるという。

0.2≦|R|<0.5の時、データに相関はあまりないという。

0<|R|<0.2の時、データに相関はほとんどないという。

|R|=0の時、データに相関はないという

◻︎kakuyomuのデータを分析してみる(信用するな)

実際に、何か分析してみよう。ここではkakuyomu内にある星の数と何かしらのデータの相関の強さを考えてみよう。

ジャンルは最も小説数の多そうな「異世界ファンタジー」に設定する。

この記事を書いている現在には74256件小説が存在しているので、1〜74256までの乱数rを生成して、「週間ランキング、表示多め」の上からr番目の小説を選ぶことにする。取り出すデータは15件としよう。


そして今回星との相関を比べるのは、文字数だ。というか文字数しか今の私が数値化できそうなものはなかった。では早速収集していこう。


15752

52814

6700

24248

53151

64860

4207

8445

9387

14077

28013

17742

2869

56841

193

49468


ここで、検索欄に出てくる小説は20[作/ページ]であるので、20n+rとかけた場合、n+1が何ページか、rがそのページで上から何番目かを表している。ただし、r=0は上から20番目を表す。


15752=20・787+12(788ページ、12番目)

52814=20・2640+14(2641ページ、14番目)

6700=20・335(336ページ、20番目)

24248=20・1212+8(1213ページ、8番目)

53151=20・2657+11(2658ページ、11番目)

64860=20・3243(3244ページ、20番目)

4207=20・210+7(211ページ、7番目)

8445=20・422+5(423ページ、5番目)

9387=20・469+7(470ページ、7番目)

14077=20・703+17(704ページ、17番目)

28013=20・1400+13(1401ページ、13番目)

17742=20・887+2(888ページ、2番目)

2869=20・143+9(144ページ、9番目)

56841=20・2842+1(2843ページ、1番目)

193=20・9+13(10ページ、13番目)

49468=20・2473+8(2474ページ、8番目)


これらの小説に基づいて、データを収集しよう。


・と思ったら......

なんとページ数の上限が存在していた。これは大失態ですわ。ちなみに上限は500ページだった。なんてこったい。


ということで仕方ないので、次の操作を行う。


・1〜500までの乱数でページを決定する。

・その後1〜20までの乱数で上から何番目か決定する。

・検索は異世界ファンタジーの「週間ランキング、表示多め」


ちなみにこれを書いている途中にも、異世界ファンタジーの作品件数は増加していて、74264件まで増えていた。今度は作品増加でも分析しようか。


ページロール 作品ロール

145 19

57 17

166 20

156 7

444(不吉) 8

354 13

27 20

193 17

132 11

372 12

11 5

97 14

364 4

474 2

120 13


おそらく、この行動は規約には違反しないはずなので(違反だったら謝罪)データを集めてこよう。


1作品目 ⭐︎147 文字数228984

2作品目 ⭐︎1011 文字数327634

3作品目 ⭐︎36 文字数342,620

4作品目 ⭐︎92 文字数407,267

5作品目 ⭐︎0 文字数2306

6作品目 ⭐︎3 文字数123,493

7作品目 ⭐︎22 文字数45,874

8作品目 ⭐︎0 文字数107,549

9作品目 ⭐︎581 文字数175,926

10作品目 ⭐︎12 文字数8,765

11作品目 ⭐︎13417 文字数441,558

12作品目 ⭐︎37 文字数330,507

13作品目 ⭐︎1 文字数24,427

14作品目 ⭐︎14 文字数30,716

15作品目 ⭐︎30 文字数26,215


星をデータYとして、文字数をデータXとする。ここで、工夫をしておこう。相関係数はX,Yどちらのスケール変換でも不変だった。よって、文字数を1万単位でかんんがえよう。すると先ほどのデータは、


1作品目 ⭐︎147 文字数22.8984

2作品目 ⭐︎1011 文字数32.7634

3作品目 ⭐︎36 文字数34.2620

4作品目 ⭐︎92 文字数40.7267

5作品目 ⭐︎0 文字数0.2306

6作品目 ⭐︎3 文字数12.3493

7作品目 ⭐︎22 文字数4.5874

8作品目 ⭐︎0 文字数10.7549

9作品目 ⭐︎581 文字数17.5926

10作品目 ⭐︎12 文字数0.8765

11作品目 ⭐︎13417 文字数44.1558

12作品目 ⭐︎37 文字数33.0507

13作品目 ⭐︎1 文字数2.4427

14作品目 ⭐︎14 文字数3.0716

15作品目 ⭐︎30 文字数2.6215


データを眺めると、なんだか相関していなさそうに思える。


・予想

まず、相関係数の値を予想する。なんだか、文字数が多くなるほど⭐︎の数はわりかし多くなっているような気がするので、Rは正になるが、R=0.4前後の弱い正の相関であると予見しておこう。


・結果

R= 0.493825301......とデータにあまり相関はないことがわかった。しかし、思っていたよりも相関があって驚いた。この結果は高々15件のデータしか扱えておらず、信頼には値しないため注意されたい。


この相関が大きいのか小さいのかは読者の解釈に委ねるしかない。ただ、正の相関が見られ、その相関が0.2などではなかったことには喜ぶべきではないだろうか。



  • Xで共有
  • Facebookで共有
  • はてなブックマークでブックマーク

作者を応援しよう!

ハートをクリックで、簡単に応援の気持ちを伝えられます。(ログインが必要です)

応援したユーザー

応援すると応援コメントも書けます

新規登録で充実の読書を

マイページ
読書の状況から作品を自動で分類して簡単に管理できる
小説の未読話数がひと目でわかり前回の続きから読める
フォローしたユーザーの活動を追える
通知
小説の更新や作者の新作の情報を受け取れる
閲覧履歴
以前読んだ小説が一覧で見つけやすい
新規ユーザー登録無料

アカウントをお持ちの方はログイン

カクヨムで可能な読書体験をくわしく知る