温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。
New!
lianxh
命令发布了:
随时搜索连享会推文、Stata 资源,安装命令如下:
. ssc install lianxh
使用详情参见帮助文件 (有惊喜):
. help lianxh
作者:刘佳鹏 (中山大学)
邮箱:sysuliujiapeng@163.com
目录
在实证研究中,我们会面对许多可能的解释变量,那么又该如何进行筛选,以达到模型最优?为此,本文将介绍 Stata 命令 combinatorics
。该命令是 Stata 处理模型筛选的利器,其不仅可以进行批量 OLS 估计,还能进行留一交叉验证 (LOOCV, Leave-One-Out-Cross-Validation) 和样本外验证 (Out-of-sample validation)。
简单理解,就是通过列出解释变量所有可能的组合,来批量进行 OLS 估计、留一交叉验证 (LOOCV) 和样本外验证,以评估模型的解释和预测能力。当然,我们首先需要了解一下留一交叉验证和样本外验证。
正常训练会将样本划为训练集和验证集,训练集用来训练模型,而验证集用来评估模型的泛化能力。留一交叉验证是上述特例,具体来看,若数据集 D 的大小为 N,那么用 N-1 条数据进行训练,用剩下的一条数据作为验证,重复上述步骤,直到所有样本都作过验证集,即共计算 N 次,最后对验证误差求平均。
LOOCV 的优点是可以充分利用数据,防止模型过拟合,有效评估模型泛化能力。缺点是训练起来耗时,并且由于每次只采一个样本作为验证,导致无法分层抽样,影响验证集上的误差。
Note:上述内容部分摘自「LOOCV - Leave-One-Out-Cross-Validation 留一交叉验证」,特此致谢。
样本外验证 (out-of-sample validation) 是指事先随机预留部分样本,用于评估模型的预测能力。例如,在预测季度通货膨胀率变动的模型中,可以将样本数据 1962-2010 年划分为两部分,即 1962-2004 和 2005-2010 年。其中,以 1962-2004 年样本构建模型,以 2005-2010 年季度通货膨胀变动数据的预测值和实际值之间的差异来判断模型的可靠性。
在本文中,我们采用 OOS Pseudo-R² 程序,即 OOS 预测值与实际值的相关系数的平方。它可以用与 LOOCV Pseudo-R² 相同的方式作为预测性能的度量。
样本外验证的优点是节省时间和计算成本,缺点是拟合效果较差,会受到样本划分的影响。
命令安装:
ssc install combinatorics, replace
语法结构:
combinatorics depvar indepvars [if] [in] [weight] [, options]
执行命令后,结果数据集会包括
模型的特征:
模型的估计结果:
模型的样本外预测性能:
[if] [in]
选项约束,则会缺失;[if] [in]
选项约束,则会缺失。
以 auto.dta 数据集为例,根据 10 个特征预测汽车价格:
sysuse auto.dta, clear
combinatorics price mpg i.rep78 headroom-foreign
在得到的数据集中,绘制所有模型得到的 512 个 mpg 系数的直方图:
hist mpg
绘制模型解释性能和预测性能 (R2 and LOOCV Pseudo-R2) 与模型复杂性 (Rank) 的关系:
twoway (scatter pseudor2 r2 rank,jitter(5 5))(lpolyci pseudor2 rank)(lpolyci r2 rank),xline(6)
LOOCV Pseudo-R2 不会随着模型复杂性单调增加 (它在 Rank 为 6 时达到局部最大值),在模型选择中存在过拟合和简约的风险。
与上述过程不同,这次只对 90% 的样本进行随机选择:
sysuse auto.dta,clear
set seed 100
gen double oos=(runiform()>0.9)
combinatorics price mpg i.rep78 headroom-foreign if !oos
剩下的 10% 用于 “样本外” (OOS) 预测,OOS Pseudo-R² 是 OOS 预测值与实际值的相关系数的平方。它可以用与 LOOCV Pseudo R² 相同的方式作为预测性能的度量:
twoway (lpolyci r2 rank)(lpolyci pseudor2 rank)(lpolyci oosr2 rank)
用 OOS Pseudo-R² 更容易传达模型的结果,但 LOOCV Pseudo-R² 显然是一个更好的程序,因为它不需要多余的观察,也不依赖于对验证样本和样本大小的任意或随机选择。
例如,如果我们选择另一个验证样本,OOS Pseudo-R² 可能会给出不同的结论,但 LOOCV Pseudo-R² 会继续显示过拟合:
sysuse auto,clear
set seed 200
gen double oos=(runiform()>0.9)
combinatorics price mpg i.rep78 headroom-foreign if !oos
twoway (lpolyci r2 rank)(lpolyci pseudor2 rank)(lpolyci oosr2 rank)
本文简要的介绍了 combinatorics
命令、以及应用留一交叉验证和样本外验证来进行模型筛选。值得注意的是,在实际操作中,我们要综合考虑时间和准确性来选择验证方法。
Note:产生如下推文列表的命令为:
lianxh 交叉验证 留一交叉验证 刀切法 筛选
安装最新版lianxh
命令:
ssc install lianxh, replace
连享会-直播课 上线了!
http://lianxh.duanshu.com
免费公开课:
直击面板数据模型 - 连玉君,时长:1小时40分钟,课程主页 Stata 33 讲 - 连玉君, 每讲 15 分钟. Stata 小白的取经之路 - 龙志能,时长:2 小时,课程主页 部分直播课 课程资料下载 (PPT,dofiles等)
支持回看
专题 | 嘉宾 | 直播/回看视频 |
---|---|---|
⭐ 最新专题 | 文本分析、机器学习、效率专题、生存分析等 | |
研究设计 | 连玉君 | 我的特斯拉-实证研究设计,-幻灯片- |
面板模型 | 连玉君 | 动态面板模型,-幻灯片- |
面板模型 | 连玉君 | 直击面板数据模型 [免费公开课,2小时] |
Note: 部分课程的资料,PPT 等可以前往 连享会-直播课 主页查看,下载。
关于我们
课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法
等
连享会小程序:扫一扫,看推文,看视频……
扫码加入连享会微信群,提问交流更方便
✏ 连享会学习群-常见问题解答汇总:
✨ https://gitee.com/arlionn/WD
New!
lianxh
命令发布了:
随时搜索连享会推文、Stata 资源,安装命令如下:
. ssc install lianxh
使用详情参见帮助文件 (有惊喜):
. help lianxh