scipyを利用してデータのサンプル点をガンマ分布にフィッティングさせる.
import matplotlib.pyplot as plt from scipy.stats import gamma # ガンマ分布に従う乱数を1,000個生成 a, b = 3, 2 seed = 1 data = gamma.rvs(a, size=1000, scale=b, random_state=seed) # 最尤推定によるフィッティング fit_parameter = gamma.fit(data) frozen_gamma = gamma.freeze(*fit_parameter) # 可視化 x = np.linspace(0, 30, 30) fig = plt.figure(figsize=(8, 5)) ax = fig.add_subplot(1, 1, 1, title='Fitting Gamma Parameters by MLE') ax.plot(x, frozen_gamma.pdf(x), label='fitted') ax.hist(data, bins=30, alpha=0.7, density=True, label='sample') ax.legend() plt.show()