2017-03-31 3 views
0

私のデータセットでは、scipy.stats関数を使って最適な分布に収めることができました。 1つのインスタンスの最良の分布は次のとおりです。 Pythonから複数の値を取得するscipy.stats ppf function

In[94]: best_dist 
Out[94]: <scipy.stats._continuous_distns.chi_gen at 0x119649cd0> 

In[95]: best_fit_params 
Out[95]: 
(0.40982879700171049, 
0.10387428783818109, 
-4.5566762564110859e-19, 
0.89837054605455657) 

は、今私は ppf機能を使用してCDF曲線の95%の面積に相当する値を取得しようとしています。それは与えます:

In[96]: best_dist.ppf(0.95,best_fit_params) 
Out[96]: array([ 1.44854045, 0.74815691, nan, 1.89330302]) 

なぜ私は1つの値を期待しているときに長さ4の配列が返ってくるのか理解できませんか?これらのうちの1つが私の答えなら、それはどれですか?

答えて

1

正しい使い方を解凍することですあなたのbest_fit_param

In [1]: param = (0.40982879700171049, 
    ...: 0.10387428783818109, 
    ...: -4.5566762564110859e-19, 
    ...: 0.89837054605455657) 

In [2]: from scipy.stats import beta 

In [3]: beta.ppf(0.95, *param)  # notice the asterisk 
Out[3]: 0.89837054605311872 

説明:beta.shapes"a, b"ので、beta.ppfの署名が実際にppf(self, q, a, b, loc=0, scale=1)です。 best_fit_paramはa、b、loc、scaleの4つの値のタプルです。

あなたのIn[96]についてはわかりませんが、 2つの引数を持つppfを呼び出している合理的なscipyインストールでは、エラーが出るはずです(少なくとも3つ必要です:qabの2つが必要です)。

関連する問題