scipy.statsのメソッドまとめ

2021年3月24日

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標準偏差
【例】標準偏差の両側5%点(信頼度95%)を求める。
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 )

x1次元の配列
lmbda(オプション)値が与えられた時はlmbdaが下記の式の通り計算を行う。値が与えられなかった時は対数尤度関数が最大化するように自動で計算する(つまり、最も正規分布に近い形にする)。
alpha(オプション)信頼区間の値を示す。

$\lambda\neq0$の時 $\tilde{x}=\frac{x^\lambda-1}{\lambda}$
$\lambda=0$の時 $\ln x$

boxcox 詳細

【例】カイ二乗分布をBox-Cox変換
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()

SciPy

Posted by Bright_Noah