random.randnを使ったいくつかの分布
import numpy as np
標準正規分布
# 標準正規乱数(平均0、標準偏差1)
rnd1 = np.random.randn(10)
rnd1
array([-2.0389516 , -0.87936987, 0.37011193, 1.64849346, 0.88696983,
0.02102207, -1.07206842, 0.29944495, -1.77331258, 0.9514604 ])
randnは平均0、分散1(標準偏差1)の正規分布を発生させます。平均が0、標準偏差が1の正規分布は、標準正規分布と呼びます。
普通の正規分布
正規分布は、平均値近くで最も発生しやすい連続分布です。多くの(独立な)乱数の和は正規分布に近いので、自然界によく見られます。誤差を表すのに良く使われます。
# 平均50、標準偏差10の正規乱数
rnd2 = np.random.normal(50, 10, 10)
rnd2
array([64.56677839, 54.2172579 , 60.53914378, 53.91530454, 39.68047665,
59.31379554, 26.39000291, 44.21012122, 55.48625751, 44.65963311])
# 平均50、標準偏差10の正規乱数(多次元)
rnd3 = np.random.normal(50, 10, (2, 5))
rnd3
array([[39.4730493 , 25.110383 , 51.6697011 , 53.07553406, 61.10870272],
[42.42616852, 63.68595787, 59.56983401, 53.74279049, 56.48775937]])
ベータ分布
# α=1, β=2 のベータ乱数10個
rnd4 = np.random.beta(1, 2, 10)
rnd4
array([0.17259221, 0.3070054 , 0.2871861 , 0.43801661, 0.21060565,
0.0905266 , 0.01850429, 0.30901488, 0.03779844, 0.20526614])
ベータ分布は、0から1の連続分布です。第一種と第二種がありますが、numpy.random.betaは第一種になります。
αとβの2つのパラメーターで形状をさまざまに変えられるので、分布が不明のときに利用されることが多いです。
2項分布
# n=10, p=0.4 の二項乱数10個
rnd5 = np.random.binomial(10, 0.4, 10)
rnd5
array([5, 2, 5, 4, 3, 2, 5, 6, 5, 2])
二項分布は、確率pで成功する独立な試行をn回実行した時の成功回数の分布です。
ポアソン分布
# λ=0.8 のポアソン乱数10個
rnd6 = np.random.poisson(0.8, 10)
rnd6
array([1, 1, 1, 0, 1, 0, 2, 1, 3, 1])
ポアソン分布は「単位時間あたり平均でλ回発生する事象」の発生回数の分布です。これも(交番の事故の件数など)身近でよく見られます
多次元正規分布
# 平均が[0, 0]、共分散行列が[[1, 0.5], [0.5, 1]] の多次元正規乱数
rnd7 = np.random.multivariate_normal([0, 0], [[1, 0.5], [0.5, 1]])
rnd7
array([-0.77016198, -1.83053355])
多次元正規分布は、相関のあるN個の正規分布の乱数を発生させます。
コメント