2017-08-05

Rで大数の法則をシミュレーションしてみた

理論的には「大数の法則によって母平均が標本平均とイコールになる」というのが感覚的によくわからなかったので、Rで大数の法則をシミュレーションしてみる。

これら10都道府県にある映画館の合計スクリーン数の平均は「93.8」でした。この「93.8」を47都道府県(=母集団)の平均値(つまり母平均)と見なしてしまおう、とするのが母平均の点推定です。やや強引な感じがしますが、17-2章 大数の法則で学んだ「標本平均の期待値は母平均と一致する」という性質を用いています。(18-2. 母平均の点推定と推定量・推定値 | 統計学の時間 | 統計WEB https://bellcurve.jp/statistics/course/8610.html )



大数の法則とは


Wikipediaによると、大数の法則とは

大数の法則(たいすうのほうそく、英: law of large numbers)は、確率論・統計学における極限定理のひとつで、「経験的確率と理論的確率が一致する」 という、素朴な意味での確率を意味付け、定義付ける法則である。

らしい。試行回数を増やしていくと、標本の確率と母集団の確率が一致するということなんだろう。例えばサイコロで1の目が出る確率は1/6、でも実際6回振ってみたら、1が一回も出てこないということもあり得る。だけど、試行回数を増やせば、理論値である1/6に近づくよね。という話らしい。


シミュレーションしてみる。
いうて教材は母校の授業で使ったものだけど。


Rによる大数の法則のシミュレーション


さて、実際にサイコロの目で大数の法則をシミュレーションしてみる。
おおまかな流れとしてはこんな感じ。


(1) サイコロを振り、1,2,3,4,5,6が出る数を調べる
(2)試行回数を10,100,1000,10000と増やしていく
(3)その時のそれぞれの出る目の確率を計算する


ソースコードはこちら。



1. n = 10 (10回サイコロを振った)の場合。


1 2 3 5 6
2 3 2 1 2

横軸はサイコロの目。縦軸は出現回数。そもそも出てない目すら存在している。


2. n = 100の場合。


 1  2  3  4  5  6
21 15 14 13 20 17



まだかなりギザギザしてる。



3. n = 1000の場合。


  1   2   3   4   5   6
176 160 162 164 165 173


4. n = 10000の場合


   1    2    3    4    5    6
1670 1602 1687 1684 1691 1666




こんな感じで、理論的な確率分布は、標本の数を大きい数にしていくと、理論値に近づくんだね。


補足


sample関数についてはこちらを参照

[R]無作為抽出をするsample関数の使い方 

注目の投稿

 PythonのTweepyを利用して、Twitter APIを利用している。 その中で、ハマったポイントをメモしておく。 まず、Searchに関して。 Twitter検索は、クライアントアプリ側では、全期間の検索が可能になっている。 一方で、APIを利用する際は、過去1週間しか...