bootstrap抽样(bootstrap抽样检验法)
bootstrap重抽样对样本量有要求嘛
bootstrap重抽样对样本量没有要求。Bootstrap再抽样方法扩大样本量,即在传统的数理统计基础上进行统计模拟,随着计算机技术的迅猛发展,这一技术已经渗透到许多科学领域,解决了无法采集到大样本的难题。
bootstrap重抽样的特点
Bootstrap方法是一种计算机模拟方法它处理的是实际中可能发生的,但需要大样本来求出的统计量一般的统计推断都是基于一个分布,诸如正态分布但数据分布未知时或者存在异常值,样本量太小的时候统计推断的结果可信度不高,这时候用bootstrap方法将是一个很不错的选择。
Bootstrap过程的机制是首先有一个实际观测到的数据集称之为原始数据集,它含有n个观查单位,从这个数据集中有放回地随机抽取t个组成一个新样本,称之为Bootstrap样本,随机抽样中原始数据集中的每个观察单位每次被抽到的概率相等。
什么是bootstrap方法
网格系统的实现原理,是通过定义容器大小,平分12份(也有平分成24份或32份,但12份是最常见的),再调整内外边距,最后结合媒体查询,就制作出了强大的响应式网格系统。Bootstrap框架中的网格系统就是将容器平分成12份。
bootstrap优缺点:
优点:
1.bootstap最近发布了bootstrap4,拥有了box-flex布局等更新,紧跟最新的web技术的发展
2.比较成熟,在大量的项目中充分的使用和测试
3.拥有完善的文档,使用起来更方便
4.有大量的组件样式,接受定制
缺点:
1.如果有自己特殊的需求,就需要重新定制样式,如果一个网站中有大量的非bootstrap“风格”的样式存在,那么你就需要做大量的css重写,因此也就失去了使用框架的意义。
2.会有兼容问题,虽然网上存在很多兼容IE的办法,但需要引入其他文件,有些还不小,势必导致加载速度变慢,影响用户体验。
三种中介效应检验方法及操作步骤
介绍三种常见中介效应检验方法,分别是因果逐步回归检验法、系数乘积法、改良后的因果逐步回归法,以及如果使用SPSSAU进行操作。
中介效应: 如果自变量X通过影响变量M而对因变量Y产生影响,则称M为中介变量。
例如,上司的归因研究:下属的表现→上司对下属表现的归因→上司对下属表现的反应, 其中的“上司对下属表现的归因”为中介变量。
中介作用的检验模型可以用以下路径图来描述:
方程(1)的系数c 为自变量X对因变量Y的总效应;
方程(2)的系数a为自变量X对中介变量M的效应;
方程(3)的系数b是在控制了自变量X的影响后,中介变量M对因变量Y的效应;
方程(3)的系数c′是在控制了中介变量M 的影响后,自变量X对因变量Y的直接效应;
系数乘积a*b即为中介效应等于间接效应
因果逐步回归法由Baron和Kenny(1986)提出,其检验步骤分为三步:
第一,分析X对Y的回归,检验 回归系数c 的显著性(即检验H0:c=0);
第二,分析X对M的回归,检验 回归系数a 的显著性(即检验H0:a=0);
第三,分析加入中介变量M后X对Y的回归,检验 回归系数b和c' 的显著性(即检验H0:b=0、H0:c’=0)。
根据检验结果按下图进行判断:
基于SPSSAU的操作
(1)第一步,登录SPSSAU,上传数据;
(2)第二步,选择【问卷研究】--【中介作用】;
(3)第三步,选择变量拖拽到右侧对应分析框内,点击开始分析。
结果分析
SPSSAU的“中介作用”可直接将中介作用的检验过程自动化,一键提供出上述提及模型结果。
本次结果中共包含三个模型:
①模型1:X对Y的回归模型,结果显示x与y存在显著影响关系,回归系数c=0.130.
②模型2:x对m的回归模型,结果显示x与y存在显著影响关系,回归系数a=0.175.
③模型3:加入中介变量m后x对y的回归模型,结果显示回归系数b、c’均呈现显著性,系数a、b均显著,说明存在中介效应。
第一种因果逐步回归检验法简单易懂、容易理解和解释,因而受到广泛的应用,但有学者认为其检验效能较低,有时候本身有中介作用但却显示没有中介作用。有学者提出乘积系数法的统计功效优于因果逐步回归法,因此,系数乘积法逐渐受到研究者的青睐。
其原理是 检验a*b是否呈现出显著性。 系数乘积法分为两类,一类是基于中介效应的抽样分布为正态分布的 Sobel 检验法 ,另一类是基于中介效应的抽样分布为非正态分布的 Bootstrap抽样法 。
① Sobel中介效应检验法
Sobel检验的前提假设是中介效应^a^b是 正态分布且需要大样本。
使用Sobel系数乘积检验法存在的主要问题是,检验统计量依据的正态分布前提很难满足,特别是样本量较少时。因为即使a,b分别服从正态分布,ab的乘积也可能与正态分布存在较大差异。
当前较为流行的检验方法为Bootstrap抽样法,SPSSAU系统里暂未提供Sobel检验,需要使用Sobel检验可参考此链接进行分析:
② Bootstrap抽样法
Bootstrap法能适用于中、小样本和各种中介效应模型,当前SPSSAU【问卷研究】--【中介作用】也使用Bootstrap抽样法进行检验。并且支持一次性放置多个自变量X、中介变量M及控制变量等。
检验方法: Bootstrap抽样法检验是指回归系数a和回归系数b的乘积项(a*b)的95%置信区间是否包括数字0;如果95%置信区间不包括数字0,则说明具有中介作用;如果说95%置信区间包括数字0,即说明没有中介作用。
基于SPSSAU的操作
(1)第一步,登录SPSSAU,上传数据;
(2)第二步,选择【问卷研究】--【中介作用】;
(3)第三步,选择变量拖拽到右侧对应分析框内,点击开始分析。
使用SPSSAU【中介作用】Bootstrap抽样法检验与第一种因果逐步回归检验法在操作上没有任何区别,只是在解读结果时有区分。
结果分析
由上图两项结果指标可知,乘积项结果显著,95%区间并不包括数字0,说明中介变量在x影响y的关系中具有中介效应。
在a*b系数呈现出显著性时,可具体进一步得到中介作用的效应量。
由上图可知,直接效应为0.085,间接效应为0.045,总效应为0.130。间接效应在总效应中占比为34.403%。
因果逐步检验法便于理解和操作而受到欢迎,但也有人研究认为逐步检验会比较不容易得到中介效应显著的结论,检验功效较低。因此,有学者在逐步检验流程上进行相应的修改,得到如下检验步骤:
基于SPSSAU的操作
与上述bootstrap检验法操作方法一致,选择SPSSAU【问卷研究】--【中介作用】,放入对应变量,点击开始分析即可。
结果分析
第一步,检验方程(1)的系数c,如果显著,按中介效应立论,否则按遮掩效应立论。 但无论是否显著,都进行后续检验。
第二步,依次检验方程(2)的系数a和方程(3)的系数b,如果两个都显著,则间接效应显著,转到第四步;如果至少有一个不显著,进行第三步。
第三步,用Bootstrap法检验。如果显著,则间接效应显著,进行第四步;否则间接效应不显著,停止分析。
如果第二步中,系数a、b有一个不显著,则查看a*b中介效应是否显著(a*b95%BootCI是否包括数字0)
第三步:间接效应显著
第四步,检验方程(3)的系数c′,如果不显著,即直接效应不显著,说明只有中介效应。如果显著,即直接效应显著,进行第五步。
第五步,比较ab和c′的符号,如果同号,属于部分中介效应,报告中介效应占总效应的比例ab/c。如果异号,属于遮掩效应,报告间接效应与直接效应的比例的绝对值|ab/c|。
本次研究,自变量x对因变量y的总效应是0.130,影响显著;其中直接效应为0.085,间接效应0.045,具有显著性;最终以有部分中介作用作为结论,中介效应在总效应占比为34.403%。
(1) 中介作用前需要标准化处理吗?
一般情况下,在进行中介作用前需要标准化或中心化处理,可使用数据处理-生成变量功能批量完成标准化或中心化处理;SPSSAU提供的中介作用检验默认不会对数据进行处理。
(2)SPSSAU分析结果中有对检验结果的自动化判断,用户可以直接使用。智能分析中也有相应解读,如果有不了解的地方,可以点击右侧的“灯泡”按钮查看帮助手册。
(3)spssau也支持链式中介检验,操作方法是点击【问卷研究】--【中介效应】,[中介类型]选择“链式中介”。提供中介效应分析方法为非参数百分位Bootstrap法。
(4)如果数据是显变量如何处理?
如果数据是显变量,此时可转换成潜变量再处理即可。使用【生成变量】--【平均值】功能。当然如果是使用结构方程模型进行研究分析中介作用时,建议使用因果逐步回归检验法进行中介效应验证。SPSSAU提供的结构方程模型暂不提供Bootstrap抽样法检验。
统计学(45)-利用Bootstrap法估计置信区间
我们刚才提到了均数、率的置信区间的计算,这些都服从一定的分布(t分布、正态分布),因此在标准误前乘以相应的t分值或Z分值。但如果我们想知道中位数的置信区间,那该怎么办呢?
中位数一般用在偏态分布的情况下,这时候就不好确定其分布面积0.05所对应的分值了。
是不是就没有方法了呢?
事实上,不仅中位数,还有其他参数同样面临这一问题。当找不到合适的分布时,就无法计算置信区间了吗?幸运的是,有一种方法几乎可以用于计算各种参数的置信区间,这就是Bootstrap 法。
Bootstrap估计是利用重复抽样的方法对参数进行估计的,它是在计算机普及以后才开始发展起来的,因为如果没有计算机辅助进行重复抽样,靠手工是极其麻烦的。
统计最核心的思想是什么?我想现在可以理解为就是估计,部分估计总体
假定我们从某所学校中随机抽样调查了20名学生的身高,打算通过这20人的身高估计该学校所有学生(如200 人)的身高。
Bootstrap估计的思路就是从这20人中重复抽样。具体来说,以这20人作为抽样框,做1000次抽样(当然也可以是100次、2000次、甚至10000次等,视具体情况而定),有放回抽样!
(1)根据Bootstrap 抽样,可以对每次抽样都计算出一个均数。
(2)然后以这10个均数作为原始数据,求出这10个均数的均数为166.15, 这就是利用Bootstrap 法进行的点估计。
(3)对于95%置信区间,则分别计算出第2.5%和第97.5%的分位数,如本例为164.25和169.75,这也就是估计的总体均值的95%置信区间,与常规方法计算的95%置信区间比较接近。
(1)百分位数法简单易懂,无须复杂计算,只要有了Bootstrap 样本及每个样本的统计量,找到相应的百分位数即可。
(2)它必须满足一个潜在的假定,即Bootstrap 抽样分布是样本统计量分布的一个无偏估计,当有偏的时候,估计结果可能也会有偏,因此会用百分位数t法。
(3)t法对于95%置信区间,确定0.025和0.975的百分位数,则95%置信区间为:
传统的参数推断主要依赖中心极限定理,因为它规定在大样本条件下,抽样分布都是服从正态分布的。但对于某些抽样分布未知或难以计算的统计量, Bootstrap 法就十分有用了。
事实上,即使对于参数推断, Bootstrap 法也可以显示出与其同样的功效。
(1)计算两个中位数之差的置信区间
采用Bootstrap法的思路是:从样本数据中重复抽取1000次样本,每次抽取n例。在每个Bootstrap样本中,计算两组的中位数之差,最终可计算出1000个中位数之差。然后根据这1000个中位数之差,计算出它们的第2.5 百分位数和第97.5百分位数,这就是两个中位数之差的95%置信区间。如果该置信区间不包含0, 则可以认为两组差异有统计学意义;否则认为两组差异无统计学意义。
(2)计算回归系数的置信区间
假定样本数据有因变量y和自变量x, 采用Bootstrap 法的思路是:从样本数据中重复抽取1000次样本,每个样本都包含y和x, 每次抽取n例。在每个Bootstrap样本中,求出y=a+bx的系数a和b (当然我们关心的是回归系数b) 。最终可计算出1000个回归系数b。然后根据这1000 个回归系数,计算出它们的第2.5百分位数和第97.5百分位数,这就是回归系数的95%置信区间。如果该置信区间不包含0, 则可以认为该回归系数有统计学意义;否则认为该回归系数无统计学意义。( 0,我不懂,是无效假设吗? )
回归分析的Bootstrap抽样不应进行个体数据的重复抽样,而是要对误差进行重复抽样。因为他们认为,自变量是固定的,只有误差项才是随机的。 (这句话,我也没看懂)
bootstrap中介效应检验谁提出
由Baron和Kenny(1986)提出。
Bootstrap法能适用于中、小样本和各种中介效应模型,当前SPSSAU【问卷研究】--【中介作用】也使用Bootstrap抽样法进行检验。并且支持一次性放置多个自变量X、中介变量M及控制变量等。
检验方法:Bootstrap抽样法检验是指回归系数a和回归系数b的乘积项(a*b)的95%置信区间是否包括数字0;如果95%置信区间不包括数字0,则说明具有中介作用;如果说95%置信区间包括数字0,即说明没有中介作用。
R语言实现bootstrap和jackknife检验方法
写在最前面:
首先需要说一下,本文的bootstrap和jackknife都算是蒙特卡罗方法(Monte Carlo method)的一种。应用广泛的的MCMC链(马尔可夫链蒙特卡洛方法;Markov chain Monte Carlo)也是蒙特卡罗与马尔可夫链的结合。简单来说,蒙特卡罗方法就是从已知样本的分布中随机抽取新的样本集进行评估,然后放回,再次抽取的方法。根据具体方法的不同,抽取样本集的手段也不同。
bootstrap抽样方法将观测到的样本视为一个有限的总体,是唯一的信息来源,从中有放回的随机抽样来评估总体特征,以及对抽样总体进行推断统计。bootstrap 也分参数bootstrap和非参数bootstrap,前者的分布已完全知道。但在生信领域一般没有这种情况。所以下面讨论的是非参数bootstrap。
直接上例子:
假设现在有bootstrap包中的law数据集如下,
现在我们要计算LSAT成绩(美国法学入学考试)和GPA之间的相关系数。但因为样本量太少了,所以我们使用bootstrap重复抽样评估其标准误。
200次循环抽样后,计算得se.R标准误为0.1474629
得到如下的图:
1e6次循环抽样后,计算得se.R标准误为0.1333802
得到如下的图:
如果用bootstrap包的bootstrap函数会快一些:
bootstrap函数的用法: bootstrap(抽取样本范围,重复次数,进行bootstrap的函数,bootstrap的数据集)
偏差定义为bootstrap结果(多个数值)与原数据统计结果(单个数值)的均值:
得到bias大约为0.001817608,比较小
换一个包,boot包
这里用了三种方法计算置信区间:basic、正态和百分数。样本相关系数分布接近正态,则正态置信区间接近百分数区间。此外还有“Better Bootstrap Confivendence Interval” 更好的bootstrap置信区间,称为BCa区间,使用偏差和偏度对百分数置信区间进行矫正。设置type="bca"即可。
简单的说,bootstrap是从原有真实样本中有放回地抽取n个。jacknife就是每次都抽取n-1个样本,也就是每次只剔除一个原样本。
同样地,如果以bootstrap包中的law数据进行演示:
Jackknife计算的bias为-0.006473623。 这里jackknife的偏差公式相比于bootstrap有一个(n-1)系数,推导就不写了。
标准误se为0.1425186,与bootstrap得出的比较接近。
当统计量不太平滑的时候,Jacknife有很大误差。比如说对中位数进行统计,其变化很大。在进行Jacknife之后最好再跑一次bootstrap,看看是否相差很大。
居然还能这么嵌套着玩,针对每次bootstrap形成的数列向量计算jackknife的标准差,这样可以看出bootstrap若干次取样之间的差异。
算出来分别为0.1344824和0.08545141。后者较小,表面bootstrap取样之间的variance较小。
简单来说就是一种数据分割检验的方法,将数据分割为K份,称为"K-fold"交叉检验,每次第i个子集作为测试集来评估模型,其余的用来构建模型。Admixture使用的就是这个原理。Jackknife也属于Cross Validation的应用之一。
现在我创建一个这样的alignment:
这棵树长这样,符合遗传距离:
进行bootstrap:
phylogeny的bootstrap是对每一个节点都进行bootstrap取样并建树,比如说在9号节点,查看其bootstrap子集建的树符合系统发育关系((human2,human4,human3)(human8,human1,human6,human7,human5))的百分比(不管内部怎么样,先看这个节点)。发现Node1支持率是100(1000次都符合)。而后移到下一个节点,并且只看节点内部的分支支持率是多少。
其实原理都比较简单,计算bootstrap也会有专门的软件。
参考资料:
1)中科大张伟平教授课件
2)