16
有誰知道如何繪製與scipy skew正態分佈? 我認爲stats.norm類可以使用,但我不知道如何。 此外,如何估計描述一維數據集偏斜正態分佈的參數?skeip正態分佈在scipy
有誰知道如何繪製與scipy skew正態分佈? 我認爲stats.norm類可以使用,但我不知道如何。 此外,如何估計描述一維數據集偏斜正態分佈的參數?skeip正態分佈在scipy
從維基百科description,
from scipy import linspace
from scipy import pi,sqrt,exp
from scipy.special import erf
from pylab import plot,show
def pdf(x):
return 1/sqrt(2*pi) * exp(-x**2/2)
def cdf(x):
return (1 + erf(x/sqrt(2)))/2
def skew(x,e=0,w=1,a=0):
t = (x-e)/w
return 2/w * pdf(t) * cdf(a*t)
# You can of course use the scipy.stats.norm versions
# return 2 * norm.pdf(t) * norm.cdf(a*t)
n = 2**10
e = 1.0 # location
w = 2.0 # scale
x = linspace(-10,10,n)
for a in range(-3,4):
p = skew(x,e,w,a)
plot(x,p)
show()
如果你想使用e=1.0
,w=2.0
和a=1.0
找到規模,位置和形狀參數從一個數據集使用scipy.optimize.leastsq
,例如,
fzz = skew(x,e,w,a) + norm.rvs(0,0.04,size=n) # fuzzy data
def optm(l,x):
return skew(x,l[0],l[1],l[2]) - fzz
print leastsq(optm,[0.5,0.5,0.5],(x,))
應該給你類似的東西,
(array([ 1.05206154, 1.96929465, 0.94590444]), 1)
謝謝@lafrasu! – Ben2209 2011-05-05 07:50:02