2023 年度「データサイエンス基礎」 2023-05-23

前回・前々回のレポートのうち、きょうの正午までに出された分にはすべて返事を書いたつもりです。 返信がきていない人は担当者(岩瀬)まで。

§3.1 二項分布と正規分布

二項分布 B(n, p) は、n が大きくなると、 それと同じ平均・標準偏差をもつ正規分布に近づくことが知られている。 これを Excel で確かめよう。

新規ファイル 230523a.xlsx を作って、以下をおこなえ。

A1 から A26 に 0, 1, 2, ..., 25 を入れる。

前回、§2.1 で、 230516a.xlsx でやったことを思い出しながら、 B1 から B6 を二項分布 B(5,1/3) の r = 0, 1, 2, ..., 5 の場合の確率で埋めよ。

C1 から C6 を、B(5,1/3) と同じ平均・標準偏差をもつ正規分布(の確率密度関数)で埋めよ。 二項分布の平均・標準偏差については §2.4 を、 標準正規分布以外の正規分布については §2.8 を参照のこと。

それから、B 列と C 列を範囲指定し、棒グラフを書かせてみよ。 二列まとめてグラフになる。どのくらい似ているかを確認せよ。

D 列を B(25,1/3) で埋め、E 列をそれと同じ平均・標準偏差をもつ正規分布で埋めよ。 そしてこの二列をまとめて棒グラフにしてみよ。

§3.2 中心極限定理

中心極限定理とは、 平均 m, 標準偏差 σ の確率分布があるとき、 それに従う独立な n 個の確率変数 X1, X2, ..., Xn の平均 (X1 + X2 + ... + Xn)/n は、 n が大きいとき、 平均 m, 標準偏差 σ/√n の正規分布に近づく、 というものである。 (最初の確率分布は、どんなものでもよいというわけではないらしいが、 ここではふれない。)

新規ファイル 230523.xlsx を作って、以下をおこなえ。

わざと、いびつな分布をとりあげよう。 f(x) = 2x (0 ≤ x < 1), = 0(それ以外)という確率密度関数に従う乱数を考える。 それには、この関数を -∞ から x まで積分して得られる狭義単調増加関数の逆関数を考えればよいのだった。 それは √y だから、「=sqrt(rand())」と打ち込めばよいことがわかる。 この確率密度関数に従う確率変数の平均、標準偏差を求めると 2/3, 1/√18 になることを、 手計算で積分を実行して確認せよ。

A1 に「=sqrt(rand())」と打ち込み、右下の小さな正方形を右にドラッグし、 P1 までを埋めよ。 R1 に、A1 から P1 までの平均を入力せよ。 次に A1 から R1 までを範囲指定して、右下の小さな正方形を下にドラッグし、 第 1000 行までを埋めよ。

A 列をヒストグラムで表示させよ。 直角三角形の分布であることがわかっただろうか?  A1 から A1000 までの平均、標準偏差を Excel に計算させ、 B1002, B1003 に入力せよ。 F9 キー(Mac の場合は fn+F9 キー。以下同様。)を押すたびに乱数は変わるので、何度か押してみよ。 上で計算で求めた値とだいたい合ったら B1002, B1003 は消せ。 グラフも消せ。

R 列を、ヒストグラムで表示させよ。 想像していたものと一致しただろうか?

R1 から R1000 までの平均と標準偏差を Excel に計算させ、 Q1002, Q1003 に入力せよ。 これらはいくつに近くなるはずか? ここで n は A 列から P 列までなので 16 である。

そして保存し、この 230523.xlsx のみを LMS からではなくアカンサスのメッセージででもなく、メールで送れ。

送信アドレスに採点結果を返信する。

§3.3 確率変数の和と積の平均、標準偏差

確率変数 X, Y の和 X+Y の平均は「X の平均」+「Y の平均」となる。 確率変数 X, Y が独立であるとき、 確率変数 X, Y の和 X+Y の分散は「X の分散」+「Y の分散」となる。 確率変数 X, Y が独立であるとき、 X, Y の積 X*Y の平均は「X の平均」*「Y の平均」となる。 いずれも、高等学校の数学 B の教科書に載っている。 これを実験で確かめよう。

新規ファイル 230523b.xlsx を作って、以下をおこなえ。

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 列の和の分散」も等しくなる。 ただし、これは実験なので、完全に等しくはならない。 何度か F9 キーを押してみよ。

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

D1 に「=a1*b1」と打ち込み、同じことをしたらどうなるか?

§3.4 共分散と相関係数

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 である。

新規ファイル 230523c.xlsx を作って、以下をおこなえ。

A 列を平均 50, 標準偏差 10 の正規分布に従う乱数で、 B 列を平均 80, 標準偏差 30 の正規分布に従う乱数で埋めたい。 §2.9 を参考に、A1 と B1 に記入し、その二つのセルを範囲指定し、 右下の小さな正方形を下へドラッグして、第 1000 行までを埋めよ。

それから、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 キーを押して確かめよ。

共分散、相関係数は、高等学校の数学 I の教科書に載っている。

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

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

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

では、A 列は上と同じとし、B1 に「=norm.inv(rand(),0,1)-a1」としたら、 どうなるだろう?

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

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

新規ファイル 230523d.xlsx を作って、以下をおこなえ。

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

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

これは、 「アカデミックスキル」または「プレゼン・ディベート論」の時間に、 数学系の先生の担当で読むテキストと関連している。考えてみよ。

C 列と D 列とは明らかに何らかの関係のある分布になるが、相関係数を計算すると 0 に近い。

(このセクションは、ウィキペディア「相関係数」の項を参考にした。)

おまけ:モンテカルロ法

[0, 1) に値をとる一様乱数を二度発生させ、値を順に x, y とする。 xy 平面に点 (x, y) をプロットすると、 一辺の長さが 1 の正方形の境界または内部の点となる。 それが原点を中心とする半径 1 の円に含まれる確率は、 面積比を考えると、π/4 である。

よって、 ある列を「=if(rand()^2+rand()^2<1,1,0)」で埋め、 その平均を 4 倍すると円周率の近似値が求められる。

(初めから「=if(rand()^2+rand()^2<1,4,0)」と打てば、 4 倍する手間が省けて楽かも。)

おまけのおまけ:日付に由来するファイル名のつけ方

この授業では、西暦の年の下 2 桁、月の下 2 桁、日の下 2 桁をファイル名につけてきました。 君たちの中には、2100 年まで生きる人がきっといます。 そのときまで一貫してファイル名をつけ続けるなら、 西暦の年は 4 桁で記すのがよいと思います。 きょうなら 20230523.xlsx などとなります。 ただし、全部で 8 桁になるので、一目ではやや読み取りにくいかも知れません。


岩瀬順一