Stata:刀切法-去一法-Jackknife 简介

发布时间:2020-07-05 阅读 181

连玉君 (中山大学,arlionn@163.com)
陈鑫梅 (暨南大学,1562922593@qq.com)

Stata连享会   主页 || 视频 || 推文

连享会 - Stata 暑期班

线上直播 9 天:2020.7.28-8.7
主讲嘉宾:连玉君 (中山大学) | 江艇 (中国人民大学)
课程主页https://gitee.com/arlionn/PX | 微信版


目录


1. 引言

当你在做研究时,不知道是否有过这样的经历:花了好长时间想出来一个好 idea,但却发现搜集数据存在困难,比方说进行一次抽样的成本较高,再进行一次抽样不太可能实现…… 总之,你无法做到对总体进行多次重复的抽样,也就是说你无法通过统计样本对总体进行推断。

本文为大家介绍了一种再抽样方法——Jackknife (刀切法),并提供了相关 Stata 代码和 Jackknife 与其他几种类似方法的比较说明,旨在为解决上述问题提供一种思路。

2. Jackknife 介绍

Jackknife 方法由 Quenouille(1949) 提出,并由 Tukey(1958) 创造了 Jackkife 这一术语。Jackknife 是一种再抽样方法,其原始动机是「降低估计的偏差」。

具体来看,对于未知分布的总体,从中抽取样本容量为 n 的样本,以样本统计量 θn 来估计总体参数 θ 会产生一定误差,尤其在小样本的情况下。为解决这样一个问题,可以将从原样本切去第 i 个个体后计算得到的统计量记为 θi。一般而言,估计值与实际值之间会相差一个常量 (偏差) 和一个无穷小量:

将 nθn 与 (n1)θn 的差定义为切去第 i 个个体后的虚拟值 θi (pesudovalues),则有:

虚拟值的期望值等于总体参数减去一个无穷小量,由此表明它对总体参数的估计相对于 θn 更为精确。因此,可以用虚拟值的均值作为总体参数的一个无偏估计:

θi 的方差:

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 2slsxtregxtivreg 命令之后是不能进行的。jacknife2jknife2 都可表示 jackknife2

JackknifeJackknife2 建立在 n 次迭代的循环上,每一样本单元对应一次迭代,区别在于每次迭代的 L1O 估计的计算方式。

  • Jackknife 在删除某一样本单位的基础上运行适当的估计命令,退出循环后,计算刀切估计的偏差。这种计算方式代价昂贵,因为要计算 n 次  K×K 矩阵的逆运算。

  • 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
------------------------------------------------------------------------------

3.3 Jackknife 不适用的情形

当统计函数不是平滑函数时,数据小的变化会带来统计量的一个大的变化,如极值、中值。

具体来看,数据集 X=(10,27,31,40,46,50,52,104,146) 的中位数是 46。然而,使用 Jackknife 估计得到中位数集 (依次去掉其中一个样本,求剩下样本的中位数) 为 Y=(48,48,48,48,45,43,43,43,43)。因此,只有在满足原始样本平滑的条件下,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, 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)

将训练集分成 K 个子样本,其中的一个子样本被当作验证集,剩下 K1 个样本是训练集。交叉验证重复 K 次,使每个子样本都作为验证集验证一次 (10 次交叉验证是最常用的)。当数据总量较小,并且选择其它方法也无法提升性能时,可以考虑使用 K 折交叉验证 (当数据量大时,该法会使训练时间加长)。

蒙特卡洛交叉验证 (Monte Carlo Cross Validation)

蒙特卡洛交叉验证也叫作重复随机子抽样验证 (Repeated random sub-sampling validation),数据集被随机分为训练集和验证集,用训练集训练模型,使用验证集评估预测是否准确。这种方法拆分训练集和验证集的比例不依赖 “折叠” 次数,但是,随机分解数据可能会使某些数据从未被选入验证集,也可能被多次选中。这些不确定因素使得实验结果不可复制。

Note: 关于交叉验证的更多资料 (crossfoldkfoldclass命令介绍及实例等),详见「Stata: 交叉验证是什么东东?」

5. 相关命令概览

得益于 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

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: 交叉验证是什么东东? Link

???? 连享会 - 文本分析与爬虫 - 专题视频
???? 已上线:可随时购买,7.31 日下架
???? 主讲嘉宾:司继春 || 游万海
???? 课程主页:https://gitee.com/arlionn/text

连享会-文本分析与爬虫-专题视频教程
连享会-文本分析与爬虫-专题视频教程

连享会 - 效率分析专题

???? 已上线:可随时购买,7.31 日下架
???? 主讲嘉宾:连玉君 | 鲁晓东 | 张宁

???? 课程主页https://gitee.com/arlionn/TE

连享会-效率分析专题视频
连享会-效率分析专题视频

相关课程

连享会-直播课 上线了!
http://lianxh.duanshu.com

免费公开课:


课程一览

支持回看,所有课程可以随时购买观看。

专题 嘉宾 直播/回看视频
Stata暑期班 连玉君
江艇
线上直播 9 天
2020.7.28-8.7
效率分析-专题 连玉君
鲁晓东
张 宁
视频-TFP-SFA-DEA
已上线,3天
文本分析/爬虫 游万海
司继春
视频-文本分析与爬虫
已上线,4天
空间计量系列 范巧 空间全局模型, 空间权重矩阵
空间动态面板, 空间DID
研究设计 连玉君 我的特斯拉-实证研究设计-幻灯片-
面板模型 连玉君 动态面板模型-幻灯片-
直击面板数据模型 [免费公开课,2小时]

Note: 部分课程的资料,PPT 等可以前往 连享会-直播课 主页查看,下载。


关于我们

  • Stata连享会 由中山大学连玉君老师团队创办,定期分享实证分析经验。直播间 有很多视频课程,可以随时观看。
  • 连享会-主页知乎专栏,300+ 推文,实证分析不再抓狂。
  • 公众号推文分类: 计量专题 | 分类推文 | 资源工具。推文分成 内生性 | 空间计量 | 时序面板 | 结果输出 | 交乘调节 五类,主流方法介绍一目了然:DID, RDD, IV, GMM, FE, Probit 等。
  • 公众号关键词搜索/回复 功能已经上线。大家可以在公众号左下角点击键盘图标,输入简要关键词,以便快速呈现历史推文,获取工具软件和数据下载。常见关键词:
    • 课程, 直播, 视频, 客服, 模型设定, 研究设计, 暑期班
    • stata, plus,Profile, 手册, SJ, 外部命令, profile, mata, 绘图, 编程, 数据, 可视化
    • DID,RDD, PSM,IV,DID, DDD, 合成控制法,内生性, 事件研究, 交乘, 平方项, 缺失值, 离群值, 缩尾, R2, 乱码, 结果
    • Probit, Logit, tobit, MLE, GMM, DEA, Bootstrap, bs, MC, TFP, 面板, 直击面板数据, 动态面板, VAR, 生存分析, 分位数
    • 空间, 空间计量, 连老师, 直播, 爬虫, 文本, 正则, python
    • Markdown, Markdown幻灯片, marp, 工具, 软件, Sai2, gInk, Annotator, 手写批注, 盈余管理, 特斯拉, 甲壳虫, 论文重现, 易懂教程, 码云, 教程, 知乎

连享会主页  lianxh.cn
连享会主页 lianxh.cn

连享会小程序:扫一扫,看推文,看视频……


扫码加入连享会微信群,提问交流更方便

???? 连享会学习群-常见问题解答汇总:
???? https://gitee.com/arlionn/WD