温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。
连玉君 (中山大学,arlionn@163.com)
陈鑫梅 (暨南大学,1562922593@qq.com)
目录
当你在做研究时,不知道是否有过这样的经历:花了好长时间想出来一个好 idea,但却发现搜集数据存在困难,比方说进行一次抽样的成本较高,再进行一次抽样不太可能实现…… 总之,你无法做到对总体进行多次重复的抽样,也就是说你无法通过统计样本对总体进行推断。
本文为大家介绍了一种再抽样方法——Jackknife (刀切法),并提供了相关 Stata 代码和 Jackknife 与其他几种类似方法的比较说明,旨在为解决上述问题提供一种思路。
Jackknife 方法由 Quenouille(1949) 提出,并由 Tukey(1958) 创造了 Jackkife 这一术语。Jackknife 是一种再抽样方法,其原始动机是「降低估计的偏差」。
具体来看,对于未知分布的总体,从中抽取样本容量为
将
虚拟值的期望值等于总体参数减去一个无穷小量,由此表明它对总体参数的估计相对于
Note: 本部分内容摘自「连洪泉、高庆辉和周业安 (2018)」,同时参考「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 |
Jackknife2
可用于刀切线性估计,并且允许用户计算「交叉验证」和「诊断度量 (diagnostic measures)」,但是这些措施目前在 ivregress 2sls
、xtreg
和 xtivreg
命令之后是不能进行的。jacknife2
和 jknife2
都可表示 jackknife2
。
Jackknife
和 Jackknife2
建立在
Jackknife
在删除某一样本单位的基础上运行适当的估计命令,退出循环后,计算刀切估计的偏差。这种计算方式代价昂贵,因为要计算
Jackknife2
在每次迭代中运用 L1O 公式计算了 L1O 估计值;在循环中,还积累了计算刀切估计的方差和偏差,这大大减轻了计算负担。
基本语法
jackknife2 [, options] : command
Jackknife 和 Jackknife2 命令实例
sysuse auto, clear
jackknife: 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, clear
jackknife2: 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.4492
Cross-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
------------------------------------------------------------------------------
当统计函数不是平滑函数时,数据小的变化会带来统计量的一个大的变化,如极值、中值。
具体来看,数据集
Note: 详见 Efron(1993, p.148) 和「如何用自助法或刀切法估计偏差、方差?」。
Bootstrap 基本思想
Bootstrap 的基本思想是:如果观测样本是从母体中随机抽取的,那么它将包含母体的全部的信息,那么我们不妨就把这个观测样本视为“总体”。可以简单地概括为:既然样本是抽出来的,那我何不从样本中再抽样。关于 Bootstrap 的详细介绍,参考「Stata: Bootstrap 简介」。
两者的关系
其一,抽样方法不同。Bootstrap 采用的是「可重复抽样」,或「有放回抽样」。
其二,Jackknife 在解决不光滑 (Smooth) 参数估计时会失效,而 Bootstrap 可以解决这个问题。
其三,若统计量是线性的,二者的结果会非常接近。虽然从表面上看,Jackknife 似乎只利用了非常有限的样本信息。对于非线性统计量而言,Jackknife 会有信息损失,此时 Bootstrap 较好。这是因为,Jackknife 可以视为 Bootstrap 的线性近似。换言之,Jackknife 的准确程度取决于统计量与其线性展开的接近程度。
机器建模中,数据被分为训练集和测试集,测试集与训练模型无关,用于模型的评估。在训练模型时,往往面临过拟合问题 (模型能够匹配训练数据,但预测训练集以外的数据效果欠佳),一个解决的思路就是利用测试集的数据调整模型参数,但这将影响评估模型的准确性 (训练模型时已经利用测试集数据的信息)。通常,我们会选择将训练集再进行划分,留一部分数据作为验证集,用于评估模型训练效果。
交叉验证法是将数据样本切割成较小样本的方法。将每个子集分别作为一次验证集,而其他子集作为训练集。交叉验证的目的是定义一个验证集在训练阶段测试模型,并得出未知数据集 (测试集) 应用于该模型的结果。
留一法 (Leave One Out Cross Validation,LOOCV)
留一法 是指只使用原样本中的一个样本作为验证集,其他数据作为训练集。本质上,留一法 与 Jackknife 并无区别。广义上来讲,还存在 留二法 (留出 2 个观察值作为验证集,其余作为训练集),留三法,…… 。
Stata 用 Leave-one-out 交叉验证评估模型的 performance
*ssc install loocv, replace
loocv reg mpg weight trunk
Leave-One-Out Cross-Validation Results
-----------------------------------------
Method | Value
-------------------------+---------------
Root Mean Squared Errors | 3.5503247
Mean Absolute Errors | 2.4184582
Pseudo-R2 | .61889574
-----------------------------------------
K 折交叉验证 (K-Fold Cross Validation)
将训练集分成
蒙特卡洛交叉验证 (Monte Carlo Cross Validation)
蒙特卡洛交叉验证也叫作重复随机子抽样验证 (Repeated random sub-sampling validation),数据集被随机分为训练集和验证集,用训练集训练模型,使用验证集评估预测是否准确。这种方法拆分训练集和验证集的比例不依赖 “折叠” 次数,但是,随机分解数据可能会使某些数据从未被选入验证集,也可能被多次选中。这些不确定因素使得实验结果不可复制。
Note: 关于交叉验证的更多资料 (crossfold
、kfoldclass
命令介绍及实例等),详见「Stata: 交叉验证是什么东东?」。
得益于 Jackknife 的一些优势,以及「去一法」的广泛应用,Stata 中已经有不少相关的外部命令,这里列举一些,供大家参考:
help cv_regress // estimate the leave-one-out error for linear regression models
help estrat // module to perform Endogenous Stratification for Randomized Experiments
help loocv // module to perform Leave-One-Out Cross-Validation
help looclass // module for generating classification statistics of Leave-One-Out cross-validation for binary outcomes
连享会-直播课 上线了!
http://lianxh.duanshu.com
免费公开课:
直击面板数据模型 - 连玉君,时长:1小时40分钟 Stata 33 讲 - 连玉君, 每讲 15 分钟. 部分直播课 课程资料下载 (PPT,dofiles等)
支持回看,所有课程可以随时购买观看。
专题 | 嘉宾 | 直播/回看视频 |
---|---|---|
⭐ 最新专题 ⭐ | DSGE, 因果推断, 空间计量等 | |
⭕ Stata数据清洗 | 游万海 | 直播, 2 小时,已上线 |
研究设计 | 连玉君 | 我的特斯拉-实证研究设计,-幻灯片- |
面板模型 | 连玉君 | 动态面板模型,-幻灯片- |
面板模型 | 连玉君 | 直击面板数据模型 [免费公开课,2小时] |
Note: 部分课程的资料,PPT 等可以前往 连享会-直播课 主页查看,下载。
关于我们
课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法
等
连享会小程序:扫一扫,看推文,看视频……
扫码加入连享会微信群,提问交流更方便
✏ 连享会学习群-常见问题解答汇总:
✨ https://gitee.com/arlionn/WD