将峰度应用于python中的发行版

seu*_*mas 2 python statistics distribution scipy

我有一个数据集,格式为

频率,方向,归一化功率谱密度,扩展,偏度,峰度

我可以使用scipy偏斜正态分布中的顶部答案中的代码来可视化特定记录的分布,但是我不确定如何将峰度值应用于分布?

from scipy import linspace
from scipy import pi,sqrt,exp
from scipy.special import erf
from pylab import plot,show

def pdf(factor, x):
    return (100*factor)/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, norm_psd=1):
    t = (x-e) / w
    return 2 / w * pdf(norm_psd, t) * cdf(a*t)

n = 540
e = 341.9 # direction
w = 59.3 # spread
a = 3.3 # skew
k = 4.27 # kurtosis
n_psd = 0.5 # normalised power spectral density
x = linspace(-90, 450, n) 


p = skew(x, e, w, a, n_psd)
print max(p)
plot(x,p)
show()
Run Code Online (Sandbox Code Playgroud)

编辑:我从标题中去除了偏态法线,因为我认为实际上不可能对上述分布应用峰度值,我认为有必要使用其他分布,因为涉及方向的循环统计分布可能更合适?

由于下面的答案,我可以使用下面的代码中演示的pdf_mvsk函数应用峰度,不幸的是,我的偏斜值导致y值为负,但是答案满足了我的问题。

import numpy as np
import matplotlib.pyplot as plt
import statsmodels.sandbox.distributions.extras as extras

pdffunc = extras.pdf_mvsk([341.9, 59.3, 3.3, 4.27])
range = np.arange(0, 360, 0.1)
plt.plot(range, pdffunc(range))
plt.show()
Run Code Online (Sandbox Code Playgroud)

Jos*_*sef 5

如果您具有均值,标准差,偏斜和峰度,则可以使用Gram-Charlier展开用这些矩建立近似正态分布。

我前一段时间对此进行了调查,scipy.stats的函数有误,已被删除。

我不记得它的状态是什么,因为很久以前我将其放在statsmodels沙箱中 http://statsmodels.sourceforge.net/devel/generation/statsmodels.sandbox.distributions.extras.pdf_mvsk .html#statsmodels.sandbox.distributions.extras.pdf_mvsk