您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

倾斜的正态分布

倾斜的正态分布

根据Wikipedia的描述

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()

如果你想找到一个数据集的使用规模,位置和形状参数scipy.optimize.leastsq,例如使用e=1.0w=2.0并且a=1.0

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)
其他 2022/1/1 18:29:14 有789人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶