読者です 読者をやめる 読者になる 読者になる

廿TT

譬如水怙牛過窓櫺 頭角四蹄都過了 因甚麼尾巴過不得

2行2列の行列と行列式だけでできること。A/Bテスト&市場価格の予測

本稿の趣旨

高校数学の学習指導要領から行列と行列式は消えちゃったみたいだけど、
高等学校学習指導要領解説 数学編 平成21年(pdf)
行列と行列式は幅広い分野で便利に使われる道具なので覚えておいたほうがいい。

「もともと高校数学で習う行列と行列式って2行2列の場合だけでしょ? 2×2行列だけ教えてもあんま意味ないねえ」みたいな意見も見かけるので、ここでは2行2列の行列と行列式だけでもけっこう有益なのだ、と主張する。

高等学校数学C 行列 - Wikibooks

A/Bテスト

f:id:abrahamcow:20141114220357j:plain

Web上で広告Aと広告Bをランダムに出し分けて、どっちのほうがよりクリックされやすいか調べる、みたいなことはよく行われる。

これをA/Bテストという。

(A/Bテストは単に「AとBを比べます」という意味しかないことに注意。統計に詳しい人にはかえって誤解されやすいんだけど、そもそも仮説検定の話をしていないときに「それでは仮説検定になっていない」という指摘をされても困るだけで議論に発展しません。)

さてA/Bテストを実施した結果、下表のようなデータが取れたとしよう。

クリックした人 クリックしなかった人
A 10 6 16
B 2 8 10
12 14 26
  • 広告Aは10/16=62.5%の人がクリックした。
  • 広告Bは2/10=20%の人がクリックした。

この表を縦方向から見てやろう。

  • クリックした人のうち、広告Aを見た人は10/12=約83.3%を占めている。
  • クリックした人のうち、広告Bを見た人は2/12=約16.7%を占めている。

直感的には、広告Aのほうがクリックされやすそうだ。

次に「広告Aのほうがクリックされやすそうだ」というこの仮説を数値化してやることを考える。

まず「広告別」で(縦方向に)見て、「広告Aを見てクリックした人の割合」と「広告Bを見てクリックした人の割合」の差が大きいほど、仮説の信憑性は増す。

クリックした人 クリックしなかった人
A 10/16 6/16 1
B 2/10 8/10 1

つぎに「クリックした人、しなかった人別」で(横方向に)見て、「広告Aを見てクリックした人の割合」と「広告Aを見てクリックしなかった人の割合」の差が大きいほど、仮説の信憑性は増す。

クリックした人 クリックしなかった人
A 10/12 6/14
B 2/12 8/14
1 1


この2種類の割合の差を相乗平均してやろう。
(相乗平均とは、掛けてルートに入れること:幾何平均 - Wikipedia

 \displaystyle \sqrt{\left( \frac{10}{16}-\frac{2}{10}\right)\left(\frac{10}{12}-\frac{6}{14}\right) } \approx 0.415

こうやって求めた値は連関係数(coefficient of association)と呼ばれ、ギリシャ文字φ(ファイ)で表すことが多い。

分割表 - Wikipedia
Phi coefficient - Wikipedia, the free encyclopedia
クロス表の分析

連関係数は0以上1以下の値を取り、値が大きいほど、仮説の信憑性が高いと解釈できる。

では連関係数を求める式を一般化しておこう。

こうしておけば、他のA/Bテストをやったときも連関係数によって広告とクリックの関連性を調べることができる。

クリックした人 クリックしなかった人
A a b a+b
B c d c+d
a+c b+c a+b+c+d

\displaystyle  \phi = \sqrt{\left( \frac{a}{a+b}-\frac{c}{c+d}\right)\left(\frac{a}{a+c}-\frac{b}{b+d}\right) }\\
\displaystyle=\sqrt{\left( \frac{ad-bc}{(a+b)(c+d)}\right)\left(\frac{ad-bc}{(a+c)(b+d)}\right)}\\
\displaystyle=\frac{|ad-bc|}{\sqrt{(a+b)(c+d)(a+c)(b+d)}}

つまり、A/Bテストの結果が、

\displaystyle M=\left( \begin{array}{cc} a & b \\ c & d \end{array} \right)

という表(行列)で与えらたら、
\displaystyle \phi = \frac{|\det M|}{\sqrt{(a+b)(c+d)(a+c)(b+d)}}

で連関係数が計算できる。

分子は行列式になっているでしょう(行列式)。行列式、役に立つね。

最近では「A/Bテスト、仮説検定やりましょう」という流れになってるけど、ぼくは統計的に有意か否かはKPIにしちゃいけないとしつこく主張しているし、データサイエンティスト(あ、今は data scientist ってローマ字で書くのね)諸氏が、p値も有意水準も説明しないで、多重比較もなにも考慮せずに仮説検定を推し進めてる現状を鑑みると、仮説検定とかやるより連関係数で比べたほうが剛健だと思うよ。

A/Bテストをめぐる泥仕合は下記のエントリを参照:

連関係数の例題は小島寛之『ゼロから学ぶ線形代数』から拝借した(pp.36-39)。

ゼロから学ぶ線形代数 (ゼロから学ぶシリーズ)

ゼロから学ぶ線形代数 (ゼロから学ぶシリーズ)

付記

ここで紹介した連関係数(Phi coefficient - Wikipedia, the free encyclopedia;φ係数)は、2値変数間の効果量である。効果量とはなにか、ということについてはここでは説明しないが、効果量はわりと最近になって改めて注目されている有用な概念だ(と、とりあえずは思っておいて欲しい)。
大久保街亜『伝えるための心理統計: 効果量・信頼区間・検定力』(pp.102-104)等を参照。

伝えるための心理統計: 効果量・信頼区間・検定力

伝えるための心理統計: 効果量・信頼区間・検定力

追記:自分でも説明書きました。

A/Bテスト、多変量テストのための「効果量」入門 - 廿TT

市場価格の予測

ものの値段は需要曲線供給曲線が交わるところで決まる、という話はどこかで聞いたことがあるとしよう。

需要曲線というのは、下図のようなもの、
f:id:abrahamcow:20141114173416j:plain

供給曲線というのは、下図のようなものだ。
f:id:abrahamcow:20141114173433j:plain

これを組み合わせると市場価格の予測ができる。

図はヨラム・バウマン『この世で一番おもしろいミクロ経済学』から拝借した(pp.132-134)。

この世で一番おもしろいミクロ経済学――誰もが「合理的な人間」になれるかもしれない16講

この世で一番おもしろいミクロ経済学――誰もが「合理的な人間」になれるかもしれない16講

じゃあ実際に需要曲線を引いてみよう。

  • リンゴの値段が100円なら、2000万個買いたがる
  • リンゴの値段が200円なら、1500万個買いたがる

というデータがあったとする。

これを直線でつなげてやれば需要曲線ができる(直線も曲線の一種だ)。

直線を表す式は  y=a+bx だった。

いま、値段 y と個数 x はデータから分かっているので、

 100=a + 2000 \times b
 200=a + 1500 \times b

で、係数の a と b が知りたい。

これをベクトルと行列を使って書き直すと、
 \displaystyle \left( \begin{array}{c} 100 \\200 \end{array} \right)= \left( \begin{array}{cc} 1 & 2000 \\ 1 & 1500 \end{array} \right)\left(\begin{array}{c} a \\ b \end{array} \right)

\left( \begin{array}{cc} 1 & 2000 \\ 1 & 1500 \end{array} \right)逆行列-\frac{1}{500}\left( \begin{array}{cc} 1500 & -2000 \\ -1 & 1 \end{array} \right) だから
2行2列の行列の逆行列 等を参照)
これを両辺に掛けて、
\left(\begin{array}{c} a \\ b \end{array} \right) = \left(\begin{array}{c} 500 \\ -0.2 \end{array} \right)
が得られた。

同様、供給曲線も

  • リンゴの値段が100円なら、1000万個売りたがる
  • リンゴの値段が200円なら、2000万個売りたがる

というデータから求められ、

\left(\begin{array}{c} a \\ b \end{array} \right) = \left(\begin{array}{c} 0 \\ 0.1 \end{array} \right)
が得られる。

  • 需要曲線  y= 500- 0.2x
  • 供給曲線  y= 0.1x

この2曲線を連立方程式として解いて、交点を求めると、リンゴ一個は約166.67円、供給量は約1666.67万個になる。

f:id:abrahamcow:20141114201911p:plain


需要と供給の組み合わせで市場価格が予測できた。2行2列の行列の逆行列の公式、役に立った。

付記

こうやってデータに曲線を当てはめて分析することを回帰分析という。ややこしい回帰係数の計算が行列を使うとすごくシンプルに表せることを知ったときはうれしかった。
その喜びを「2点を通る曲線の公式とか忘れちゃっても逆行列で解ける」という形で体験してもらおう、というのがこの例のねらい。
行列を使った回帰係数の求め方については
行列を用いた回帰係数の計算 - 森保 洋の研究教育ノート
等を参照。

結び

線形代数(行列、行列式、ベクトル等)は抽象度が高くて挫折しがちだけど、統計学線形代数のわかりやすい応用領域の一つである。

東京大学出版会『自然科学の統計学』(pp.67-78)などではその点を強調している。

自然科学の統計学 (基礎統計学)

自然科学の統計学 (基礎統計学)

数学の本は、定義があって定理があって証明がある、また定義があって定理があって証明がある、最後にちょっと例題、という形式が一般的だけど、勉強するときはそんなにまっすぐスラスラ進めない。

線形代数に挫折しそうなときは、逆に応用領域の例題をやってみてから、基本を勉強しなおしたりとか、行きつ戻りつしてがんばって欲しい。

おすすめの本は、マセマの線形代数。式の展開とかがとにかくていねい。大学の先生に聞けばもっと名著を教えてくれるだろうけど、そういうのは最初の一冊として手をだすと名著の名著たる所以を知る前に挫折すると思う。

小島寛之『ゼロから学ぶ線形代数』はおもしろいんだけどユニークすぎるのでおすすめしにくい。
ふつう数学の解説ってむずかしい言葉を使ってすべての議論を正確に書くか、やさしい言葉や例を使って多少議論をあいまいにするか、どっちかでバランスを取ろうとするんだけど、小島はやさしい例を公理のように使って新たに体系的に議論しなおすみたいなすごいことをやってのける。

二冊目としておすすめ。

ゼロから学ぶ線形代数 (ゼロから学ぶシリーズ)

ゼロから学ぶ線形代数 (ゼロから学ぶシリーズ)

付録:グラフのコード(R)

#nihongo()
plot(c(0,3000),c(0,300), type="n", xlab="万個", ylab="円")
abline(0,0.1,lwd=2, col="red4")
abline(500,-0.2,lwd=2, col="blue4")
legend("topleft",legend=c("供給","需要"),col=c("red4","blue4"), lty=1)

そういえば R とか MATLAB とかのプログラミング言語、ソフトウェアを使いこなすためにも、行列、ベクトルに慣れておくと便利。これは成績の良し悪しとは別の話だよ。なにもそんなにむずかしい問題は解けなくってもいい。かんたんな問題で基本が身についてることが大事だと思う。