打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Bootstrap 自助法

一、简介博客栏目

Bootstrap是一个很通用的算法,用来估计标准误差、置信区间和偏差。由Bradley Efron于1979年提出,用于计算任意估计的标准误差。术语“Bootstrap”来自短语“to pull oneself up by one’s bootstraps” (源自西方神话故事“TheAdventures of Baron Munchausen”,男爵掉到了深湖底,没有工具,所以他想到了拎着鞋带将自己提起来)。

在统计学中,自助法(BootstrapMethod,Bootstrapping或自助抽样法)可以指任何一种有放回的均匀抽样,也就是说,每当选中一个样本,它等可能地被再次选中并被再次添加到训练集中。自助法能对采样估计的准确性(标准误差、置信区间和偏差)进行比较好的估计,它基本上能够对任何采样分布的统计量进行估计。

Bootstrap有两种形式:非参数bootstrap和参数化的bootstrap,但基本思想都是模拟。参数化的bootstrap假设总体的分布已知或总体的分布形式已知,可以由样本估计出分布参数,再从参数化的分布中进行再采样,类似于MC。非参数化的bootstrap是从样本中再抽样,而不是从分布函数中进行再抽样。

二、非参数化Bootstrap

基本思想是:假设是我们的估计量为

,样本大小为N,从样本中有放回的再抽样N个样本,原来每一个样本被抽中的概率相同,均为1/N,得到新的样本我们称为Bootstrap样本,重复B次之后我们得到B个bootstrap样本集,在每一个样本集上都有对应的估计量
,对于B个
,我们可以计算得到标准误,置信区间,偏置等。

三、参数化Bootstrap

和非参数化Bootstrap不同的地方在于总体分布函数的形式是已知的,需要根据样本估计参数  (参数估计),这样得到经验分布函数,从经验分布函数中再采样得到Bootstrap样本,非参数化Bootstrap是从原始样本中再抽样,得到的Bootstrap样本与原始样本有重合。

四、Matlab实例

假设我们的整体(population)来自与Bernouli分布(掷硬币),参数theta等于0.7,即投一次有0.7的概率出现1。为了考察采样点对估计的影响,我们分别采样了10和100个样本,采用了参数和非参数方法。

[plain] view plain copy
  1. %%  Bootstrap demo for the MLE for a Bernoulli  
  2.   
  3.   
  4. close all;  
  5. clear all;  
  6.   
  7.   
  8. %统计量或估计量,这里是均值  
  9. estimator = @mean;  
  10.   
  11. %Bernoulli分布的参数theta  
  12. theta = 0.7;  
  13.   
  14. %样本数目分别为10和100  
  15. Ns = [10 100];  
  16.   
  17. for Ni=1:length(Ns)  
  18.       
  19.     %当前的样本数  
  20.     N = Ns(Ni);  
  21.       
  22.     %再采样次数B  
  23.     B = 2000;  
  24.       
  25.     %参数为theta的Bernoulli分布的采样  
  26.     X = rand(1,N) < theta;  
  27.       
  28.     %MLE参数估计  
  29.     bmle = estimator(X);  
  30.       
  31.     %参数化Bootstrap方法对应的B次再采样的统计量  
  32.     mleBoot = zeros(1,B);  
  33.     %非参数化Bootstrap方法对应的B次再采样的统计量  
  34.     mleBootNP=zeros(1,B);   
  35.       
  36.     for b=1:B  
  37.           
  38.         %参数化Bootstrap对应的分布函数就是Bernoulli分布,其参数为Mle估计的参数,参数化Bootstrap再采样得到样本  
  39.         Xb = rand(1,N) < bmle;  
  40.           
  41.         %对再采样的Bootstrap样本求统计量  
  42.         mleBoot(b) = estimator(Xb);  
  43.           
  44.           
  45.         %非参数化Bootstrap方法再采样,从原来的样本中再采样  
  46.         ndx = unidrnd(N,1,N);  
  47.         Xnonparam = X(ndx);  
  48.           
  49.         %求统计量  
  50.         mleBootNP(b) = estimator(Xnonparam);  
  51.     end  
  52.       
  53.       
  54.     %% 绘图  
  55.       
  56.     %参数化Bootstrap绘图  
  57.     figure;  
  58.     hist(mleBoot)  
  59.     set(gca,'xlim',[0 1]);  
  60.       
  61.     %标准误  
  62.     se=std(mleBoot)/sqrt(B);  
  63.     ttl = sprintf('Boot: true = %3.2f, n=%d, mle = %3.2f, se = %5.3f\n', ...  
  64.         theta, N,mean(mleBoot), se);  
  65.     title(ttl);  
  66.      
  67.       
  68.     %非参数化Bootstrap绘图  
  69.       
  70.     figure;  
  71.     hist(mleBootNP)  
  72.     set(gca,'xlim',[0 1])  
  73.     nonParaSe=std(mleBootNP)/sqrt(B);  
  74.     ttl = sprintf('NP boot: true = %3.2f, n=%d, mle = %3.2f, se = %5.3f\n', theta, N, mean(mleBootNP),nonParaSe);  
  75.     title(ttl);     
  76. end  

[plain] view plain copy
  1. function [out] = bootstrap(data,B)  
  2. %  
  3. %   Bootstrap method -produce B dataSet  
  4. %  
  5. %   Inputs:  
  6. %       data:origianl data set whose size is [M,N],which means feature Dimens is M and the original dataset contains N samples    
  7. %       B:number of dataSet   
  8. %    Outputs:  
  9. %       out:B bootstrap resamples of the input data  whose size is [M,N,B]  
  10.   
  11. [M,N]=size(data);  
  12.   
  13. % by default B=N;  
  14. if (exist('B')~=1), B=N;  end;  
  15.   
  16. out=zeros(M,N,B);  
  17. index=unidrnd(N,N,B);  
  18. out=reshape(data(:,index),M,N,B);  
  19.   
  20. end  


对于参数化Bootstrap方法,假设我们已知总体是Bernouli分布,先从样本中做MLE估计,得出参数theta,这样我们就可以从分布函数中直接抽样,而不是像非参数Bootstrap一样从样本中再采样。


to be continued....





本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
机器学习(3)之最大似然估计
千字讲解极大似然估计
参数估计:最大似然估计、贝叶斯估计与最大后验估计
贝叶斯集锦:贝叶斯统计基础
matlab用马尔可夫链蒙特卡罗 (MCMC) 的Logistic逻辑回归模型分析汽车实验数据
【NLP机器学习基础】从线性回归和Logistic回归开始
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服