温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。
作者: 陈贤孟 (厦门大学)
邮箱: cxminjnu@163.com
[编者按]: 本文介绍的内容来自如下论文,特此致谢!
[Source]: Lee, Y. J., & Wilhelm, D. (2020). Testing for the presence of measurement error in Stata. The Stata Journal, 20(2), 382-404. -Link-
目录
「测量误差」 (Measurement Error,也称为「衡量偏误」) 是内生性的主要来源之一。相对于另外两种文献中经常提及的内生性来源——「遗漏变量」、「互为因果」,大家对「测量误差」的关注非常有限。在实证研究过程中,若解释变量存在测量误差,往往会使得研究者无法一致地估计解释变量的系数。那们如何判断解释变量是否存在测量误差?
Lee and Wilhelm (2020) 系统介绍如何运用 Stata 检验解释变量的测量误差。
其中,
接下来,我们将对上述两种检验方法进行详细介绍。
首先,考虑以下的一元线性回归模型:
通常,我们无法直接观测到真实值
Hausman (1978) 指出,若不存在测量误差,OLS 估计量和 IV 估计量均是一致的,反之,则仅有 IV 估计量是一致的。因此,我们可以将 OLS 估计量和 IV 估计量进行对比,若 IV 估计量和 OLS 估计量存在显著差异,则解释变量存在测量误差。
在实践中,一种常见的等价做法是,对如下方程进行回归,并检验工具变量
Lee and Wilhelm (2020) 指出,当式 (2) 成立时,拒绝假设 (4) 等价于拒绝假设 (1),表明解释变量存在测量误差问题。反之,则不成立,即无法拒绝假设 (4) 并不意味着解释变量不存在测量误差。为了让上述两个假设完全等价,需进一步作出如下限定:
接下来,我们将通过一个模拟的例子来说明如何用参数方法检验解释变量的测量误差。
*-设定样本量为200,同时设置随机数种子
clear all
set obs 200
set seed 982
*-用随机数生成变量x、y、z和扰动项u和e
generate double z = rnormal(0,1)
generate double u = rnormal(0,0.5)
generate double e = rnormal(0,0.5)
generate xs = 0.5*z + u
generate x = xs //没有测量误差的清形
generate y = xs + e
*-将y回归在x和z上
regress y x z
est store m1
*-引入测量误差eta
generate double eta = rnormal(0,0.5)
drop x
*-生成新的x,此时x与真实值xs之间存在测量误差
generate x = xs + eta
*-重新将y回归在x和z上
regress y x z
est store m2
*-输出结果
esttab m1 m2, b(%6.3f) ar2 nogap star(* 0.1 ** 0.05 *** 0.01) ///
mtitles("no error" "error")
--------------------------------------------
(1) (2)
no error error
--------------------------------------------
x 1.062*** 0.514***
(14.02) (8.15)
z -0.031 0.196***
(-0.63) (3.71)
_cons -0.028 -0.033
(-0.77) (-0.75)
--------------------------------------------
N 200 200
adj. R-sq 0.633 0.452
--------------------------------------------
t statistics in parentheses
* p<0.1, ** p<0.05, *** p<0.01
其中,列 (1) 不存在测量误差,列 (2) 存在测量误差。上述例子表明,在没有测量误差的情况下,同时将工具变量
运用参数方法检验解释变量的测量误差时,要求
非参数方法并不需要上述假定,一定程度上克服了参数方法的缺陷,其基本原理如下:
Wilhelm (2018) 证明,当假设 (5) 与下述两个假设 (假设 a 和 b) 成立时,假设 (1) 与假设 (6) 等价,即可以通过检验假设 (6) 来判断解释变量是否存在测量误差。
假设 a:
假设 b:条件均值函数
若工具变量
当上述假设满足时,通过运用非参数的方法检验假设 (6) 或 (8),则可以判断解释变量是否存在测量误差,这一过程可以通过 dgmtest
命令实现。
dgmtest
命令是对 Delgado and González Manteiga (2001) 提出的检验条件均值独立性方法在 Stata 中的实现,检验测量误差只是该命令的应用之一。
命令安装
*-dgmtest命令安装
net sj 20-2
net install st0600
* findit dgmtest //或者通过该命令安装
语法结构
dgmtest depvar expvars [if] [in] [, options]
该命令的常用选项主要有:
qz(#) 指定工具变量的维度,默认为 qz(1)
qw2(#) 指定与被解释变量有线性关系的控制变量的个数,默认为 qw2(0)
teststat(string) 指定检验过程中使用的统计量,默认为 Cramér-von Mises (CvM) 统计量,备选项为 Kolmogorov-Smirnov (KS) 统计量
kernel(string) 指定检验过程中使用的核函数,默认为 kernel(epanechnikov)
bootnum(#) 指定用 bootstrap 方法抽取的样本容量,默认为 bootnum(500)
关于该命令更多详细介绍,可以通过 help dgmtest
查看该命令帮助文档。
接下来,延用第 2 节生成的模拟数据,使用 dgmtest
命令去检验解释变量的测量误差问题。
*-没有测量误差
set seed 1000 //设定种子值,避免每次结果不一样
dgmtest y xs z
-----------------------------------------------------
Delgado and Manteiga test
-----------------------------------------------------
H0: E[Y | X,W1,Z] = E[Y | X,W1]
----- parameter settings -----
Test statistic: CvM (default)
Kernel: epanechnikov (default)
bw = n^(1/3q) (default)
bootstrap multiplier distribution: mammen (default)
number of observations: 200
bandwidth: .17099759
dimension of (X,W1): 1
dimension of W2: 0
dimension of Z: 1
number of bootstrap samples: 500
----- test results -----
CvM = .00769912
bootstrap critical value at 1%: .02141564
bootstrap critical value at 5%: .01695409
bootstrap critical value at 10%: .01401674
p(CvM < CvM*) = .366
当使用不含测量误差的
*-存在测量误差
set seed 1200
dgmtest y x z
-----------------------------------------------------
Delgado and Manteiga test
-----------------------------------------------------
H0: E[Y | X,W1,Z] = E[Y | X,W1]
----- parameter settings -----
Test statistic: CvM (default)
Kernel: epanechnikov (default)
bw = n^(1/3q) (default)
bootstrap multiplier distribution: mammen (default)
number of observations: 200
bandwidth: .17099759
dimension of (X,W1): 1
dimension of W2: 0
dimension of Z: 1
number of bootstrap samples: 500
----- test results -----
CvM = .02530518
bootstrap critical value at 1%: .01578302
bootstrap critical value at 5%: .01002109
bootstrap critical value at 10%: .00827286
p(CvM < CvM*) = 0
当使用含有测量误差的
为检验 dgmtest
命令在不同情形下的检验效果,Lee and Wilhelm (2020) 设计了如下的蒙特卡罗模拟。
考虑如下的一个数据生成过程:
通过下述四种不同的方式引入测量误差:
模型 1:
模型 2:
模型 3:
模型 4:
其中,在模型 1、2、3 中,设定
在完成上述设定以后,Lee and Wilhelm (2020) 通过 dgmtest
命令,分别使用了 CvM 统计量和 KS 统计量去检验不同情形下的测量误差。
Lee and Wilhelm (2020) 设计的蒙特卡罗模拟的结果如下表所示:
表中的数值为拒绝原假设的概率,例如,在模型 1 中,当
蒙特卡罗模拟的结果表明,dgmtest
命令在检验测量误差时具有较高的准确性。
个体收入数据主要来自问卷调查数据 (survey) 和社会保障数据,多数研究者指出,在问卷收集过程中会存在谎报收入的情况,因此,问卷调查中关于个体收入的数据往往存在测量误差。同时,也部分研究者指出,在社会保障数据中,个体收入这一变量同样可能存在测量误差。
Lee and Wilhelm (2020) 展示了如何运用 dgmtest
命令,检验社会保障数据中的个体收入是否存在测量误差。具体如下:
首先,作者画出了被解释变量和解释变量的密度函数图。具体如图 1 所示:
由图 1 可知,被解释变量和解释变量之间存在着较为明显的相关性。
为了了解不同来源的收入数据之间的差异的大小,作者进一步画出调查数据统计的个体收入与社会保障数据统计的个体收入之间差异的密度函数图。具体如图 2 所示:
由图 2 可知,不同来源的收入数据的差异主要集中在 1000 左右,作者指出,相对于样本中收入的最大值 (16500),这是一个较大的差异。
Wilhelm (2018) 指出,不同的收入数据,测量误差的来源也不同。为了通过检验假设 (6) 来检验是否存在测量误差,作者画出了不同的
由图 3 可知,当
在进行正式的统计检验之前,作者画出了三个不同的
若假设 (6) 成立,
为了检验解释变量的测量误差在统计上是否显著,作者使用 dgmtest
命令进行了检验。具体命令和结果如下:
*-检验收入数据是否存在测量误差
set seed 1977
dgmtest repearn77 ssearn77 ssearn76, bootnum(5000)
-----------------------------------------------------
Delgado and Manteiga test
-----------------------------------------------------
H0: E[Y | X,W1,Z] = E[Y | X,W1]
----- parameter settings -----
Test statistic: CvM (default)
Kernel: epanechnikov (default)
bw = n^(1/3q) (default)
bootstrap multiplier distribution: mammen (default)
number of observations: 2682
bandwidth: .07197479
dimension of (X,W1): 1
dimension of W2: 0
dimension of Z: 1
number of bootstrap samples: 5000
----- test results -----
CvM = .51238949
bootstrap critical value at 1%: .62569854
bootstrap critical value at 5%: .42202155
bootstrap critical value at 10%: .33858164
p(CvM < CvM*) = .0238
检验结果得到的
最后,作者将样本按性别和受教育水平划分为不同的子样本,以检验不同的子样本中测量误差存在与否,具体检验结果如下表所示:
由上表可知,对于受教育水平较低和受教育水平较高的组,仍可以在 90% 的显著性水平下拒绝原假设,而对于受教育水平中间的组,则未发现测量误差方面的证据。此外,对于不同的性别组,同样未发现测量误差方面的证据。
本文主要介绍了 Lee and Wilhelm (2020) 提出的关于运用参数方法和非参数方法检验解释变量的测量误差的原理,并结合实例对 dgmtest
命令的应用过程进行了展示。
连享会-直播课 上线了!
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