2013-06-27 34 views
3

scipy.stats模塊中可用的分佈具有fit方法(http://docs.scipy.org/doc/scipy/reference/stats.html)來估計給定輸入數據的分佈參數。有沒有辦法獲得擬合參數的協方差矩陣,還是我不得不求助於使用scipy.optimize.curve_fit用SciPy擬合參數的協方差矩陣

+0

沒有看過的代碼,但我的猜測無論如何,'distrib.fit'可能是'curve_fit'的一個包裝。 – rectummelancolique

+0

我不認爲這是這種情況。 'curve_fit'使用Marquardt-Levenberg算法(非線性最小二乘法)進行擬合。 'distrib.fit'方法使用Maximum-Likelihood。 – xvtk

回答

1

參數估計的協方差需要最大似然估計的Hessian,它在scipy.stats中不可用。

statsmodels有一個通用的最大似然類,我只是修復,因此它可以處理這樣的情況。 (我在準備拉請求的中間。固定參數更難以處理超過scipy.stats.distribution。)

http://statsmodels.sourceforge.net/devel/examples/generated/example_gmle.html

mod_par = MyPareto(data) 
res = mod_par.fit() 
print res.summary() 

           MyPareto Results 
============================================================================== 
Dep. Variable:      y Log-Likelihood:    -149.32 
Model:      MyPareto AIC:        306.6 
Method:   Maximum Likelihood BIC:        317.1 
Date:    Sat, 29 Jun 2013 
Time:      11:17:43 
No. Observations:     100 
Df Residuals:      97 
Df Model:       3 
============================================================================== 
       coef std err   z  P>|z|  [95.0% Conf. Int.] 
------------------------------------------------------------------------------ 
shape   2.8604  0.286  10.000  0.000   2.300  3.421 
loc   -1.2970 4.48e-06 -2.9e+05  0.000  -1.297 -1.297 
scale   3.3032 8.06e-06 4.1e+05  0.000   3.303  3.303 
==============================================================================