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

前回のレポートはすべて見て, 不備のあった人にはメッセージを添えてある。 必ず確認し,得点が得られるまで再提出すること。 (何度やり直しになっても,最後に得点すれば同じく 1 点とする。) 得点を得ていない課題については単位認定の際の点数にカウントしない。

きょうからデータサイエンスにはいる。 と言っても,Excel を使った統計学の基礎,といったところである。 この分野が専門でない担当者(岩瀬)が作成したため,不備はあるかと思う。

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

画面左下隅の Windows アイコンをクリックしてから calc と打ちかかると,電卓を起動できる。

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

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

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

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

確率 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 平均と分散

新規ファイル 210518b.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 一様乱数

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

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

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

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

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

新規ファイル 210518d.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 列を範囲指定し,ヒストグラムを書かせてみよ。

ここで,横軸の目盛りの取り方がうまくない場合があるので,調整しよう。 横軸の下の,数が書かれている部分を右クリックし, 「軸の書式設定」。「ビンの幅」の左の灰色の○をクリック。 右の,数値を入れる窓に,1 と記入。 (この窓は,右に隠れているときがあるので注意。)

F9 を押すごとに乱数が変わるから,このヒストグラムの形も変わる。 この分布の形を,ファイル 210518a.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) で定数なので一様乱数と呼ばれる。

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

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

新規ファイル 210518e.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 正規分布に従う乱数

新規ファイル 210518.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 までの平均と標準偏差を記入せよ。 分散ではなく標準偏差である。 そして保存し,この 210518.xlsx を LMS から提出せよ。 (そのほかのファイルは提出しなくてよろしい。)

作ったファイルの持ち帰りかた

この授業で作るファイルは諸君のパソコンでも作れますが, 授業で作ったものを持ち帰りたい場合は,次の方法をおすすめします。

やり方1:USB メモリを用意して,それを経由する。 USB メモリは,ファイルの一時保管などに便利です。

やり方2:ウェブメール(ブラウザの中でメールのやりとりができるもの)のアカウントを持っている場合, それを介して持ち帰れます。stu.kanazawa-u.ac.jp でも可能かも。

やり方3:ここのメールツールから,自分のメールアドレスに送ります。

興味のあるかたは声をかけてください。くわしく説明します。


岩瀬順一