2010-06-25

Excelを用いた実習

今日の内容

Excelを使ったことが無い人は、総合統括センター利用の手引き第2分冊第三章も読みながらこのホームページを読んで下さい。

準備

下図のようにメニューを辿ってExcelを立ち上げましょう。

初めて使う時にはいくつか聞かれますので、共にOKを押してください。

第一章:データの集計

左上の丸いボタンを押して、「Excelのオプション」をクリックします。そして左側の「アドイン」をクリックして、下の「管理:Excelアドイン」の横の「設定」をクリックします。

するとアドインの画面に切り替わるので、下のほうの「管理」が「Excelアドイン」になっていることを確かめてその右の「設定」をクリックします。

「分析ツール」にチェックをつけてOKをクリックします。 「インストールしますか」と聞かれたら「はい」と答えます。

教科書第一章の例

皆さんが持っている教科書のデータを、一つ一つ入力していると時間がかかりますので、あらかじめ書いておきました。
例1.1例1.2例1.6
120
106
112
168
120
140
160
160
116
118
104
172
130
124
134
142
112
112
110
120
134
136
138
144
120
120
160
108
140
98
142
130
138
126
108
120
136
118
118
122
128
124
110
134
116
138
116
158
106
166
118
158
124
124
110
166
132
126
122
132
4
5
5
6
6
8
8
8
8
8
9
9
10
10
11
11
11
11
12
12
13
13
15
16
16
16
17
18
20
20
生徒身長座高
115988
215084
315786
415381
515883
615285
715583
815783
914576
1015885
1116185
1215083
1314879
1415484
1515485
1615985
1714983
1815586
1915384
2016088

例1.1 度数分布表とヒストグラム

1変量データをエクセルに入力します。キーボードから入力するか、あるいは上の表をコピーして、エクセルに貼り付けます。
Internet Explorerを使うときには「コピー」してからExcelで「貼り付け(P)」を選びます。
Firefoxに慣れているのでFirefoxを使いたい!という人は「貼り付け(P)」ではなく「形式を選択して貼り付け(S)」を選んで「テキスト」を選んでください。


次に、階級の境界の数字をC2セル以降に入力します。

右上の「データ分析」をクリックして「ヒストグラム」をクリックしてOKを押します。

以下のように入力してOKを押します。

教科書で度数と書かれている部分が、エクセルでは頻度と表示されます。その右には累積相対度数が表示されます。
教科書と同じ結果になりましたか?もし違うなら、その理由を考えてみてください。

例1.2、例1.4 1変量の特性値を求める

エクセル左下のSheet2をクリックして、新しいシートに切り替えます。

そして例1.2のデータをコピーしてA1セルから貼り付けます。A30セルまでデータが30個並んでいるはずです。

まず平均を求めましょう。B1セルに「平均値」と書いてください。
Excelで平均を求める関数はAVERAGEです。C1セルに=AVERAGE(A1:A30)と書いてください。
次に中央値を求めます。B2セルに「中央値」、C2セルに=MEDIAN(A1:A30)を入力します。
次に分散と標準偏差を求めます。まずB3セルに「分散」、B4セルに「標準偏差」と書きます。
第一章では分散を推定するのではなく、単にデータの分散を計算するだけです。このように推定する必要がない場合は分散はVARP、標準偏差はSTDEVPという関数を使いますので、C3セルに=VARP(A1:A30)、C4セルに=STDEVP(A1:A30)と書きます。
ちなみに、推定する場合はVARとSTDEVを使います。

例1.6 2変量の相関を調べる。

エクセル左下のSheet3をクリックして、新しいシートに切り替えて、例1.6のデータをコピーして貼り付けます。

特性値

2変量のデータの特性値としては、各々の代表値、散布度の他に、二つの変量の共分散、相関係数があります。D1セルに「共分散」、D2セルに「相関係数」と書いてください。身長のデータはB2からB2に、座高のデータはC2からC21に貼り付けられていますので、E1セルに=COVAR(B2:B21,C2:C21)、E2セルに=CORREL(B2:B21,C2:C21)と書きます。

散布図を描きましょう。

B2セルの上でマウスの左ボタンを押して、押したままC21セルまでマウスを移動させて左ボタンを離します。
そして画面上の「挿入」から「散布図」の「散布図(マーカーのみ)」を選びます。

すると図のような散布図が得られます。マウスを合わせるとx,yの値が何であるか表示されます。

次に回帰直線をExcelに書いてもらいましょう。データ点のどれかにマウスを合わせて右ボタンを押して、表示されるメニューから「近似曲線の追加」を選びます。

「近似または回帰の種類」は「線形近似」を選び、また式も見たいので、「グラフに数式を表示する」にチェックをつけて、閉じるをクリックすると、回帰直線とその式が表示されます。

第二章、第三章:確率分布の計算

二項分布B(n,p)の確率関数P(X=x)はエクセルの関数BINOMDIST(x,n,p,0)で求めることが出来ます。
一方分布関数P(X≦x)はBINOMDIST(x,n,p,1)で求めることが出来ます。最後の数字が0なら、離散型分布なら確率関数で連続型分布なら密度関数になり、最後の数字が1なら分布関数になります。

まず正しいコインを10回投げたときに、5回表が出る確率を求めてみましょう。
表が出る回数が5回ですのでxは5, 10回投げるのでn=10, 正しいコインなのでp=0.5, 確率関数なので最後は0です。 どこかのセルに=BINOMDIST(5, 10, 0.5, 0)と入力します。
次に6回以上表が出る確率を求めてください。0.376953…となれば正解、入力した式は正しいです。
ヒント:分布関数は何回以下の確率なので、1から分布関数を引きます。

しかし、BINOMDISTでは10,000回投げたときに5,000回以上表が出る確率を求めようとしてもnが大きすぎて出来ませんので、こんなときは正規分布で近似します。
正規分布N(μ,σ2)の密度関数f(x)はエクセルの関数NORMDIST(x,μ,σ,0)で求めることが出来ます。
一方分布関数P(X≦x)はNORMDIST(x,μ,σ,1)で求めることが出来ます。

練習

Xの確率分布が標準正規分布N(0,1)の時、P(X≦1)を求めなさい。0.841345…となれば正解です。

次に、二項分布B(n,p)でnが大きいときの正規分布による近似が正しいかどうか確かめるために、BINOMDISTでも計算できるn=100で確かめてみましょう。
正しいコインを100回投げたときに表が出た回数をXとします。
P(X≦50)とP(X≦55)をBINOMDISTを用いて求めてみましょう。それぞれ0.53979…と0.864373…となれば正解です。
Xの分布を正規分布で近似するために期待値μと分散σ2の値を求めてください。
P(X≦50)とP(X≦55)を正規分布による近似で求めてください。それぞれ0.5と0.841345…となれば正解です。
少し近似精度が低いですね。前回勉強した不連続補正を使うと精度が上がります。具体的にどのように補正すれば精度が上がるか考えてください。0.539828…と0.864334…に精度が上がります。

練習

正しいさいころを105回投げて、出る目の合計をXとします。
正しいさいころを1回投げて出る目の期待値は3.5で、分散は35/12ですから、Xの期待値は105×3.5=367.5で、Xの分散は105×35/12=35×35/4です。標準偏差はこの平方根なので35/2です。
Xの確率分布を正規分布で近似してP(X≧399)を求めてください。
不連続補正を使わない場合は0.03593…になり、不連続補正を使うと0.03824…になります

確率変数Xの確率分布が正規分布N(μ,σ2)であるとき、P(X≦x)=0.95となるxの値は =NORMINV(0.95,μ,σ) で求めることができます。

練習

確率変数Xの確率分布が標準正規分布N(0,1)のとき
(1) P(X≦x)=0.95となるxの値を求めてください。1.64485…になれば正解です。
(2) P(-x≦X≦x)=0.95となるxの値はどうやって求めましょうか?正規分布は平均に関して左右対称なので、-x≦X≦xではない範囲、つまりX≦-xとx≦Xの確率は同じです。-x≦X≦xではない確率は1-0.95=0.05なので、X≦-xとx≦Xの確率は各々その半分0.025です。P(x≦X)=0.025ですから、P(X≦x)=0.975となるxを求めればよくて、これは1.95996…です。

小テスト

ここまで勉強したら小テスト問題を解いてください。

発展

もしもExcelを既に勉強していて、今日の内容では物足りない人はもっと本格的なプログラミングに挑戦してください。但しこれ以降は当日説明できないので多めに用意しているテーマです。出来なくても統計学入門そのものの理解には困りません。
まず準備です。左上の丸いボタンを押して、「Excelのオプション」をクリックします。そして「[開発]タブをリボンに表示する」にチェックをつけてOKを押します。

すると右端に「開発」が表示されるのでクリックして、マクロのセキュリティをクリックして、「すべてのマクロを有効にする」に●をつけてOKを押します。


これで準備は完了ですので「Visual Basic」のボタンを押します。するとVisual Basicの画面が開きます。 プログラムを書く部分を用意したいので「挿入」をクリックして「標準モジュール」をクリックしてください。

現れた画面にプログラムを書きます。
まず
sub 練習
とだけ書いて、Enterキーを押してください。すると自動的に

Sub 練習()

End Sub

となり、カーソルは真ん中の空行にあります。そこに
cells(1,1)=1
と書いてください。これは上から1番目、左から1番目のセルに1を代入しなさい、という命令です。
プログラムを書いたら、上の右向きの三角をクリックしてください。するとどのプログラムを実行するか聞かれます。今は一つしか書いていないのでそのまま実行を押すと、A1セルに1が代入されます。Excelの画面で「マクロ」を押しても実行できます。

このプログラムを保存する時の注意。
左上の「上書き保存」を押すと、どの形式でファイルを保存するか尋ねられます。ファイルの種類として「Excelマクロ有効ブック」を指定してください。

さてこれでプログラムを書いて実行できるようになったので、具体的なプログラミングを始めましょう。
先ほどのCells(1,1)=1とEnd Subの間に
cells(2,1)=2
cells(3,1)=3
と書き込んで実行してみてください。
あるいは
cells(1,2)=-2
cells(1,3)=-3
と書いて、cellsの二つの添え字がExcelのどのセルに対応しているか確認しましょう。

10個続けて書くには、
cells(1,1)=1
cells(2,1)=2
cells(3,1)=3
cells(4,1)=4
cells(5,1)=5
cells(6,1)=6
cells(7,1)=7
cells(8,1)=8
cells(9,1)=9
cells(10,1)=10

と書くのは大変なので、これをFor文を使って

for i=1 to 10
 cells(i,1)=i
next i

と書きます。

次に下のような九九の表ができるようにプログラムを考えて見ましょう。

シミュレーション

VBAで
Rnd()
と書くと[0,1]区間上の一様乱数が得られます。これを用いて
Sqr(-2 * Log(Rnd())) * Cos(2 * Application.Pi() * Rnd())
と書くと標準正規分布に従う乱数が得られます。(Box-Muller method)

推定方法の良し悪しを比較するために、シミュレーションしてみましょう。

  1. 標準正規分布に従うデータを、乱数を用いて10個得ます。1行のAからJまで、つまりCels(1,1)からCells(1,10)までに書き込んでください。
    データを得たらひとまず「このデータは標準正規分布に従う乱数から得られた」ことを忘れます。
    そしてデータだけを見て、この分布の平均、分散を推定してみましょう。元は標準正規分布ですから、平均の推定値はは0、分散の推定値は1に近いほうが良いです。
  2. まず平均を推定します。10個のデータを足して10で割った値が分布の平均の推定値です。これをL列、つまりCells(1,12)に書き込んでください。
  3. 次に10個のデータそれぞれから今求めた平均を引いて二乗して足します。足したものをデータの個数である10で割った値をM列、つまりCells(1,13)に書き込んでください。ぴったり平均0、分散1にはならないと思います。
  4. そこでこのデータ観測と推定を1000回繰り返して、1000個の平均の推定値、分散の推定値を求めて、それら推定値の平均を求めてみましょう。
    先ほどは1行目に書きましたが、これを同じことを1000行目まで繰り返します。するとL列、つまりCells(1,12)からCells(1000,12)までに1000個の平均の推定値が、M列、つまりCells(1,13)からCells(1000,13)までに1000個の分散の推定値が得られます。
    Cells(1,15)にCells(1,12)からCells(1000,12)までの平均を、 Cells(2,15)にCells(1,13)からCells(1000,13)までの平均を書き込んでください。
    Cells(1,15)は0に近いと思いますが、Cells(2,15)は1よりも小さく、0.9前後になるでしょう。
  5. では今度は1行目から1000行目までの各行に関して、10個のデータから平均を引いて二乗したものを足して(データの個数-1)である9で割ってN列に書き込んでください。
    そしてCells(1,14)からCells(100,14)までの平均をCells(3,15)に書き込んでください。
    今度は1に近いと思います。
このように、データに基づいて分布の分散を推定するときには(データの個数-1)で割ります。

0 件のコメント: