Stata绘图:回归系数可视化-multicoefplot
2022-05-18
谢佳松
13185

连享会   主页 || 推文 || 知乎 || B 站 || 在线课堂

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


作者:谢佳松 (中山大学)
邮箱:xiejs3@mail2.sysu.edu.cn

1. 简介

本文主要介绍由苏黎世联邦理工学院教授 Matteo Pinna 开发的,用于时间维度横截面分析的可视化操作命令 multicoefplot。该命令最大的优势是在横截面比较的同时,允许不同控制变量集下得到的点估计系数以及置信区间进行直接比较。

2. multicoefplot 命令

multicoefplot 命令安装:

net describe multicoefplot, from(http://fmwww.bc.edu/RePEc/bocode/m)
net install multicoefplot.pkg, replace
net     get multicoefplot.pkg, replace

multicoefplot 命令使用前需要了解的相关事项:

  • 第一,使用 multicoefplot 命令前必须将回归分析中常用的长面板数据 reshape 成宽面板数据。因此,建议使用者在利用该命令绘图时,重新生成一个 do file,然后更换数据结构后再进行操作;
  • 第二,该命令的写法基于高维固定效应命令 reghdfe。关于 reghdfe 命令的详细介绍,可以参考连享会推文「reghdfe:多维面板固定效应估计」。

multicoefplot 命令语法:

multicoefplot {namelist} [if] [in] [, options]

其中,namelist 为被解释变量。需要注意的是,这里要填写被解释变量名称的不变部分。例如,被解释变量为城市 GDP,时间为 2017-2020 年。在宽面板数据结构下,则有四个被解释变量:GDP2017、GDP2018、GDP2019、GDP2020,此时仅需填写 GDP 即可。

必需的 options

  • window:分析的时间范围。若 1999 年至 2010 年,每年均进行分析,可填写为 window(1999/2010)。若每隔两年进行比较,写法为 window(1999(2)2010),以此类推;
  • treatment:需要分析的核心解释变量。语法为 treatment(varname, varying(varname))。注意:该命令一个最重要的优势是可以直接进行不同控制变量集下的比较,因此可以添加多个 treatment,具体可参考后文实例。

其他的 options

  • command:显示隐含的回归指令;
  • noconstant:取消所有估计中的常数项;
  • level():设定图形展示的置信区间,默认值为 95%;
  • first:当进行面板 IV 估计时,报告第一阶段估计结果;
  • legend(off):关闭图例;
  • absorb:回归中包含的固定效应。由于该命令是基于 reghdfe 编写的,需要添加 absorb(fe_name)
  • timeabsorb:要包含在回归中的时变固定效应 (同样仅包含名称的不变部分);
  • controls:回归中要包含的控制变量;
  • timecontrols:回归中包含的时变控制变量 (同样仅包含名称的不变部分)。注意:在该命令中,控制变量需要区分为时变控制变量和非时变控制变量。例如城市地理、文化因素是非时变的,需要用 controls 设定,城市经济发展或产业结构是时变的,即用 timecontrols 进行设定;
  • cluster(varname):设定聚类标准误;
  • vce(robust):设定稳健标准误;
  • aweight(varname)/fweight(varname):添加估计的权重。

3. 实例演示

3.1 数据处理

在本节,我们将使用 nlswork.dta 数据展示 multicoefplot 命令的具体应用。nlswork.dta 是一份针对美国年轻女性职业与工资状况的全国追踪调查数据。在本例中,我们使用收入的自然对数 ln_wage 作为被解释变量,个体的工作任期 tenure 作为核心解释变量。为了更好地熟悉该命令,模型中包括了非时变的控制变量与时变控制变量,具体设定如下:

  • 非时变的控制变量包括:种族 race、出生年份 birth_yr、是否大学毕业 collgrad、以及是否位于南方 south
  • 时变控制变量包括:年龄 age、工作经历 ttl_exp、以及是否位于大城市 not_smsa
webuse nlswork, clear

* 仅保留 1969、1971、1973、1975、1977 五年观测值
keep if inlist(year, 69,71,73,75,77)

* 由于该数据是一个标准的长面板数据,因此需要将其转化为宽面板数据
reshape wide birth_yr age race msp nev_mar grade ///
    collgrad not_smsa c_city south ind_code occ_code ///
    union wks_ue ttl_exp tenure hours wks_work       ///
    ln_wage, i(idcode) j(year)

* 为了保证非时变变量是不随时变的,直接生成上述四个非时变变量在1969年的初始水平
gen c_race=race69
gen c_birth_yr=birth_yr69
gen c_collgrad=collgrad69
gen c_south=south69

* 最后,生成个体在1969年职业的固定效应
gen c_occ_code=occ_code69

3.2 图像绘制

multicoefplot ln_wage, window(69(2)77) command  legend(off) ///
    treatment(tenure, varying(tenure)) absorb(c_occ_code)   ///
    controls(c_race c_birth_yr c_collgrad c_south)          ///
    timecontrols(age ttl_exp not_smsa)                      ///
    xlabel(1 "1969" 2 "1971" 3 "1973" 4 "1975" 5 "1977")    ///
    yline(0, lp(dash) lc(red*0.7))

该命令绘制的图形还是十分美观的,详细展示了 1969、1971、1973、1975、1977 五个不同年份个体工作任期 tenure 对收入自然对数 ln_wage 影响的点估计和置信区间。从图中可以看出,只有在 1969 年,tenureln_wage 的影响未通过 5% 的统计显著性检验。1973 年 tenureln_wage 的估计系数最大。

该命令估计出的五个系数和如下回归完全一致:

local xx "c_race c_birth_yr c_collgrad c_south"
reghdfe ln_wage69 `xx' tenure69 age69 ttl_exp69 not_smsa69, a(c_occ_code)
reghdfe ln_wage71 `xx' tenure71 age71 ttl_exp71 not_smsa71, a(c_occ_code)
reghdfe ln_wage73 `xx' tenure73 age73 ttl_exp73 not_smsa73, a(c_occ_code)
reghdfe ln_wage75 `xx' tenure75 age75 ttl_exp75 not_smsa75, a(c_occ_code)
reghdfe ln_wage77 `xx' tenure77 age77 ttl_exp77 not_smsa77, a(c_occ_code)

在图中,初始年份 1969 和终止年份 1977 存在两条虚线,影响美观,这可能是命令自身的问题。经过测试,可通过添加一条 xline 进行解决:

multicoefplot ln_wage, window(69(2)77) command  legend(off) ///
    treatment(tenure, varying(tenure)) absorb(c_occ_code)   ///
    controls(c_race c_birth_yr c_collgrad c_south)          ///
    timecontrols(age ttl_exp not_smsa)                      ///
    xlabel(1 "1969" 2 "1971" 3 "1973" 4 "1975" 5 "1977")    ///
    yline(0, lp(dash) lc(red*0.7)) ///
    xline(0)

3.3 同时估计并可视化不同模型

笔者认为,该命令最强大的一点是,其可以同时绘制在不同控制变量集下的估计系数及其置信区间。以下考虑三个不同的模型:不加控制变量、加入不随时变控制变量、以及加入随时变控制变量。Stata 具体代码如下:

multicoefplot ln_wage, window(69(2)77) command ///
    treatment1(tenure, varying(tenure)) absorb(c_occ_code)  ///
    treatment2(tenure, varying(tenure)) absorb2(c_occ_code) ///
    controls2(c_race c_birth_yr c_collgrad c_south) ///
    treatment3(tenure, varying(tenure)) absorb3(c_occ_code) ///
    timecontrols3(age ttl_exp not_smsa)                     ///
    controls3(c_race c_birth_yr c_collgrad c_south)         /// 
    xlabel(1 "1969" 2 "1971" 3 "1973" 4 "1975" 5 "1977")    ///
    legend(1 "Baseline" 2 "Control Xi" 3 "Control Xi+Xit")  ///
    yline(0, lp(dash) lc(red*0.7)) ///
    xline(0)

值得注意的是,如果此时想添加一条垂直于 x 轴的辅助线,以 1973 年为例,此时命令中不应该添加 xline(1973) ,而应该添加 xline(3)。即此时图中五个估计结果横轴对应的是 1~5 而不是 1969~1977。具体代码如下:

multicoefplot ln_wage, window(69(2)77) command /// 
    treatment1(tenure, varying(tenure)) absorb(c_occ_code) /// 
    treatment2(tenure, varying(tenure)) absorb2(c_occ_code) /// 
    controls2(c_race c_birth_yr c_collgrad c_south) /// 
    treatment3(tenure, varying(tenure)) absorb3(c_occ_code) /// 
    timecontrols3(age ttl_exp not_smsa) /// 
    controls3(c_race c_birth_yr c_collgrad c_south) /// 
    xlabel(1 "1969" 2 "1971" 3 "1973" 4 "1975" 5 "1977") /// 
    legend(1 "Baseline" 2 "Control Xi" 3 "Control Xi+Xit") /// 
    yline(0, lp(dash) lc(red*0.7)) /// 
    xline(3, lp(dash) lc(blue*0.7))

4. 相关推文

Note:产生如下推文列表的 Stata 命令为:
lianxh 可视化 系数 + , md nocat
安装最新版 lianxh 命令:
ssc install lianxh, replace

资源共享


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


关于我们

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

Stata绘图:回归系数可视化

最新课程推荐:

课程一:结构模型 · 2025 · 现场班

课程二:连享会 · 面板数据因果推断

FAQ往期课程板书和答疑文档

选题征集,点击 此处 或者扫码填写问卷留下您的宝贵意见,感谢!


NEW!视频课堂lianxh-class.cn

⚡ 新版 lianxh 命令:使用说明
. ssc install lianxh, replace
. lianxh 多期DID

ihelp:帮助文件 PDF 版
. ssc install ihelp, replace
. ihelp xtreg


lianxh_cn_saoma

连玉君 · Stata 33 讲 - 免费
  o 点击观看dofile 下载, --Book--