2013-10-26 19 views
6

random.gauss(MU、Sigma)をPythonで平均、分散、スキュー、尖度を使って分布を生成するにはどうすればよいですか?

上ランダム所与の平均と分散を持つ正規分布からの番号を描画する可能関数です。しかし、2つの最初の瞬間以上に定義された正規分布からどのように値を引き出すことができますか?

のようなもの:

random.gauss(ミュー、シグマ、スキュー、尖度)

+4

正規分布にはスキュー0と尖度0があります。異なる分布のファミリを使用します。 –

+1

スキューと尖度の計算を定義する方法はいくつかあります。モーメントは平均、分散、スキュー、尖度と同じではありませんが、同じ要点を持っています。 –

+2

また、モーメントは一意の分布を指定しません。 [同様の質問ですが、Rについて尋ねます:http://stackoverflow.com/questions/4807398/how-to-generate-distributions-given-mean-sd-skew-and-kurtosis-in-r –

答えて

1

はこれを使用してみてください:

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

戻るガウス第1、第2のリストを与えたpdf関数を拡張しました モーメントとスキューフィッシャー(過剰)尖度。

パラメータ:mvsk:MUのリスト、MC2、スキューは、私にはよさそうだ

をクルト。そのページのソースへのリンクがあります。 Apply kurtosis to a distribution in python

+0

便利ですか?ちょうど密度を計算するのではなく、この分布から値を引き出す方法? – kuzzooroo

+0

ここでmc2は何を意味していますか?私は分散を予期しているが、ただ確実にしたい。 –

4

方法をscipyのダウンロードの使用について:

ああ、ここでは、そこに私を指摘し、他のStackOverflowの質問ですか?あなたはcontinuous distributions in the scipy.stats libraryからあなたが望む分布を選ぶことができます。

一般化されたガンマ関数にはゼロ以外のスキューと尖度がありますが、特定の平均、分散、歪み、尖度を得るために分布を指定するために使用するパラメータを特定する作業は少ししかありません。ここにあなたを始めるためのコードがあります。

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

これは平均100と分散25の正規分布から万要素のサンプルのヒストグラムを表示し、分布の統計を出力します。

一般化ガンマの正規分布の交換

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

分布、

distribution = scipy.stats.gengamma(100, 70, loc=50, scale=10) 

[mean、variance、skew、kurtosis] (array(60.67925117494595), array(0.00023388203873597746), array(-0.09588807605341435), array(-0.028177799805207737))

関連する問題