缺失值能否用零代替?-L117

发布时间:2021-06-19 阅读 417

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

温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。

New! lianxh 命令发布了:
随时搜索推文、Stata 资源。安装命令如下:
. ssc install lianxh
详情参见帮助文件 (有惊喜):
. help lianxh

课程详情 https://gitee.com/lianxh/Course

课程主页 https://gitee.com/lianxh/Course

⛳ Stata 系列推文:

PDF下载 - 推文合集

秦范 (四川大学,qf13032861571@163.com)
连玉君 (中山大学,arlionn@163.com)


目录


1. 引言

社会调查数据难免会有缺失值,常见情形之一是问卷题目跳转,比如未婚群体「婚姻幸福度」缺失,失业人群「就业满足度」缺失;一般而言,缺失值有实际值,但由于受访者拒答、隐瞒或谎报造成答案不合理、追踪调查数据后期未能成功追访等原因无法观测。比如每个受访者都有年龄的实际值,但有些人不愿意报告。

缺失值的处理也见仁见智,如果缺失情形满足 MCAR (缺失完全随机,Missing Completely at Random) 则可直接删除缺失值获得无偏估计,也可适当采取单一补漏、多重补漏等处理方式,但没有统一标准。

本文主要和大家介绍数据缺失值直接替换为 0 的处理方式。

2. When no news is zero news, 可替换

只有当你有足够理由说明缺失数据的实际值为 0 时,才能将缺失值替换为 0,否则不可。 (参考 Statalist 问题「When should missing data, in numerical variables, be replaced by zeros?」Clyde Schechter 的回答)

PMean: Can I replace missing values with zero? 这篇博客中,作者也提出,「有时,缺失值就表示没有,比如调查工资、利息、股息和特许权使用费四种收入构成时,受访者没有回答股息收入是因为没有这种收入」,这种情况下,将缺失值替换为 0 就比较合理。

Allison (2010) 中介绍了 虚拟变量调整 (Dummy variable adjustment) 这种方法,书中举例如下。

某变量缺失处理步骤如下:

  • 首先,生成一个虚拟变量表示如果缺失则取值为 1;
  • 其次,将变量缺失值替换为某个补漏值 (imputes),通常为 0;
  • 最后,将该变量和虚拟变量同时加入回归。

该方法可以用于所有解释变量。该方法的好处在于没有删除缺失值,将所有可获信息包含在回归模型中。但可能会造成估计偏误,如果无偏估计不是必需的,可采用这一方法。

参考资料:Allison, Paul D. Missing data. Thousand Oaks, CA: Sage, 2010. -PDF-,pp. 638-639

由此可见,将缺失值替换为 0 是虚拟变量调整法的特殊情形之一。

3. 缺失值替换为 0 的案例

在公司财务研究中,我们经常需要把「研发支出 (R&D)」作为一个解释变量放入模型,然而,该变量往往存在严重的缺失值。棘手之处在于,我们难以判断这些缺失值到底是因为公司的研发支出为零 (这种情况下将缺失值替换为零是没有问题的),还是它们出于商业机密考虑没有披露研发支出数据 (这种情况下的研发支出反而可能很高)。

多篇大牛的文章都是采用上述方法进行处理的,这种方法的始作俑者应该是「样本选择偏误」的大佬 Hausman 教授 (Hausman et al., 1984, pp. 912)。

如下是连老师的一篇工作论文「连玉君, 黄曼琪, 王俊. 中国上市公司关注目标市场资本结构吗? 2021, 工作论文」中一个脚注中的表述:

「本文将未披露研发费用的上市公司的研发费用一项取值为 0。为了控制由此可能导致的样本选择偏差,参考 Fama and French (2002, pp. 21) 和 Flannery and Rangan (2006, pp. 477) 等人的做法,为了区分研发费用真实值为 0 与研发费用缺漏的观察值,加入是否披露研发费用的虚拟变量作为控制变量。这一做法最早源于)。」

下面,我们对上述脚注中提及的几篇文章的处理方法做个简单的介绍:

3.1 Flannery and Rangan (2006, JFE)

Flannery and Rangan (2006) 就采用了将 R&D 支出缺失值替换为 0 的虚拟变量调整法。首先,生成 R&D_DUM 哑变量,当 R&D 支出缺失则取值为 1,否则取值为 0;其次,将 R&D 支出缺失值替换为 0;最后,将 R&D 支出和 R&D_DUM 哑变量同时加入回归。

参考资料:Flannery, M. J. and Rangan, K. P. Partial Adjustment toward Target Capital Structures[J], Journal of Financial Economics, 2006, 79(3): 469-506. -PDF-, pp. 477

3.2 Fama and French (2002, RFS)

Fama and French (2002) 的模型中也加入了表示 R&D 支出为缺失值的哑变量。

参考资料:Fama, E. F. and French, K. R. Testing Trade-Off and Pecking Order Predictions About Dividends and Debt[J], The Review of Financial Studies, 2002, 15(1): 1-33. -PDF-, pp. 21

3.3 Hausman et al. (1978, Econometrica)

上述例子,我们无法明晰 R&D 支出缺失则替换为 0 的合理性,但在 Hausman et al. (1984) 中很明显。其中,nit 是表示企业专利数的非负整数。如果 nit 取值为 0,则新生成的变量 log(nit) 缺失,生成一个哑变量当 log(nit) 缺失或 nit=0 取值为 1,再将 log(nit) 因 nit=0 而缺失的值替换为 0,将哑变量加入回归。

参考资料:Hausman, Jerry A, Bronwyn H Hall, and Zvi Griliches. 1984. Econometric Models for Count Data with an Application to the Patents-R&D Relationship. Econometrica 52 (4): 909–938. -PDF-, pp. 912

4. Stata 命令:How 批量替换为 0

Stata 中有多种方法可以把缺失值替换为 0。最基本的方法就是使用 replace 命令:

replace x=0 if x>=. | missing(x)

或采用 mvencode 命令进行批量处理:

mvencode x1 x2 x3, mv(0)

也可以采用循环语句:

  global X "x1 x2 x3"
  foreach var of varlist $X {
    replace `var' = 0 if `var'>=.
  }

5. 总结

总体而言,虚拟变量调整(Dummy variable adjustment),或将缺失值替换为 0 适用情形很有限,直接使用会造成估计偏误问题。

最后,以 Allison (2010) 概要作结:一般而言,删除缺失值是最好的方法,因为如果缺失完全随机 (MCAR) 则估计无偏,如果缺失变量作为解释变量做回归,则即使缺失不随机也能实现无偏估计。但为了尽可能不减少样本量,建议采用多重补漏,尤其是极大似然法。

6. 参考文献

  • Allison, Paul D. Missing data. Thousand Oaks, CA: Sage, 2010. -PDF- ,pp. 638-639
  • Hausman, Jerry A, Bronwyn H Hall, and Zvi Griliches. 1984. Econometric Models for Count Data with an Application to the Patents-R&D Relationship. Econometrica 52 (4): 909–38. -PDF1-, pp. 912; -PDF2-, pp. 7
  • Flannery, M. J. and Rangan, K. P. Partial Adjustment toward Target Capital Structures[J], Journal of Financial Economics, 2006, 79(3): 469-506. -PDF-, pp.477
  • Fama, E. F. and French, K. R. Testing Trade-Off and Pecking Order Predictions About Dividends and Debt[J], The Review of Financial Studies, 2002, 15(1): 1-33. -PDF-, pp. 21

7. 相关推文

Note:产生如下推文列表的 Stata 命令为:
lianxh 缺失值 离群值
安装最新版 lianxh 命令:
ssc install lianxh, replace

相关课程

免费公开课

最新课程-直播课

专题 嘉宾 直播/回看视频
最新专题 文本分析、机器学习、效率专题、生存分析等
研究设计 连玉君 我的特斯拉-实证研究设计-幻灯片-
面板模型 连玉君 动态面板模型-幻灯片-
面板模型 连玉君 直击面板数据模型 [免费公开课,2小时]
  • Note: 部分课程的资料,PPT 等可以前往 连享会-直播课 主页查看,下载。

课程主页

课程主页

关于我们

  • Stata连享会 由中山大学连玉君老师团队创办,定期分享实证分析经验。
  • 连享会-主页知乎专栏,400+ 推文,实证分析不再抓狂。直播间 有很多视频课程,可以随时观看。
  • 公众号关键词搜索/回复 功能已经上线。大家可以在公众号左下角点击键盘图标,输入简要关键词,以便快速呈现历史推文,获取工具软件和数据下载。常见关键词:课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法

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

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

✏ 连享会-常见问题解答:
https://gitee.com/lianxh/Course/wikis

New! lianxh 命令发布了:
随时搜索连享会推文、Stata 资源,安装命令如下:
. ssc install lianxh
使用详情参见帮助文件 (有惊喜):
. help lianxh