bootstrap 检验 法 原理_Stata:刀切法/留一法/Jackknife 简介
连玉君 (中山大学,arlionn@163.com)
陈鑫梅 (暨南大学,1562922593@qq.com)
空间计量专题课程
1. 引言
当你在做研究时,不知道是否有过这样的经历:花了好长时间想出来一个好 idea,但却发现搜集数据存在困难,比方说进行一次抽样的成本较高,再进行一次抽样不太可能实现…… 总之,你无法做到对总体进行多次重复的抽样,也就是说你无法通过统计样本对总体进行推断。
本文为大家介绍了一种再抽样方法——Jackknife (刀切法),并提供了相关 Stata 代码和 Jackknife 与其他几种类似方法的比较说明,旨在为解决上述问题提供一种思路。
2. Jackknife 介绍
Jackknife 方法由 Quenouille(1949) 提出,并由 Tukey(1958) 创造了 Jackkife 这一术语。Jackknife 是一种再抽样方法,其原始动机是「降低估计的偏差」。
具体来看,对于未知分布的总体,从中抽取样本容量为 的样本,以样本统计量 来估计总体参数 会产生一定误差,尤其在小样本的情况下。为解决这样一个问题,可以将从原样本切去第 个个体后计算得到的统计量记为 。一般而言,估计值与实际值之间会相差一个常量 (偏差) 和一个无穷小量:
将 与 的差定义为切去第 个个体后的虚拟值 (pesudovalues),则有:
虚拟值的期望值等于总体参数减去一个无穷小量,由此表明它对总体参数的估计相对于 更为精确。因此,可以用虚拟值的均值作为总体参数的一个无偏估计:
的方差:
Note: 本部分内容摘自「连洪泉、高庆辉和周业安 (2018)」,同时参考「Jackknife方法简介」。
温馨提示: 文中链接在微信中无法生效。请点击底部
3. Jackknife 的 Stata 实现
3.1 Jackknife 命令介绍
基本语法
jackknife exp_list [, options eform_option] : command
主要选项
options | Description |
---|---|
cluster(varlist) | variables identifying sample clusters |
idcluster(newvar) | create new cluster ID variable |
keep | keep pseudovalues |
mse | use MSE formula for variance estimation |
3.2 Jackknife2 命令介绍
Jackknife2
可用于刀切线性估计,并且允许用户计算「交叉验证」和「诊断度量 (diagnostic measures)」,但是这些措施目前在 ivregress 2sls
、xtreg
和 xtivreg
命令之后是不能进行的。jacknife2
和 jknife2
都可表示 jackknife2
。
Jackknife
和 Jackknife2
建立在 次迭代的循环上,每一样本单元对应一次迭代,区别在于每次迭代的 L1O 估计的计算方式。
Jackknife
在删除某一样本单位的基础上运行适当的估计命令,退出循环后,计算刀切估计的偏差。这种计算方式代价昂贵,因为要计算 次 矩阵的逆运算。Jackknife2
在每次迭代中运用 L1O 公式计算了 L1O 估计值;在循环中,还积累了计算刀切估计的方差和偏差,这大大减轻了计算负担。
基本语法
jackknife2 [, options] : command
Jackknife 和 Jackknife2 命令实例
sysuse auto, clearjackknife: regress mpg weight trunk
*-输出结果Jackknife replications (74)----+--- 1 ---+--- 2 ---+--- 3 ---+--- 4 ---+--- 5 .................................................. 50........................
Linear regression Number of obs = 74 Replications = 74 F( 2, 73) = 78.10 Prob > F = 0.0000 R-squared = 0.6543 Adj R-squared = 0.6446 Root MSE = 3.4492
------------------------------------------------------------------------------ | Jackknife mpg | Coef. Std. Err. t P>|t| [95% Conf. Interval]-------------+---------------------------------------------------------------- weight | -.0056527 .0010216 -5.53 0.000 -.0076887 -.0036167 trunk | -.096229 .1486236 -0.65 0.519 -.3924354 .1999773 _cons | 39.68913 1.873324 21.19 0.000 35.9556 43.42266------------------------------------------------------------------------------
sysuse auto, clearjackknife2: regress mpg weight trunk
*-输出结果Jackknife replications (74)----+--- 1 ---+--- 2 ---+--- 3 ---+--- 4 ---+--- 5 .................................................. 50........................
Linear regression Number of obs = 74 Replications = 74 F( 2, 71) = 67.19 Prob > F = 0.0000 R-squared = 0.6543 Adj R-squared = 0.6446 Root MSE = 3.4492Cross-validation criterion = 932.76------------------------------------------------------------------------------ | Jackknife mpg | Coef. Std. Err. t P>|t| [95% Conf. Interval]-------------+---------------------------------------------------------------- weight | -.0056527 .0010216 -5.53 0.000 -.0076896 -.0036157 trunk | -.096229 .1486236 -0.65 0.519 -.392576 .2001179 _cons | 39.68913 1.873323 21.19 0.000 35.95383 43.42443------------------------------------------------------------------------------
3.3 Jackknife 不适用的情形
当统计函数不是平滑函数时,数据小的变化会带来统计量的一个大的变化,如极值、中值。
具体来看,数据集 的中位数是 46。然而,使用 Jackknife 估计得到中位数集 (依次去掉其中一个样本,求剩下样本的中位数) 为 。因此,只有在满足原始样本平滑的条件下,Jackknife 结果才会接近 Bootstrap,否则估计结果将是有偏的。
Note: 详见 Efron(1993, p.148) 和「如何用自助法或刀切法估计偏差、方差?」。
温馨提示: 文中链接在微信中无法生效。请点击底部
4. Jackknife 与其他方法的联系
4.1 Jackknife 与 Bootstrap
Bootstrap 基本思想
Bootstrap 的基本思想是:如果观测样本是从母体中随机抽取的,那么它将包含母体的全部的信息,那么我们不妨就把这个观测样本视为“总体”。可以简单地概括为:既然样本是抽出来的,那我何不从样本中再抽样。关于 Bootstrap 的详细介绍,参考「Stata: Bootstrap 简介」。
温馨提示: 文中链接在微信中无法生效。请点击底部
两者的关系
其一,抽样方法不同。Bootstrap 采用的是「可重复抽样」,或「有放回抽样」。
其二,Jackknife 在解决不光滑 (Smooth) 参数估计时会失效,而 Bootstrap 可以解决这个问题。
其三,若统计量是线性的,二者的结果会非常接近。虽然从表面上看,Jackknife 似乎只利用了非常有限的样本信息。对于非线性统计量而言,Jackknife 会有信息损失,此时 Bootstrap 较好。这是因为,Jackknife 可以视为 Bootstrap 的线性近似。换言之,Jackknife 的准确程度取决于统计量与其线性展开的接近程度。
4.2 Jackknife 与交叉验证法
机器建模中,数据被分为训练集和测试集,测试集与训练模型无关,用于模型的评估。在训练模型时,往往面临过拟合问题 (模型能够匹配训练数据,但预测训练集以外的数据效果欠佳),一个解决的思路就是利用测试集的数据调整模型参数,但这将影响评估模型的准确性 (训练模型时已经利用测试集数据的信息)。通常,我们会选择将训练集再进行划分,留一部分数据作为验证集,用于评估模型训练效果。
交叉验证法是将数据样本切割成较小样本的方法。将每个子集分别作为一次验证集,而其他子集作为训练集。交叉验证的目的是定义一个验证集在训练阶段测试模型,并得出未知数据集 (测试集) 应用于该模型的结果。
留一法 (Leave One Out Cross Validation,LOOCV)
留一法 是指只使用原样本中的一个样本作为验证集,其他数据作为训练集。本质上,留一法 与 Jackknife 并无区别。广义上来讲,还存在 留二法 (留出 2 个观察值作为验证集,其余作为训练集),留三法,…… 。
Stata 用 Leave-one-out 交叉验证评估模型的 performance*ssc install loocv, replaceloocv reg mpg weight trunk
Leave-One-Out Cross-Validation Results ----------------------------------------- Method | Value-------------------------+---------------Root Mean Squared Errors | 3.5503247Mean Absolute Errors | 2.4184582Pseudo-R2 | .61889574-----------------------------------------
K 折交叉验证 (K-Fold Cross Validation)
将训练集分成 个子样本,其中的一个子样本被当作验证集,剩下 个样本是训练集。交叉验证重复 次,使每个子样本都作为验证集验证一次 (10 次交叉验证是最常用的)。当数据总量较小,并且选择其它方法也无法提升性能时,可以考虑使用 K 折交叉验证 (当数据量大时,该法会使训练时间加长)。
蒙特卡洛交叉验证 (Monte Carlo Cross Validation)
蒙特卡洛交叉验证也叫作重复随机子抽样验证 (Repeated random sub-sampling validation),数据集被随机分为训练集和验证集,用训练集训练模型,使用验证集评估预测是否准确。这种方法拆分训练集和验证集的比例不依赖 “折叠” 次数,但是,随机分解数据可能会使某些数据从未被选入验证集,也可能被多次选中。这些不确定因素使得实验结果不可复制。
Note: 关于交叉验证的更多资料 (crossfold
、kfoldclass
命令介绍及实例等),详见「Stata: 交叉验证是什么东东?」。
温馨提示: 文中链接在微信中无法生效。请点击底部
5. 相关命令概览
得益于 Jackknife 的一些优势,以及「去一法」的广泛应用,Stata 中已经有不少相关的外部命令,这里列举一些,供大家参考:
help cv_regress // estimate the leave-one-out error for linear regression modelshelp estrat // module to perform Endogenous Stratification for Randomized Experimentshelp loocv // module to perform Leave-One-Out Cross-Validationhelp looclass // module for generating classification statistics of Leave-One-Out cross-validation for binary outcomes
6. 参考资料
温馨提示: 文中链接在微信中无法生效。请点击底部
- Quenouille M H. Approximate tests of correlation in time-series[J]. Journal of the Royal Statistical Society. Series B (Methodological), 1949, 11(1): 68-84. Link1 Link2
- Tukey J. Bias and confidence in not quite large samples[J]. Ann. Math. Statist., 1958, 29: 614. Link
- Efron B, Tibshirani R J. An introduction to the bootstrap[M]. Chapman & Hall, 1993. Link
- Efron, B. Bootstrap Methods: Another Look at the Jackknife[J]. The Annals of Statistics, 1979, 7(1): 1-26. Link
- Walsh B. Re sampling methods: randomization test, Jackknife and Bootstrap Estimators[J]. Lecture Notes, 2000. Link
- Poi B P. Jackknife instrumental variables estimation in Stata[J]. The Stata Journal, 2006, 6(3): 364-376. Link1 Link2
- Cameron A C, Trivedi P K. Microeconometrics using stata[M]. College Station, TX: Stata press, 2009. Link Data&Progs
- 连洪泉, 高庆辉, 周业安. 个人所得税缩减贫富差距的效应有多大?——基于 CHNS 调查数据和刀切法的动态评估[J]. 经济学报, 2018 (3): 7. Link
- Jackknife方法简介 Link
- 如何用自助法或刀切法估计偏差、方差?Link
- Stata: Bootstrap 简介 Link
- Stata: 交叉验证是什么东东?
bootstrap 检验 法 原理_Stata:刀切法/留一法/Jackknife 简介相关推荐
- stata F值缺失_Stata:刀切法-去一法-Jackknife 简介
连玉君 (中山大学,arlionn@163.com) 陈鑫梅 (暨南大学,1562922593@qq.com) Stata连享会 主页 || 视频 || 推文 http://qr06.cn/B9E ...
- bootstrap 检验 法 原理_检验检测技术分享课程:公共场所集中空调通风系统 卫生标准及其检测要点...
为方便检验检测行业人员疫情期间线上协作及学习,普洛赛斯检测为您准备了丰富的在线学习课程及资料,欢迎大家一起在线交流知识,互相学习.同时进行线上对接检测业务等服务.咨询电话范经理18758013176. ...
- bootstrap 检验 法 原理_广义倾向得分匹配法(GPS)(二)
* cd "/Volumes/18210463169/---当 前 需 要 做 的 工 作---/广义倾向得分匹配法 学习 (GPS)"cd "G:\课件\2020年 硕 ...
- Stata:刀切法-去一法-Jackknife简介
原文链接:https://www.lianxh.cn/news/53db66a7540f1.html 目录 1. 引言 2. Jackknife 介绍 3. Jackknife 的 Stata 实现 ...
- 交叉验证的缘由、原理以及四种交叉验证法(留出法,K-Fold,留一法,Bootstrap)
[机器学习]Cross-Validation(交叉验证)详解 普通情况下,就是将数据集分为训练集和测试集. 这个简单的划分方法存在两个弊端. 1.最终模型与参数的选取将极大程度依赖于你对训练集和测试集 ...
- python实现留一法_数据分割:留出法train_test_split、留一法LeaveOneOut、GridSearchCV(交叉验证法+网格搜索)、自助法...
1.10 交叉验证,网格搜索 学习目标 目标 知道交叉验证.网格搜索的概念 会使用交叉验证.网格搜索优化训练模型 1 什么是交叉验证(cross validation) 交叉验证:将拿到的训练数据,分 ...
- 如何使用SPSS Amos进行验证性因子分析(CFA)和Bootstrap检验中介效应
如何使用SPSS Amos进行验证性因子分析(CFA)和Bootstrap检验 准备 验证性因子分析 Bootstrap检验中介效应 相关链接 准备 分析前需要安装并激活SPSS Amos软件,这里以 ...
- 交叉验证(s折、分层、留一法)
目录 交叉验证原理 交叉验证分类 1.标准交叉验证(s折交叉验证) 代码实现 2.分层交叉验证 代码实现 StratifiedKFold参数 3.留一法交叉验证 代码实现 代码说明 交叉验证原理 交叉 ...
- 评估方法(交叉验证法、自助法、留出法)
文章目录 留出法 hold-out 交叉验证法 cross validation k折交叉验证 留一法 leave-one-out cross validation 自助法 bootstrapping ...
最新文章
- Redis主从握手流程,你真的了解了吗?
- Mysql 错误 Code: 1093. You can't specify target table for update in FROM clause
- WebBrowser介绍——Javascript与C++互操作
- 【C++】Visual studio样式定制
- adobe stream的最后一行空行_Excel VBA 7.66 如何快速删除数据间空行?手动慢又乱!VBA快又准...
- java 多线程 交替_java 多线程–线程交替
- 菜鸟车辆路径规划创造26项世界纪录 实际可降低10.3%配送成本
- 【OpenCV 例程200篇】10. 图像的拼接(np.hstack)
- ansible操作远程服务器报Error: ansible requires the stdlib json or simplejson module, neither was found!...
- java架构实践_Java架构实践-关于IO流
- 刘汝佳--WERTY
- jmail邮件服务器,jmail.smtpmail的核心代码:
- 史上最简SLAM零基础解读(4) - 单应性Homography →公式推导与细节理解
- 腾讯和360之争之二
- mysql查询数据库剩余空间大小_MySQL中查询所有数据库占用磁盘空间大小
- Caused by: java.util.concurrent.ExecutionException: java.util.concurrent.ExecutionException: com.and
- 字节跳动/今日头条校招大礼包 2019年校招大礼包
- 玩客云root成功一键获取root权限
- 智能合约--如何实现可升级的智能合约
- SAP MIGO生产订单入库校验BADI增强MB_MIGO_BADI
热门文章