ベータ分布はαとβの値を調整することで、分布の形を正規分布に似せることが可能。
また、正規分布と異なり[0, 1]の範囲となっている。
スポンサーリンク
numpyでベータ分布に従う乱数生成
numpy.randomのbetaでベータ分布に従う乱数を生成できる。
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
sns.set(font="meiryo")
%matplotlib inline
# β分布のパラメータ設定
a, b = 5, 5
# 生成する乱数の数を設定
data_len = 10000
# β分布に従う乱数生成
randoms_beta = np.random.beta(a, b, data_len)
# 生成した乱数のヒストグラム作成
plt.figure(figsize=(8, 4.5), facecolor="w")
sns.histplot(randoms_beta, bins=20)
plt.title(f"data count {data_len}")
plt.tight_layout()
plt.show()
大体5000個ぐらい作成すると、ヒストグラムは確率密度関数の形に近づく。

データ生成数によるヒストグラムの違い
生成する数が数100~1000個ぐらいだと、乱数シードにもよると思うが、確率密度関数のような形にはなりにくい。
# β分布のパラメータ設定
a, b = 5, 5
# 生成するデータ数のリスト
data_lens = [100, 500, 1000, 5000]
seed = 1
for data_len in data_lens:
np.random.seed(seed)
# β分布に従う乱数生成
randoms_beta = np.random.beta(a, b, data_len)
# ヒストグラム作成
plt.figure(figsize=(8, 4.5), facecolor="w")
sns.histplot(randoms_beta, bins=20)
plt.tight_layout()
plt.title(f"data count {data_len}")
plt.show()




SciPyでベータ分布に従う乱数生成
scipy.statsのbetaにrvsで乱数を生成できる。
from scioy.stats import beta
# β分布のパラメータ設定
a, b = 5, 5
# 生成する乱数の数を設定
size = 10000
seed = 1
# ベータ分布に従う乱数生成
stats_beta = beta.rvs(a, b, size=size, random_state=seed)
# ヒストグラム作成
plt.figure(figsize=(8, 4.5), facecolor="w")
sns.histplot(stats_beta, bins=20)
plt.tight_layout()
plt.show()

データ生成数によるヒストグラムの違い
numpyと同じく、100~1000個ぐらいだと、きれいな分布にはならない。
a, b = 5, 5
sizes = [100, 500, 1000, 5000]
seed = 1
for size in sizes:
stats_beta = beta.rvs(a, b, size=size, random_state=seed)
plt.figure(figsize=(8, 4), facecolor="w")
sns.histplot(stats_beta, bins=20)
plt.title(f"data count {size}")
plt.tight_layout()
plt.show()




まとめ
色々とヒストグラムを記載してきたが、乱数を得るだけなら以下の通り。
import numpy as np
from scipy.stats import beta
a, b = 5, 5
size = 10000
seed = 1
# numpyでベータ分布に従う乱数生成
np.random.seed(seed)
randoms_beta = np.random.beta(a, b, size)
# scipyでベータ分布に従う乱数生成
stats_beta = beta.rvs(a, b, size=size, random_state=seed)
ベータ分布の形状
ベータ分布はパラメータを調整することで、分布の形状を調整できる。
正規分布以外にも、少し偏った分布なども作成可能。
パラメータによる分布形状の変化については、以下の記事を参照。
スポンサーリンク
スポンサーリンク