2012-05-30 2 views
1

У меня есть набор данных, который находится в форматеПрименить эксцесс к распределению в Python

частоты, направление, нормализованной спектральной плотности мощности, распространение, асимметричность, куртозис

Я могу визуализировать распределение конкретная запись с использованием кода из верхнего ответа в skew normal distribution in 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() 

Edit: я удалил перекос нормального от своего титула, как я не думаю, что это на самом деле можно применить значение эксцесса для вышеуказанного распределения, я думаю, что иное распределение необходимо, так как направление участвуют может быть более целесообразным распространение из круговой статистики?

Благодаря ответу ниже я могу применить эксцесс, используя функцию 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() 
+0

ваш вопрос кажется спутать. вы удалили перекос из названия, потому что вы «не думаете, что на самом деле можно применить значение * kurtosis». почему «эксцесс» в этом цитируемом тексте? Какова логика? и почему вы считаете, что круговая статистика имеет значение? Конечно, один из способов добавить эксцесс - просто поднять PDF до некоторой мощности (более одного для большего пика, менее одного для меньшего), а затем перенормировать. конечно, нет никакой гарантии, что это оставит без изменений другие параметры, чего вы хотите, в идеале. –

ответ

1

Если у вас есть среднее, стандартное отклонение, косых и эксцесс, то вы можете построить приблизительно нормальное распределение с теми моментами, с помощью расширения гр-Шарлья.

Я изучил это некоторое время назад, у scipy.stats была функция, которая была неправильной и была удалена.

Я не помню, что статус этого, так как это было давно, что я ставлю это в statsmodels песочнице http://statsmodels.sourceforge.net/devel/generated/statsmodels.sandbox.distributions.extras.pdf_mvsk.html#statsmodels.sandbox.distributions.extras.pdf_mvsk

+0

Спасибо за информацию – seumas

Смежные вопросы