期待値と分散

Pythonでは,確率分布からデータを生成するための関数 np.randomscipy.stats として提供されています.
サンプルの生成で使うのは,以下のような関数です.

正規分布

  • np.random.normal(loc = 0.0, scale = 1.0, size = None)
オプションのlocは期待値,scaleは標準偏差,sizeはサンプル数
 

標準正規分布

  • np.random.randn(d0, d1, d2, ...)
標準正規分布は,期待値0, 分散1の正規分布.(d0, d1, d2, ...) のサイズの配列に,標準正規分布からのサンプルを格納


一様分布

  • np.random.uniform(low = 0.0, high = 1.0, size = None)
オプションのlowは最小値,highは最大値,sizeはサンプル数
 
区間[0, 1]上の一様分布
  • np.random.rand(d0, d1, d2, ...)
(d0, d1, d2, ...) のサイズの配列に,区間[0, 1]上の一様分布からのサンプルを格納


Pythonでの実装は以下のようになります.
期待値1,標準偏差2の正規分布に従うデータを100個生成してみます.

>>> import numpy as np
>>> x = np.random.normal(1, 2, 100)
 
データの平均値を計算します.
>>> x.mean()
1.150042657481204
 
別の方法でデータの平均値を計算するには以下のようにします.
>>> np.mean(x)
1.150042657481204
当然,同じ値が得られます.
 
 | x - E[x] | \leq sd(x)となるデータの割合を求めます.
>>> np.mean(np.abs(x - np.mean(x)) <= np.std(x))
0.67
 
 | x - E[x] | \leq 2 \times sd(x)となるデータの割合を求めます.
>>> np.mean(np.abs(x - np.mean(x)) <= 2 * np.std(x))
0.98

 

上記の例のJupyter Notebookファイルは,GitHubStatistics.ipynbの"Expected value and Variance"で見ることができます.