温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。
作者:张伟广(东北财经大学)
目录
做宏观分析时,我们经常需要在时序图中加入反应经济周期的阴影,以映衬经济波动对我们所关注的变量的影响。对于多数 stata 用户而言,这是个很有挑战性的工作。
不过,今天我们给大家介绍的这个命令,不但可以非常快捷的完成这个颇具挑战的任务,而且还能绘制各种精美的阴影,让阴影不再是单调的灰色。
这个命令就是 bgshade
,它既可以使用 NBER 提供的经济周期划分时间节点 ( 数据来源于:https://fred.stlouisfed.org/series/USREC ),另一方面,也可以根据用户自行设定的虚拟变量来添加阴影区域,这对于研究中国经济周期的影响非常有帮助。
bgshade x/yvar [if] [in] [, options]
options
为自定义的选项,可选择包括: 添加二维图 (twoway
)、设定阴影范围 (shaders
)、阴影属性 (sstyle
),以及 legend
、oldshaders
、horizontal
等(后面逐一实例介绍)。NBER options
包括 quarter
、month
、week
、day
等时间选项。
**范例 1:**基本应用
sysuse gnp96, clear // 调入数据
format date %tq // 设定 date 变量为季度数据格式
bgshade date if date>=yq(1970,1), ///
legend shaders(quarter) ///
twoway(line gnp96 date if date>=yq(1970,1), ///
title("GNP") lcolor(blue*1.2))
说明:
bgshade date
定义了第一个图层,用于绘制反映经济周期的阴影,bgshade
命令会自动比对用户指定的日期与 NBER 发布的经济周期时点,对于重叠的日期范围,会纵向绘制一个阴影区域。twoway()
则定义了第二个图层,用于绘制图形中的蓝色时序图。if date>=yq(1970,1)
语句的作用在于界定 date
的取值范围为 1970 年第 1 季度之后的时间段;legend
选项,则在图形底部呈现图例,默认情况下则不呈现图例;twoway()
选项用于设定时序图的外观,包括图形的种类 (line, connected 等)、图形的标题(title())、线条的颜色 (lcolor(), blue*1.2
表示线条的颜色是标准蓝色的 1.2 倍,即为深蓝色) 等。我们可以将其视为一个图层,至于图层中的内容及其设定方式,与普通的 stata 二维图没有任何差异。twoway
作图显示;使用 title
和 lcolor
设定“表头”和“颜色”。
范例 2: NBER 经济衰退期的全部时间系列
*-实时下载最新的 NBER 经济周期标示数据
copy "https://fred.stlouisfed.org/graph/fredgraph.xls?chart_type=line&recession_bars=off&log_scales=&bgcolor=%23e1e9f0&graph_bgcolor=%23ffffff&fo=Open+Sans&ts=12&tts=12&txtcolor=%23444444&show_legend=yes&show_axis_titles=yes&drp=0&cosd=1854-12-01&coed=2017-10-01&height=450&stacking=&range=Custom&mode=fred&id=USREC&transformation=lin&nd=1854-12-01&ost=-99999&oet=99999&lsv=&lev=&mma=0&fml=a&fgst=lin&fgsnd=2009-06-01&fq=Monthly&fam=avg&vintage_date=&revision_date=&line_color=%234572a7&line_style=solid&lw=2&scale=left&mark_type=none&mw=2&width=968" aa.xls, replace
import excel "aa.xls", sheet("FRED Graph") ///
cellrange(A11:B1966) firstrow clear
rename observation_date date
gen edate = date(date, "YMD") //转化为“年月日”
gen month= mofd(edate) //保留到“年月”
format month %tm //设定为月份数据格式
rename month date1
bgshade date1, twoway(line usrec date1, title("USREC") lcolor(red*1.2))
说明:
date()
命令将日期数据转化为 stata
的“年月日”格式,再使用 mofd()
命令保留到“年月”格式;bgshade
命令,画出NBER
最新给出的美国经济周期的衰退波动标识线。twoway
命令作图显示,以 title
设定表头,以 lcolor
设定颜色为红色。drop _all
set obs 2000
gen date = _n-1280
format date %tm
gen series = sqrt(_n)+runiform()
gen series2 = series*runiform()/2
bgshade date, shaders(month) ///
twoway(line series date, ///
title("All Monthly Recessions"))
说明:
时序图以月份为单位,为 NBER 提供的全部时间区间添加经济衰退阴影区域。
范例 3: 所有默认着色选项
drop _all
set obs 12
gen date = _n-1
gen res1 = inlist(date,4,5,6,7,8,9)
gen res2 = inlist(date,2,3,4,5)
gen res3 = inlist(date,4,9,10,11,12)
gen res4 = inlist(date,5,6,10,11)
gen line1 = sqrt(_n)
gen line2 = _n*_n/20
bgshade date, shaders(res1 res2 res3 res4) ///
twoway( line line1 date || ///
scatter line2 date, xlab(-2(2)14) ///
title("All default shading colors and patterns"))
范例 4: 使用
twoway
画图命令的其他选项
bgshade date, shaders(res1 res2 res3 res4) ///
twoway(line line1 date, lcolor(magenta) || (sc line2 date, msize(huge)), xlab(-2(2)14) ///
title("Using extra options in twoway"))
范例 5: 同时使用自定义和 NBER 着色器
bgshade date, shaders(quarter res2 res3 res4) ///
twoway(line line1 date || sc line2 date, xlab(-2(2)14) ///
title("Using custom and NBER shaders") ///
subtitle("We recommend putting nber shaders first because it looks best"))
范例 6:
sstyle
选项
bgshade date, shaders(res2 res3 res4) ///
sstyle(noextend lcolor("255 0 0" green blue) lpattern(_ - -_)) ///
twoway(line line1 date || sc line2 date, xlab(-2(2)14) ///
title("Using some sstyle options"))
说明:
sstyle
命令是为阴影区域设置各种线条样式选项,主要包括 axis
、style
、lstyle
、noextend
、lpattern
、lwidth
和 lcolor
等。如本例中 noextend
设定为从绘图区域的边缘作延伸线、 lpattern
设定线条的图案。(具体使用在 stata 官方 added_line_options
有详细说明)
范例 7:
legend
选项
lab var res1 "Shader 1"
lab var res2 "Shader 2"
bgshade date, shaders(res1 res2 res3 res4) legend ///
twoway(line line1 date || sc line2 date, xlab(-2(2)14) ///
title("Add shaders to the legend"))
说明:
legend
在图例中包含阴影区域,且是在 twoway
命令之前将着色器添加到图例,这与 twoway
的子选项是不同的。
范例 8:
legend
的综合使用
bgshade date, shaders(res1 res2 res3 res4) legend ///
twoway(line line1 date || sc line2 date, xlab(-2(2)14) ///
title("Using order legend suboption") ///
legend(order(5 "Square Root of N" 6 "N Squared over 20" 2 "Res2" 4 "Res4") cols(2)))
范例 9: 超过 4 种着色器的例子
drop res*
forvalues ii = 1/8 {
gen res`ii' = _n == `ii'+2
}
bgshade date, shaders(res1 res2 res3 res4 res5 res6 res7 res8) ///
sstyle(lpattern( l _ l _ l _ l _) lcolor(green blue red magenta orange navy "255 0 0" eltgreen)) ///
twoway(line line1 date || sc line2 date, xlab(0(1)12) ///
title("More than 4 shaders"))
范例 10: 设定带宽使阴影区间更优美
bgshade date, shaders(res1 res2 res3 res4 res5 res6 res7 res8) ///
sstyle(lwidth(10) ///
lpattern( l _ l _ l _ l _) lcolor(green blue red magenta orange navy "255 0 0" elt green)) ///
twoway(line line1 date || sc line2 date, xlab(0(1)12) ///
title("Changing all widths"))
范例 11: 分别设定每个阴影区间的宽度
bgshade date, shaders(res1 res2 res3 res4 res5 res6 res7 res8) ///
sstyle(lwidth(1 4 10 25 1 3 14 7) ///
lpattern( l _ l _ l _ l _) lcolor(green blue red magenta orange navy "255 0 0" elt green)) ///
twoway(line line1 date || sc line2 date, xlab(0(1)12) ///
title("Changing individual widths"))
范例 12: 阴影区域延伸的例子(同样适用于
oldshaders
选项)
gen res = _n < 3 | _n > 10
bgshade date, shaders(res) sstyle(noxextend(100)) ///
twoway(line line1 date, title("Too hot")) oldshaders
bgshade date, shaders(res) sstyle(noxextend(-100)) ///
twoway(line line1 date, title("Too cold")) oldshaders
bgshade date, shaders(res) sstyle(noxextend(60)) ///
twoway(line line1 date, title("Just right")) oldshaders
说明:
图1设定过窄,图2设定过宽,图3设定较为合适。
范例 13:
horizontal
选项,即水平添加阴影区域的例子
gen yvar = _n
replace res = yvar > 3 & yvar < 5
replace res2 = yvar > 5 & yvar < 7
bgshade yvar, shaders(res res2) ///
twoway(line yvar date) horiz
连享会-直播课 上线了!
http://lianxh.duanshu.com
免费公开课:
直击面板数据模型 - 连玉君,时长:1小时40分钟 Stata 33 讲 - 连玉君, 每讲 15 分钟. 部分直播课 课程资料下载 (PPT,dofiles等)
支持回看,所有课程可以随时购买观看。
专题 | 嘉宾 | 直播/回看视频 |
---|---|---|
⭐ 最新专题 ⭐ | DSGE, 因果推断, 空间计量等 | |
⭕ Stata数据清洗 | 游万海 | 直播, 2 小时,已上线 |
研究设计 | 连玉君 | 我的特斯拉-实证研究设计,-幻灯片- |
面板模型 | 连玉君 | 动态面板模型,-幻灯片- |
面板模型 | 连玉君 | 直击面板数据模型 [免费公开课,2小时] |
Note: 部分课程的资料,PPT 等可以前往 连享会-直播课 主页查看,下载。
关于我们
课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法
等
连享会小程序:扫一扫,看推文,看视频……
扫码加入连享会微信群,提问交流更方便
✏ 连享会学习群-常见问题解答汇总:
✨ https://gitee.com/arlionn/WD