今回は、累積分布関数をPythonで作成する方法を紹介します。
累積分布関数(CDF)とは?
累積分布関数(CDF: Cumulative Distribution Function)は確率密度関数を負の無限大からある値までを積分し、ある値以下になる確率を表した関数です。
累積分布関数を使用することで、確率密度関数から面積を求めずに一発で、確率を求めることができます。
確率密度関数と累積分布関数の関係を図で表すと以下の通りです。
累積分布関数の作成
Pythonで累積分布関数を作成してみましょう。
累積分布関数を作成するにはSciPyのstatsモジュールを使用します。
使い方は以下の通りです。正規分布を例にしています。
stats.norm.cdf(x, loc, scale)
x: 確率変数
loc: 平均
scale: 標準偏差
サンプルコードは以下です。
import numpy as np
from scipy import stats
import matplotlib.pyplot as plt
x = np.linspace(-5, 5, 100)
y = stats.norm.cdf(x, loc=0, scale=1)
plt.plot(x, y)
実行結果
生存関数(SF: Survival Function)とは?
累積分布関数が確率密度関数を負の無限大からある値までを積分し、ある値以下になる確率を表しているのに対し、
生存関数は、ある値から無限大までを積分し、ある値以上になる確率を表しています。1 – cdf(x)で表されます。
生存関数を図で表すと以下の通りです。
生存関数の作成
Pythonで生存関数を作成してみましょう。
生存関数を作成するにはSciPyのstatsモジュールを使用します。
使い方は以下の通りです。正規分布を例にしています。
stats.norm.sf(x, loc, scale)
x: 確率変数
loc: 平均
scale: 標準偏差
サンプルコードは以下です。
import numpy as np
from scipy import stats
import matplotlib.pyplot as plt
x = np.linspace(-5, 5, 100)
y = stats.norm.sf(x, loc=0, scale=1)
plt.plot(x, y)
実行結果
まとめ
累積分布関数をPythonで作成する方法を紹介しました。
また、生存関数を作成する方法も合わせて紹介しました。
どちらも確率密度関数を積分せずに確率を求めることができるので、便利な関数です。
ここまで読んでくださりありがとうございます。
参考
おすすめ教材
米国データサイエンティストが教える統計学超入門講座【Pythonで実践】 【世界で55万人が受講】データサイエンティストを目指すあなたへ〜データサイエンス25時間ブートキャンプ〜他のUdemyの講座が気になる方はこちら