1、http:/http:/Bootstrap 方法及编程一,简介:问题的提出: 利用己知资料、计算机仿真和少量的试验数据样本信息去模拟未知分布,己成为数据分析中常用的一种办法。在不清楚验前信息的情况下,甚至可以通过少量试验数据,直接通过仿真计算来获得最终结果。Bootstrap 算法和 BayesBootstrap 算法,正是在此理论基础下的一种非参数统计方法。二者算法同归于 bootstrap 方法,它不必对未知分布做任何假设,通过计算机对原始数据进行再抽样,来模拟未知分布,Bootstrap 方法是基于monte carlo 数字仿真的一种算法。研究表明:1. 在未知分布的情况下,Bayes
2、Bootstrap 算法比 Bootstrap 算法要好,主要体现在:在小样本条件下,Bootstrap 算法法通过仿真模拟所产生的数据仅为原有数据的重复性出现。BayesBootstrap 克服了这一缺点。2. 当能大概确定原始数据服从某一分布时,则宜于用 Bootstrap 算法。由于不知道总体的分布,所以本文采用 BayesBootstrap 算法。二程序介绍:1. 算法步骤:STEP1 :计算现场子样的均值和方差 ,即有 :STEP2 :产生N 组Diricklet 随机向量, V( i) = ( Vi1 , , Vin) , i = 1 , , N , 这里( Vi1 , , Vin
3、) 为参数为(-1 ,1) 的Diricklet 随机向量,记它的联合分布为:D( i)(1 , ,1) 。它可按如下方法产生:设v1 , , vn - 1是(0 ,1) 上均匀分布的随机变量v 的i . i . d 子样,按由小到大的次序重新排序,记它们为v (1) v (2) v ( n - 1) 。又记v (0) = 0 , v ( n) = 1 , Vij = v ( j) - v ( j - 1) , j = 1 , , n 。那么, ( Vi1 , , Vin)的联合分布就是D( i)(1 , ,1) 。它就是我们所需要的Diricklet 随机向量。本文也是按照以上4步骤来模拟的
4、。2. 各函数及变量介绍:float mean=0;/*均值*/float variance=0;/*方差*/float *sample=NULL;/*输入的样本数组*/int N;/*再抽样次数,仿真次数*/http:/http:/int number=0;/*每一组样本个数*/InputSample()/*输入样本*/DisplayRandom()/* 把产生的随机数存入out2.txt文件,以方便查看及后面的随机数的调用*/BeyesBootstrap()/*方法*/randac()/*产生(0,1)之间随机数,满足独立性及其他性质*/SetSeed()/*设置随即数的初始条件*/ComputSampleMean(float a)/*求样本均值*/ComputSampleVariance(float a)/*求样本方差*/注意:1.请新建一个 input1.txt 文件,输入样本。2.out2.txt 输出了伪随机数,以方便查看。