
New! 搜推文,找资料,用
lianxh
命令:
安装:ssc install lianxh, replace
使用:lianxh 合成控制
lianxh DID + 多期, w


作者:黄涵麟 (中山大学)
邮箱:huanghlin5@mail2.sysu.edu.cn
编者按:本文摘译自下文,特此致谢!
Source: Chudik A, Kapetanios G, Pesaran M H. A One Covariate at a Time, Multiple Testing Approach to Variable Selection in High‐Dimensional Linear Regression Models[J]. Econometrica, 2018, 86(4): 1479-1512. -PDF-
目录
[[TOC]]
1. 背景
OCMT (A One Covariate at A Time, Multiple Testing Approach to Variable Selection in High-Dimensional Linear Regression Models) 是在高维回归模型中,通过多重检验,选出最接近真实模型的协变量的方法。为此,本文将简要介绍 OCMT 方法的理论和 Stata 实现。
其中,Stata 实现的命令是 ocmt
。该命令可以在高维模型中替代惩罚回归进行模型筛选,并具有速度快、有效性强等特点。在一些实验当中,其性能优于 Lasso 和 Adaptive Lasso 等方法。
2. 理论基础
2.1 变量的筛选
考虑以下模型:
其中:
- 为预选变量的向量, 为 个未知的真实变量或信号变量, 为误差项;
- 、 与 不相关;
- 可以包括确定项 (如常数、虚拟变量和线性趋势) 和/或随机变量 (包括公共因素和 的滞后值)。
将 个可用的潜在协变量称为一个活动集,该活动集包含了真实模型的 个信号变量,还有噪声变量和剩余变量。其中,噪声变量是与信号的相关性为 0 的变量,剩余变量为除去 后与信号相关的变量,也称为伪信号或代理变量,并且可能被错误地视为信号变量。
OCMT 将用 对 和活动集中的 一次一个的进行回归,并分别求出 的 值 。
其中:
- ,;
- ,,;
- ,;
- 是该回归的标准误。
当 时,我们依赖 保持足够的概率有界来使我们能够在 很大时进行多次测试。依据当 时,我们来判断 在概率上是否保持足够的概率有界来区分信号变量。
- 当 概率有界时,如果 不包含在 中,则其为噪声变量;若包含在 中,则为隐藏变量;
- 当 概率无界时,如果 不包含在 中,则其为伪信号变量;若包含在 中,则为信号变量。
OCMT 的变量选择方法侧重于以预选变量 为条件的 对 的净影响,而不是由 定义的边际效应。因此,考虑 Pesaran 和 Smith (2014) 提出的平均净影响系数 (Mean Net Impact Coefficient),则 对 的净影响可以表示为:
其中,。
为了简化表达,去掉下标 并用 和 来表示。 决定了 在 时是否足够概率有界,我们依靠 来选择变量,但 不一定意味着 。同样,我们拥有以下四种可能的情况:
(I) 信号变量,拥有非零的净影响 | (II) 隐藏变量 | |
(III) 伪信号变量 | (IV) 噪声变量 |
情况 (II) 比较少见,但是伪信号情况 (III) 出现可能性较高,伪信号是模型选择策略中一个重要的考虑因素。
我们将只包含信号的模型叫做真实模型,把包含了伪信号变量,但不包含噪声变量的模型称为近似模型。
2.2 OCMT 的过程
考虑 个二元模型 (这里使用预选变量 的简化模型):
其中,,条件净影响系数 ,。
矩阵表示为:
其中:
- 是 向量;
- 是信号变量的 观测矩阵;
- 是 相关斜率系数向量。
得到最小二乘回归估计量 的 值为:
其中,。
设置关键值函数为:
其中, 是标准正态分布的反函数;, 为活动集中的变量个数,Stata 程序中 。
研究者需要根据情况设置关键值指数 和 -,其中 需要设置 2 个 ( 和 ,且 必须大于 )。 和 值的设定对于 OCMT 过程十分重要,因为它们被用于设定第一阶段 () 和后续阶段 () 中一次一个的对活动集中变量进行最小二乘回归中 值的阈值。
在第一阶段中设置 的值为 1,相当于对多重测试问题使用 Bonferroni 校正。
第一阶段 (),依靠选择指标:
若 ,则在第一阶段将 选择为信号变量和伪信号变量,从活动集中取出,放入索引集。
后续阶段 (),我们使用 对上一阶段筛选后活动集中剩余的变量再次一次一个的进行最小二乘回归,计算出 值:
其中, 为上一阶段筛选后活动集中剩余的变量的下标,。
后续阶段的选择指标为 (关键值函数采用 ):
当在给定阶段没有选出信号变量和伪信号变量时,OCMT 过程终止。否则,,程序继续。
3. Stata 实操
3.1 ocmt 命令
命令安装
ssc install ocmt, replace
命令语法
ocmt depvar [indepvars] [if] [in] [, options]
其中:
depvar
:因变量;indepvars
:解释变量;[, options]
:可以选择预选变量 、设定关键值函数的 值、 和 ;- 默认参数: 的默认值为 1, 的默认值为 2, 的默认值为 。
3.2 实际操作
数据生成和基本设定
clear
set obs 50
set seed 123
gen t = _n
gen x1 = rnormal()
gen x2 = rnormal()
gen x3 = rnormal()
gen x4 = rnormal()
gen x5 = rnormal()
gen x6 = rnormal()
gen x7 = rnormal()
gen x8 = rnormal()
gen x9 = rnormal()
gen x10 = rnormal()
gen z1 = rnormal()
gen w1 = rnormal()
gen y = 2 + 0.8*x1 + x2 - 3*x5 + x8 - 2*z1 + rnormal()
tsset t // 设定为时序数据
使用 ocmt
筛选变量
ocmt y x* w1 z1, sig(10) delta1(1) delta2(2)
Note:置信水平用整数表示,若想设置 值为 5%,则输入 sig(5)
,而非 sig(5%)
。
由于 默认值为 1, 默认值为 2,所以上面的命令也等效于:
ocmt y x* w1 z1, sig(10)
delta_1 and delta_2 not specified. Using default values
Dependent variable: y
Active set: x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 w1 z1
Number of variables in active set = 12
Pvalue = .1
delta_1 = 1
delta_2 = 2
Pvalue_1 = .1
Pvalue_2 = .00833333
t_threshold_1 = 2.6382573
t_threshold_2 = 3.3917631
Preselected variables: Constant
Variables chosen in stage 1
x5 z1
Variables chosen in stage 2
x5 z1 x1 x2 x8
Variables chosen in stage 3
x5 z1 x1 x2 x8
------------------------------------------------------------------------------
------------------------------------------------------------------------------
One Covariate at a Time Multiple Testing (OCMT)
Chosen model after 2 stages
------------------------------------------------------------------------------
Source | SS df MS Number of obs = 50
-------------+---------------------------------- F(5, 44) = 260.09
Model | 723.688421 5 144.737684 Prob > F = 0.0000
Residual | 24.4858298 44 .556496132 R-squared = 0.9673
-------------+---------------------------------- Adj R-squared = 0.9636
Total | 748.174251 49 15.2688623 Root MSE = .74599
------------------------------------------------------------------------------
y | Coef. Std. Err. t P>|t| [95% Conf. Interval]
-------------+----------------------------------------------------------------
x5 | -2.821 0.121 -23.31 0.000 -3.065 -2.577
z1 | -2.100 0.099 -21.17 0.000 -2.300 -1.900
x1 | 0.867 0.117 7.41 0.000 0.631 1.103
x2 | 0.888 0.099 8.94 0.000 0.688 1.089
x8 | 0.827 0.099 8.39 0.000 0.628 1.026
_cons | 2.309 0.108 21.42 0.000 2.091 2.526
------------------------------------------------------------------------------
其中:
- Pvalue 为选项中设定的 值;
- delta_1 和 delta_2 是第一阶段和后续阶段的关键值指数 、;
- Pvalue_1 和 Pvalue_2 的计算公式为: 、;
- t_threshold_1 和 t_threshold_2 分别是第一阶段和后续阶段的关键值函数的值;
- 预选变量将会出现在 Preselected Variables 后,此次没有选择预选变量,固显示为 Constant。
在第一阶段的筛选中,选出了变量 x5 和变量 z1,第二阶段又将 x1、x2 和 x8 放入了索引集。第三阶段索引集中不再有新增的信号变量和伪信号变量,因此程序在第三阶段终止。我们经过两个阶段筛,选出了索引集中的变量,ocmt
命令会将 y 对索引集中的所有变量进行回归,并将结果附在最后。
加入预选变量
如果要加入预选变量 ,则需在选项中输入 z(z1)
:
ocmt y x* w1, z(z1) sig(5) delta1(1) delta2(2)
上述命令等价于:
ocmt y x* w1, z(z1)
Significance level not specified. Using default value
delta_1 and delta_2 not specified. Using default values
Dependent variable: y
Active set: x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 w1
Number of variables in active set = 11
Pvalue = .05
delta_1 = 1
delta_2 = 2
Pvalue_1 = .05
Pvalue_2 = .00454545
t_threshold_1 = 2.8375969
t_threshold_2 = 3.5314915
Preselected variables (apart from constant): z1
Variables chosen in stage 1
x5
Variables chosen in stage 2
x5 x1 x2 x8
Variables chosen in stage 3
x5 x1 x2 x8
------------------------------------------------------------------------------
------------------------------------------------------------------------------
One Covariate at a Time Multiple Testing (OCMT)
Chosen model after 2 stages
------------------------------------------------------------------------------
Source | SS df MS Number of obs = 50
-------------+---------------------------------- F(5, 44) = 260.09
Model | 723.688421 5 144.737684 Prob > F = 0.0000
Residual | 24.4858298 44 .556496132 R-squared = 0.9673
-------------+---------------------------------- Adj R-squared = 0.9636
Total | 748.174251 49 15.2688623 Root MSE = .74599
------------------------------------------------------------------------------
y | Coef. Std. Err. t P>|t| [95% Conf. Interval]
-------------+----------------------------------------------------------------
x5 | -2.821 0.121 -23.31 0.000 -3.065 -2.577
x1 | 0.867 0.117 7.41 0.000 0.631 1.103
x2 | 0.888 0.099 8.94 0.000 0.688 1.089
x8 | 0.827 0.099 8.39 0.000 0.628 1.026
z1 | -2.100 0.099 -21.17 0.000 -2.300 -1.900
_cons | 2.309 0.108 21.42 0.000 2.091 2.526
------------------------------------------------------------------------------
加入滞后项
当然,也可以在命令中加入 x 的滞后项。
ocmt y x* L.x* w1, z(z1) delta1(1) delta2(2)
Significance level not specified. Using default value
Dependent variable: y
Active set: x1 x2 x3 x4 x5 x6 x7 x8 x9 x10 L.x1 L.x2 L.x3 L.x4 L.x5 L.x6 L.x7 L.x8 L.x9 L.x10 w1
Number of variables in active set = 21
Pvalue = .05
delta_1 = 1
delta_2 = 2
Pvalue_1 = .05
Pvalue_2 = .00238095
t_threshold_1 = 3.0380743
t_threshold_2 = 3.860018
Preselected variables (apart from constant): z1
Variables chosen in stage 1
x5
Variables chosen in stage 2
x5 x1 x2 x8
Variables chosen in stage 3
x5 x1 x2 x8
------------------------------------------------------------------------------
------------------------------------------------------------------------------
One Covariate at a Time Multiple Testing (OCMT)
Chosen model after 2 stages
------------------------------------------------------------------------------
Source | SS df MS Number of obs = 49
-------------+---------------------------------- F(5, 43) = 254.83
Model | 712.075442 5 142.415088 Prob > F = 0.0000
Residual | 24.0308031 43 .558855885 R-squared = 0.9674
-------------+---------------------------------- Adj R-squared = 0.9636
Total | 736.106246 48 15.3355468 Root MSE = .74757
------------------------------------------------------------------------------
y | Coef. Std. Err. t P>|t| [95% Conf. Interval]
-------------+----------------------------------------------------------------
x5 | -2.812 0.122 -23.10 0.000 -3.058 -2.567
x1 | 0.866 0.117 7.39 0.000 0.629 1.102
x2 | 0.885 0.100 8.88 0.000 0.684 1.086
x8 | 0.835 0.099 8.41 0.000 0.635 1.035
z1 | -2.130 0.105 -20.35 0.000 -2.341 -1.919
_cons | 2.297 0.109 21.12 0.000 2.078 2.516
------------------------------------------------------------------------------
存储的结果
除了通过 saving()
选项储存的结果之外,ocmt
还额外储存了过程的阶段数、关键值函数值和选出的回归元 (包含预选变量) 。
可以通过 display
命令将 ocmt
命令运行后储存的结果列出,例如:
ocmt y x* L.x* w1, z(z1) delta1(1) delta2(2)
return list // 列出所有返回值
scalars:
r(threshold2) = 3.860017974701531
r(threshold1) = 3.038074304924211
r(stages) = 2
macros:
r(regressors) : "x5 x1 x2 x8 z1"
4. 结语
本文主要从理论基础和 Stata 的实际操作两个方面介绍了 Stata 命令 ocmt
,它为我们提供了一种基于多重测试的、且计算简单、快速、有效的稀疏回归函数的替代方法。ocmt
的程序较为简单,但是其能力却十分强大,可谓短小精悍。
5. 参考文献
- Chudik A, Kapetanios G, Pesaran M H. A One Covariate at a Time, Multiple Testing Approach to Variable Selection in High‐Dimensional Linear Regression Models[J]. Econometrica, 2018, 86(4): 1479-1512. -PDF-
- Pesaran M H, Smith R P. Signs of impact effects in time series regression models[J]. Economics Letters, 2014, 122(2): 150-153. -PDF-
6. 相关推文
Note:产生如下推文列表的命令为:
lianxh 机器学习 lasso, m
安装最新版lianxh
命令:
ssc install lianxh, replace


资源共享
- 连享会资料 ……
- 在线视频:lianxh-class.cn
- Stata 33 讲,100 万+ 播放,Stata 入门必备,公开课
- 直击面板数据模型,10 万+ 播放,白话面板模型,公开课
- … more …
- 论文复现和数据
- 主题分类
- 热门推文

尊敬的老师 / 亲爱的同学们:
连享会致力于不断优化和丰富课程内容,以确保每位学员都能获得最有价值的学习体验。为了更精准地满足您的学习需求,我们诚挚地邀请您参与到我们的课程规划中来。
请您在下面的问卷中,分享您 感兴趣的学习主题或您希望深入了解的知识领域 。您的每一条建议都是我们宝贵的资源,将直接影响到我们课程的改进和创新。
我们期待您的反馈,因为您的参与和支持是我们不断前进的动力。感谢您抽出宝贵时间,与我们共同塑造更加精彩的学习旅程!https://www.wjx.cn/vm/YgPfdsJ.aspx# 再次感谢大家宝贵的意见!

关于我们
- Stata连享会 由中山大学连玉君老师团队创办,定期分享实证分析经验。more……
- 扫码加入连享会微信群,提问交流更方便
