正規分布やポワソン分布はいろんなパッケージが準備されてるけど、歪正規分布はなかなか見つからなかったので、
PASTEBIN
skew normal distribution in scipy
Skew Normal Distribution
などを参考にしてプロットしてみました。
歪正規分布(Skew Normal Distribution)
歪正規分布の確率密度関数はパラメータを使って以下のように定義されている。
ここで、
コードはPASTEBINに紹介されているように定義されてる関数をそのまま返すだけ。erf関数はscipy.special.erfを使う。
例えばこんな感じ。
from pylab import plot,show
from numpy import exp,sqrt,pi,arange
from scipy.special import erf
# probability distribution function
def pdf(x):
return exp(-x*x/2.0)/sqrt(2*pi)
# cumulative distribution function
def cdf(x):
return (1.0+erf(x/sqrt(2)))/2.0
# skew normal distribution
def skew(x,mu,sigma,l):
z= (x-mu)/sigma
return 2/sigma * pdf(z) * cdf(l*x)
# define distribution parameters
mu=0.0
sigma=1.0
lam=4.0
# plot
x=arange(-10,10,0.01)
y=skew(x,mu,sigma,lam)
plot(x,y)
show()
プロット
パラメータをいじってみたらこんな感じ。簡単のため平均=0、標準偏差=1にしてあります。
こっちは標準偏差を変えてみた場合()