估计python中分布参数的置信区间
Posted
技术标签:
【中文标题】估计python中分布参数的置信区间【英文标题】:Estimate confidence intervals for parameters of distribution in python 【发布时间】:2015-10-07 11:55:31 【问题描述】:是否有内置函数可以为 python 包中的参数估计提供置信区间,还是我需要手动实现?我正在寻找类似于 matlabs gevfit http://www.mathworks.com/help/stats/gevfit.html 的东西。
【问题讨论】:
您可以使用引导程序:***.com/a/66008548/10375049 【参考方案1】:如果您还没有,请查看scipy
和numpy
。如果您对 MATLAB 有一定的了解,那么切换应该相对容易。我从this SO response 获取了这个快速的sn-p:
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
@captain_M,这不提供“包含人口百分比的范围”;它提供了mean
参数的置信区间。【参考方案2】:
bootstrap 可用于估计样本的任何函数(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]。
【讨论】:
感谢您的建议 - 但是如果我想为分布拟合指定一个参数,例如一个位置参数,我无法让它工作,例如boot.ci(data, genextreme.fit(data, loc=0))
- 正如它所说的元组对象不可调用。
@dreab,boot.ci(data, lambda x: st.genextreme.fit(x, loc=29.7))
之类的东西应该可以工作。以上是关于估计python中分布参数的置信区间的主要内容,如果未能解决你的问题,请参考以下文章
估计量|估计值|矩估计|最大似然估计|无偏性|无偏化|有效性|置信区间|枢轴量|似然函数|伯努利大数定理|t分布|单侧置信区间|抽样函数|