lognorm()関数の引数指定 (2017/04/12)

SciPyのlognorm()関数は引数の指定が分かりにくい。

例えば、LibreOffice Calcで適当なセルに「=LOGNORMDIST(4,3.5,1.2,1)」と入力すると「0.0390835557」と返される。

「4」は調べたい数値(対数にする必要はなく、そのままでよい)、「3.5」はデータを対数に変換した後の平均、「1.2」はデータを対数に変換した後の標準偏差、「1」は戻り値として累積分布を指定、という意味である。書式はExcelと同じである(Excelの場合は「LOGNORM.DIST」()関数)。

これと同じことをSciPyでやるには

import numpy as np
from scipy.stats import lognorm
lognorm.cdf(x=4, s=1.2, loc=0, scale=np.exp(3.5))

のようにする。

0.039083555706800471

つまり、「x」には調べたい数値、「s」にはデータを対数に変換した後の標準偏差、「loc」には0、「scale」にはデータを対数に変換した後の平均を指数に変換(ややこしい)した数値を指定するのである。

SciPyのnorm()関数では

norm.cdf(x=1.0, loc=0, scale=1)

とした場合、xは同じだが、「loc」は平均、「scale」は標準偏差を意味する。ここに注意しないと間違える。

コメント

非公開コメント