Stata数据处理:缺失值填充-autofill-carryforward

文摘   教育   2024-11-09 22:01   中国  

👇 连享会 · 推文导航 | www.lianxh.cn

🍓 课程推荐:2024 机器学习与因果推断专题
主讲老师:司继春 (上海对外经贸大学) ;张宏亮(浙江大学)
课程时间:2024 年 11 月 9-10 日 ;16-17日
课程咨询:王老师 18903405450(微信)

 课程特色 · 2024机器学习与因果推断

  • 懂原理、会应用。本次课程邀请了两位老师合作讲授,目的在于最大限度地实现理论与应用的有机结合。为期四天的课程,分成两个部分:第一部分讲解常用的机器学习算法和适用条件,以及文本分析和大语言模型;第二部分通过精讲 4-6 篇发表于 Top 期刊的论文,帮助大家理解各类机器学习算法的应用场景,以及它们与传统因果推断方法的巧妙结合。
  • 以 Top 期刊论文为范例。目前多数人的困惑是不清楚如何将传统因果推断方法与机器学习结合起来。事实上,即便是 MIT 和 Harvard 的大牛们也都在「摸着石头过河」。为此,通过论文精讲和复现来学习这部分内容或许是目前最有效的方式了。张宏亮老师此前在浙江大学按照这一模式教授了「因果推断和机器学习」课程,效果甚佳:学生们能够逐渐建立起研究设计的理念,并在构造识别策略时适当地嵌入机器学习方法。


作者:范唯 (中山大学)
邮箱:fanw9@mail2.sysu.edu.cn

温馨提示: 文中链接在微信中无法生效。请点击底部「阅读原文」。或直接长按/扫描如下二维码,直达原文:


目录

  • 1. 命令介绍

  • 2. 实例演示

  • 3. 命令对比

    • 3.1 carryforward 命令

    • 3.2 autofill 和 carryforward 命令

  • 4. 结语

  • 5. 相关推文



1. 命令介绍

autofill 命令直译为自动填充,可利用 Stata 数据中已有的数值来填充缺失值。它应用范围广泛,适用于 Stata 中所有类型的缺失值。此外,该命令还可以按组别对缺失值进行补全,这对分组处理数据缺失值有极大助益。

作者信息:

Version 1.0: October 1st, 2021
Author
Xia P.S.
University of Chinese Academy of Sciences
Email: xia_ps@yeah.net

命令安装:

ssc install autofill, replace

命令语法:

autofill varlist, forward|backward [groupby(varname)]

其中,varlist 对应数值中含有缺失值的变量。对于 forward|backward

  • 如果选择 forward,程序将使用现有的数值来替换它们之前的缺失值。
  • 如果选择 backward,程序会使用现有的值来替换它们之后的缺失值。

groupby(varname) 选择一个变量,按照其连续相同的观察值进行分组。在每一个分组中独立执行 autofill 命令。

2. 实例演示

为更好地让读者理解 autofill 的用法,本部分将结合以下实例,从创建数据集——输入命令——输出结果——结果说明四个方面,对如何使用 autofill 命令进行详细讲述。

创建数据集:

clear all 
input str2 L N X Y
a 1 . .
a 2 7 .
b 3 . 4
c 1 6 .
c 2 . 5
a 1 . .
a 2 5 .
a 3 . 9
b 1 3 .
b 2 . 1
end
encode L, gen(I)
drop L
order I

forward:向前填充缺失值演示

. autofill X Y, forward
. list, noobs clean

I N X Y
a 1 7 4
a 2 7 4
b 3 6 4
c 1 6 5
c 2 5 5
a 1 5 9
a 2 5 9
a 3 3 9
b 1 3 1
b 2 . 1

backward:向后填充缺失值演示

. autofill X Y, backward
. list, noobs clean

I N X Y
a 1 . .
a 2 7 .
b 3 7 4
c 1 6 4
c 2 6 5
a 1 6 5
a 2 5 5
a 3 5 9
b 1 3 9
b 2 3 1

forward + groupby:分组向前填充

. autofill X Y, forward groupby(I)
. list, noobs clean

I N X Y
a 1 7 4
a 2 7 .
b 3 . 4
c 1 6 5
c 2 . 5
a 1 5 9
a 2 5 9
a 3 . 9
b 1 3 1
b 2 . 1

backward + groupby:分组向后填充

. autofill X Y, backward groupby(I)
. list, noobs clean

I N X Y
a 1 . .
a 2 7 .
b 3 . 4
c 1 6 .
c 2 6 5
a 1 . .
a 2 5 5
a 3 5 9
b 1 3 .
b 2 3 1

3. 命令对比

autofillcarryforward 命令均可以对数据集中的缺失值进行补全,但两个命令在处理数据缺失值的细节上具有很大差异。该部分将对这两个命令进行仔细区分,以帮助使用者根据数据处理需要选择合适的命令进行操作。

3.1 carryforward 命令

carryforward varlist [if exp] [in range], {gen(newvarlist1) | replace} 
[cfindic(newvarlist2) back carryalong(varlist2) strict nonotes dynamic_condition(dyncond) extmiss]

carryforward 命令把非缺失值从一个观察值向后推进,用前一个值来填补缺失值。因此,如果把一连串的缺失值看作是整个序列中的一个缺口,这个操作将用缺口之前出现的值来填补缺口。

clear all
input x
12
4
.
.
.
3
.
7
.
.
end
. carryforward x, gen(y)
. list, noobs clean

x y
12 12
4 4
. 4
. 4
. 4
3 3
. 3
7 7
. 7
. 7

3.2 autofill 和 carryforward 命令

是否可以生成新变量:

autofillcarryforward

说明:autofill 是在原数据上填充缺失值,即根据命令要求覆盖原缺失值,不会生成新的变量,可能导致部分信息遗失。若想保留原有信息,需要先执行 gen y=x,对原有变量进行备份,再执行 autofill 指令操作。carryforward 命令更加灵活:

  • 通过 carryforward x, replace 指令,输出结果为在原数据上填充缺失值,覆盖原有缺失值;
  • 通过 carryforward x, gen(y) 指令,输出结果为生成新变量 y,y 为对变量 x 中的缺失值进行填充,x 变量中数值不变。

是否可以向后填充缺失值:

autofillcarryforward

说明:autofillcarryforward 命令均可以实现向后填充缺失值。

  • autofill 命令的实现:autofill x, backward
  • carryforward 命令的实现:carryforward x, replace|gen(y)

是否可以向前填充缺失值:

autofillcarryforward

说明:autofillcarryforward 更加灵活,可以通过输入 autofill x, forward 指令,使得缺失值被其后的第一个非缺失值填充。carryforward 命令不可以选择缺失值以后的非缺失值填充。

是否可以分组填充缺失值:

autofillcarryforward

说明:autofill 命令可以通过 groupby(x) 选项,对变量 x 中连续相同的变量进行分组,并在组内较为独立的执行 autofill 命令。但需注意的是,groupby 选项并不会改变原数据的排序,这一点和某些编程语言中的 groupby 指令有所不同。carryforward 命令不可以分组独立执行补充缺失值操作。

是否可以部分填充缺失值:

autofillcarryforward

说明:autofill 命令不可以部分填充缺失值,若有部分填充缺失值的需求,需要将数据手动拆分为“需填充缺失值部分”和“不填充缺失值部分”,再对“需填充缺失值部分”单独进行 autofill 操作。carryforward 命令在“部分填充缺失值”要求上更为灵活,只需要在 carryforward 命令后添加 [if exp] [in range] 选项,即可部分填充缺失值。

4. 结语

autofill 命令可利用已有的数值来填充缺失值。它应用范围广泛,适用于 Stata 中所有类型的缺失值。此外,该命令还可以按组别对缺失值进行补全,对分组处理数据缺失值有极大助益。

虽然 autofill 命令提供了一种快速填充缺失值的方法,但该命令并未提供缺失值的科学算法,以缺失值前/后的非缺失值对其进行填充很多时候在数据处理时并不是一个合适的选择。另外,通过对比 autofill 命令和 carryforward 命令,我们发现 autofill 命令在填充缺失值,尤其是“部分填充缺失值”方面仍有很大的升级改进空间。

5. 相关推文

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

  • 专题:数据处理
    • Stata:fillmissing-缺失值填充-数值和文字的前后填充!
    • Stata数据处理:缺失值与多重补漏分析(一)
    • Stata数据处理:缺失值与多重补漏分析(二)
    • Stata数据处理:缺失值与多重补漏分析(三)
    • Stata:缺失值与多重补漏-misstable-D204
    • 缺失值能否用零代替?-L117
    • Stata:让缺失值一览无余
    • Stata缺失值专题:多重补漏分析
    • Stata:缺失值的填充和补漏
  • 专题:面板数据
    • Stata:面板数据缺失值与多重补漏分析-twofold

🍓 课程推荐:2024 机器学习与因果推断专题
主讲老师:司继春 (上海对外经贸大学) ;张宏亮(浙江大学)
课程时间:2024 年 11 月 9-10 日 ;16-17日
课程咨询:王老师 18903405450(微信)

尊敬的老师 / 亲爱的同学们:

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

New! Stata 搜索神器:lianxh 和 songbl  GIF 动图介绍
搜: 推文、数据分享、期刊论文、重现代码 ……
👉 安装:
  . ssc install lianxh
  . ssc install songbl
👉  使用:
  . lianxh DID 倍分法
  . songbl all

🍏 关于我们

  • 连享会 ( www.lianxh.cn,推文列表) 由中山大学连玉君老师团队创办,定期分享实证分析经验。
  • 直通车: 👉【百度一下: 连享会】即可直达连享会主页。亦可进一步添加 「知乎」,「b 站」,「面板数据」,「公开课」 等关键词细化搜索。

连享会
连玉君老师团队分享,主页:lianxh.cn。白话计量,代码实操;学术路上,与君同行。
 最新文章