是否有内置函数可以在python包中提供参数估计的置信区间,或者这是我需要手工实现的内容?我正在寻找类似于matlabs gevfit http://www.mathworks.com/help/stats/gevfit.html的东西。
答案 0 :(得分:1)
如果您还没有,请查看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%置信区间。
答案 1 :(得分:1)
引导程序可用于估计样本的任何函数(np.mean
,st.genextreme.fit
等)的置信区间,并且有一个Python库:scikits.bootstrap
。
这里是问题作者相关question的数据:
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]。