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

前回のレポートのうち、きょうの正午までに受け取ったものはすべて見て、 返信を送ったつもりです。 提出したはずなのに返信を受け取っていない人は申し出てください。

担当者(岩瀬)からの返信を確認し、OK になるまで再提出してください。 後半 4 回の課題は、何度やり直しになっても、最後に OK となれば等しく満点、 OK になっていなければ零点とカウントします。

(再提出の場合も、初めて出すときと同じように提出してください。 件名は同じ、本文に氏名などを書くのも同じです。)

なお、授業時間中に私に「よし」と言われたのに「やり直し!」になる場合があります。 それは、時間中には十分な時間がないので、 「合っているみたい」「違っているようには見えない」というだけで 「よし」と言ってしまう場合があるからです。 そのため、上に述べたような採点方法になっています。

さて、きょうからデータサイエンスにはいります。 Excel を使って統計学の基礎を体験します。 この分野が専門でない担当者(岩瀬)が作成したため、不備もあるかもしれません。

きょうは、レポートとして提出してもらうのは最後のファイル一つだけですが、 そこまでの演習も必ずおこなってください。 提出しないファイルも、来週以降使うかもしれないので、とっておくとよいでしょう。

§2.1 二項分布 B(n,p)

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

A 列に 0, 1, 2, ..., 50 と記入しよう。0 から始まることに注意。

二項分布 B(n,p) について思い出そう。 n は自然数、p は 0 以上 1 以下の実数である。 一回の試行で、ある事象が起こる確率が p であるとする。 これを n 回おこなうとき、この事象が r 回起こる確率は nCrprqn-r である。 ただしここで q = 1 - p とする。 (00 が現れたらそれは 1 とみなすべきだが、Excel ではエラーになる。)

確率 1/3 で起こる事象を考える。 これを 3 回くりかえすとき、この事象が 0 回、1 回、2 回、3 回起こる確率を、 それぞれ B1, B2, B3, B4 に記入せよ。nCr の計算には、 関数 COMBIN(引数1, 引数2) が使える。引数1 が n, 引数2 が r である。 後のことを考えると、 「a1」と打つ代わりに「$a1」としておくほうがよい。

その合計は 1 になるだろうか? B6 に =sum(b1:b4) と打ち込めばよい。 コロン「:」(点二つ)をセミコロン「;」(点の下にカンマ)と間違えないように。 確認したら B6 は消す。

B 列を範囲指定し、「挿入」「グラフ」の中の縦棒グラフの一つを使って、B 列を棒グラフにせよ。 確認したらそのグラフは消す。

上では 3 回くりかえすとした。これを 10 回にしたものを、 C1 から C11 に記入せよ。 B1 を C1 にコピーし、定数を手直しすればよい。 C11 が「1.69E-05」のようになったかもしれない。 これは 1.69 * 10-5 の意味である。 C 列も棒グラフにせよ。確認したらグラフは消す。

次に、50 回にしたものを D1 から D51 に記入せよ。 グラフにせよ。左右対称に近づいたであろう。

§2.2 平均と分散

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

A1 から A10 までに、1, 2, 3, 4, 5, 6, 7, 8, 9, 10 を入力せよ。

A12 に、「=average(a1:a10)」と入力せよ。 すると、A1 から A10 までの平均の値 5.5 になる。 A13 に、「=var.p(a1:a10)」と入力せよ。 すると、A1 から A10 までの分散の値 8.25 になる。

ここで、データの「平均」と「分散」について説明する。 データを x1, x2, ..., xN とする。 N はデータの個数である。 以下、∑ は、i を 1 から N まで動かして足すものとする。

平均は、∑xi / N で定義される。これを m と書こう。 分散は、∑(xi - m)2 / N で定義される。 これの非負の平方根を σ と書き、「標準偏差」と呼ぶ。 すると分散は σ2 である。 分散は、各データと平均との差の二乗の平均である。

分散は、次のように計算することもできる。 ∑(xi - m)2 / N = ∑ xi2 / N - 2∑ xi / N * m + m2 = ∑ xi2 / N - 2 m * m + m2 = ∑ xi2 / N - m2。 つまり、「データの二乗の平均 - データの平均の二乗」である。

上では、関数 average()var.p() を使って平均、分散を計算した。 こんどは、自力でこれらを計算してみよう。

A14 に「=sum(a1:a10)」と打ち込むと、A1 から A10 までの和がはいる。 暗算したものと比較せよ。これを項数 10 で割るのは暗算でできよう。

B1 から B10 に、A1 から A10 までと平均 5.5 との差の二乗を入力させよう。 次に、それらの合計を B12 に書き込み、項数 10 で割って、分散と一致したことを確かめよ。

こんどは、C1 から C10 に、A1 から A10 までのデータの二乗が、 C12 にそれらの平均がはいるようにせよ。

適当なセルの中で、あるいは電卓で、 「データの二乗の平均 - データの平均の二乗」の公式で分散を計算して、 合っていることを確認せよ。

標準偏差は関数 stdev.p() で計算できる。 「=stdev.p(a1:a10)」のように使う。

付:分散には、var.s() という関数で計算されるものがある。 それは ∑(xi - m)2 / (N - 1) で定義される。 分母の N が N - 1 に変わったものである。 この二つの定義の違いについては、この授業ではふれない。 標準偏差にも、stdev.s() という関数で計算されるものがある。

§2.3 一様乱数

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

A1 に「=rand()」と入力する。 最後の小かっこ開き、小かっこ閉じ、も忘れないように。 この関数は、0 以上 1 未満の「一様乱数」を返す(=計算する)ものである。 一様乱数の意味はのちに説明する。おおざっぱにいうと、 ある自然数 N に対し、0 から N-1 までの整数を等しい確率で返す乱数を考え、 それを N で割った値を返すもの、である。

A1 を範囲指定し、右下の小さな正方形を下にドラッグして、A100 までを埋めよ。 同じ値が並ぶのではなく、ばらばらな数で埋まる。 これらの乱数の値は、Windows の場合 F9 キーを、 Mac の場合 fn を押したまま F9 を押すたびに変わる。 (ファイルに保存し、ファイルを閉じ、再度開いても、値は変わる。)

A 列を選択し、棒グラフにせよ。 何の傾向もないのがわかるだろう。 Windows の場合 F9 キーを、 Mac の場合 fn を押したまま F9 を押すたびにグラフは変わる。 A1000 までにしたらどうだろう?

§2.4 二項分布 B(n,p)(続き)

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

二項分布 B(n,p)に関する実験をしてみよう。 この分布の平均は np, 分散は npq となることが高等学校の数学 B の教科書に載っている。

A1 に「=if(rand()<1/3,1,0)」と打ち込め。 if は、そのあとに書かれた条件 rand()<1/3 が真か偽かにより、 その次に書かれた 1 または 0 でそのセルを埋める。 rand() は 0 以上 1 未満に値をとる乱数を返すから、 これは、確率 1/3 で 1, 確率 2/3 で 0 を返すことになる。 (1個のサイコロを振って、1 か 2 が出たら 1, それ以外なら 0, という試行にあたる。)

A1 を範囲指定し、右下の小さな正方形を右へドラッグし、J1 までを埋める。 次に、A1 から J1 までを範囲指定して、右下の小さな正方形を下へドラッグし、 第 1000 行までを埋めよ。

A 列を範囲指定し、「挿入」タブの中の「統計グラフの挿入」。 「ヒストグラム」のうちの左のものをクリックすると、 0 が約 2/3, 1 が約 1/3 であることがわかる。 (このグラフは消す。)

L1 に「=sum(a1:j1)」と打ち込む。 これは、A1 から J1 までを、サイコロを 10 回振ったものとみなし、 1 または 2 が出た回数を記録したものになる。 そして、L1 の右下の小さな正方形を下にドラッグして、L1000 までを埋めよ。 これで、10 回振るという試行を 1000 回繰り返したことにあたる。

L1 から L1000 までの平均を L1002 に、分散を L1003 に記入せよ。 上で述べた値に近いだろうか? (n は 1000 ではなく 10 である。注意。)

次に、いま埋めた L1002 と L1003 を消去したのち、 L 列を範囲指定し、ヒストグラムを書かせてみよ。

Windows なら F9 を、Mac なら fn+F9 を押すごとに乱数が変わるから、 ヒストグラムの形も変わる。 この分布の形を、ファイル 230516a.xlsx と比べてみよ。

§2.5 連続な値をとる確率変数、確率密度関数

連続な値をとる確率変数に対し、ある関数 f(x) があって、 その確率変数が a 以上 b 以下の値をとる確率が ∫ab f(x) dx (関数 f(x) の a から b までの定積分)で与えられるとき、 関数 f(x) をその確率変数の「確率密度関数」という。

関数 f(x) は負でない値をとる関数で、 ∫-∞+∞ f(x) dx = 1 を満たす。 (この式の左辺は、定積分 ∫-M+N f(x) dx において、 M → ∞, N → ∞ としたものである。 このような積分は広義積分と呼ばれる。 第 2 クォーターの微分積分学の授業で学ぶ。)

確率密度関数 f(x) に従う確率変数の平均 m は ∫-∞+∞ xf(x)dx, 分散は ∫-∞+∞ (x-m)2f(x)dx で定義されることが、 高等学校の数学 B の教科書に載っている。

§2.6 一様分布の平均と分散

確率密度関数が f(x) = 1 (0 ≤ x < 1), = 0(それ以外) で与えられる確率変数を、一様分布に従うという。 その平均は 1/2, 分散は 1/12 であることを計算で確かめよ。 (上で述べた積分を実行すればよい。積分範囲は「0 から 1 まで」とする。)

§2.7 確率密度関数に従う乱数

ある確率密度関数 f(x) があって、ある乱数が a 以上 b 以下の値をとる確率が ∫ab f(x) dx で与えられるとき、 その乱数はその確率密度関数に従うという。

上で扱った一様乱数は、f(x) = 1 (0 ≤ x < 1), = 0(それ以外)、に従う乱数である。 この関数が区間 [0, 1) で定数なので一様乱数と呼ばれる。

ファイル 230516c.xlsx の、A1 から A1000 までの平均、分散を計算し、 上に述べたものと合うことを確認せよ。

§2.8 正規分布 N(m,σ2)

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

ex を exp(x) とも書く。 実数 m, 正の実数 σ に対し、 f(x) = exp(-(x-m)2/(2σ2)) / √(2πσ2) を確率密度関数にもつ確率変数を、「正規分布」に従うという。 m が平均、σ2 が分散になる。この分布を N(m, σ2) と書く。

m や σ が違っても、横軸のスケールが変わるだけなので、 N(0, 1) を考えよう。これを「標準正規分布」と呼ぶ。 このとき f(x) = exp(-x2/2) / √(2π) である。

A 列を、「A1 = -3, A2 = -2.875」で始まる等差数列で、A49 まで埋めよ。 A49 の値は 3 になるはずである。

Excel の関数 NORM.DIST(引数1,0,1,false) は標準正規分布である。 二つめの引数が平均、三つめの引数が標準偏差である。 四つめの引数は、false ならば確率密度関数そのものを、 true ならばそれを -∞ から x まで積分した値を返す。

B1 に「=norm.dist(a1,0,1,false)」と打ち込め。 そして B1 を範囲指定し、その右下の小さな正方形を下へ B49 までドラッグする。 それから B 列を折れ線グラフで表示せよ。 これが正規分布の形である。実際には、-∞ から +∞ まで分布する。

§2.9 正規分布に従う乱数――課題(第6回)

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

f(x) = exp(-x2/2) / √(2π) を -∞ から x まで積分すると、 実数全体の集合から [0, 1] への狭義単調増加関数が得られる。 これの逆関数が Excel の NORM.INV(引数1,0,1) である。 0 は平均、1 は標準偏差である。

そこで「=norm.inv(rand(),0,1)」とすると、 標準正規分布に従う乱数が得られる。(なぜか?)

A1 から A1000 をこの乱数で埋め、ヒストグラムを表示させよ。 また、ヒストグラムの近くのセルに、A1 から A1000 までの平均と標準偏差を記入せよ。 分散ではなく標準偏差である。

以上を保存した 230516.xlsx のみを LMS からではなくアカンサスのメッセージででもなく、メールで送れ。

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

付:前回のプリントに書いたタイピング練習プログラム

最近の Edge は、Internet Explorer モードにするのが難しいようです。 不可能ではないようですので、興味はあるがうまくゆかない、という人は申し出てください。 私(岩瀬)が手伝います。


岩瀬順一