Stata连享会 主页 || 视频 || 推文 || 知乎 || Bilibili 站
温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。
New!
lianxh
命令发布了:
随时搜索推文、Stata 资源。安装:
. ssc install lianxh
详情参见帮助文件 (有惊喜):
. help lianxh
连享会新命令:cnssc
,ihelp
,rdbalance
,gitee
,installpkg
⛳ Stata 系列推文:
作者:李其璋 (中山大学)
邮箱:3456899246@qq.com
目录
本文介绍 Stata 中的一个高效绘图套件 plottabs
,包括 plottabs
,plotshares
,plotbetas
,plotmeans
四个命令。此套件的四个命令可以混合使用,比传统绘图命令可视化形式更丰富,图表表现力更强,能更直观地体现数据特征。
plottabs
套件避免了绘图耗时过长的问题,且在大样本数据中速度比传统命令快 300 倍。此外,plottabs
套件支持用户在内存中储存多个绘图数据,方便随时调用。四个命令功能如下:
plottabs
:绘制条件频率或份额 (tabulate oneway
的可视化模拟);plotshares
:绘制条件分类频率或份额 (tabulate twoway
的可视化模拟);plotbetas
:绘制可视化回归系数估计 (回归后);plotmeans
:绘制条件均值 (mean y, over x
的可视化模拟)。
命令安装:
ssc install plottabs, replace
命令语法:
plottabs varname [if] [in] [, options]
plotshares varname [if] [in] , over(groupvar) [options]
plotbetas varlist [if] [in] [, options]
plotmeans varname [if] [in] , over(groupvar) [options]
其中,varname
为需要可视化的变量,varlist
为回归中的变量集。groupvar
表示作为分组依据的变量。options
包括:
基本选项
over(varname)
:指定条件变量的另一种方法;output(output_type)
:指定绘图类型,频率 (默认) /份额/累计;将 output_type
设置为 share
会产生相对份额,而设置为 cummulative
会产生累积份额;graph(graph_type)
:指定二维图表类型:线型图 (默认) /条形图/连线图/散点图等;invert
:倒转被分类变量在图表中的排列顺序;rgraph(rgraph_type)
:指定置信区间区域的图表类型,包括 rarea
(默认)、bar
、rcap
、rspike
等;ci(#,ci_options)
:指定置信区间水平 (#
为 0 到 100 的数,95 为默认值,off
表示不显示置信区间;ci_options
表示rgraph_type
的自定义选项,包括 color
、transparency
等)。存储/数据管理选项
frame(frame_name)
:指定存储输出数据的数据框名称 (默认为 frame_pt
);clear
:清除存储在 frame_name
中的所有输出的数据;replace(#)
:覆盖替换现有变量;plotonly
:显示已存储在 frame_name
中的图表。自定义选项
command
:输出用于显示图表的二维命令 (更好地自定义);global
:将相同的自定义选项应用于 frame_name
中的所有绘图;plname(plot_name)
:命名当前绘图 (当同时使用多个图表时在图例中使用);xshift(real)
:把绘制的变量沿着 x 轴移动;yshift(real)
:把绘制的变量沿着 y 轴移动;yzero
:用于在 y 轴上显示零的缩略选项 (并按 y 轴);twoway_options
:更改标题、图例、坐标轴、纵横比等;connect_options
:更改图线外观或连线方式;marker_options
:更改标记的外观 (颜色、大小等);area_options
:更改图表区域的设置 (仅在 plotshares
中适用);barlook_options
:更改条形图外观。其他选项
nodraw
:不显示绘制的图表 (在覆盖半成品图表时很有用);times(real)
:将绘图的数值乘以一个常数 (对变量标准化处理时很有用)。
这是 plottabs
最基本的用法,通过使用条形图描述了变量 mpg 的频数分布情况。代码和结果如下图:
. clear all
. sysuse auto
. plottabs mpg, graph(bar)
对于一个变量,我们有时候需要考察它的值落在某个区间内的样本量,以及它与总样本量的关系。这时使用 output(cummulative)
选项可达到目的。以下例子用阶梯折线考察了国内和国外两个子样本中变量 mpg 逐渐增大时其累计份额的变化情况。
若折线上某点的坐标为 (x, y),则意味着在从变量 mpg 的最小值到 x 这一区间内,mpg 的值出现的次数占总样本量的比为 y。
. clear all
. sysuse auto
. plottabs mpg if foreign == 0, output(cummulative) connect(stairstep) plname(Domestic)
. plottabs mpg if foreign == 1, output(cummulative) connect(stairstep) plname(Foreign)
plottabs
也支持同时使用两种图表,并在同一个图表中显示,同时执行以下几行命令即可。以下例子把变量 mpg 的条形图和阶梯折线图同时呈现,还使用了 scheme
选项调整背景。
. clear all
. sysuse auto
. plottabs mpg, graph(bar)
. plottabs mpg, output(cummulative) connect(stairstep) legend(off) scheme(gg_tableau) yaxis(2)
当然,plottabs
也可以和 plotmeans
等其他三个命令合用,这一点在后面的例子中会看到。
隐藏图表
. clear all
. sysuse auto
. plottabs mpg if foreign == 0, nodraw plname(Domestic)
. plottabs mpg if foreign == 1, nodraw plname(Foreign)
nodraw
选项表示命令已执行,图表储存在内存中,但不显示。再输入以下指令,则显示此前未显示的图表:
plottabs, plotonly
替换图表:以下指令把上述第二个图表替换为另一个。
. plottabs mpg if headroom>3, replace(2)
替换自定义选项
. plottabs mpg, plotonly replace(2) color(pink) plname("Headroom > 3")
合并以上两个指令
. plottabs mpg if headroom>3, rep(2) col(pink) pln("Headroom > 3")
清除内存中的图表并绘制新图
. plottabs mpg, clear graph(bar)
创建一个新的独立图表
. plottabs turn, graph(bar) frame(frame_hr)
为内存中每个图表命名
. plottabs, plotonly name(fig1)
. plottabs, plotonly name(fig2) frame(frame_hr)
切换数据集:输入以下指令,得到图表。
. clear all
. sysuse auto
. plottabs mpg if foreign==0, out(cumm) connect(stairstep) pln(Domestic)
. plottabs mpg if foreign==1, out(cumm) connect(stairstep) pln(Foreign) scheme(economist)
再输入以下指令:
. frame change frame_pt
. browse //查看 frame_pt 中图表的数据
此时数据集被切换至图表处,并查看图表中的数据。若无 frame
步骤,则仅能查看整份 auto 数据。
查看自定义选项
. frame change frame_pt_cust
. describe // 详细描述 frame_pt_cust 中的数据
------------------------------------------------------------------------
Variable Storage Display
name type format Variable label
------------------------------------------------------------------------
cust_out str16 %16s Output type corresponding to _n-th plot
cust_gra str4 %9s Graph type corresponding to _n-th plot
cust_opt str18 %18s Graphing options specific to _n-th plot
cust_two str17 %17s Two-way options applicable to the overall graph
cust_oth str1 %9s Any other options specific to _n-th plot
cust_rgr str1 %9s Graph type corresponding to the CIs of _n-th plot
cust_lci str1 %9s Legend for the CIs of _n-th plot
cust_oci str1 %9s Graphing options specific to the CIs of _n-th plot
-------------------------------------------------------------------------
. browse // 查看数据
恢复默认数据集
frame change default
注:当 frame
被定义后,每次添加新的图表,都要加上 frame
选项来切换,否则系统会用新的图表替换原有图表。
这是 plotshares
最基本的用法,以下描述了 nlsw88 数据中变量 race 按年龄 age 变化统计时,每个类别的相对份额情况,且三个类别相对份额之和为 1。
. clear all
. sysuse nlsw88
. plotshares race, over(age)
以下使用具体频数来对比三个子样本中 race 随年龄变化的统计。
. clear all
. sysuse nlsw88
. plotshares race, over(age) output(stacked) graph(bar)
以下例子倒转了 race 子样本的排列顺序。同时使用 plotmeans
指令展示变量 ttl_ 随年龄变化的条件均值,使用线图连接散点,再自定义其他选项。
. clear all
. sysuse nlsw88
. plots race, over(age) invert
. plotm ttl_, over(age) graph(connect) plname(Yrs of Exp) ///
> scheme(white_ptol) color(red) yaxis(2) yzero
以下探究 ttl_exp 对 i.age 回归时,i.age 的回归系数,并在图表中绘制 95% 置信区间。
. clear all
. sysuse nlsw88
. reg ttl_exp i.age
Source | SS df MS Number of obs = 2,246
-------------+---------------------------------- F(12, 2233) = 4.96
Model | 1238.37396 12 103.19783 Prob > F = 0.0000
Residual | 46476.8864 2,233 20.8136526 R-squared = 0.0260
-------------+---------------------------------- Adj R-squared = 0.0207
Total | 47715.2603 2,245 21.2540135 Root MSE = 4.5622
------------------------------------------------------------------------------
ttl_exp | Coefficient Std. err. t P>|t| [95% conf. interval]
-------------+----------------------------------------------------------------
age |
35 | 0.730 0.688 1.06 0.289 -0.619 2.078
36 | 0.867 0.688 1.26 0.208 -0.483 2.216
37 | 1.410 0.697 2.02 0.043 0.044 2.776
38 | 1.409 0.698 2.02 0.044 0.040 2.779
39 | 2.614 0.694 3.77 0.000 1.253 3.975
40 | 1.915 0.702 2.73 0.006 0.538 3.292
41 | 2.068 0.697 2.96 0.003 0.700 3.436
42 | 2.220 0.723 3.07 0.002 0.802 3.638
43 | 2.109 0.720 2.93 0.003 0.697 3.522
44 | 2.787 0.721 3.86 0.000 1.372 4.201
45 | 1.517 0.812 1.87 0.062 -0.075 3.110
46 | 9.552 3.286 2.91 0.004 3.108 15.997
_cons | 10.842 0.627 17.30 0.000 9.613 12.071
------------------------------------------------------------------------------
. plotbetas i.age
若使用箱线图绘制,可用以下指令:
. plotbetas i.age, clear graph(scatter) rgraph(rcap)
按 union 等于 0 或 1 分为两组分别进行回归,比较两组 i.age 的回归系数。
. clear all
. sysuse nlsw88
. reg ttl_exp i.age if union==0
. plotbetas i.age, graph(connect) plname(Non-union)
. reg ttl_exp i.age if union==1
. plotbetas i.age, graph(connect) plname(Union)
以下自定义线型、置信区间颜色及透明度。
. clear all
. sysuse nlsw88
. reg ttl_exp i.age
. plotbetas i.age, color(green) ci(, color(gold%35))
以下绘制 ttl_exp 关于年龄的条件均值,并绘制 95% 置信区间。
. clear all
. sysuse nlsw88
. plotmeans ttl_exp, over(age)
改用箱线图:
. plotmeans ttl_exp, over(age) graph(scatter) rgraph(rcap) clear
按 union 等于 0 或 1 分为两组,对比 ttl_exp 在两组样本中的条件均值。
. clear all
. sysuse nlsw88
. plotmeans ttl_exp if union==0, over(age) graph(connect) plname(Non-union)
. plotmeans ttl_exp if union==1, over(age) graph(connect) plname(Union)
先用 plottabs
的条形图绘制 age 的分布,再用 plotmeans
的散点连线图绘制 ttl_exp 关于 age 的条件均值,两幅图在一个图表中显示。
. clear all
. sysuse nlsw88
. plottabs, over(age) graph(bar) plname(Frequencies) color(green%15)
. plotmeans ttl_exp, over(age) graph(connect) plname(Yrs of Exp) yaxis(2)
以下自定义图线颜色、置信区间颜色及透明度。
. clear all
. sysuse nlsw88
. plotmeans ttl_exp, over(age) color(green) ci(, color(gold%35))
Note:产生如下推文列表的 Stata 命令为:
lianxh 绘图, m
安装最新版lianxh
命令:
ssc install lianxh, replace
免费公开课
最新课程-直播课
专题 | 嘉宾 | 直播/回看视频 |
---|---|---|
⭐ 最新专题 | 文本分析、机器学习、效率专题、生存分析等 | |
研究设计 | 连玉君 | 我的特斯拉-实证研究设计,-幻灯片- |
面板模型 | 连玉君 | 动态面板模型,-幻灯片- |
面板模型 | 连玉君 | 直击面板数据模型 [免费公开课,2小时] |
⛳ 课程主页
⛳ 课程主页
关于我们
课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法
等
连享会小程序:扫一扫,看推文,看视频……
扫码加入连享会微信群,提问交流更方便
✏ 连享会-常见问题解答:
✨ https://gitee.com/lianxh/Course/wikis
New!
lianxh
和songbl
命令发布了:
随时搜索连享会推文、Stata 资源,安装命令如下:
. ssc install lianxh
使用详情参见帮助文件 (有惊喜):
. help lianxh