[Python] ベータ分布を計算してmatplotlibで描画する方法
ベータ分布は、確率変数が0から1の範囲にある場合に使用される連続確率分布です。
Pythonでは、scipy.stats
モジュールのbetaクラス
を使ってベータ分布を計算できます。
beta.pdf(x, a, b)
で確率密度関数を計算し、matplotlib
を使って描画します。
a
とb
はベータ分布の形状パラメータです。
numpy
でx軸の値を生成し、matplotlib.pyplot.plot()
で描画します。
ベータ分布とは何か
ベータ分布は、確率論と統計学において重要な連続確率分布の一つです。
主に区間
ベータ分布は、特にベイズ推定やA/Bテストなどの実験データの分析において広く利用されており、成功確率や割合をモデル化するのに適しています。
例えば、成功確率が不明な場合に、観測データを基にその確率を推定する際に役立ちます。
ベータ分布は、形状が非常に柔軟で、さまざまな分布に適合できるため、実務において非常に有用です。
Pythonでベータ分布を計算する方法
scipy.statsモジュールのインポート
ベータ分布を計算するためには、まずscipy
ライブラリのstats
モジュールをインポートします。
以下のコードを使用してインポートできます。
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import beta
beta.pdf()関数の使い方
beta.pdf()関数
は、ベータ分布の確率密度関数(PDF)を計算するために使用されます。
この関数は、指定した値に対する確率密度を返します。
基本的な使い方は以下の通りです。
# 確率密度関数を計算する例
x = 0.5 # 計算したい点
a = 2 # パラメータ a
b = 5 # パラメータ b
pdf_value = beta.pdf(x, a, b)
print(pdf_value) # 確率密度を出力
出力結果は以下のようになります。
0.9374999999999999
パラメータ と の設定方法
ベータ分布の形状は、パラメータ
これらのパラメータは、分布の形を調整するために設定します。
例えば、
以下のように設定できます。
a = 2 # 成功の回数
b = 5 # 失敗の回数
ベータ分布の確率密度関数を計算する手順
- 必要なライブラリをインポートします。
- パラメータ
と を設定します。 - 計算したい点の配列を作成します。
beta.pdf()関数
を使用して確率密度を計算します。
以下は、具体的なサンプルコードです。
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import beta
# パラメータの設定
a = 2
b = 5
# xの値を生成
x = np.linspace(0, 1, 100)
# 確率密度関数を計算
pdf_values = beta.pdf(x, a, b)
# 結果を表示
print(pdf_values) # 確率密度の配列を出力
出力結果は以下のようになります。
[0.00000000e+00 2.90970918e-01 5.58550204e-01 8.03806416e-01 ... 0.00000000e+00]
この手順を通じて、ベータ分布の確率密度関数を計算することができます。
ベータ分布をmatplotlibで描画する方法
matplotlibのインポートと基本設定
ベータ分布を描画するためには、まずmatplotlib
ライブラリをインポートします。
以下のコードを使用してインポートし、基本的な設定を行います。
import numpy as np
import matplotlib.pyplot as plt
from scipy.stats import beta
# グラフのスタイルを設定
plt.style.use('seaborn')
x軸の値をnumpyで生成する方法
ベータ分布を描画するためには、x軸の値を生成する必要があります。
numpy
のlinspace関数
を使用して、0から1の範囲で均等に分布した値を生成します。
以下のコードで実行できます。
# xの値を生成
x = np.linspace(0, 1, 100) # 0から1までの100点
beta.pdf()で計算した値をプロットする方法
生成したxの値を使って、beta.pdf()関数
で確率密度を計算し、matplotlib
を使ってプロットします。
以下のコードは、ベータ分布を描画する例です。
# パラメータの設定
a = 2
b = 5
# 確率密度関数を計算
pdf_values = beta.pdf(x, a, b)
# グラフを描画
plt.plot(x, pdf_values, label=f'Beta Distribution (a={a}, b={b})')
plt.xlabel('x')
plt.ylabel('Probability Density')
plt.title('Beta Distribution')
plt.legend()
plt.show()
グラフのカスタマイズ (タイトル、軸ラベル、凡例など)
グラフをより見やすくするために、タイトル、軸ラベル、凡例を追加します。
上記のコードでは、plt.title()
、plt.xlabel()
、plt.ylabel()
、plt.legend()
を使用してカスタマイズしています。
これにより、グラフの情報が明確になります。
複数のベータ分布を同時に描画する方法
異なるパラメータを持つ複数のベータ分布を同時に描画することも可能です。
以下のコードでは、異なる
# 複数のベータ分布を描画
plt.figure(figsize=(10, 6))
# パラメータの設定
params = [(2, 5), (5, 2), (3, 3)]
# 各ベータ分布をプロット
for a, b in params:
pdf_values = beta.pdf(x, a, b)
plt.plot(x, pdf_values, label=f'Beta Distribution (a={a}, b={b})')
# グラフのカスタマイズ
plt.xlabel('x')
plt.ylabel('Probability Density')
plt.title('Multiple Beta Distributions')
plt.legend()
plt.grid()
plt.show()
このコードを実行すると、異なる形状のベータ分布が同じグラフに描画され、比較が容易になります。
ベータ分布の応用例
ベイズ推定におけるベータ分布の利用
ベータ分布は、ベイズ推定において非常に重要な役割を果たします。
特に、成功確率が不明な場合に、観測データを基にその確率を推定する際に利用されます。
例えば、コイン投げの結果を考えた場合、コインが表が出る確率をベータ分布でモデル化することができます。
観測データ(表と裏の回数)をもとに、ベータ分布のパラメータを更新することで、事後分布を得ることができます。
このように、ベータ分布は事前分布としても、事後分布としても利用されるため、ベイズ推定において非常に便利です。
A/Bテストにおけるベータ分布の活用
A/Bテストでは、異なるバージョンのウェブページや広告の効果を比較するために、ベータ分布がよく使用されます。
例えば、バージョンAとバージョンBのクリック率を比較する場合、各バージョンの成功回数(クリック数)と失敗回数(表示回数)をもとにベータ分布を適用します。
これにより、各バージョンのクリック率の事後分布を得ることができ、どちらのバージョンがより効果的かを確率的に評価することが可能です。
ベータ分布の特性を利用することで、A/Bテストの結果をより信頼性の高いものにすることができます。
ベータ分布を使った確率モデリング
ベータ分布は、確率モデリングにおいても広く利用されています。
特に、確率が0から1の範囲にある場合、ベータ分布はその形状を柔軟に調整できるため、さまざまなデータに適合させることができます。
例えば、製品の不良率や顧客満足度など、割合を表すデータに対してベータ分布を適用することで、データの特性をより正確にモデル化できます。
また、ベータ分布は、他の分布と組み合わせて使用することも可能で、複雑な確率モデルを構築する際に役立ちます。
このように、ベータ分布は確率モデリングの強力なツールとして、多くの分野で活用されています。
まとめ
この記事では、ベータ分布の基本的な概念から、Pythonを用いた計算方法、matplotlibを使った描画方法、さらには実際の応用例まで幅広く解説しました。
ベータ分布は、特にベイズ推定やA/Bテストにおいて非常に有用なツールであり、確率モデリングにも適しています。
これを機に、実際のデータ分析や実験にベータ分布を活用してみてはいかがでしょうか。