是否有内置函数在Python包中提供参数估计的置信区间,还是我需要手动实现?我正在寻找类似于Matlab GEVFit http://www.mathworks.com/help/stats/gevfit.html的东西。
是否有内置函数在Python包中提供参数估计的置信区间,还是我需要手动实现?我正在寻找类似于Matlab GEVFit http://www.mathworks.com/help/stats/gevfit.html的东西。
np.mean
、st.genextreme.fit
等)的置信区间,而且有一个 Python 库:scikits.bootstrap
。import numpy as np, scipy.stats as st, scikits.bootstrap as boot
data = np.array([ 22.20379411, 22.99151292, 24.27032696, 24.82180626,
25.23163221, 25.39987272, 25.54514567, 28.56710007,
29.7575898 , 30.15641696, 30.79168255, 30.88147532,
31.0236419 , 31.17380647, 31.61932755, 32.23452568,
32.76262978, 33.39430032, 33.81080069, 33.90625861,
33.99142006, 35.45748368, 37.0342621 , 37.14768791,
38.14350221, 42.72699534, 44.16449992, 48.77736737,
49.80441736, 50.57488779])
st.genextreme.fit(data) # just to check the parameters
boot.ci(data, st.genextreme.fit)
(-0.014387281261850815, 29.762126238637851, 5.8983127779873605)
array([[ -0.40002507, 26.93511496, 4.6677834 ],
[ 0.19743722, 32.41834882, 9.05026202]])
boot.ci
使用10,000个引导迭代(n_samples
),请参见code或help(boot.ci)
,而st.genextreme.fit
并不是超级快速的。
boot.ci
给出的置信区间与MATLAB的gevfit
并不完全匹配。例如,MATLAB为第一个参数(0.0144)给出对称的区间[-0.3032,0.3320]。boot.ci(data, genextreme.fit(data, loc=0))
- 因为它说元组对象不可调用。 - dreabboot.ci(data, lambda x: st.genextreme.fit(x, loc=29.7))
这样的代码应该可以工作。 - Ulrich Stern如果你还没有了解过,可以看一下 scipy
和 numpy
。 如果你对MATLAB有一定的熟悉度,那么切换应该相对容易。 我从this SO response中提取了这个简短的片段:
import numpy as np
import scipy as sp
import scipy.stats
def mean_confidence_interval(data, confidence=0.95):
a = 1.0*np.array(data)
n = len(a)
m, se = np.mean(a), scipy.stats.sem(a)
h = se * sp.stats.t.ppf((1+confidence)/2., n-1)
return m, m-h, m+h
您应该能够自定义返回结果以满足您的需求。就像MATLAB gevfit
函数一样,默认情况下使用95%的置信区间。
ppf
替代 _ppf
。 - ev-brmean
参数的置信区间。 - Ulrich Stern