2013-10-26 13 views
6

random.gauss (mu, Sigma)Python'da belirli bir ortalama, varyans, eğrilik ve basıklık ile nasıl bir dağılım oluşturulur?

üzerinde rasgele bir ortalama ve varyans olan bir normal dağılım bir numara çekmek için sağlayan bir fonksiyondur. Ancak, sadece iki ilk andan daha fazla biriyle tanımlanan normal bir dağılımdan değerleri nasıl çizebiliriz?

random.gauss (mu, sigma, çarpıklık, basıklık)

+4

Herhangi bir normal dağılım 0 ve basıklık 0 eğrisine sahiptir. Farklı bir dağıtım ailesi kullanın. –

+1

Dikkat edin, çarpıklık ve basıklık hesaplamasını tanımlamanın birkaç yolu vardır. Momentler aynı dürtüye sahip olmalarına rağmen, ortalama, varyans, çarpıklık ve basıklıklara eşdeğer değildir. –

+2

Ayrıca, anlar benzersiz bir dağıtım belirtmez. [Bu benzer soru R: http://stackoverflow.com/questions/4807398/how-to-generate-distributions-given-mean-sd-skew-and-kurtosis-in-r hakkında soru sormak için bkz. –

cevap

1

deneyin bu kullanmak:

gibi bir şey

http://statsmodels.sourceforge.net/devel/generated/statsmodels.sandbox.distributions.extras.pdf_mvsk.html#statsmodels.sandbox.distributions.extras.pdf_mvsk

Dönüş Gauss 1, 2 anı ve çarpıklık listesi verilen genişletilmiş pdf fonksiyonu ve Fisher (fazla) kurtosis.

Parametreler: mvsk: çarpıklık mu, mc2, listesi,

Bana iyi görünüyor kurt. Bu sayfadaki kaynağa bir bağlantı var. Apply kurtosis to a distribution in python

+0

Uygun mu? yoğunluğu hesaplamak yerine, bu dağılımdan değerler çizmenin yolu nedir? – kuzzooroo

+0

Burada mc2 ne anlama geliyor? Varyansı tahmin ediyorum ama emin olmak istiyorum. –

4

Nasıl scipy kullanma hakkında:

Oh ve burada orada beni işaret diğer StackOverflow soru? continuous distributions in the scipy.stats library'dan istediğiniz dağıtımı seçebilirsiniz.

Genelleştirilmiş gama işlevi sıfır olmayan eğri ve basıklıklara sahiptir, ancak belirli bir ortalama, varyans, çarpıklık ve basıklık elde etmek için dağılımı belirtmek için hangi parametrelerin kullanılacağını belirlemek için yapacak çok az işiniz olacaktır. İşte başlaman için bir kod. genel gama ile normal dağılım değiştirilmesi

(array(100.0), array(25.0), array(0.0), array(0.0))

Bu ortalama 100 ve varyans 25 ile normal dağılımdan 10.000 elemanı örnek bir histogram görüntüler, ve dağıtımın istatistikleri yazdırır

import scipy.stats 
import matplotlib.pyplot as plt 
distribution = scipy.stats.norm(loc=100,scale=5) 
sample = distribution.rvs(size=10000) 
plt.hist(sample) 
plt.show() 
print distribution.stats('mvsk') 

dağıtımı,
distribution = scipy.stats.gengamma(100, 70, loc=50, scale=10) 

Eğer istatistik [demek, varyans, çarpıklık, basıklık] olsun (array(60.67925117494595), array(0.00023388203873597746), array(-0.09588807605341435), array(-0.028177799805207737)).

İlgili konular