wxylzh 发表于 2014-5-15 23:36 
如何用bootstrap方法,说的能再具体点吗?
例如,一般的linear regression:
你有一套(50组)数据,每组有个y对应x1和x2.共50个y对应50个x1和50个x2。
你认为 y=a*x1+b*x2+Z, Z~N(0,sigma^2)
你可以用你选定的参数估计法(例如:最小二乘法)(从这50组数)算出a,b和sigma的点估计值(称为a0,b0,s0)。
即a,b,sigma的估计值可以看成是这一套(50组)数据的函数。
BOOTSTRAP的做法是:
(1) 产生50(应不多不少等于数据的组数)个1-50之间的随机整数(例如:15, 24,2, 32, 43,13,24,...)
(2) 按这50个随机数,对于每个随机数,从这一套(50组)数据中抽出该等编号的那组数据,例如第1次抽出第15(因为15是产生的第1个随机数)组(y, x1, x2),
第2次第24组(y, x1, x2),。。。注意可以重复,例如第24组(y, x1, x2)被重复抽中。
(3) 将抽出的50组数看成是新的“一套”数据,根据这套数据,计算用你选定的参数估计法(此例中是最小二乘法)算出a,b和sigma的另外一组点估计值(称为a1,b1,s1)
(4) 重复第1至3步很多次(例如10000次),会得到10000个a的估计值,10000个b的估计值,10000个sigma的估计值
(5) 将这10000的a的估计值,取平均,就得到a估计值的期望,计算这10000的a的标准差,就得到a估计值的标准差;将这10000的a从小到大排序,排名250位的a(设为a_250),排名9750位的a (设为a_9750), 以这两数为端点的区间(a_250,a_9750)就是95%置信区间 (有多种计算置信区间的方法,这方法称为percentile法,还有normal方法, t方法,BCa法,ABC法等等)。
(6) 同样可算b估计值的期望,标准差,置信区间..., 如果要算b/a+sigma的期望、标准差,置信区间,也按第5步的方法(把10000个a换成这10000组a,b,s计算出来的b/a+sigma既可)。
注意,有时BOOTSTRAP其实还是会比较复杂的,上面是个简单的例子。(此linear regression中用的是bootstrapping pairs,计算出来的a, b标准差、置信区间比传统的统计理论计算出来的略大些,如果用bootstrapping residuals来做,即第2步不是抽取50组y,x1,x2,而是抽取50组残差,即y-a0*x1-b0*x2,那么a, b标准差、置信区间会与传统的统计理论计算出来的很接近)。
如需要更多有关BOOTSTRAP方法的信息,可GOOGLE或找些书来读,在论坛搜索一下。