Stata:分仓散点图应用-binscatter

发布时间:2023-01-01 阅读 2149

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

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

New! lianxh 命令发布了:
随时搜索推文、Stata 资源。安装:
. ssc install lianxh
详情参见帮助文件 (有惊喜):
. help lianxh
连享会新命令:cnssc, ihelp, rdbalance, gitee, installpkg

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

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

⛳ Stata 系列推文:

PDF下载 - 推文合集

作者:朱志英 (中山大学)
邮箱zhuzhy28@mail2.sysu.edu.cn

编者按:本文部分摘译自下文,特此致谢!
Source:Akcigit, Grigsby, Nicholas and Stantcheva (2022): Taxation and Innovation in the Twentieth Century, Quarterly Journal of Economics 137 (1): 329-385. -PDF- -Replication-


目录


1. 内容简介

散点图能够直观表现出变量间的总体关系趋势,因此被广泛地应用于论文中。但是,当样本量太大或者 x 与 y 之间的关系不够明显时,散点图就会捉襟见肘。此时,分仓散点图 (binned scatterplot) 的作用就显现出来了。本文将简要介绍分仓散点图,并介绍 Akcigit et al. (2022, QJE) 论文中对分仓散点图的应用,即 Akcigit et al. (2022, QJE) Figure 1 的绘制。

2. binscatter 方法介绍

2.1 binscatter 简介

binscatter 是用于生成分仓散点图 (binned scatterplot) 的 Stata 命令。其生成的图像显示了给定 x 情况下 y 条件期望的非参数估计。该命令可以在控制其他变量或者固定效应的情况下,快速检测非线性、异常值、分布性问题和最佳拟合函数形式。此外,还可以很好地显示不同子组的异构关系。

2.2 binscatter 步骤

那么,binscatter 是如何实现的呢?

  • 首先,binscatter 将散点划分成不同 bins,不同的 bins 含有相同的样本量;
  • 其次,计算每个 bin 内 x 和 y 的均值;
  • 再次,创建这些数据点的散点图;
  • 最后,绘制总体回归线 (采用原始数据,而非生成的散点)。

2.3 binscatter 命令

命令安装:

. ssc install binscatter, replace // 命令安装

命令语法:

binscatter varlist [if] [in] [weight] [, options]

其中,

  • varlist:因变量和自变量;
  • ifin:添加限定条件;
  • weight:以该变量作为权重进行回归;
  • controls():添加控制变量;
  • absorb():使用固定效应;
  • nquantiles():设置生成多少组 bins;
  • noaddmean:计算残差后不加回变量均值;
  • nofastxtile:使用 xtile

接下来,我们以 nlsw88.dta 为例,绘制年龄和工资关系之间的图表,来感受一下 binscatter 的绘图效果。

. sysuse nlsw88, clear 
. binscatter wage age  // 生成最基础的 binscatter 图像

可以看到,在一定年龄区间内,wageage 之间呈现出明显的负向关系。我们还可以对 bins 进行修改,例如将默认值 20 个 bins 修改为 30 个 bins。

. binscatter wage age, n(30)  // 更改 bins 为 30 个,默认 bins 为 20 个

有时,我们除了关注变量间的线性关系,还想关注变量间的非线性关系 (如二次关系),binscatter 也可以帮助我们实现。

. binscatter wage age, line(qfit) // 进行二次拟合

此外,我们还可以使用 by 进行分组绘图,查看不同组中变量间的关系。例如:研究不同种族中,年龄和工资的关系。

. binscatter wage age, by(race) // 按照种族进行分组绘图

我们也可以使用 controls 加入控制变量。例如:在研究工资与年龄的关系时,我们将样本的工作经验设置为控制变量。

. binscatter wage age, controls(ttl_exp) // 加入控制变量:工作经验

另外,分组和控制变量可以结合起来。下图的例子中我们使用 absorb 命令,加入职业固定效应。

. binscatter wage age, by(race) absorb(occupation) // 加入固定效应进行分组回归

binscatter 还可以帮助我们观察自变量和因变量在某些数值上是否存在断点。如下面的例子中,我们使用 rd 命令观察工资与年龄的关系是否在 35 岁前后发生变化。

. binscatter wage age, rd(35)  // 分段回归,该命令对散点无影响,但是生成分段回归曲线

3. 论文复现

接下来,本文将简要介绍 Akcigit et al.(2022, QJE) 论文的主要内容及 Figure 1 在论文中发挥的作用。

3.1 论文介绍

Akcigit et al. (2022, QJE) 研究了 20 世纪美国公司税和个人税对创新的影响,他们发现征税对创新数量有负面影响,也会迫使本地发明人外迁,但不会影响平均创新质量。州级税收弹性很大,并且与个人层面对创新产生的反应和跨州流动性的结果一致。公司税往往会特别影响公司发明者的创新生产和跨州流动性。个人所得税显着影响整体创新数量和发明人的流动性。文中的主要变量如下:

  • mtr90_lag3:个人所得税,采用滞后三年的第 90 分位点个人所得税税率表示;
  • top_corp_lag3:公司所得税,采用滞后三年的头部公司所得税税率表示;
  • lnpat:专利申请数,采用每年州申请专利数的对数表示;
  • ln_inv:发明者数量,采用每年定居在州内的发明者数量的对数表示;
  • real_gdp_pc:人均实际 GDP;
  • population_density:人口密度;
  • rd_credit_lag3:为滞后三年的研发支出抵免。

3.2 Figure 1 复现

导入数据,设置全局暂元。

. lxhuse akcigit2022.dta, clear 
. foreach var of varlist mtr90 top_corp {
  2.     replace `var'_lag3 = ln(1-`var'_lag3/100)
  3. }
. global cx "L.real_gdp_pc L.population_density rd_credit_lag3 i.statenum"
. global T_p "mtr90_lag3"    // 个人税
. global T_c "top_corp_lag3" // 公司税

绘制 Figure 1(A)。在以下代码中,[aw=pop1940] 表示把 1940 年的人口数作为权重回归。同时,作者控制公司所得税、滞后一年的人均实际 gdp、滞后一年的人口密度、滞后三年的研发支出抵免和不同的州,并使用 absorb 加入年份的固定效应,将样本分为 100 组进行回归。

. * 画图:Figure 1(A)
. binscatter lnpat $T_p [aw=pop1940], controls($T_c $cx) absorb(year) ///
>     nquantiles(100) noaddmean nofastxtile savegraph("Fig1A.gph") replace

绘制 Figure 1(B)。同理,控制个人所得税,使用专利申请数对公司所得税进行回归。

. * 画图:Figure 1(B)
. binscatter lnpat $T_c [aw=pop1940], controls($T_p $cx) absorb(year) ///
>     nquantiles(100) noaddmean nofastxtile savegraph("Fig1B.gph") replace

绘制 Figure 1(C)。我们控制个人所得税,使用发明者数量对公司所得税进行回归。

. * 画图:Figure 1(C)
. binscatter ln_inv $T_p [aw=pop1940], controls($T_c $cx)  absorb(year) ///
>     nquantiles(100) noaddmean nofastxtile savegraph("Fig1C.gph") replace

绘制 Figure 1(D)。我们控制公司所得税,使用发明者数量对个人所得税进行回归。

. * 画图:Figure 1 (D)
. binscatter ln_inv $T_c [aw=pop1940], controls($T_p $cx) absorb(year) ///
>     nquantiles(100) noaddmean nofastxtile savegraph("Fig1D.gph") replace

最后,我们将 4 张图片进行组合。

. graph combine Fig1A.gph Fig1B.gph Fig1C.gph Fig1D.gph, ///
>     rows(2) imargin(zero) graphregion(fcolor(white))

4. 参考资料

  • 钟声, 连享会推文, Stata:分仓散点图绘制-binscatter-binscatter2. -Link-
  • Chen, Y., S. Shi, Y. Tang, 2019, Valuing the urban hukou in china: Evidence from a regression discontinuity design for housing prices, Journal of Development Economics, 141. -PDF-
  • Beck, Thorsten, Ross Levine, and Alexey Levkov. 2010. “Big Bad Banks? The Winners and Losers from Bank Deregulation in the United States.” Journal of Finance 65 (5): 1637–67. -PDF-

5. 相关推文

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

相关课程

免费公开课

最新课程-直播课

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

课程主页

课程主页

关于我们

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

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

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

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

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