lecture.ecc.u-tokyo.ac.jplecture.ecc.u-tokyo.ac.jp/.../gengo/4-numeros/numeros.docx · Web...

download lecture.ecc.u-tokyo.ac.jplecture.ecc.u-tokyo.ac.jp/.../gengo/4-numeros/numeros.docx · Web viewNUMEROS.docx ver. 2016.4.5 言語研究のための数値データ分析法 2016 これは

If you can't read please download the document

Transcript of lecture.ecc.u-tokyo.ac.jplecture.ecc.u-tokyo.ac.jp/.../gengo/4-numeros/numeros.docx · Web...

NUMEROS.docx

ver. 2016.4.5

言語研究のための数値データ分析法

2016

これは1学期間の授業用テキストです。

随時更新します。

(c) 上田博人(東京大学)Hiroto Ueda (University of Tokyo)

はじめに

 このテキストには言語の歴史的な変化や現代語の変異(バリエーション)を数量的に観察するときに有用だと思われる方法を取り上げました。数値が並ぶデータ行列を前にして、目視だけではよくわからない状況を、さまざまな分析手法を用いて明らかにしていきます。

 私たちの文系の課程では、高校で行列・ベクトルと確率・統計、大学で線形代数と数理統計学を履修していませんが、その初歩的な部分だけでも学習しておくと、数値データ分析法の数理の理解と、プログラミングの作業が容易になります。さらに、このテキストでは一般に定義されていないような行列演算や統計処理をあえて導入しました。そのような演算を各所で活用しますので確認してください。このテキストで扱う内容は基本的なことばかりで、難易度はそれほど高くはありません。

 ここで扱う方法は言語学の各分野に限らず、実務や研究でよく使われているものばかりですが、各所で私たちが独自に開発してきた方法も紹介します。おおまかに「~とよばれています」という受動文であれば周知の方法を指します。一方「~を提案します」「~とよびます」のような能動文で紹介する方法は、私たち独自の方法・名称だと思いますが、すでに開発されている方法や使われている呼称であるかもしれません。一応、各種の統計学書で確認していますが、すべてを見渡すことは不可能なので既存の同じ方法・名称をご存知の方はぜひご教示ください。

 学部の前期・後期課程では基礎的な内容を取り上げながらプログラム操作を練習します。大学院では発展的内容を扱いプログラム開発を練習をします。

 ●の箇所は数理・統計に関する補足です。■で言語研究(スペイン語研究)での応用例を示しましたが、とくにスペイン語の専門的な知識を前提としません。

 学期期間中は、このテキストとプログラムのコードを毎週更新しています。いつも最新のファイルをダウンロードしてください。

*ダウンロードサイト:

http://lecture.ecc.u-tokyo.ac.jp/~cueda/gengo/index.html

の中の次の箇所を参照してください。

2.3. 数量データ分析用プログラムNUMEROS.xlsm

NUMEROS para análisis de datos cuantitativos

目次0. はじめに11. 行列61.1. 単位ベクトルと単位行列61.2. 行列の演算71.2.1. 行列の加算と減算71.2.2. 行列と数値の積71.3. 行列積81.3.1. ベクトルとベクトルの積81.3.2. 行列とベクトルの積91.3.3. 行列と行列の積101.4. 転置行列121.5. 行列演算の拡張131.5.1. 行列とスカラーの成分間の演算131.5.2. 行列とベクトルの成分間の演算151.5.3. 行列と行列の成分間の演算161.5.4. 四則演算の一般化182. 確率202.1. 確率の分布202.1.1. 確率変数202.1.2. 平均と分散212.1.3. 二項分布確率272.1.4. 正規分布確率312.2. 乱数332.2.1. 乱数の確率332.2.2. 連続的確率382.2.3. 確率分布403. 統計量423.1. 和423.2. 平均443.2.1. 算術平均値443.2.2. 幾何平均値453.2.3. 調和平均値463.2.4. 分数平均値473.2.5. 切除平均値493.2.6. 大数平均値503.2.7. 正規平均値523.3. 中央値533.4. 最大値・最小値・中間値・範囲543.5. 最頻値543.6. 変動563.6.1. 分散・標準偏差563.6.2. 限定分散と不等性・均等性583.6.3. 不偏分散・不偏標準偏差633.6.4. 標準誤差643.6.5. 変動係数653.6.6. 平均偏差663.6.7. ジニ係数693.6.8. エントロピー733.6.9. 最小値最大値比743.7. 推移753.7.1. 振動性753.7.2. 単峰性763.7.3. 正規性773.7.4. 連続性813.7.5. 平滑性823.7.6. 定常性843.8. 均衡853.8.1. 歪度853.8.2. 尖度883.9. 区別913.9.1. 弁別度913.9.2. 対立度924. 関係944.1. 相関944.1.1. 相関係数944.1.2. 相関行列1004.1.3. 共分散行列1014.2. 連関1054.2.1. 連関係数1054.2.2. 連関行列1174.3. 距離1224.3.1. 単純距離1224.3.2. 限定距離1224.3.3. 標準距離1254.4. 近接1284.5. 差1304.5.1. 平均値差1314.5.2. 中央値差1324.5.3. 分散値差1324.5.4. 標準偏差値差1324.5.5. ジニ係数値差1334.5.6. エントロピー差1335. 得点1345.1. 階級得点1345.2. 相対得点1355.3. 対立得点1495.4. 加重得点1505.5. 限定得点1555.6. 比較得点1585.7. 標準得点1655.8. 期待得点1695.9. 確率得点1705.10. 順位得点1745.11. 連関得点1775.12. 補充得点1805.13. 名義尺度の数量化1815.14. 数値尺度の名義化1845.15. 名義行列1866. 分析1886.1. 統計量の分析1886.1.1. 範囲の分析1886.1.2. 中心の分析1886.1.3. 変動の分析1896.1.4. 平衡の分析1926.1.5. 推移の分析1936.2. 距離集中分析1946.2.1. 外的基準1946.2.2. 内的基準1976.2.3. 軸の解釈2026.2.4. 集中係数2056.3. 多変量分析エラー! ブックマークが定義されていません。6.3.1. 重回帰分析2896.3.2. 主成分分析2286.3.3. 主成分重回帰分析3116.3.4. ロジスティック回帰分析2476.3.5. 対応分析2476.3.6. 因子分析2636.3.7. クラスター分析2696.4. 群別分析3116.4.1. 共起回数による群別3116.4.2. 距離による群別3186.4.3. 確率による群別3226.4.4. 判別分析3266.5. 多重条件分析2786.5.1. 多重条件リスト2786.5.2. 多重条件頻度2796.5.3. 多重条件係数2817. 検定エラー! ブックマークが定義されていません。7.1.1. 検定の方法3357.1.2. 期待値3367.1.3. カイ二乗値3387.1.4. 検定の考え方3397.1.5. 検定の評価3407.1.6. イェイツの補正3418. 図・グラフ3518.1. 比率棒グラフ3518.2. バブルチャート3528.3. ボックスチャート3538.4. 二変数対比図3558.5. 項目散布図3568.6. 始点・終点棒グラフ3579. Excelの操作3599.1. 相関係数3599.2. 連関係数3639.3. マクロプログラム36610. 参考書370

図・グラフ

 データ行列には多くの情報が含まれていますが、縦と横に並んだ数値の連続のままでは、その情報を読み取ることが困難です。そこで、さまざまなグラフを使って数値の情報を視覚化します。

 ここで変数の関係を示す図を描くためのプログラムを扱います。Excelの標準的なグラフにないものをマクロで作成しました。

比率棒グラフ

入力データ「評価」は、スペイン語の授業についてのアンケートの結果です。たとえば、第1行の「文法解説」について、それがスペイン語の学習上「効果がある」と思う人の総数は86名でした(総数124名)。また、同じ項目が「楽しい」と思う人の総数は29名であることを示しています。

はじめに複数の棒グラフの間のパーセントの比較をします。

データと結果

項目

a.役立つ

b.楽しい

項目

a.役立つ

b.楽しい

A.文法解説

86

29

A.文法解説

0.75

0.25

B.ビデオ

53

78

B.ビデオ

0.40

0.60

C.活動

48

53

C.活動

0.48

0.52

D.映画

43

96

D.映画

0.31

0.69

E.音読

110

42

E.音読

0.72

0.28

F.筆写

93

11

F.筆写

0.89

0.11

G.観察

37

50

G.観察

0.43

0.57

H.小テスト

89

15

H.小テスト

0.86

0.14

*プログラムははじめに上右の表を作成し、これを参照して次のグラフを表の上に出力します。グラフをドラッグして他の場所に移動すると、表の内容を確認することができます。書式を「0%」にすると次のようにパーセント表示になります。

バブルチャート

データの値をバブルの大きさで表示した散布図を作成します。

はじめに行と列に連番をつけ、これを標準化した値をXとYの座標として使います。それぞれの座標に位置するデータの値を第3列に用意します。

項目

1

-1.00

-1.53

86.00

2

1.00

-1.53

29.00

3

-1.00

-1.09

53.00

4

1.00

-1.09

78.00

5

-1.00

-0.65

48.00

6

1.00

-0.65

53.00

7

-1.00

-0.22

43.00

8

1.00

-0.22

96.00

9

-1.00

0.22

110.00

10

1.00

0.22

42.00

11

-1.00

0.65

93.00

12

1.00

0.65

11.00

13

-1.00

1.09

37.00

14

1.00

1.09

50.00

15

-1.00

1.53

89.00

16

1.00

1.53

15.00

次にこれを参照してバブルチャートを出力します。

*この図はExcelの「条件付き書式」の「データバー」(下図)とほとんど同じ情報を示しますが、列と行の参照値を座標としていることが異なります。→『基礎』p.**.                                                                                                          

ボックスチャート

「QTボックスチャート」は最大値、最小値、第1四分点、第3四分点、中央値を使ってデータの分布の様子を示します。四分点と中央値については→『基礎』(p.**)。ボックスチャートはデータの分布の様子(拡がりと中央値の位置)を観察するときに役立ちます。プログラムはデータ行列から次の表を作成します。

結果

要約値

a.役立つ

b.楽しい

第3四分位数

90.00

59.25

最大値

110.00

96.00

最小値

37.00

11.00

第1四分位数

46.75

25.50

中央値

69.50

46.00

次にこれを参照してボックスチャートを出力します。

「SDボックスチャート」を選択すると要約値として平均と標準偏差(Sd)を使います。

要約値

a.役立つ

b.楽しい

平均 + Sd

95.70

74.31

最大値

110.00

96.00

最小値

37.00

11.00

平均 - Sd

44.05

19.19

平均

69.88

46.75

二変数対比図

棒グラフの一種である対比図は棒が左右に伸びていくので、それぞれの量を比べながら観察するときに便利です。「最大値」は、セル内の最大値を超える値で切りのよい数を設定をします。ここではセルの最大値が110なので、グラフの最大値を120とします。

プログラムははじめに次のような行を反転した表を作成します。

項目

a.役立つ

b.楽しい

H.小テスト

89

15

G.観察

37

50

F.筆写

93

11

E.音読

110

42

D.映画

43

96

C.活動

48

53

B.ビデオ

53

78

A.文法解説

86

29

次にこれを参照して次のような二変数対比図を出力します。

結果

ラベル付き散布図

散布図は2つの変数をもつデータが2次元の平面上にどのような配置されるのかを見るために使います(→『基礎』p.**)。ここでは散布図の中にデータのラベル(項目名)を表示するラベル付き散布図を作ります。

*この図を見ると、それぞれの項目が「+楽しい・-役立つ」のグループと、「-楽しい・+役立つ」のグループに分類できることがわかるでしょう。次は「描画キャンパス」を使ってそれぞれのグループを○で囲ってみました。

始点・終点棒グラフ

 Excelの積み上げ棒グラフの奇数番号の成分の色と枠線を消すことによって、始点(s1, s2, …)と終点(e1, e2, …)の範囲を示すグラフを作成します[footnoteRef:1]。プログラムで次の下左表(入力行列)から下右表(作業行列)を作成し、この作業行列を使ってグラフを出力します。下右表は、入力行列の行方向の増加分だけにした行列です。 [1: 堀川遼太さんの創案です(2015)。]

X

s1

e1

s2

e2

X

s1

e1

s2

e2

d1

1

3

5

8

d1

1

2

2

3

d2

2

4

7

10

d2

2

2

3

3

d3

2

5

8

9

d3

2

3

3

1

d4

3

8

 

 

d4

3

5

-8

0

 Excelの棒グラフは、これを積み上げて、連続する4つの部分棒からなる次のような棒グラフを作ります。このとき、データの行/列を切り替え、軸を反転し、データラベルを記入します。

 プログラムは上のs1, s2の背景色をなくし、e1, e2の色を統一し、さらに入力行列がゼロの領域を消して(d4:e2)、次のグラフを出力します。

行列

 はじめに行列のさまざまな演算について確認します。一般の行列・線形代数で扱われる演算のほかに、このプリントで特別に定義する演算も含みます。これらを理解すると数値データ処理の意味と利用法がわかり、応用範囲が広がります。また、少ないコードでプログラムが書けるのでプログラミング開発の能率が高まります。

 手元の言語データから1つの数値、たとえば、ある地域に特有の語の出現頻度が得られたとします。この1つの数字そのものが、異常に高い数値であるのか、または、ほかの地域でも多く見つかるのか、調べなければなりません。v1, v2, v3, …という地域で比較すると、その分布の特徴がわかります。さらに関連するほかの語d1, d2, … の頻度も調べるとよいでしょう。そうすると地域と語からなる次のような頻度分布表が出来上がります。

O.S.

v1

v2

v3

v4

v5

d1

10

19

14

7

12

d2

11

7

10

0

1

d3

0

0

1

12

1

d4

0

1

2

3

3

 以下では、このような頻度分布表の分析法を扱います。例としてあげた分布表は小さなものばかりですが、実際は数千行×数十列のように大きな行列を扱うこともあります。

単位ベクトルと単位行列

 下左表のように成分がすべて1の縦ベクトルは「単位ベクトル」(unit vector, identity vectorとよばれます[footnoteRef:2]。下右表は横に並んだ横ベクトルです。 [2: 「単位ベクトル」には他の定義もありますが、ここでは以下でよく使うこの定義(成分がすべて1のベクトル)を採用します。]

In1

1

I1p

1

2

3

1

1

1

1

1

1

2

1

 このプリントは上左表のような縦ベクトルをn行1列の行列In1と見なし、上右表のような横ベクトルを1行p列の行列I1pと見なします。数値(スカラー)はMのように、添え字のnもpもつけません。

 次のように「対角成分」((1,1), (2,2)のように行番と列番が同じ位置の成分)がすべて1で、非対角成分がすべて0である正方行列(行数と列数が同じ行列)は「単位行列」(unit matrix, identity matrix)とよばれます。以下では単位行列をIppのように表記します。一般に、添え字のn, pは表記されませんが、以下の演算ではこれを意識すると理解が深まるので付記することにします。

Ipp

1

2

3

1

1

0

0

2

0

1

0

3

0

0

1

行列の演算行列の加算と減算

 行列間で対応する成分について加算と減算の演算をします。

Xnp

1

2

+

Ynp

1

2

=

Znp

1

2

1

1

4

1

7

10

1

8

14

2

2

5

2

8

11

2

10

16

3

3

6

3

9

12

3

12

18

Xnp + Ynp = Znp, Znp = A(Xnp, Ynp)

 この加算の演算Xnp + Ynp = Znpは一般の行列演算で定義されています。上左式では、たとえばXnpのように大文字+小文字+小文字で行列を示し、小文字の添え字nとpは行数と列数を示します。上右式Znp = A(Xnp, Ynp)はプログラムのコードでAは引数1 (=Xnp)と引数2 (=Ynp)の和の行列を返すユーザー定義関数(プログラマーが作成する関数)です。以下では行列を返す関数を「行列関数」とよびます。

行列と数値の積

 行列(とベクトル)の成分全体に「スカラー」(scalar)とよばれる数値を掛けることができます。

Xnp

1

2

*

5

=

Znp

1

2

1

1

4

1

5

20

2

2

5

2

10

25

3

3

6

3

15

30

Xnp * 5 = Znp, Znp = M(Xnp, 5)

行列積

 行列積(matrix product)は積和(sum product)という少し複雑な計算をしなければなりません。そこで簡単な横ベクトルと縦ベクトルの積からはじめて、少しずつ複雑になる行列とベクトルの積、行列と行列の積という順番で進みます。

ベクトルとベクトルの積

 横ベクトルと縦ベクトルの積は、それぞれ対応する成分の積の和になります。たとえば次の例では、X13 Y31 = 1*4 + 2*5 + 3 *6 = 32になります。下左の行列計算では行列間に*やxなどの演算記号(算術演算子)をつけません。下右の行列関数ではXという関数名を使うことにします。表と表の行列積を示すときは、2つの表の間に×をつけることにします。

X13 Y31 = Z, Z = X(X13, Y31)

X13

1

2

3

×

Y31

1

=

Z11

1

=

Z11

1

1

1

2

3

1

4

1

1*4 + 2*5 + 3*6

1

32

2

5

3

6

 この演算はこのテキストでしばしば使います。

●縦ベクトルと横ベクトルの積

 逆に、縦ベクトルと横ベクトルを掛け合わせると、それぞれの成分の積からなる行列になります。たとえば、Y31 X13の積の行列Z33のZ1(第1行) [4, 8, 12]はY31のZ1: 4にX13の[1, 2, 3]を掛けたものです。Z33のZ2(第2行)の[5, 10, 15]はY31の5にX13の[1, 2, 3]を掛けたものです。

X31 Y13 = Z33, Z33 = X(X31, Y13)

Y31

1

×

X13

1

2

3

=

Y31 X13

1

2

3

=

Y31 X13

1

2

3

1

4

1

1

2

3

1

4*1

4*2

4*3

1

4

8

12

2

5

2

5*1

5*2

5*3

2

5

10

15

3

6

3

6*1

6*2

6*3

3

6

12

18

 この演算はこのテキストであまり使うことはありませんが、やはり必要なときがあります。

行列とベクトルの積

 行列のそれぞれの行に縦ベクトルを掛けます。この計算はデータ行列に重みベクトルを掛けた合成ベクトルを作るときに使います。

X32 Y21 = Z31, Z32 = X(X32, Y21)

X32

1

2

×

Y21

1

=

Z31

1

=

Z31

1

1

1

2

1

2

1

1*2 + 2*3

1

8

2

3

4

2

3

2

3*2 + 4*3

2

18

3

5

1

3

5*2 + 1*3

3

13

 次のように、横ベクトルと行列の行列積の結果は、横ベクトルと行列の縦列の積和 (1*1 + 2*2 + 3*3 = 14) , (1*4 + 2*5 + 3*6 = 32)を成分とする行列になります。

X13 Y32 = Z12, Z12 = X(X13, Y32)

X13

1

2

3

×

Y32

1

2

=

Z12

1

2

=

Z12

1

2

1

1

2

3

1

1

4

1

1*1 + 2*2 + 3*3

1*4 + 2*5 + 3*6

1

14

32

2

2

5

3

3

6

●行列と単位ベクトルの積

 行列に単位ベクトル(Ip1)を右から掛けると横和縦ベクトルが得られます。

X32

1

2

×

I21

1

=

Z31

1

=

Z31

1

1

1

2

1

1

1

1*1 + 2*1

1

3

2

3

4

2

1

2

3*1 + 4*1

2

7

3

5

1

3

5*1 + 1*1

3

6

 逆に、次のような単位横ベクトルと行列の積では、縦和横ベクトルが得られます。

I13

1

2

3

×

X32

1

2

=

Z12

1

2

=

Z12

1

2

1

1

1

1

1

1

4

1

1*1+1*2+1*3

1*4+1*45+1*6

1

6

15

2

2

5

3

3

6

行列と行列の積

 行列(Xnp)と行列(Ypq)の積(Znq)の成分Z(i, j)は左行列のi行と右行列のj列の積和です。たとえば、次のZ(1, 1)の成分はXの1行(1, 2)とYの2列(9, 1)の積和(1*9 + 2*1 = 11)になります。

X32 Y23 = Z33, Z33 = X(X32, Y23)

X32

1

2

×

Y23

1

2

3

1

1

2

1

7

9

2

2

3

4

2

8

1

3

3

5

1

=

Z33

1

2

3

=

Z33

1

2

3

1

1*7 + 2*8

1*9 + 2*1

1*2 + 2*3

1

23

11

8

2

3*7 + 4*8

3*9 + 4*1

3*2 + 4*3

2

53

31

18

3

5*7 + 1*8

5*9 + 1*1

5*2 + 1*3

3

43

46

13

 行列積は第1行列の列数と第2行列の行数が同じでなければ計算できません。行列積の結果の行列は第1行列の行数と第2行列の列数になります。次の式のそれぞれの添え字に注意してください。

Xnp Ypm = Znm

*行列積の交換

 行列積Xnn Ynnと、行列積Ynn Xnnは異なることがふつうです。そこで、行列積の演算では「XnnにYnnを右から掛ける(Xnn Ynn)」や、「XnnにYnnを左から掛ける(Ynn Xnn)」という表現を使います。以下では、それぞれに「右積する」「左積する」という表現を使うことにします。

*スカラーの移動

 スカラー(S)は行列積のどの位置からも自由に移動することができます。このことはスカラーを行列の要素全体に掛けることから明らかです。

S Xnp Ypm = Xnp S Ypm = Xnp Ypm S

●単位行列の左積・右積

 行列に単位行列(Ipp)を右積しても左積してもその結果は元の行列は変わりません。この性質は重要です。

(a) Xpp Ipp = Xpp

Xpp

x

y

z

×

Ipp

x

y

z

1

1

2

3

1

1

0

0

2

4

5

6

2

0

1

0

3

7

8

9

3

0

0

1

=

Xpp

x

y

z

=

Xpp

x

y

z

1

1*1+2*0+3*0

1*0+2*1+3*0

1*0+2*0+3*1

1

1

2

3

2

4*1+5*0+6*0

4*0+5*1+6*0

4*0+5*0+6*1

2

4

5

6

3

7*0+8*0+9*1

7*0+8*1+9*0

7*0+8*0+9*1

3

7

8

9

(b) Ipp Xpp = Xpp

Ipp

x

y

z

×

Xpp

x

y

z

1

1

0

0

1

1

2

3

2

0

1

0

2

4

5

6

3

0

0

1

3

7

8

9

=

Xpp

x

y

z

=

Xpp

x

y

z

1

1*1+0*4+0*7

1*2+0*5+0*8

1*3+0*6+0*9

1

1

2

3

2

0*1+1*4+0*7

0*2+1*5+0*8

0*3+1*6+0*9

2

4

5

6

3

0*1+0*4+1*7

0*2+0*5+1*8

0*3+0*6+1*9

3

7

8

9

●行列積の計算表

 小林(1967:10)は、行列積の計算のために次のような「計算表」を使うことを勧めています。

1

2

×

5

6

=

1*5 + 2*7 = 19

1*6 + 2*8 = 22

3

4

7

8

3*5 + 4*7 = 43

3*6 + 4*8 = 50

計算表:

×

5

6

7

8

1

2

1*5 + 2*7 = 19

1*6 + 2*8 = 22

3

4

3*5 + 4*7 = 43

3*6 + 4*8 = 50

 上の計算表を使って、行列積の左の行列は左から右に行方向に進み、右の行列は上から下に列方向に進みながら、それぞれに対応する成分の積を足していきます。

 この計算法は次のようなベクトルと行列の積についても同様です。

1

2

×

5

6

=

1*5 + 2*7 = 19

1*6 + 2*8 = 22

7

8

計算表:

×

5

6

7

8

1

2

1*5 + 2*7 = 19

1*6 + 2*8 = 22

1

2

×

5

=

1*5 + 2*7 = 19

1*6 + 2*8 = 22

3

4

7

3*5 + 4*7 = 43

3*6 + 4*8 = 50

計算表:

×

5

7

1

2

1*5 + 2*7 = 19

3

4

3*5 + 4*7 = 43

転置行列

 行列の転置(transposition)とは行列の成分X(i,j)をX(j,i)と交換することです。行列Xnpの転置行列(transposed matrix)はXnpTと表記されます。

Xn1

1

Xn1T

1

2

3

1

1

x

1

2

3

2

2

3

3

Xnp

1

2

XnpT

1

2

3

1

1

4

1

1

2

3

2

2

5

2

4

5

6

3

3

6

 転置行列には次の性質があります。これらはよく使う演算です。

(a) (XnpT)T = Xnp

Xnp

1

2

XnpT

1

2

3

(XnpT)T

1

2

1

1

4

x

1

2

3

1

1

4

2

2

5

y

4

5

6

2

2

5

3

3

6

3

3

6

(b) (Xnp + Ynp)T = XnpT + YnpT

Xnp

1

2

+

Ynp

1

2

=

Znp

1

2

ZnpT

1

2

3

1

1

4

1

7

10

1

8

14

1

8

10

12

2

2

5

2

8

11

2

10

16

2

14

16

18

3

3

6

3

9

12

3

12

18

XnpT

1

2

3

+

YnpT

1

2

3

=

Znp

1

2

3

1

1

2

3

1

7

8

9

1

8

10

12

2

4

5

6

2

10

11

12

2

14

16

18

(c) (Xnp Ypm)T = YpmT XnpT

Xnp

1

2

×

Yp1

x

=

Zn1

x

Zn1T

1

2

3

1

1

4

1

1

a

9

1

9

12

15

2

2

5

2

2

b

12

3

3

6

c

15

Yp1T

1

2

×

XnpT

1

2

3

=

Z1n

1

2

3

1

1

2

1

1

2

3

1

9

12

15

2

4

5

6

*線形代数の基礎(行列・ベクトル)については次を参照しました:足立(2005), 井上(1998), 井上・広川(2000), 三野(2001), 奥村(1986), 小林(1967), 芝(1975), 白井(2009), 縄田(1999), 長谷川(2001)。「単位ベクトル」の定義については芝(1975)に従いました。

行列演算の拡張

 以上が厳密な線形代数の枠組みの中での基本的な行列演算です。このテキストでもこれらの演算を活用しますが、さらに以下の「行列成分間の演算」を追加しておきます。これらは、行列計算が一般の数値計算と同じように行うことができるようにするためです。これらの成分間の演算を可能にする関数のプログラムを用意すれば演算が単純化し、その理解がスムーズになります。このような行列成分間の演算は計算の便宜という実際的な目的のために使うもので、厳密な線形代数の理論には含まれません。

行列とスカラーの成分間の演算

 次のような行列とスカラーの加算・減算を可能にしておきます。

Xnp

1

2

+

5

=

Znp

1

2

1

1

4

1

6

9

2

2

5

2

7

10

3

3

6

3

8

11

Xnp + 5 = Znp, Znp = X(Xnp, 5)

 線形代数の厳密な枠組みの中で、このような行列とスカラーの加算・減算をするには、次のようにスカラーに単位ベクトルを二重にかけて(縦単位ベクトルと横単位ベクトル)、相手の行列と同じ大きさにしてから足したり引いたりしなければなりません。

Xnp + 5 * In1 * I1p = Znp, Znp = A(Xnp, X(X(5, In1), I1p))

 以下では加算(+, A)や減算(-, S)だけでなく、積算(-, M)、除算(/, D)、指数(^, E)・対数(@, L)の演算も含めておきます。次のようなベクトルを対象にした場合も同様です。

Xn1

1

2

=

Zn1

1

1

1

1

1

2

2

2

4

3

3

3

9

Xn1 ^ 2 = Zn1, Zn1 = E(Xn1, 2)

●一様行列

  先述のように、ベクトルは1列または1行の行列です。そして数値(スカラー)は1行1列の行列と見なすことができます。このように考えればさまざまな演算を、数値、ベクトル、行列という異なったデータどうしを統一して計算できるようになります。

 ここで一様行列(homogeneous matrix)という概念を提案します。たとえば次のような行列+数値の演算で、数値(5)を下のYnpような成分をもつ行列(「全体一様行列」homogeneous matrix in allをよびます)とすれば、一般に認められている行列の加算ができるようになります。

Xnp

1

2

+

5

=

Xnp

1

2

+

Ynp

1

2

=

Znp

1

2

1

1

4

1

1

4

1

5

5

1

6

9

2

2

5

2

2

5

2

5

5

2

7

10

3

3

6

3

3

6

3

5

5

3

8

11

 そこで、行列成分演算では次のようにスカラーと全体一様行列は同等(~)と見なします。

5

~

Ynp

1

2

1

5

5

2

5

5

3

5

5

行列とベクトルの成分間の演算

  次のような縦ベクトルを用いた演算では、列一様行列(homogeneous matrix in column)であるYnpを使えば、すべての演算が可能になります。

Xnp

1

2

+

Yn1

1

=

Xnp

1

2

+

Ynp

1

2

=

Znp

1

2

1

1

4

1

7

1

1

4

1

7

7

1

8

11

2

2

5

2

8

2

2

5

2

8

8

2

10

13

3

3

6

3

9

3

3

6

3

9

9

3

12

15

 同様にして、次のような横ベクトルを用いた演算では、それを「行一様行列」(homogeneous matrix in row)にします。下のYnpは3行一様行列です。

Xnp

1

2

+

Y1p

1

2

=

Xnp

1

2

+

Ynp

1

2

=

Znp

1

2

1

1

4

1

7

8

1

1

4

1

7

8

1

8

12

2

2

5

2

2

5

2

7

8

2

9

13

3

3

6

3

3

6

3

7

8

3

10

14

 このようにベクトルを一様行列に変換するのは、行列演算を可能にするための方法に過ぎません。元のベクトルとそれぞれの一様行列の間に数値の本質的な変化はない、と見なすことができるでしょう。

Yn1

1

~

Ynp

1

2

1

7

1

7

7

2

8

2

8

8

3

9

3

9

9

Y1p

1

2

~

Ynp

1

2

1

7

8

1

7

8

2

7

8

3

7

8

 この一様行列を使うことによって、次のような演算も可能になります。

C

1

2

+

D

1

=

C

1

2

1

1

2

1

7

1

8

9

2

8

2

9

10

3

9

3

10

11

 よって、これは次の演算と同じになります。

C

1

2

+

D

1

2

=

C

1

2

1

1

2

1

7

7

1

8

9

2

1

2

2

8

8

2

9

10

3

1

2

3

9

9

3

10

11

行列と行列の要素間の演算

 次は行列要素間の積算(*, M)を示します。Mは対応する行列要素間の積を成分とする行列を返す行列関数です。この行列要素間の積算を「行列要素積」とよぶことにします。これは先の「行列積」(x, X)と異なりますから注意してください。

 はじめに、行列の行の成分についての積を扱います。

X23

1

2

3

*

Y13

1

2

3

=

Z23

1

2

3

1

1

2

3

1

1

2

3

1

1

4

9

2

4

5

6

2

4

10

18

X23 * Y13 = Z23, Z23 = M(X23, Y13)

 ここで導入した行列成分間の演算では、2つの行列の行数または列数が一致していれば可能です。次のように、小さい方の行列が相手の行列の行または列の大きさの一様行列に拡張されるからです。

X23

1

2

3

*

Y13

1

2

3

=

Z23

1

2

3

1

1

2

3

1

1

2

3

1

1

4

9

2

4

5

6

2

1

2

3

2

4

10

18

 行列積を使ってこの演算をするには、次のようにYの対角行列(diag)を用意して、Xに右積します。

X23

1

2

3

x

Y33

1

2

3

=

Z23

1

2

3

1

1

2

3

1

1

0

0

1

1

4

9

2

4

5

6

2

0

2

0

2

4

10

18

3

0

0

3

X diag(Y) = Z, Z = X(X, diag(Y))

 次は、行列の列の成分の積です。

X

1

2

3

*

Y

1

=

Z

1

2

3

1

1

2

3

1

5

1

5

10

15

2

4

5

6

2

6

2

24

30

36

X * Y = Z, Z = M(X, Y)

Y

1

2

x

X

1

2

3

=

M M

1

2

3

1

5

0

1

1

2

3

1

5

10

15

2

0

6

2

4

5

6

2

24

30

36

diag(Y) X = Z, Z = X(diag(Y), X)

 このように、掛けるベクトル(Y)を対角化し、行列(X)に左積します。

 行列成分間の割り算も同様です。

X

1

2

3

/

Y

1

2

3

=

Z

1

2

3

1

1

2

3

1

1

2

3

1

1.0

1.0

1.0

2

4

5

6

2

4.0

2.5

2.0

X / Y = Z, Z = D(X, Y)

 行列積を使えば

X

1

2

3

x

Y

1

2

3

=

Z

1

2

3

1

1

2

3

1

1.00

.00

.00

1

1.00

1.00

1.00

2

4

5

6

2

.00

.50

.00

2

4.00

2.50

2.00

3

.00

.00

.33

ここで、Yの対角成分を1, 2, 3の逆数(1/1, 1/2, 1/3)にして(rev)、Xに右積します。

X diag(rev(Y)) = Z, Z = X(X, diag(rev(Y)))

 さらに、行列成分間を拡張させて、次のように同じ行数と列数の行列の成分間の積や商も計算可能にしておきます。

Xnp

1

2

*

Ynp

1

2

=

Znp

1

2

1

1

4

1

7

10

1

7

40

2

2

5

2

8

11

2

16

55

3

3

6

3

9

12

3

27

72

Xnp * Ynp = Znp, Znp = M(Xnp, Ynp)

四則演算の一般化

 以上のように考えれば、たとえば、X * Y = Zならば(→)Y = Z / Xである、というような一般の四則演算と同じようにして、行列成分の四則演算の導出も可能になります。この導出は数値どうしの演算、ベクトルどうしの演算、行列どうしの演算では次のようにします。

2 * 3 = 6 → 3 = 6 / 2

Xn1

1

*

Yn1

1

=

Zn1

1

Yn1

1

=

Zn1

1

/

Xn1

1

1

1

1

7

1

7

1

7

1

7

1

1

2

2

2

8

2

16

2

8

2

16

2

2

3

3

3

9

3

27

3

9

3

27

3

3

Xn1

1

2

*

Yn1

1

2

=

Zn1

1

2

Yn1

1

2

=

Zn1

1

2

/

Xn1

1

2

1

1

4

1

7

10

1

7

40

1

7

10

1

7

40

1

1

4

2

2

5

2

8

11

2

16

55

2

8

11

2

16

55

2

2

5

3

3

6

3

9

12

3

27

72

3

9

12

3

27

72

3

3

6

 それでは、数値とベクトル、数値と行列、ベクトルと行列のような異種のデータ間でも同じように演算の導出が可能になるか、試してみましょう。

X

1

2

*

5

=

Z

1

2

5

=

Z

1

2

/

X

1

2

=

A

1

2

1

1

4

1

5

20

1

5

20

1

1

4

1

5

5

2

2

5

2

10

25

2

10

25

2

2

5

2

5

5

3

3

6

3

15

30

3

15

30

3

3

6

3

5

5

X

1

2

*

Y

1

=

Z

1

2

Y

1

=

Z

1

2

/

X

1

2

=

B

1

2

1

1

4

1

7

1

7

28

1

7

1

7

28

1

1

4

1

7

7

2

2

5

2

8

2

16

40

2

8

2

16

40

2

2

5

2

8

8

3

3

6

3

9

3

27

54

3

9

3

27

54

3

3

6

3

9

9

 上の最初の表の右端の行列Aは全体一様行列ですから、先述のように、数値(スカラー)(=5)と見なすことができます。また、下のBは2列一様行列なので、1列行列(縦ベクトル)のYと同じと見なすことができます。よって、以上のすべての場合でX * Y = Zならば、Y = Z / Xであることが確認できました。このことは、乗算と除算の演算だけでなく、加算と減算の演算、指数と対数の演算でも同じです。

 Xの成分にゼロ(0)があると先の行列の割り算Z / Xができなくなります。しかし、上の演算でXの成分が0ならばZの対応成分も0になるので、0 / 0という計算が行われます。この計算は一般にできないことになっていますが、これを0 / 0 = 0と決めておけば、これも可能になります。

 なお、ここで導入した「一様行列」は、通常の行列計算では、次のように行列と単位ベクトルの行列積を使います。

X

1

x

I

1

2

=

H

1

2

1

4

1

1

1

1

4

4

2

5

2

5

5

3

6

3

6

6

Xn1 I1p = Hnp

I

1

X

1

2

H

1

2

1

1

1

7

8

1

7

8

2

1

2

7

8

In1 X1p = Hnp

 このように四則演算を一般化すると、たとえば先述のベクトルの対角行列化(diag)や行列成分の逆数化(rev)なども簡単に導くことができます。

X31

1

*

I13

1

2

3

*

I33

1

2

3

=

Y33

1

2

3

1

1

1

1

1

1

1

1

0

0

1

1

0

0

2

2

2

0

1

0

2

0

2

0

3

3

3

0

0

1

3

0

0

3

diag(X31) = X31 * I13 * I33 = Y33, Y = M(M(X31, I13), I33)

X31

1

Y31

1

1

1

1

1.00

2

2

2

0.50

3

3

3

0.33

rev(X31) = 1 / X31 = Y31, Y31 = D(1, X31)

確率

 このセクションでは偶然性の確率のあり方とその計算の仕方を扱います。はじめに簡単な二項分布確率を見て、それを正規分布確率にまで一般化します。次に、乱数実験から得られた確率と正規分布確率の分布が近似することを確認し、連続量の確率を累積正規分布から計算する準備をします。

確率の分布確率変数

 次の表は実際に1つのサイコロを10回投げて、それぞれの目が出た硬貨の数(X)とその頻度数(F)を示します。

サイコロの目(X)

1

2

3

4

5

6

和(S)

実際の頻度(F)

2

2

1

0

3

2

10

 このような表は度数分布表(Frecuency distribution)と呼ばれます。一方、頻度数ではなくて、それぞれの頻度(F)を和(S)で割ると、それぞれの実験の確率(P)が計算されます。次のようにそれぞれを確率で示す表は確率分布表(Probability distribution)と呼ばれます。

サイコロの目(X)

1

2

3

4

5

6

和(S)

実際の確率(P)

2/10

2/10

1/10

0/10

3/10

2/10

1

 この確率を理論的に求めるならば次のようになるはずです。たとえばX=0のときの確率はP(X=0)のように書かれます。

P(X=1) = P(X=2) = ... = P(X=6) = 1/6

 よって、理論的な確率分布表は次になります。

サイコロの目(X)

1

2

3

4

5

6

和(S)

理論的な確率(P)

1/6

1/6

1/6

1/6

1/6

1/6

1

 このように、実際と理論の微妙な違いはよくあることですが、それでも2枚の硬貨を投げる回数を多くすれば、その実験の実際の確率分布表は、理論的な確率分布表に近づいていくはずです。なお、サイコロの{1, 2, 3, 4, 5, 6}の目のように、数字が区切れて並ぶような変数の確率は離散的確率変数と呼ばれます。

 次に、次のように円盤の上に一本の針(ピン)を落とし、その針先の位置が示す角度(円盤のある点をゼロ(0)としておきます)を測り、それぞれの角度が示す値(X)の確率を求めることを考えましょう。

 ルーレットの円周は40個ぐらいの升目に区切られていますが、ここでは角度を正確に測ることを考えます。この角度の値は0(0を含める)から360(含めない)まで連続的であり、小数点以下まで求めれば、その精度は無限にあります。このような連続的な範囲は[0, 360)のように書かれます。

 このような連続的な変数の確率は、特定の1つの数値に対応する確率を計ることは、それぞれが必ず1回の度数になり、全体の範囲内にある数値の数は無限ですから、その確率はP = 1 / 無限 = 0になってしまいます。しかし、たとえば[0 ~ 60)の範囲にある確率ならば、離散的な確率とおなじように想定できます。このような連続的確率変数の確率はP(0≤X

X

[0, 60)

[60, 120)

[120, 180)

[180, 240)

[240, 300)

[300, 360)

P

1/6

1/6

1/6

1/6

1/6

1/6

1

平均と分散

 データの中心を示す平均と、データの散らばり具合を示す分散は数値データを統計的に扱うときに最も重要な指標です。このことは頻度分布のデータだけでなく、確率分布のデータでも同じです。このセクションでは、頻度分布の平均・分散から出発して確率分布の平均・分散を理解し、その重要な性質を確認します。

 はじめに次のような簡単な数値分布の平均と分散を求めます。

d

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

x

1

1

5

5

5

3

3

3

3

3

4

4

4

4

6

 この平均(m)は

m = (Σi xi) / n

= (1 + 1 + 5 + ... + 6) / 15 = 54 / 15 = 3.6

そして分散(v)は

v= Σi (xi - m)2 / n

= (1 - 3.6)2 + (1 - 3.6)2 + (5 - 3.6)2 + ... + (6 - 3.6)2] / 15

= 1.844

 なお、次の分散の別式もよく使われます。

v = Σi xi2 / n - m2

v = Σi (xi - m)2 / n

= Σi (xi2 - 2 m xi + m2) / n

= (Σi xi2 - Σi 2 m xi + Σi m2) / n

= (Σi xi2 - Σi 2 m xi + Σi m2) / n

= (Σi xi2 - 2 m Σi xi + Σi m2) / n

= Σi xi2 / n - 2 m Σi xi / n + Σi m2 / n

= Σi xi2 / n - 2 m2 + Σi m2 / n

= Σi xi2 / n - 2 m2 + n m2 / n

= Σi xi2 / n - 2 m2 + m2

= Σi xi2 / n - m2

 この別式v = Σi xi2 / n - m2は「分散=二乗の平均-平均の二乗」であることを示しています。

 次に、それぞれのデータに頻度(f)があることを示す度数分布表のデータの頻度と偏差を求めましょう

d

1

2

3

4

5

x

1

5

3

4

6

20

 f

2

3

5

4

1

15

m = (Σi xi * fi) / Σi fi

= [(1 * 2) + (5 * 3) + (3 * 5) + (4 * 4) + (6 * 1) / 15

= (2 + 15 + 15 + 16 + 6) / 15

= 54 / 15 = 3.6

v = [Σi (xi - m) * fi] / Σi fi

= [(1 - 3.6)2 * 2 + (5 - 3.6)2 * 3 + (3 - 3.6)2 * 5 + (4 - 3.6)2 * 4

+ (6 - 3.6)2 * 1 ] / 15

= [(2.6)2 * 2 + (1.4)2 * 3 + (0.6)2 * 5 + (0.4)2 + (2.4)2 * 1 ] / 15

= [6.76 * 2 + 1.96 * 3 + 0.36 * 5 + 0.16*4 + 5.76 * 1 ] / 15

= [13.52 + 5.88 + 1.8 + 0.64 + 5.76] / 15

= 27.6 / 15 = 1.84

 さらに、次は同じデータの確率分布表です。

d

1

2

3

4

5

x

1

5

3

4

6

20

 p

2/15

3/15

5/15

4/15

1/15

1

m = Σi xi * pi

= [(1 * 2 / 15) + (5 * 3 / 15) + (3 * 5 / 15) + (4 * 4 / 15) + (6 * 1 / 15)

= (2 + 15 + 15 + 16 + 6) / 15

= 54 / 15 = 3.6

v = Σi (xi - m)2 * pi

= [(1 - 3.6)2 * 2 / 15 + (5 - 3.6)2 * 3 / 15 + (3 - 3.6)2 * 5 / 15

+ (4 - 3.6)2 * 4 / 15 + (6 - 3.6)2 * 1 ] / 15

= [(2.6)2 * 2 + (1.4)2 * 3 + (0.6)2 * 5 + (0.4)2 + (2.4)2 * 1 ] / 15

= [6.76 * 2 + 1.96 * 3 + 0.36 * 5 + 0.16*4 + 5.76 * 1 ] / 15

= [13.52 + 5.88 + 1.8 + 0.64 + 5.76] / 15

= 27.6 / 15 = 1.84

 このように、同じ原データは度数分布でも確率分布でも平均と分散が同じ結果になることを確認して、以下では確率分布の式を使います。

 確率分布の平均と分散を計算するときに便利な次のE(X), V(X)の式が使われます。平均(m)は期待値(Expectation, Expected value: E)とも呼ばれます。

m = E(X) = Σi xi * pi = 1/n Σi xi

v = V(X) = Σi (xi - m)2 * pi= 1/n Σi (xi - m)2

 ここでpi = P(X = xi)は確率変数(X)がxi のときの確率、mはデータの平均、nはデータの個数を示します。V(X)を期待値(E)で示すと

V(X) = E[(X - m)2] = Σi (xi - m)2 * pi

 になることは、E(X) = Σi xi * piのxiを(xi - m)2に置き換えれば理解できます。V(X) = E[(X - m)2]を言葉で表現するならば、「分散V(X)は(X - m)2の平均(期待値)である」ということなります。

 確率分布の平均Eには次の性質があります。

 E の性質(1):E(X + Y) = E(X) + E(Y)

  E(X − Y) = E(X) − E(Y)

 E の性質(2):E(aX + b) = a E(X) + b

(a = 0):E(b) = b

(b = 0):E(a X) = a E(X)

 E の性質(3):E[E(X)] = E(X)

 E の性質(4):E(XY) = E(X) E(Y) [X, Y:独立]

E の性質(1):E(X + Y)

= Σi (xi + yi) pi←E(X) = Σi xi pi

= Σi (xi pi + yi pi)←piを分配

= Σi xi pi + Σi yi pi←Σiを分配

= Σi xi pi + Σi yi pi←a, bを前に

= E(X) + E(Y)←E(X) = Σi xi pi

E(X − Y)

= Σi (xi - yi) pi←E(X) = Σi xi pi

= Σi (xi pi - yi pi)←piを分配

= Σi xi pi - Σi yi pi←Σiを分配

= Σi xi pi - Σi yi pi←a, bを前に

= E(X) − E(Y)←E(X) = Σi xi pi

E の性質(2):E(aX + b)

= Σi (a xi + b) pi←E(X) = Σi xi pi

= Σi (a xi pi + b p)←piを分配

= Σi a xi pi + Σi b pi←Σiを分配

= a Σi xi pi + bΣi pi←a, bを前に

= a E (X) + b←E(X) = Σi xi pi ; [1] Σi pi = 1

E の性質(3):E[E(X)]

= E(m)←E(X) = mi

= 1/n Σi m←E(m) = 1/n Σi m

= 1/n n m←Σi m = n m

= m←1/n n = 1

= E(X)←m = E(X)

E の性質(4):E(XY)

 ここにトランプのエース(A)1枚と、「2」のカード2枚を次のように用意し

これを裏返してランダムに1枚引いたときのカードをXとします。次にそのカードを戻して、もう1枚引いたときのカードをYとします。そうするとXとYは無関係(独立)になります(独立でない場合→後述「非独立の確率変数」)。そのときの同時確率分布は次の表で示されます。

X:Y

Y =「A」

Y =「2」

X =「A」

1/3 * 1/3 = 1/9

1/3 * 2/3 = 2/9

1/9 + 2/9 = 3/9 = 1/3.

X =「2」

2/3 * 1/3 = 2/9

2/3 * 2/3 = 4/9

2/9 + 4/9 = 6/9 = 2/3.

1/9 + 2/9 = 3/9 = 1/3

2/9 + 4/9 = 6/9 = 2/3

1

 たとえば、1枚目が「A」であり、2枚目が「2」であるときの確率P(X=「A」, Y=「2」)は、1/3 * 2/3 =2/9になることは理解できます。そして、この確率は、X=「A」の確率P(X=「A」)を示す(横)和1/3と、Y=「2」の確率P(Y=「2」)を示す(縦)和2/3の積になることを確認します。ほかのマスに対応するP(X=「A」, Y=「A」)=1/3 * 1/3 =1/9、P(X=「2」, Y=「A」)2/3 * 1/3 =2/9、P(X=「2」, Y=「2」)2/3 * 2/3 = 4/9についても同様です。よって

E(XY) = E(X) E(Y) [X, Y:独立]

ここでX, Yはそれぞれの確率変数を示します。よって積E(XY)はそれぞれのマスにある積算を示し、E(X) E(Y)は確率の行和と列和の積を示します。

 以上はカードの種類が「3」「4」…のように増えても同じです。そこで一般化して、次の(X, Y)の確率分布を見ます(X, Y:独立)。

X:Y

y1

y2

...

x1

p11

p12

...

p1.

x2

p21

p22

...

p2.

...

...

...

...

...

p.1

p.2

...

1

E(X Y) = Σi Σj xi yj pij←表のp11, p12, ..., pnpを個別に足す

= Σi Σj xi yj pi. p.j←表の行と列をまとめて全部足す

= Σi xi pi. Σj yj p.j←Σi Σj xi yj = Σi xi Σj yj

= E(X) E(Y)

 確率分布の分散Vには次の性質があります。

 Vの性質(1): V(X) = E(X2) - [E(X)]2

Vの性質(2): V(aX + b) = a2 V(X) ←a2とb=0に注意

Vの性質(3): V(X + Y) = V(X) + V(Y)[ X, Y:独立]

 Vの性質(4): V(X − Y) = V(X) + V(Y)[X, Y:独立] ←「+」に注意

 それぞれを以下のように導きます。

(1)V(X) = E[(X - m)2]←分散の定義

= E(X2 - 2 m X + m2)←かっこ(...)内を展開

= E(X2) - 2 m E(X) + m2←E(X + Y) = E (X) + E (Y)

= E(X2) - 2 m2 + m2←m = E(X)

= E(X2) - m2← - 2 m2 + m2 = - m2

= E(X2) - [E(X)]2←m = E(X)

(2) V(aX + b) = E{[aX + b - E(a X + b)]2}←V(X) = E[(X - E(X))2]

= E{[aX + b - (a E(X) + b)]2}←E(aX) = a E(X) (Eの性質)

= E{[aX + b - a E(X) - b]2}←(...)を外す

= E{[aX - a E(X)]2}←bを消去

= E(aX - a m)2←E(X) = m

= E[a2(X - m)2]←aを二乗して前へ

= a2 E(X - m)2←E(aX) = a E(X) (Eの性質)

= a2 V(X)←V(X) = E(X - m)2 (定義)

(3) V(X + Y) [X, Y:独立]

= E{(X + Y)2} - {E(X + Y)}2←V(X) = E(X2) - [E(X)]2

= E(X2 + 2XY + Y2} - {E(X + Y)}2←展開

= E(X2) + 2E(XY) + E(Y2) - {E(X + Y)}2←Eを配分

= E(X2) + 2E(XY) + E(Y2) - {E(X) + E(Y)}2←V(X) = E(X2) - [E(X)]2

= E(X2) + 2E(XY) + E(Y2) - {[E(X)]2 +2 E(X) E(Y) + [E(Y)]2}←展開

= E(X2) - [E(X)]2 + 2[E(XY) - E(X)E(Y)] + E(Y2) - [E(Y)]2}←整理

= V(X) + 2[E(XY) - E(X)E(Y)] + V(Y)←V(X) = E(X2) - [E(X)]2

= V(X) + V(Y)←E(XY) = E(X)E(Y) [X, Y:独立]

(4) V(X − Y) = V(X + (-1) Y)

= V(X) + V[(-1) Y]V(X+Y) = V(X) + V(Y) [X,Y独立]

= V(X) + (-1)2 V(Y)V(a X) = a2 V(X)

= V(X) + V(Y)

*平均Eと分散Vの性質については小寺(2002:97-111)を参照しました。

●非独立の確率変数

 確率変数が独立していないときは、E(XY) = E(X) E(Y), V(X+Y) = V(X) + V(Y)にはなりません。たとえばトランプのエース(A)1枚と、「2」のカード2枚を次のように用意し

これを裏返してランダムに1枚引いたときのカードをXとします。次にそのカードを戻さないで、残る2枚の中からもう1枚引いたときのカードをYとします。そうすると、2回目に引くカードの確率は1回目に引かれたカードの種類に依存するので、XとYは無関係(独立)ではなくなります。そのときの同時確率分布は次の表で示されます。

X:Y

Y =「A」

Y =「2」

X =「A」

1/3 * 0 = 0

1/3 * 1 =1/3

0 + 1/3= 1/3.

X =「2」

2/3 * 1/2 = 2/6 =1/3

2/3 * 1/2 = 2/6 = 1/3

1/3 + 1/3 = 2/3.

0 + 1/3 = 1/3

1/3 + 1/3= 2/3

1

 たとえば、1枚目が「A」のとき確率は1/3であり、そのカードを戻さないで2枚目が「2」であるときの確率は「A」がなくなっているので、「2」のカード2枚の中から1枚をとるのでそれが「2」になる確率は1/3 * 1 =1/3になります。確率の行和も列和も先に見た独立の場合と同じになりますが、、この確率は、X=「A」の確率P(X=「A」)を示す(横)和1/3と、Y=「2」の確率P(Y=「2」)を示す(縦)和2/3の積にはなっていないことを確認できます1/3≠1/3 * 1/3:。ほかのマスに対応するP(X=「A」, Y=「A」)、P(X=「2」, Y=「A」)、P(X=「2」, Y=「2」)についても同様です。そこで

E(XY) ≠ E(X) E(Y) ... X, Y:非独立

 また、先に見たとおり

V(X + Y) = V(X) + V(Y) ... X, Y:独立

を証明するときの途中の式で

E(XY) = E(X) E(Y) ... X, Y:独立

を使っているので、X, Yが非独立であれば、次のようになります。

V(X + Y) ≠ V(X) + V(Y) ... X, Y:非独立

二項分布確率

 ある事象が起こる確率にはさまざまなものがあります。たとえば、サイコロには{1, 2, 3, 4, 5, 6}という目があるので、1回サイコロを投げるとき(「試行」と言います)、それぞれの目「1」「2」…が出る確率はそれぞれ1/6ずつです。これらの目の中の1つ、たとえば「1」が出る確率は1/6なので、逆に「1」が出ない確率は1 - 1/6 = 5/6です。次の表のF (False)は「1」が出ないことを示し、T (True)は「1」が出ることを示しています。確率の総和が1になることを確認してください(5/6 + 1/6 = 1)。

「1」

Tの数

確率

T

1

1/6≒0.167

F

0

5/6≒0.833

 次にサイコロを2回投げる場合(試行回数n=2)を考えましょう。たとえば1回目がFで2回目がTとすると、これをF, Tと書きます。4つの場合のそれぞれの確率は、2つのサイコロでT/Fの確率の積になります[footnoteRef:3]。この場合も確率の総和は1です(25/36 + 5/36 + 5/36 + 1/36 = 1)。 [3: 互いに影響しない(独立な)複数の事象の確率はそれぞれの事象の確率の積になります。たとえば、ある趣味の会に、1/2の確率で出席するAさんと1/3の確率で出席するBさんの2人が同時に出席する確率は(1/2) * (1/3) = 1/6になります。もし、AさんとBさんが知り合いで誘いあってこの趣味の会に出席することがあるときは、互いに独立していないので、このような確率の積を使うことができません。一方、2つのサイコロの目の出方はそれぞれ独立しています。]

「1」

Tの数

確率

T, T

2

(1/6) * (1/6) = 1/36≒0.028

T, F

1

(1/6) * (5/6) = 5/36≒0.139

F, T

1

(5/6) * (1/6) = 5/36≒0.139

F, F

0

(5/6) * (5/6) = 25/36≒0.694

 さらに、サイコロを3回投げる場合(試行回数n=3)を考えます。この場合も確率の総和は1になります。

「1」

Tの数

確率

T, T, T

3

(1/6) * (1/6) * (1/6) = 1/216≒0.005

T, T, F

2

(1/6) * (1/6) * (5/6) = 5/216≒0.023

T, F, T

2

(1/6) * (5/6) * (1/6) = 5/216≒0.023

T, F, F

1

(1/6) * (5/6) * (5/6) = 25/216≒0.116

F, T, T

2

(5/6) * (1/6) * (1/6) = 5/216≒0.023

F, T, F

1

(5/6) * (1/6) * (5/6) = 25/216≒0.116

F, F, T

1

(5/6) * (5/6) * (1/6) = 25/216≒0.116

F, F, F

0

(5/6) * (5/6) * (5/6) = 125/216≒0.579

 ここで、たとえばサイコロを3回投げて順番を問題にせずに、全部で2回「1」が出る場合(Tの数=2)の確率を求めると、上の表から

「1」

Tの数

確率

T, T, F

2

(1/6) * (1/6) * (5/6) = 5/216≒0.023

T, F, T

2

(1/6) * (5/6) * (1/6) = 5/216≒0.023

F, T, T

2

(5/6) * (1/6) * (1/6) = 5/216≒0.023

を合計した確率、つまり、(5/216) + (5/216) + (5/216) = 15/216≒0.069になることがわかります。これは「1」(T)が2回出る場合の確率(5/216)を3倍した数です。それぞれの場合の確率5/216は(1/6)2 (5/6)、つまりTの確率1/6の2回分とFの確率5/6の1回分の積になります。

 次にT, T, Fだけでなく、他にもT,F,TとF,T,Tがあるので、この積5/216を3倍します。この倍数(=3)を求めるためには、このように少ない試行回数(3回)ならばすぐ計算できますが、それが多くなると一般式を使わなければなりません。n回の試行でTがr回選ばれる場合の数はnCrという「組み合わせ」(Combination: nCr)の値になります[footnoteRef:4]。ここでは、Tが2個でFが1個の組み合わせになるので3C2で計算します。そこで、3回の試行でTが2回出る確率は [4: これは互いに区別のつく3個の物{a, b, c}の中から任意の2個(= T)を取り出す場合の数と同じです。もし、取り出す順番を考えるならば、ab, ac, ba, bc, ca, cbという6個の場合があります。これが「順列」(Permutation: nPr)で、nPr = n (n – 1)(n – 2) … (n – r + 1). ここで、順番を考慮しなければ(「組み合わせ」3C2)、abとba, acとca、bcとcbはそれぞれ同じなので場合の数を2で割らなければなりません。この2は2P2の順列(2! = 2 x 1)です。よって3C2 = (3 * 2) / (2 * 1). 一般式はnCr = nPr / r! = [n (n – 1) (n – 2) … (n – r + 1)] / r! = n! / [r! (n - r)!]]

3C2 (1/6)2 (5/6) = (3 * 2) / (2 * 1) (1/6)2 (5/6) = 15/216≒0.069

 この確率(二項確率Binomial probability: Binom)を一般式で示すと

Binom(x, n, p) = nCx (p)x (1 – p)n - x

 ここでnはサイコロを投げた総回数(試行数)、xは成功回数(Tの数)、pはTの確率(成功確率:1/6)、1 - pはFの確率(失敗確率:5/6)を示します。次の表はExcel関数Binomを使って計算した二項確率です。xが2(Tの数が2)のときの二項確率が先に見たように、15/216 (=0.06944…)になっています。

N

3

x↓: n=3

BinPr

P

0.1667

0

0.57870

M

0.5000

1

0.34722

V

0.4167

2

0.06944

3

0.00463

 なお、上左表では個数(N)と確率(P)のほかに、平均(M=E(X))と分散(VR=V(X))も示してあります。それぞれ次のように数理的に導出されます。

X

1

0

P

p

q

1

 n回の試行での確率変数X1, X2, …, Xnについてのそれぞれの平均(M)と分散(V)を計算します。

E(Xi) = Σi xi pi = 1 * p + 0 * q = p

V(X) = Σi (xi - m) * pi

= (1 - p)2 * p + (0 - p)2 * q

= q2 * p + p2 * q ← p + q = 1

= p * q * (q + p)

= p * q← p + q = 1

 この平均と分散がn回のXについて考えると

二項分布の平均(M):E(X) = n E(Xi) = n * p

二項分布の分散(V):V(X) = n * V(Xi) = n * p * q

 下左表は二項分布の試行数(N)、確率(P)、平均(M)、分散(V)を示します。平均はN*P、分散はN*P*(1-P)になります。下右表は試行回数を3, 5, 10, 20, 30にしたときの、それぞれの確率分布を示します。下図は、それらを結んだ平滑線です。試行数(N)が多くなるにつれ、左右対称の釣鐘状の分布(正規分布)に近づきます。

N

10

x↓: n→

n=3

n=5

n=10

n=20

n=30

P

0.1667

0

0.5787

0.4019

0.1615

0.0261

0.0042

M

1.6667

1

0.3472

0.4019

0.3230

0.1043

0.0253

V

1.3889

2

0.0694

0.1608

0.2907

0.1982

0.0733

3

0.0046

0.0322

0.1550

0.2379

0.1368

4

 

0.0032

0.0543

0.2022

0.1847

5

 

0.0001

0.0130

0.1294

0.1921

6

 

0.0022

0.0647

0.1601

7

 

0.0002

0.0259

0.1098

8

 

0.0000

0.0084

0.0631

9

 

0.0000

0.0022

0.0309

10

 

 

0.0000

0.0005

0.0130

 

 上左図はそれぞれの試行数(N)の確率分布を比較するために曲線で示しましたが、二項確率はNが離散的なので、本来ならば右図のようにそれぞれのNの確率を間隔のない棒グラフで示すべきです。

正規分布確率

 先に見たように、二項分布のそれぞれの確率は成功回数(x)、試行回数(n)、成功確率(p)で求められます。Excel関数ではBINOMDIST(x, n, p, 0)を使います。一方、先述の正規分布の描く曲線は、平均と分散から得られる確率密度を使います。nが30ほどになると、次の表が示すように二項確率(BinPr)と正規確率密度(NormPr)の値は近似します。

N

30.000

x↓: n=30

BnPr

NmPr

BnCum

NmCum

NmCumC

P

0.167

0

0.004

0.0097

0.0042

0.0072

0.0137

M

5.000

1

0.025

0.0287

0.0295

0.0250

0.0432

V

4.167

2

0.073

0.0664

0.1028

0.0708

0.1103

3

0.137

0.1209

0.2396

0.1636

0.2312

4

0.185

0.1733

0.4243

0.3121

0.4032

5

0.192

0.1954

0.6164

0.5000

0.5968

6

0.160

0.1733

0.7765

0.6879

0.7688

7

0.110

0.1209

0.8863

0.8364

0.8897

8

0.063

0.0664

0.9494

0.9292

0.9568

9

0.031

0.0287

0.9803

0.9750

0.9863

10

0.013

0.0097

0.9933

0.9928

0.9965

 下左図はn=30のときの確率分布を示します。棒グラフは二項確率分布を表し、折れ線は対応する正規分布を表します。ほぼ一致していることを確認してください。下右図は、それぞれの累積確率分布を示します。

 

 それぞれのExce;関数は

二項確率(離散:BnPr):=BINOMDIST(x,n,p,0)

正規確率(連続:NmPr):=NORMDIST(x,m,v,0)

二項累積確率(離散:BnCum):=BINOMDIST(x,n,p,1)

正規累積確率(連続:NmCum):=NORMDIST(x,m,v,1)

 上右図には、正規累積確率NmCumと補正正規累積確率NmCumCを示しました。二項確率に近似する正規累積確率NmCumは、先に見たように、1点での確率ではなく確率密度を示すので、累積二項確率とは一致しません。両者を一致させるために次のように、xに0.5を足して「連続補正」(Continuity correction)をします(稲垣2003:104)。

補正正規累積確率(連続:NmCumC):=NORMDIST(x+0.5,m,v,1)

 この理由は上右図を見るとわかります。補正正規累積確率はx軸を右に0.5移動した位置、つまり、それぞれの棒の長さ(1)の半分(0.5)移動したy軸の長さになるので、これで、対応するxに左側全部の面積を足したことになるからです。

 さて、このように二項分布に近似する正規分布を求めると、正規分布は連続的なx値についても無限に計算できますから、二項分布のxのような整数値でなくても、確率(密度)を求めることが可能になります。そこで、引き続き二項分布を使って、試行回数(N)を非常に多くしてみましょう。次は、N=10000の場合です。確率(P)はNに反比例するように、小さくします(N * P = 10)。

N

10000

x↓

BnPr

NmPr

BnCum

NmCum

NmCumC

P

0.001

0

0.000

0.0008

0.0000

0.0008

0.0013

M

10.000

1

0.000

0.0022

0.0005

0.0022

0.0036

V

9.990

2

0.002

0.0051

0.0028

0.0057

0.0088

3

0.008

0.0109

0.0103

0.0134

0.0199

(…)

(…)

(…)

(…)

(…)

(…)

 下左図は二項分布の確率(BnPr)と正規分布の確率密度(NmPr)を示し、下右図は二項分布の累積確率(BnCum)、正規分布の累積確率密度(NmCum))、正規分布の補正累積確率密度(NmCumC)を示します。

 二項確率はサイコロの目のように数値が離散的で、かつ成功確率(P)が想定できるときにしか使えませんが、正規分布確率は連続的な数値の平均(M)と分散(V)がわかれば、数値に対応する確率密度を計算することができます。

乱数乱数の確率

 先に見た投げたサイコロの目や、円盤に投げた針が示す角度のように、それぞれの数値が次の数値を予測することができず、それぞれの数値や範囲に対応する度数が均等になるような数は乱数(ramdam numbers)とよばれます。乱数を生成するエクセル関数Rnd()は呼び出される度に、[0, 1)の範囲内で、次のように小数点以下15桁まで出力されます。

0.288230019515856

0.569841439211386

0.616048897998326

(…)

 はじめに次のプログラムで乱数を出力させます。

Function Test1(Xnp) '乱数実験1

Dim i&, Dn(10, 1)

Dn(0, 0) = "Ex1": Dn(0, 1) = "Rnd"

For i = 1 To 10

Dn(i, 0) = i

Dn(i, 1) = Rnd()

Next

Test1 = Dn

End Function

出力:

Ex1

Rnd

1

.9276

2

.5495

3

.9850

4

.2122

5

.6167

6

.0829

7

.8321

8

.5783

9

.0458

10

.4628

 次に乱数の確率が一定の階級の範囲内で等しいかどうかを確かめるプログラムを作ります。ここでは10個の階級を用意します。

Function Test1(Xnp) '実験2

Dim i&, P%, Dn(10, 1)

Dn(0, 0) = "Ex.2": Dn(0, 1) = "Cnt"

For i = 1 To 10 ^ 6

P = Int(Rnd() * 10) + 1

Dn(P, 0) = P

Dn(Int(P), 1) = Dn(Int(P), 1) + 1

Next

Test1 = Dn

End Function

上のPは乱数[0, 1)を10倍した数[0, 10)の整数部に1を足したもので、これを配列Dnの位置とし、この配列位置の数値を全体で100万個分足しあげます。

出力:

Ex.2

Cnt

1

99613

2

99735

3

100225

4

100106

5

99997

6

100105

7

100022

8

100145

9

99716

10

100336

 このように100万個の乱数がそれぞれの階級にほぼ均等に分配されていることがわかります。

●乱数の平均

 乱数[0, 1)を多数発生させ、その平均(=.5)を実験的に確かめます。プログラム(→後述)を使って、たとえば10万個の乱数を発生させると、それらの乱数の平均はおよそ0.5となり、分散は0.0843...になりました。乱数の範囲が[0, 1)ですから、この平均がおよそ0.5になることは想像できますが、分散がこの数値(0.0843....)になる理由は直ちにはわかりません。ここでは、はじめに具体的な例で実験的に平均と分散を求め、次に数理的にそれを一般化します。

 次のような数値(x)と、その頻度(f)からなる頻度分布の例を見ましょう。

x

0

0.1

0.2

...

0.9

f

100

100

100

...

100

1000

 この頻度分布表を使って平均(m)を求めると次のようになります。

m = [(0 * 100) + (0.1 * 100) + (0.2 * 100) + ... + (0.9 * 100)] / 1000

 次に、この頻度(f)を確率(P)に変えて、次の確率分布にします。

X

0

0.1

0.2

...

0.9

P

1 / 10

1 / 10

1 / 10

...

1 / 10

1

 上表のように確率(p)の和はかならず1になります。

[1]Σi pi = 1

 この確率分布を使って平均(m)を求めます。分数の分母のゼロの連続を避けるためにマイナスの指数を使います。下の第一式が先の頻度分布表と同じであることを確かめてください。

m = Σi xi pi(i = 0, 1, 2, ..., 9)

= (0 * 10-1) + (10-1 * 10-1) + (0.2 * 10-1) + ... + (0.9 * 10-1)

= (0 + 0.11 + 0.2 + ... + 0.9) * 10-1←各項の10-1を外へ

= (0 + 1 + 2 + ... + 9) * 10-1 * 10-1←(*)内の各項の10-1を外絵

= (0 + 1 + 2 + ... + 9) * 10-2 ←分母を整理

= (9 * 10 / 2) * 10-2 ←脚注[footnoteRef:5] [5: 数列(1, 2, …, n)の和=n (n + 1) / 2、よってn = 9のときの和は45.←高校数学B. わかりやすいようにこの部分を括弧(...)で囲みます。]

= 45 * 10-2 = 0.45

 次に小数点以下2桁までの乱数の平均(m')は

m' = Σi xi pi(i = 0, 1, 2, ..., 99)

= (0 * 10-2) + (0.01 * 10-2) + (0.02 * 10-2) + ... + (0.99 * 10-2)

= (0 + 0.01 + 0.02 + ... + 0.99) * 10-2

= (0 + 1 + 2 + ... + 99) * 10-2 * 10-2

= (0 + 1 + 2 + ... + 99) * 10-4

= (99 * 100 / 2) * 10-4

= 4950 * 10-4 = 0.495

 さらに、小数点以下3桁までの乱数の平均(m")は

m" = Σi xi pi(i = 0, 1, 2, ..., 999)

= (0 * 10-3) + (0.001 * 10-3) + (0.002 * 10-3) + ... + (0.999 * 10-3)

= (0 + 0.01 + 0.02 + ... + 0.999) * 10-3

= (0 + 1 + 2 + ... + 999) * 10-3 * 10-3

= (0 + 1 + 2 + ... + 999) * 10-6

= (999 * 1000 / 2) * 10-6

= 499500 * 10-6 = 0.4995

 このように乱数の間隔を次第に小さくし乱数の種類を多くしていくと、乱数の平均は次第に0.5に近づくことがわかります。後述するように、乱数の間隔を無限にゼロ(0)に近づければ、平均は無限に0.5に近づくことが予想できます。

●乱数の分散

 先に見たように、確率分布の分散は

  V(X) = E(X2) - [E(X)]2

 そこで、分散V(X)を求めるには、先に平均E(X) = 0.5を求めてあるので、あとはE(X2)がわかればよいことになります。

X

0

0.1

0.2

...

0.9

X2

02

(0.1)2

(0.2)2

(0.9)2

P

0.1

0.1

0.1

...

0.1

1

E(X2) = Σi Xi2 pi(i = 0, 1, 2, ..., 9)

= 02*10-1 + (10-1)2*10-1 + (0.2)2*10-1 + (0.3)2*10-1 + ... + (0.9)2*10-1

= [02 + (0.1)2 + (0.2)2 + (0.3)2 + ... + (0.9)2] * 10-1

= [0 + 12 + 22 + 32 + ... + 92] * 10-2 * 10-1

= [0 + 12 + 22 + 32 + ... + 92] * 10-3

= [9 * (9 + 1) * (2 * 9 + 1) / 6] * 10-3←注[footnoteRef:6] [6: 数列(12, 22, …, n2)の和=n (n+1) (2n+1) / 6、よってn=9のときの和は285.←高校数学B. わかりやすいようにこの部分を括弧[...]で囲みます。]

= 285 * 10-3 = 0.285

よって、分散V(X)は

V(X) = E(X2) - [E(X)]2 = 0.285 - (0.5)2 = 0.285 - 0.25 = 0.035

次に、小数点以下2桁までの乱数の分散V(X)'を求めます。

E(X2)' = Σi Xi2 pi(i = 0, 1, 2, ..., 99)

= 02*10-2+(0.01)2*10-2+(0.02)2*10-2+(0.03)2*10-2+ ... + (0.99)2*10-2

= [0 + (10-2)2 + (0.02)2 + (0.03)2 + ... + (0.99)2] * 10-2

= [0 + 12 + 22 + 32 + ... + 992] * 10-4 * 10-2

= [0 + 12 + 22 + 32 + ... + 992] * 10-6

= [99 * (99 + 1) * (2 * 99 + 1) / 6] * 10-6

= 328350 * 10-6 = 0.32835

V(X)' = E(x2) - [E(x)]2 = 0.328 - (0.5)2 = 0.32835 - 0.25 = 0.07835

さらに、小数点以下3桁までの乱数の分散V"(X)は

E(x2)" = Σi xi2 pi(i = 0, 1, 2, ..., 999)

= 02*10-3+(0.001)2*10-3+(0.002)2*10-3+(0.003)2*10-3+...+ (0.999)2*10-3

= [0 + (0.001)2 + (0.002)2 + (0.003)2 + ... + (0.999)2] * 10-3

= [0 + 12 + 22 + 32 + ... + 9992] * 10-6 * 10-3

= [0 + 12 + 22 + 32 + ... + 9992] * 10-9

= [999 * (999 + 1) * (2 * 999 + 1) / 6] * 10-12

= 332833500 * 10-12 = 0.3328335

V(X)" = E(x2)" - [E(x)]2 = 0.3328335 - (0.5)2 = 0.3328335 - 0.25 = 0.0828335

 この段階まで求めた分散0.0828335が、先に実験的に確かめた乱数の分散 0.0843...に近似することがわかりました。以上で、それぞれの数値に対応する確率を個別に区切ってその平均と分散を求めました。そのような個別の確率は離散的確率(discrete probability)と呼ばれます。

連続的確率

 たとえば、{1, 2, 3, 4, 5, 6}という目をもつサイコロを次々に投げたとき、次に出る目は[1, 6]の範囲内でまったく予測できませんが、それぞれの確率はすべて1/6で同じになります。このように確率が等しく、次の数値が予測できない数値は乱数(Random numbers)とよばれます。

 先に離散的確率変数の平均と分散を求めましたが、実は乱数の小数点以下の桁数は非常に大きく理論的には無限にあると考えられるので、厳密に言えば、確率分布表のpではなく、次のようなグラフと式で示される一様分布(uniform distribution)の確率密度(probability density)の関数 f(x)を使わなければなりません。

f(x) = 1 / (b - a) [a ~ b]

0 [-∞ ~ a, b ~ +∞]

ここで、a, b はそれぞれ区間の下端(開始点)と上端(終了点)を示します。[0, 1)の区間にある乱数では、a = 0, b = 1になります。xが0以下または1以上のときはf(x)はゼロ(0)になります。

f(x)' = 1 / (1 - 0) =1 [0 ~ 1]

 はじめに、このような一様分布の確率密度関数の全体の値(総和:S)を積分を使って求めます。先の離散的な確率ではシグマ(Σ:和)を使って、個別の確率を掛けて足し合わせていきましたが、ここでは連続的な確率になるので、次のような定積分を使います(←高校数学II)。

S = dx = dx = = 1 - 0 = 1

 上式では[0 ~ 1]の区間で計算していますが、特定の点での積分値はゼロになるので[footnoteRef:7]、乱数の区間[0 ~ 1)でも同じです。また、[0 ~ 1]の区間以外のf(x)の値はゼロなので、区間[-∞ ~ +∞]にしても同じように結果は1になり、このことは一様分布の確率の総和が1になることを示しています。 [7: dx = = F(k) − F(k) = 0 (F(x)はf(x)の原始関数)]

 さて、このf(x) = 1 を用いて連続的確率変数の平均を求めると

E(x) = dx = dx = = (12 / 2) - (02 / 2) = 1 / 2

 よって、連続的な乱数の平均値は1 / 2 = 0.5になります。

  次に分散を求めるために、二乗の平均E(x2)を計算します。

E(x2) = dx = dx = = (13 / 3) - (03 / 3) = 1 / 3

 よって、分散V(x)は

V(x) = E(x2) - [E(x)]2 = (1 / 3) - (1 / 2)2 = (1 / 3) - (1 / 4)

= (4 / 12) - (3 / 12) = 1 / 12 = 0.0833...

 以上で、先に乱数の実験で求めた分散 0.0843...と、小数点以下3桁の離散的確率変数で求めた分散0.0828が、連続的確率変数を使って数理的に求めた分散1 / 12 = 0.0833...と近似することを確かめました。

*一様分布の平均と分散については永田(2005: 61, 66)を参照しました。

●プログラム

Sub RndTest() '●乱数の和・平均・分散

Dim i&, R&, Xn

R = 50000: ReDim Xn(R, 1): Rnd (-1) '繰り返し数:シード値一定

For i = 1 To R

Xn(i, 1) = Rnd '乱数[0, 1)

Next i

Cells(1, 1) = "和": Cells(1, 2) = Sm(Xn) '和

Cells(2, 1) = "平均": Cells(2, 2) = Av(Xn) '平均

Cells(3, 1) = "分散": Cells(3, 2) = Vr(Xn) '分散

End Sub

 R個の乱数を配列Xnに格納し、Xnの和、平均、分散をユーザー関数Sm, Mem, VrMで求め、該当するセルに出力します。

確率分布

 これから見ていく、和・平均・分散などの各種の統計値や、相関係数・連関係数・距離係数などの関係値の確率を計算するとき、一様分布に近似する乱数(一様分布乱数)を使います[footnoteRef:8]。対象となる統計値・関係値を、一様分布乱数データの統計値・関係値と比較することで、その対象が偶然でも普通に起きる数値であるのか、偶然では起きない稀な数値であるのかが判断できるようになります。 [8: 正規分布乱数を使わない理由は、データ分布に存在すると想定される分布(正規分布)ではなく、それに依存しない、まったくの偶然によって生じる数値(一様分布)と比較するためです。また、正規分布乱数による確率は、分布の中心を示す平均などの確率と比較することはできますが、分布のバラツキを見る分散や標準偏差では、正規分布乱数は中央に集中するため、必然的にその値が小さくなり、比較が不可能になります。]

 次は、一様分布乱数(平均=5, 標準偏差=1, 範囲[0, 1])を使って実験して求めた確率(縦軸)・個数(横軸)・平均値の関係を示す表です。

平均値の確率分布表

平均値

10

20

30

40

50

60

70

80

90

100

.05

.348

.393

.415

.426

.431

.439

.444

.446

.451

.452

.10

.378

.418

.433

.440

.446

.451

.456

.458

.460

.462

.15

.401

.432

.444

.451

.457

.461

.464

.465

.468

.469

.20

.421

.445

.455

.460

.464

.468

.471

.472

.474

.475

.25

.438

.457

.465

.468

.471

.474

.476

.477

.480

.480

.30

.453

.465

.472

.475

.477

.480

.482

.482

.484

.484

.35

.465

.474

.479

.482

.483

.485

.487

.487

.488

.488

.40

.477

.483

.487

.488

.489

.490

.491

.491

.492

.493

.45

.488

.492

.494

.493

.495

.495

.496

.495

.496

.496

.50

.499

.499

.500

.499

.500

.500

.500

.499

.499

.500

.55

.510

.508

.506

.505

.505

.505

.504

.504

.503

.503

.60

.522

.516

.513

.511

.510

.509

.509

.508

.507

.507

.65

.534

.525

.520

.517

.515

.514

.513

.512

.511

.511

.70

.547

.533

.527

.524

.521

.520

.517

.517

.515

.515

.75

.561

.545

.535

.531

.528

.526

.523

.522

.520

.519

.80

.578

.556

.544

.539

.535

.531

.528

.528

.525

.524

.85

.597

.568

.554

.548

.543

.539

.535

.535

.532

.530

.90

.616

.585

.568

.559

.553

.549

.545

.543

.539

.538

.95

.651

.608

.589

.576

.567

.562

.557

.555

.551

.548

 この表から、たとえば、正規分布(平均=5, 標準偏差=1)を示す乱数から10個を抽出してその平均値を計算するという作業を多数回(5000)行います。すると、全体の5% (.05)は.35以下であり、50%(.50)は.50以下であり、95% (.95)は.65以下でした。このようなバラツキは、個数が100の場合には少なくなっています。次のグラフを見ると、個数が多くなるほど平均値のバラツキが小さくなるという、全体の傾向がわかります。

 データ数(N=10)が少ないと、有意性を示す5%点が小さく(.35以下