大数の法則と中心極限定理 part2 | 統計アラカルト [実践] | 逆ポーランド電卓の実践ウェブ rpn hacks!

逆ポーランド電卓の実践ウェブ rpn hacks!

逆ポーランド電卓rpnの実践ウェブ   
rpn hacks! アールピーエヌ・ハックスサイトマップ

rpn | 実践 | 統計アラカルト | 統計に関する話題をrpnで探求!統計的に検証してみよう。

HOME > 実践 > 統計アラカルト > 大数の法則と中心極限定理 part2

hatena twitter facebook rss ソーシャルブックマーク

大数の法則と中心極限定理 part2

前のページに戻るLinkIcon

 そもそも、中心極限定理は成り立つのか。

この疑問に答えるためには1934年まで待たなければなりませんでした。それまで中心極限定理は推論としてだけ存在していました。現在では中心極限定理が成立するための必要条件が発見されているので、条件を満たしていれば安心してガウス分布の性質を利用できます。

中心極限定理を試そう(一様分布)

 条件は大数の法則を実験したときと同じです。6面あるサイコロをイメージして、以下の実験を行ないます。ただし、平均を取ることを100回繰り返すのが異なります。

  • 1~6の一様分布から10個取り出して平均を取る。これを100回繰り返す。
  • 1~6の一様分布から100個取り出して平均を取る。これを100回繰り返す。

では、2つのケースを実験してみましょう。

  >rpn 6 ? -r 10 | rpn -c mean
  3.4


これを100回繰り返すのですが、面倒なのでバッチ処理にして計算します。以下の2行を100回コピーして、ファイルの"central.bat"に保存します。なお、sleepプログラムは乱数の初期化を確実に行なうために使います。

  rpn 6 ? -r 10 | rpn -c mean >>tmp
  rpn 1 -c sleep


以下のようにバッチファイルを実行します。

  >central.bat


実行後、tmpファイルに100回試行した平均値が格納されていますので、これを幹葉表示してみます。

  >rpn 100 * -c stemleaf <tmp
   22 | 99
   23 | 
   24 | 
   25 | 
   26 | 0
   27 | 0000
   28 | 00000
   29 | 000
   30 | 0000
   31 | 0000000
   32 | 000
   33 | 0000000000
   34 | 000000000
   35 | 00000000
   36 | 00000000
   37 | 0000
   38 | 000000
   39 | 0000
   40 | 00099999
   41 | 
   42 | 0
   43 | 000
   44 | 0000
   45 | 00999
   46 | 
   47 | 
   48 | 0


ばらつきが激しく全然、ガウス分布っぽくありませんね(9が出ているのは数値計算の誤差)。標本数が少なすぎるからでしょうか。次は標本数が100個の場合です。以下のrpn式を100回コピーして、"central.bat"に保存です。

  rpn 6 ? -r 100 | rpn -c mean >>tmp
  rpn 1 -c sleep


先にtmpを削除してバッチを実行します。実行結果はtmpにあるので先ほどと同じように幹葉表示してみます。

  >rpn 100 * -c stemleaf <tmp
   31 | 26678
   32 | 002224679
   33 | 003334556678999
   34 | 00011122234567788889
   35 | 1112333444456777888
   36 | 000111122225566678
   37 | 11345689
   38 | 234
   39 | 25
   40 | 0


今度は末広がりだった分布が中央にまとまってきました。確かに中心極限定理どおり、ガウス分布に近づいているように見えます。

中心極限定理を試そう(ガウス分布)

 次はガウス分布です。ガウス分布から取り出したデータの平均がガウス分布になるという合わせ鏡のような例です。

  • ガウス分布から10個取り出して平均を取る。これを100回繰り返す。
  • ガウス分布から100個取り出して平均を取る。これを100回繰り返す。

まず、以下の2行を100回コピーして、バッチファイルにして実行します(実行前にtmpを削除)。バッチファイルは"central.bat"です。

  rpn -c rand-gau -r 10 | rpn -c mean >>tmp
  rpn 1 -c sleep


バッチの実行後はtmpに平均値が格納されているので、幹葉表示にして確認してみます。

  >rpn 100 * -c stemleaf <tmp
  -9 | 6
  -8 |
  -7 | 13
  -6 | 167
  -5 | 4689
  -4 | 00113779
  -3 | 11222569
  -2 | 00233344578
  -1 | 002223578889
  -0 | 0111224566799
   0 | 0011225666777799
   1 | 0111469
   2 | 23557
   3 | 478
   4 | 1778
   5 | 3
   6 | 0
   7 | 5


元々がガウス分布だからなのか、標本数が10でもそれなりにガウス分布のようになります。ただ、釣鐘状とは言えず裾野が少々広いようです。次は表歩数が100個の場合です。以下の2行を100回コピーして、バッチにして実行してください(実行前にtmpを削除)。

  rpn -c rand-gau -r 100 | rpn -c mean >>tmp
  rpn 1 -c sleep


バッチを実行後、tmpファイルを幹葉表示にします。

  >rpn 100 * -c stemleaf <tmp
  -2 | 245
  -1 | 00000111222223455666679
  -0 | 00000001112233333334445666677888999
   0 | 00000112223333334455556777777789
   1 | 014689
   2 |
   3 | 1


理論平均値の0を中心にまとまってきています。やはり、ガウス分布に近づいているようです。

中心極限定理を試そう(指数分布)

 最後に指数分布です。同じように標本数10と100のケースで試してみます。

  • 指数分布から10個取り出して平均を取る。これを100回繰り返す。
  • 指数分布から100個取り出して平均を取る。これを100回繰り返す。

以下の2行を100回コピーして、バッチファイルにして実行してください(実行前にtmpを削除)。ファイル名は先ほどと同じです。

  rpn -c rand-exp -r 10 | rpn -c mean >>tmp
  rpn 1 -c sleep


バッチ実行後、同じようにtmpファイルを幹葉表示します。

  >rpn 100 * -c stemleaf <tmp
   3 | 556
   4 | 2
   5 | 57899
   6 | 001237799
   7 | 11122355677889
   8 | 0111247789
   9 | 0224589
   10 | 11223456789999
   11 | 001144555668
   12 | 045688
   13 | 112778
   14 | 011258
   15 | 00089
   16 | 5
   17 | 
   18 | 
   19 | 
   20 | 
   21 | 
   22 | 
   23 | 
   24 | 
   25 | 0


極端に離れた値もありますが、多くはまとまって存在しています。ただ、ガウス分布というには難のある分布形状です。次に以下の2行を100回コピーして、同様に中心極限定理を試してみます。

  rpn -c rand-exp -r 100 | rpn -c mean >>tmp
  rpn 1 -c sleep


tmpファイルを幹葉表示すると今度は裾野がかなり狭まっています。これもガウス分布に近づいているような感じです。

  >rpn 100 * -c stemleaf <tmp
   8 | 00123345567788999
   9 | 0000011111111222223334445566777788888999
   10 | 000011122444445566666667789999
   11 | 1123444556
   12 | 026


        *


 3つの分布について、中心極限定理どおりになるか実験してみました。平均する標本の数が多ければ多いほど、幹葉表示を見る限り、ガウス分布の形状に近づいているように思えます。

情報標本から作成した分布がガウス分布に従っているかどうか統計的に検定することもできます。手順が煩雑なので割愛しますが、このあたりの検定については、ビジネス統計(検定編)の適合度検定に詳しくあります。

中心極限定理の応用

 最後に中心極限定理の実用的な使い方を見てみます。以下のように正体の知れないデータがあったとして、その母平均を知りたいとします。

  >rpn 10 -c fold <unkown.txt
  0.0585 0.0587 0.0632 0.0605 0.0607 0.0588
  0.0586 0.0576 0.0626 0.0629 0.0595 0.0609
  0.059 0.0587 0.0591 0.0616 0.0584 0.0596
  0.058 0.0649 0.0587 0.0603 0.0586 0.0613
  0.0574 0.0813 0.059 0.0596 0.0588 0.0637
  0.0593 0.0868 0.059 0.0593 0.0598 0.0649
  0.0584 0.0817 0.0603 0.0581 0.0583 0.0649
  0.0571 0.0736 0.0621 0.0586 0.0592 0.0634
  0.0577 0.0699 0.0624 0.0589 0.0592
  0.0577 0.0646 0.061 0.0586 0.0585

  >rpn 1000 * -c stemleaf <unkown.txt
   5 | 7777788888888888888888999999999999
   6 | 00000111222233344449
   7 | 3
   8 | 116

  >rpn -c statinfo <unkown.txt
  デ ー タ        58
  最 小 値        0.0571
  最 大 値        0.0868
  範    囲        0.0297
  合 計 値(Σ)    3.5738
  平 均 値(μ)    0.0616172
  分 散 値(σ2)   3.46621e-05
  標準偏差(σ)    0.00588745
  分 散 値(s2)   3.52702e-05
  標準偏差(s)    0.00593887
  歪度(a3≒0)    2.79829
  尖度(a4≒3)    10.6786
  変動係数(ν)    0.0963833


平均は0.0616172で小数ですね。分散も小さいのでばらつきはないのかも知れません。歪度と尖度を見るとガウス分布ではなさそうでし、幹葉表示から感じられる指数分布にしては裾野が短すぎる気がします。

基本統計量からでは母集団の平均を推定することはできませんが、どうしても母集団の平均値を知りたい場合、中心極限定理を逆手にとると母平均との間に以下の関係が成り立ちます。

       _            s
  μ = x ± 1.96 { --- }
                   √n


μは母平均、x(バー付き)は標本平均、sは標本標準偏差、nはデータ数です。定数の1.96は95%信頼区間を示す統計量です。この数式に当てはめれば危険率5%で母平均の範囲を求めることができます。nは最低でも30個ですが、あればあるほどいいでしょう。

本当はs(標本標準偏差)はσで母集団の標準偏差なのですが、母集団の特性自体が分からないわけですから、sで代用しています。
式中の1.96は有意水準5%(95%信頼区間)ですが、より厳しく有意水準を1%(99%信頼区間)にするなら、2.58を使用します。逆に緩めな有意水準10%(90%信頼区間)なら1.64です。

では、この式に従ってさっそく計算してみましょう。

  >rpn -c mean <unkown.txt
  0.0616172

  >rpn -c ssdev <unkown.txt
  0.00593887


これで平均と標本標準偏差が計算できました。上の式をrpnで書き直すと次のようになります。

  >rpn .0616172 #x .00593887 #s 58 #n 1.96 @s @n r / * #r @x @r - @x @r +
  0.0600888 0.0631456


rpn式先頭の#xには標本平均の値、#sには標本標準偏差の値を設定してください。ちょっと問題はありますが、nの数が多ければ標準偏差を使うのも方法です。参考までにsdevを使うと値は0.00588745になります。

計算の結果、このデータの母平均は0.0600888~0.0631456(95%の信頼区間)ということになります。このように正体の知れないデータ群でも真の平均の区間を知ることができます。

実践統計アラカルトに戻るLinkIcon

警告rpnプログラムを実行するには、rpn試用版かrpn標準版が必要です(バージョンの違いはこちら)。

情報sleepはカレンダー・システムパッケージに同梱されています。statinfo, stemleaf, rand-gau, rand-expはrpnマイスターパッケージに同梱されています。foldはユーティリティパッケージに同梱されています。ssdevはビジネス統計(基礎編)に同梱されています。詳しくはプロダクトを参照ください。

統計アラカルト

統計的に検証してみよう

※実践コーナーのTOP

紹介 rpnの利用シーンはこちら…

講座初めての人のrpn基礎もどうぞ
講座しっかり学べるrpn入門もどうぞ
講座すぐに使えるdos入門もどうぞ
物語データを見抜くojt物語もどうぞ

実践他の分野への挑戦は実践TOP

応用rpnアプリケーションは応用TOP

part2

統計的に検証してみよう

※実践コーナーのTOP

講座初めての人のrpn基礎もどうぞ
講座しっかり学べるrpn入門もどうぞ
講座すぐに使えるdos入門もどうぞ
物語データを見抜くojt物語もどうぞ

実践他の分野への挑戦は実践TOP

応用rpnアプリケーションは応用TOP

書籍紹介

記事に関連した書籍

本ウェブサイトで扱った話題に関連した書物で、スタッフが実際に読了したものを紹介。

書籍数学の書籍
数の世界は思ったよりもエキサイティング

書籍投資の書籍
失敗しない投資には広範囲で実践的な知識が必要

警告バックスラッシュはエンマークに読み替えて下さい(IE)。
バックスラッシュとエンマーク

警告文字で作られた図表や式が崩れることがあります。ブラウザによっては固定幅フォントをMSゴシックにするときれいに表示されます。それでも崩れる場合は図表や式をメモ帳にコピー後、閲覧下さい。

警告rpn試用版と標準版(2kリビジョン)はダブルクォートで囲って下さい。

rpn 1 2 + ⇒ rpn "1 2 +"
rpn 1 -c foo ⇒ rpn "1" -c "foo"

ダブルクォートは省略できることが多いのですが、慣れない間は囲んだほうが無難です。なお、本ウェブサイトの記事ではrpn標準版(98リビジョン)を使用しているため囲っていません。詳しくは技術サポートの「rpn TIPS参照ください。

注意rpnの障害情報はこちら

警告rpn試用版の場合、複雑なプログラムや処理時間のかかるプログラムの一部には動作しないものがあるかもしれません。あくまで無料提供であることを勘案・了承ください。rpn標準版は、すべてのプログラムが動作します。