続パタの第4章にあるベータ分布のグラフを描画してみました。
結果はこれです。
コードはこんな感じ。
import numpy as np
import scipy.stats
from matplotlib import pyplot as plt
x = np.linspace(0, 1, 1000)
plt.xlim(0, 1)
plt.ylim(0, 5)
plt.xlabel(r"$\theta$",fontsize=20, fontname='serif')
plt.ylabel(r"$P(\theta; \alpha, \beta)$",fontsize=20, fontname='serif')
params = [[3,9],[6,6],[9,3],[1,1],[1,5],[5,1],[16,16]]
for param in params:
rv = scipy.stats.beta(param[0],param[1])
y = rv.pdf(x)
plt.plot(x, y, '-', lw=2, label=param)
plt.legend(bbox_to_anchor=(1.05, 1), loc='upper left', borderaxespad=0) #凡例を枠外に表示する
plt.show()
scipy.statsにベータ分布の関数が用意されていたので、それを利用しました。ベータ分布がパラメータ(α、β)によってどんな形になるのか確認したかっただけなので。
参考にしたのは以下のページです。
scipy.stats.beta — SciPy v0.15.1 Reference Guide
numpyでもベータ分布を乱数として出力してくれる機能はあるのですが、↑のようにきれいな曲線は描けそうにありませんでした。
また、matplotlibで凡例を枠外に表示するやり方は以下のページを参考にしました。