2020 年度「データサイエンス基礎」 2020-06-09

§3.1 共分散と相関係数

N 人の生徒がいて,1, 2, 3, ..., N を学籍番号とする。i = 1, 2, 3, ..., N に対し, xi が学籍番号 i の生徒の身長,yi がその生徒の英語の成績とする, というような状況を考えよう。 (「身長」「英語の成績」はこの段落だけの例です。)

xi の平均を mx, yi の平均を my としよう。 ∑ を,i を 1 から N まで動かして足す,の意味として, {∑(xi - mx)(yi - my)}/N を「共分散」といい,sxy で表す。

xy 平面に,x = mx, y = my という, 直交する二直線をひいたものを想像せよ。 この二直線は平面を四つに分ける。 そのうち,右上か左下に点 (xi, yi) があれば, 上の段落の (xi - mx)(yi - my) の ∑ への寄与は正, 右下か左上にあれば寄与は負,となる。 よって,これらの点が右上がりに並んでいれば共分散は正, 右下がりに並んでいれば共分散は負, まんべんなく散らばっているときは正と負とが打ち消し合って共分散は 0 に近くなる。

sxy = {∑(xi - mx)(yi - my)}/N = (∑xiyi - ∑ximy - ∑mxyi + ∑mxmy) / N = {∑xiyi}/N - mxmy である。

Excel 用の新規ファイルを用意する。

A1 に「=norm.inv(rand(),50,10)」と打ち込む。 前回 norm.inv() を紹介するところで言わなかったが,こうすると, 平均 50, 標準偏差 10 の正規分布に従う乱数が得られる。 A1 を範囲指定し,右下の小さな正方形を下へドラッグして,A1000 までを埋めよ。 次に,B1 から B1000 を,平均 80, 標準偏差 30 の正規分布に従う乱数で埋めよ。

それから,A 列と B 列とを範囲指定し, 「挿入」タブの中の「グラフ」,「散布図」のうちの左上のもの。 これは,xy 平面に,(A1, B1), (A2, B2), (A3, B3), ..., (A1000, B1000) をプロットしたものである。 必要があれば,グラフの縦横の長さを変えて,縦横比を調整せよ。 F9 を押すとそのたびに乱数が変わるから散布図も変わる。 何の傾向もないのがわかるだろう。

共分散は,「=covariance.p(a1:a1000,b1:b1000)」(コロンとカンマに注意)で入力できる。 適当なセルに打ち込んでみよ。 この値が大きいのか小さいのか,わからないだろう。 標準偏差が大きければ,この値も大きくなるからである。

そこで,共分散 sxy を x, y の標準偏差,sx, sy の積で割った sxy/(sxsy) を考え,これを「相関係数」と呼ぶ。 相関係数は -1 以上 1 以下であることが知られている。 それを excel に計算させるには「=correl(a1:a1000,b1:b1000)」と打ち込む。 適当なセルに打ち込んでみよ。

相関係数が正のとき,二つのデータの間に正の相関があるといい, 負のとき,負の相関があるという。

いまの場合,相関係数は 0 に近い。何度か F9 キーを押して確かめよ。

では,共分散,相関係数や散布図は残したまま,A 列と B 列とを削除し, 新規に,A1 に「=norm.inv(rand(),0,1)」, B1 に「=a1」と打ち込み, それを 1000 行に増やしてみよ。 相関係数,散布図はどうなったか?

A1 はそのままとし,B1 には「=-a1」と打ち込んで同じことをしたらどうなるだろう?

(Excel ファイルはそのまま。次へ続く。)

§3.2 相関係数の実験

この節では,A 列と B 列とを,相関のある乱数で埋めるが, このやり方が正しいかどうかは,私にはわからないことをお断りしておく。

A 列は,第 1 行から第 1000 行までが標準正規分布に従う乱数で埋まっているであろう。 B1 に「=norm.inv(rand(),0,1)+a1」と打ち込み,それを B1000 まで増やし, A 列と B 列との散布図を書かせ,相関係数を計算させてみよ。 B 列も標準正規分布に従う乱数を含むが,「+a1」があるので, A 列との関連が生じ,相関係数は正になるであろう。

では,A 列は上と同じとし,B1 に「=norm.inv(rand(),0,1)-a1/3」としたら, どうなるだろう? (B 列だけの書き換えでできる。 「a1/3 は A1 を 3 で割るの意味である。 A の添え字が 1/3 であるわけではない。)

同様にして,+a1 の係数をいくつか変えて,実験してみよ。 そして,そのうちの一つを 200609.xlsx というファイル名で提出せよ。 散布図,相関係数が書かれているものを提出せよ。 ただし,+a1*0, -a1*0, +a1*1, -a1*1 は不可とする。

§3.3 相関係数が 0 でも,明らかに何かがある分布

相関係数は一つの実数値なので,それで分布のすべてがわかるわけではない。 その例を一つ示す。

A1, B1 にそれぞれ「=2*rand()-1」と打ち込む。 この二つのセルを範囲指定して,1000 行に増やす。 A 列と B 列との散布図を書くとどうなるか? 想像どおりになっただろうか?  この散布図は残しておく。

C1 に「=a1/sqrt(2)-b1/sqrt(2)」と, D1 に「=a1/sqrt(2)+b1/sqrt(2)」と打ち込み, この二つのセルを範囲指定して,1000 行に増やす。 そして,C 列と D 列との散布図を書かせて, 何度か F9 キーを押しながら,上で書かせた A 列と B 列との散布図と見比べてみよ。

これは,(通称)「初学者ゼミI」「初学者ゼミII」で, 数学系の先生の担当で読むテキストと関連している。考えてみよ。 (第 2 クォーターにそれが当たっているみなさん,ごめんなさい。 初学者ゼミでやってから,もう一度このファイルを見てみてください。)

明らかに何かある分布になるが,相関係数を計算すると 0 に近い。

(この分布図は,ウィキペディア「相関係数」の項にあったものである。 対応する英文版にも同じものが載っている。)

§3.4 確率変数の和の平均,分散

A1, B1 に「=norm.inv(rand(),0,1)」と,D1 に「=a1+b1」と打ち込み, この 4 列(C 列は空白だが)を 1000 行に増やす。

A1002 に A1 から A1000 までの平均を, A1003 に A1 から A1000 までの分散を,入れよ。 A1002 と A1003 とをまとめて,B1002 と B1003 にコピーせよ。 これで B 列の平均と分散がはいる。 D1002 と D1003 にも同様にコピーせよ。 次に,C1002 に A1002+B1002 を,C1003 に A1003+B1003 を入れよ。

C1002 と D1002, すなわち,「A 列の平均と B 列の平均の和」と「A 列と B 列の和の平均」が等しくなるのはわかるであろう。 いま,A 列と B 列とは独立なので,C1003 と D1003, すなわち,「A 列の分散と B 列の分散の和」と「A 列と B 列の和の分散」も等しくなる。 証明は高等学校の数学 B の教科書に載っている。 ただし,これは実験なので,完全に等しくはならない。 何度か F9 キーを押してみよ。

次に,B1 から B1000 までを削除し, B1 に「=norm.inv(rand(),0,1)+a1/3」と打ち,1000 行に増やす。 すると,C1002 と D1002 とは依然として等しいが, C1003 と D1003 は明らかに違う値をとる。 A 列と B 列とが独立でないときには, 分散の和は和の分散に等しいとは限らないのである。 何度か F9 キーを押してみよ。


岩瀬順一