scipy.statsのメソッドまとめ

scipy.statsの確率分布関数には共通しているメソッドがいっぱいあって頭が混乱している今日この頃、まとめます。
目次
scipy.statsで使われている共通メソッド
scipy.statsにはたくさんの確率分布関数が存在します。その中に共通する関数がいくつか存在します。使い方から順に見ていきます。
基本的なメソッドの使い方
scipy.statsの後に正規分布やt分布などの確率分布関数を指定します。メソッドを書く場合はそれに続けて記入します。
書き方
scipy.stats.確率分布の関数.メソッド
代表的なメソッド
それぞれの確率分布の関数に存在するメソッドを列挙します。但し、確率分布の関数によってメソッドの引数に違いがあるのでご注意を!
ここでは正規分布(norm)を例にメソッドを紹介します。
pdf 確率密度関数
確率密度関数 pdf(probability density function) はよく使う関数のうちの一つです。しっかり確認しましょう。
書き方
pdf ( x, loc=0, scale=1 )
x | 確率変数 |
loc | 期待値 |
scale | 標準偏差 |
import numpy as np
from scipy.stats import norm
import matplotlib.pyplot as plt
x = np.linspace(-10,10,100)
p = norm.pdf(x)
fig = plt.figure()
ax = fig.add_subplot(111)
ax.plot(x, p)
【実行結果】

ppf パーセント点関数
確率分布の確率点を取得します。
書き方
ppf ( q, loc=0, scale=1 )
q | 確率 |
loc | 期待値 |
scale | 標準偏差 |
import numpy as np
from scipy.stats import norm
norm.ppf(q=0.95, loc=0, scale=1)
【実行結果】
1.6448536269514722
interval 両側(1-α)%点
両側(1-α)%点の値を出力します。両側(1-α)%点についてはこちらを参照。
書き方
interval( alpha, loc=0, scale=1 )
alpha | 信頼度 |
loc | 期待値 |
scale | 標準偏差 |
from scipy.stats import norm
# 両側5%点(信頼度95%)
down,up = norm.interval(alpha=0.95, loc=0, scale=1)
print(down,up)
【実行結果】
-1.959963984540054 1.959963984540054
boxcox Box-Cox変換
正規分布に従わない分布を正規分布に変換する。
書き方
boxcox( x, lmbda=None, alpha=None )
x | 1次元の配列 |
lmbda | (オプション)値が与えられた時はlmbdaが下記の式の通り計算を行う。値が与えられなかった時は対数尤度関数が最大化するように自動で計算する(つまり、最も正規分布に近い形にする)。 |
alpha | (オプション)信頼区間の値を示す。 |
$\lambda\neq0$の時 $\tilde{x}=\frac{x^\lambda-1}{\lambda}$
$\lambda=0$の時 $\ln x$
import seaborn as sns
import matplotlib.pyplot as plt
import numpy as np
# カイ二乗分布
data = np.random.chisquare(3, 5000)
plt.figure(figsize = (4, 4))
sns.distplot(data)
plt.show()

from scipy import stats
# Box-Cox変換
tdata = stats.boxcox(data)
plt.figure(figsize = (4, 4))
sns.distplot(tdata)
plt.show()
