2015-05-26 143 views
4

我正在編寫一個腳本,以使用scipy.stats在數據集中找到最合適的分佈。 我第一次有分佈的名單,在其中我重複:獲取scipy.stats分佈的參數名稱

dists = ['alpha', 'anglit', 'arcsine', 'beta', 'betaprime', 'bradford', 'norm'] 
for d in dists: 
    dist = getattr(scipy.stats, d) 
    ps = dist.fit(selected_data) 
    errors.loc[d,['D-Value','P-Value']] = kstest(selected.tolist(), d, args=ps) 
    errors.loc[d,'Params'] = ps 

現在,這個循環之後,我爲了獲得最佳的擬合分佈選擇最小d-價值。現在,每個發行版都會返回一組特定的參數,每個發行版都有它們的名稱等等(例如,'alpha'就是alpha,而'norm'則是mean和std)。

有沒有辦法在scipy.stats中獲取估計參數的名稱?

預先感謝您

+0

imho,明確地做,因爲你知道你使用了哪個發行版......圍繞你的ps做一個包裝,並用易於理解的方法處理它們,它會告訴你它是什麼分佈以及你可以期待哪些參數。 – user3012759

+2

FWIW,scipy統計中的每個分佈都有一個屬性'shapes'。 –

+0

感謝您的回覆;最後我不得不手動去做,因爲「shapes」參數仍然沒有給我一個可能對出版物有效的名字。 – user1695639

回答

0

此代碼演示了ev-br在他這裏以防別人的土地答案的信息。

>>> from scipy import stats 
>>> dists = ['alpha', 'anglit', 'arcsine', 'beta', 'betaprime', 'bradford', 'norm'] 
>>> for d in dists: 
...  dist = getattr(scipy.stats, d) 
...  dist.name, dist.shapes 
... 
('alpha', 'a') 
('anglit', None) 
('arcsine', None) 
('beta', 'a, b') 
('betaprime', 'a, b') 
('bradford', 'c') 
('norm', None) 

我要指出的是,形狀參數產生無爲分佈的值,例如其通過位置和尺度參數化正常。