2016-11-15 10 views
0

私は、パッケージfitterを使用して、Pythonでnumpy配列のデータに連続したディストリビューションを合わせています。 fitter.fitted_paramは、分布ごとに最適なパラメータでさまざまな長さのタプルの辞書を返します。これらは、これらのディストリビューションをscipy.statsに設定するのと同じパラメーターです。私はscipy.statsで直接パラメータを設定するためにこれらのタプルを使用したいと思いますが、私はそうする方法がわかりません。何か案は?リストを使ってscipy.statsディストリビューションのパラメータを設定する方法

例:

>from fitter import Fitter 
>import numpy as np 
>data = np.random.random((1000,1)) 
>f = Fitter(data,distributions = ['norm','gamma']) 
>f.fit() 
>param = f.fitted_param['gamma'] 
>param 
out:(20759.430545279687, -41.012521759919224, 0.0019996776498165851) 

私は今同じaloc及び上記paramで指定scaleとガンマ分布する乱数値を生成するための新たなガンマ分布を作成したい場合は、私が記述する必要があります。

>from scipy import stats 
>rv = stats.gamma(a=param[0],loc=param[1],scale=param[2]) 
>rv.rvs(100) 

a,locおよびscaleを明示的に入力せずに直接設定するにはどうすればよいですか。私は任意の分布を任意の数のパラメータですばやく適合させ、その分布に続くランダムな値を生成したいと考えています。

ありがとうございました!

答えて

1

パラメータparamのリストが正しい順序であれば、<distribution>(*param)を実行できます。そうでない場合は

、あなたは辞書であなたのparamsを持っており、例えば、<distribution>(**param)と同様にキーワード引数をそれを呼び出す必要があります:

param = {"a": 20759, "scale": 0.001, "loc": -41} 
stats.gamma(**param) 

編集:ここではより多くの情報:*args and **kwargs?

+0

おかげで - その信じられないほど簡単でした。私もリンクに感謝! –

関連する問題