18910140161

计量中的Bootstrap是干啥用的?

2021-11-06 16:46:55

192

Bootstrap 简介:Bootstrap 在中文中译为「自抽样」,「自举法」,「靴带法」。若将其纯粹视为一个英文名词,它的意思是「拔靴带」—— 通过提拉鞋带,自己把自己抬起来。这听起来多少有点「力拔山兮气盖世」的项羽大英雄当年邀众人比试力量时定下的规则:坐在椅子上,双脚离地,看谁能单凭手力把椅子和自己抬起来。又或者有人传说,项羽的力量大到可以「自己拽着自己的头发就可以把自己抬离地面」。

虽然上述都是玩笑话,但却基本上道出了 Bootstrap 的核心思想:通过从现有样本中有放回地抽样来获得更多的「样本」(由于不是真正从母体中抽出来,所以称这些二次抽样获取的样本为「经验样本」),并进而以这些「经验样本」为基础构造统计量的标准误或置信区间,以达到统计推断的目的。

正儿八经的表述是这样的:Bootstrap 是一种崭新的增广样本统计方法,为解决小样本问题提供了很好的思路。它是非参数统计中一种重要的估计统计量方差进而进行区间估计的统计方法。对于回归模型:对于线性回归模型:

E\left(u_{t} \mid X_{t}\right)=0, E\left(u_{s} u_{t}=0\right) \forall s \neq t \\

可以通过多种方法来建立 Bootstrap 的数据生成过程 (DGP) 。所谓的 Bootstrap DGP 是对末知的 「真实 DGP」的一种估计。如果 Bootstrap DGP 在某种意义上接近真实的 DGP,那么由 Bootstrap DGP 生成的数据将与真实 DGP 生成的数据相似(如果已知的话)。如果是这样,则进行模拟使用 Bootstrap DGP 获得的 \mathrm{P} 值与真实 \mathrm{P} 值足够接近,可以进行准确的推理。

Bootstrap 的基本思想是:如果 观测样本 是从母体中随机抽取的,那么它将包含母体的全部的信 息,那么我们不妨就把这个观测样本视为“总体”。可以简单地概括为:既然样本是抽出来的,那我 何不从样本中再抽样。

具体而言,Bootstrap 的步是生成一系列 Bootstrap 经验样本 (Empirical Sample) (有时也被形象地称为 「伪样本」),每个样本都是初始数据的一次有放回抽样。通过对 经验样本 的计算,获得统计量的分布。例如,要进行 1000 次 Bootstrap,求平均值的置信区间,可以对每个经验样本 计算平均值。这样就获得了 1000 个平均值。对这 1000 个平均值的分位数进行计算, 即可获得置信区间。已经证明,在初始样本足够大且初始样本是从母体中随机抽取的情况下,Bootstrap 抽样能够无偏接近总体的分布。

Bootstrap 的基本步骤如下:

Step 1: 采用有放回抽样方法从原始样本中抽取一定数量的子样本。Step 2: 根据抽出的样本计算想要的统计量。Step 3: 重复前两步 K 次,得到 K 个统计量的估计值。Step 4: 根据 K 个估计值获得统计量的分布,并计算置信区间。有放回抽样

所谓 「有放回抽样」 (Samping with replacement) 指的是在逐个抽取个体时,每次被抽到的个体放 回总体中后,再进行下次抽取的抽样方法。

举个例子, 对于由 0.10.3 这两个数字构成的观测样本而言, 记为 S_{0}=(0.1,0.3) 。则采用有放 回抽样 (Bootstrapping), 可以得到如下三种不同的经验样本: S_{1}^{B S}=(0.1,0.1), S_{2}^{B S}=(0.1,0.3) ,S_{3}^{B S}=(0.3,0.3)

实际应用过程中, 对于包含 \mathrm{N} 个观察值的 观测样本 而言, Bootstrap 抽样得到的经验样本也会包含 \mathrm{N} 个观察值。这意味着,在某个 经验样本 中,有些观察值可能被多次抽中,而有些观察值则可能一 次都没有被抽中。例如,在上例中, 经验样本 S_{1}^{B S} 中的观察值 0.1 被抽中了两次, 而 0.3 则一次都 没有被抽中。

标准差与标准误

简言之,统计量的标准差就称为 标准误。详情参见 「知平 - 统计学上标准差与标准误的区别与联系 是什么?」,以及「CSDN - 标准差(Standard Deviation) 和 标准误差(Standard Error)」。

编写 Bootstrap 程序

Stata 的 Bootstrap 命令非常方便,它不仅可以与估计命令(例如 OLS 回归和 logistic 回归)还与非估计命令(比如 summarize )无缝衔接。Bootstrap 可以自动执行自抽样过程,得到想要的统计量,并计算相关的统计指标(例如偏差和置信区间)。然而尽管这个命令非常方便,但在某些情况下想要获得的统计量却不能通过 Bootstrap 实现。对于这些情况,您需要自行编写Bootstrap程序。

本篇Stata FAQ 将演示如何自行编写Bootstrap 程序。在个例子中,我们将 Bootstrap的结果与自行编写 Bootstrap程序的结果进行对比。通过比较, 可以发现自行编写 Bootstrap 程序非常容易。接下来的一个示例将展示当Bootstrap无法获得想要的统计量时,如何自行编写 Bootstrap 程序。

为了使后续结果呈现更加美观,在执行Stata范例之前,我们可以先执行如下格式设定命令:

set cformat %4.3f //回归结果中系数的显示格式set pformat %4.3f //回归结果中 p 值的显示格式set sformat %4.2f //回归结果中 se值的显示格式set showbaselevels off, permanentlyset showemptycells off, permanentlyset showomitted off, permanentlyset fvlabel on, permanentlyStata 范例 1:OLS 回归的 RMSE 的标准误

在例一中,将通过使用 Bootstrap和自行编写的Bootstrap程序来比较结果。我们使用Stata 自带的nlsw88.dta 数据中的年龄(age)、种族 (race)、婚姻状况 (married) 和工作经验(tenure) 对妇女工资(wage) 进行回归,并通过 Bootstrap 获得均方根误差(rmse)的标准误。对于 Bootstrap 我们要求重复 100 次并且指定随机种子数,以确保结果开重现。

首先,进行初始回归。

. sysuse "nlsw88.dta", clear. regress wage age race married tenure

结果如下:

Source | SS df MS Number of obs = 2,231-------------+---------------------------------- F(4, 2226) = 26.36 Model | 3351.46097 4 837.865242 Prob > F = 0.0000 Residual | 70750.3667 2,226 31.7836328 R-squared = 0.0452-------------+---------------------------------- Adj R-squared = 0.0435 Total | 74101.8276 2,230 33.2295191 Root MSE = 5.6377------------------------------------------------------------------------------ wage | Coef. Std. Err. t P>|t| [95% Conf. Interval]-------------+---------------------------------------------------------------- age | -0.107 0.039 -2.74 0.006 -0.184 -0.030 …… (Output omitted) _cons | 12.842 1.608 7.99 0.000 9.689 15.996------------------------------------------------------------------------------

Bootstrap rmse = e(rmse), reps(100) seed(12345): /// regress wage age race married tenure

结果如下:

Bootstrap replications (100)----+--- 1 ---+--- 2 ---+--- 3 ---+--- 4 ---+--- 5.................................................. 50.................................................. 100Linear regression Number of obs = 2,231 Replications = 100 command: regress wage age race married tenure rmse: e(rmse)------------------------------------------------------------------------------ | Observed Bootstrap Normal-based | Coef. Std. Err. z P>|z| [95% Conf. Interval]-------------+---------------------------------------------------------------- rmse | 5.638 0.209 26.95 0.000 5.228 6.048------------------------------------------------------------------------------

通过 estat Bootstrap 得到上述 Bootstrap 过程产生的所有信息。

estat Bootstrap, allLinear regression Number of obs = 2,231 Replications = 100 command: regress wage age race married tenure rmse: e(rmse)------------------------------------------------------------------------------ | Observed Bootstrap | Coef. Bias Std. Err. [95% Conf. Interval]-------------+---------------------------------------------------------------- rmse | 5.6376975 -.0200716 .2092082 5.227657 6.047738 (N) | 5.248575 6.006687 (P) | 5.251228 6.048207 (BC)------------------------------------------------------------------------------(N) normal confidence interval(P) percentile confidence interval(BC) bias-corrected confidence interval

详细内容参见连享会推文

专题:Stata程序 Stata: Bootstrap-自抽样-自举法相关推文 Note:产生如下推文列表的 Stata 命令为:. lianxh 模拟. songbl 模拟安装最新版 lianxh/ songbl 命令:. ssc install lianxh, replace. ssc install songbl, replace 专题:Stata教程 Stata博文系列:边模拟边学计量经济学-Econometrics-By-Simulation专题:Stata程序 Stata:蒙特卡洛模拟A-(Monte-Carlo-Simulation)没那么神秘Stata程序:Monte-Carlo-模拟之产生符合特定分布的随机数Stata:蒙特卡洛模拟分析 (Monte Carlo Simulation)专题:回归分析 Stata:在线可视化模拟-OLS-的性质专题:时间序列 Stata: VAR - 模拟、估计和推断专题:Python-R-Matlab MATLAB:Ramsey模型的求解与模拟
我们已经准备好了,你呢?
2024我们与您携手共赢,为您的企业形象保驾护航