Stata:分仓散点图应用-binscatter
👇 连享会 · 推文导航 | www.lianxh.cn
🍎 Stata:Stata基础 | Stata绘图 | Stata程序 | Stata新命令 📘 论文:数据处理 | 结果输出 | 论文写作 | 数据分享 💹 计量:回归分析 | 交乘项-调节 | IV-GMM | 时间序列 | 面板数据 | 空间计量 | Probit-Logit | 分位数回归 ⛳ 专题:SFA-DEA | 生存分析 | 爬虫 | 机器学习 | 文本分析 🔃 因果:DID | RDD | 因果推断 | 合成控制法 | PSM-Matching 🔨 工具:工具软件 | Markdown | Python-R-Stata 🎧 课程:公开课-直播 | 计量专题 | 关于连享会
连享会课程 · 基于机器学习的因果推断方法
作者:朱志英 (中山大学)
邮箱: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. 内容简介
2. binscatter 方法介绍
2.1 binscatter 简介
2.2 binscatter 步骤
2.3 binscatter 命令
3. 论文复现
3.1 论文介绍
3.2 Figure 1 复现
4. 参考资料
5. 相关推文
1. 内容简介
散点图能够直观表现出变量间的总体关系趋势,因此被广泛地应用于论文中。但是,当样本量太大或者 与 之间的关系不够明显时,散点图就会捉襟见肘。此时,分仓散点图 (binned scatterplot) 的作用就显现出来了。本文将简要介绍分仓散点图,并介绍 Akcigit et al. (2022, QJE) 论文中对分仓散点图的应用,即 Akcigit et al. (2022, QJE) Figure 1 的绘制。
2. binscatter 方法介绍
2.1 binscatter 简介
binscatter
是用于生成分仓散点图 (binned scatterplot) 的 Stata 命令。其生成的图像显示了给定 情况下 条件期望的非参数估计。该命令可以在控制其他变量或者固定效应的情况下,快速检测非线性、异常值、分布性问题和最佳拟合函数形式。此外,还可以很好地显示不同子组的异构关系。
2.2 binscatter 步骤
那么,binscatter
是如何实现的呢?
首先, binscatter
将散点划分成不同 bins,不同的 bins 含有相同的样本量;其次,计算每个 bin 内 和 的均值; 再次,创建这些数据点的散点图; 最后,绘制总体回归线 (采用原始数据,而非生成的散点)。
2.3 binscatter 命令
命令安装:
. ssc install binscatter, replace // 命令安装
命令语法:
binscatter varlist [if] [in] [weight] [, options]
其中,
varlist
:因变量和自变量;if
和in
:添加限定条件;weight
:以该变量作为权重进行回归;controls()
:添加控制变量;absorb()
:使用固定效应;nquantiles()
:设置生成多少组 bins;noaddmean
:计算残差后不加回变量均值;nofastxtile
:使用xtile
。
接下来,我们以 nlsw88.dta 为例,绘制年龄和工资关系之间的图表,来感受一下 binscatter
的绘图效果。
. sysuse nlsw88, clear
. binscatter wage age // 生成最基础的 binscatter 图像
可以看到,在一定年龄区间内,wage 和 age 之间呈现出明显的负向关系。我们还可以对 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
专题:专题课程 ⏩连享会公开课:实证研究中的数据可视化 专题:Stata绘图 Stata可视化:能用图形就不用表格 Stata绘图:回归系数可视化-multicoefplot Stata绘图-可视化:组间差异比较散点图 Stata绘图全解:绘图语法-条形图-箱型图-散点图-矩阵图-直方图-点图-饼图 Stata绘图-组间差异可视化:不良事件火山图、点阵图 Stata可视化:让他看懂我的结果! 常用科研统计绘图工具介绍 Stata绘图:柱状图专题-T212 Stata绘图:绘制一颗红心-姑娘的生日礼物 Stata绘图:COVID-19数据可视化 Stata绘图:唯美的函数图-自定义水平附加线和竖直附加线 Stata绘图:复现组间均值差异图 Stata绘图:环形柱状图-实时全球新冠确诊人数 Stata可视化:能用图形就不用表格 Stata绘图:绘制华夫饼图-waffle Stata绘图:绘制美观的散点图-superscatter Stata绘图:如何更高效的绘制图形
课程推荐:因果推断实用计量方法
主讲老师:邱嘉平教授
🍓 课程主页:https://gitee.com/lianxh/YGqjp
New! Stata 搜索神器:
lianxh
和songbl
GIF 动图介绍
搜: 推文、数据分享、期刊论文、重现代码 ……
👉 安装:
. ssc install lianxh
. ssc install songbl
👉 使用:
. lianxh DID 倍分法
. songbl all
🍏 关于我们
连享会 ( www.lianxh.cn,推文列表) 由中山大学连玉君老师团队创办,定期分享实证分析经验。 直通车: 👉【百度一下: 连享会】即可直达连享会主页。亦可进一步添加 「知乎」,「b 站」,「面板数据」,「公开课」 等关键词细化搜索。