Stata绘图:绘制美观的散点图-superscatter

发布时间:2022-05-22 阅读 4458

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下载 - 推文合集

作者:彭甲超 (武汉工程大学)
邮箱jiachao.peng@wit.edu.cn

编者按:本文主要摘译自下文,特此致谢!
Source:Mead Over, superscatter: An enhanced scatter plot. -website- -pkg-


目录


1. 简介

superscatter 命令创建了一个包含 y 变量对 x 变量的散点图。散点图的边缘显示了两个变量的边际分布图。用户可以选择将边缘分布显示为直方图 (默认值) 或核密度。同时 hilitehide 选项允许用户使用不同的标记符号或颜色绘制选定的观测值。用户还可以选择将两种分布的平均值、中间值或四分位数绘制成线条,覆盖边缘分布和散点图。

这些线形成一个由四个单元格组成的网格 (如果选择了选项中间线或方法) 或 16 个单元格 (如果选择了四分位数)。如果已经选择了某个方法、中间数或四分位数选项,用户可以指定 tabulate(statistics) 选项。统计量可以是网格中每个单元格中的观测值的计数,或者是单元格中相对于行、列或所有数据的观测值的百分比。

2. 命令介绍

superscatter 命令安装:

ssc install binscatterhist,   replace
net install superscatter.pkg, replace
net install gr0002_3.pkg,     replace  // 纯黑白风格, lean1, lean2 模板

superscatter 命令语法:

superscatter y_variable x_variable [if] [in] [, options]

其中,Combined Plot 选项:

  • detail:显示附加统计信息;
  • iscale([*]#):文本和标记的大小;
  • altshrink:文本的替代缩放等;
  • title_options:出现在组合图上的标题;
  • region_options:轮廓、阴影、纵横比;
  • commonscheme:修改背景模板;
  • scheme(schemename):模板类型;
  • nodraw:禁止显示组合图;
  • name():指定组合图的名称;
  • saving(filename, [replace asis]):将组合图保存在文件中。指定要保存文件的目录,需要在文件名前加上路径并指定文件扩展名。例如,要将文件保存在工作目录的子目录 output 中,选项应为 save(.loutputlfilename.gph)

Shared X- and Y- axes 选项:

  • {y|x}scale():对数刻度、范围、外观;
  • {y|x}label():主要刻度加上标签;
  • {y|x}tick():仅主要刻度;
  • {y|x}mlabel():小刻度加上标签;
  • {y|x}mtick():仅小刻度;
  • {y|x}title():指定轴标题。

Histogram 选项:

  • hist_method:用于绘制直方图的方法,其中 hist_method 可以是 (密度分数 | 频率 | 百分);
  • barlook_options:改变外观。

Kernel 选项:

  • kdensity:显示核密度 (并抑制直方图);
  • kdxoptions(options):指定特定于 x 轴上的双向核密度的任何选项。

Lines 选项:

  • means:将散点图分成由 x 和 y 变量定义的四个象限;
  • medians:将散点图分成由 x 和 y 变量的中位数定义的四个象限;
  • terciles:在散点图上覆盖 3 x 3 网格,单元格由 x 和 y 变量的三分位数定义;
  • quartiles:在散点图上覆盖 4 x 4 网格,单元格由 x 和 y 变量的四分位数定义;
  • line45:在散点图上覆盖 45 度线;
  • opt45(options):仅在指定 line45 时才相关。允许选项控制 45 度线的外观,请参阅 connect_options

Tabulate 选项:

  • tabulate(statistic):统计数据可以是 {count|cell|row|col}
  • tabformat(format):显示统计的数字格式;
  • matname(name):显示的统计信息以称为 r(name) 的矩阵形式返回;
  • textplace(compass_direction):指定每个网格单元内的统计信息放置位置,默认为 c 表示中心,可能的替代位置是罗盘方向:n、s、e、w;
  • textsize(size):指定每个网格单元格内文本的大小。

Subset 选项:

  • hilite(condition):通过使用不同的符号或颜色叠加仅包含该观察子集的第二个图来突出显示满足逻辑条件的观察。不影响用于其他选项的样本;
  • hiliteoptions(string):指定特定于突出显示的观察的 msymbolmcolor 选项;
  • hide(condition):从主散点图中,抑制满足逻辑条件的观察;
  • sample(percentage):随机选择一定百分比的观测值进行显示,默认值为 100。

Fitted line 选项:

  • fittype(fittype):将拟合回归线的图添加到散点图中。fittype 的可用选项如下所述;
  • fitoptions(string):指定拟合回归图的选项。可用选项因选择的 fittype 而异,如下所述。仅当指定 fittype(fittype) 时才相关;
  • fitsample(condition):此选项允许用户从 fittype 的估计样本中排除散点图和直方图中显示的一些观察值。如果观察结果不符合指定的逻辑条件,则将其排除在估计之外。仅当指定 fittype(fittype) 时才相关。不影响用于其他选项的样本。

Ellipse 选项:

  • ellipse:向散点图添加置信椭圆图;
  • elevel(real):将置信水平指定为百分比,默认值为 50;
  • estat(stat):使用 F 统计量 (默认) 或 χ2 统计量,通过指定 {Chi2|Fstat}
  • epattern(pattern):为定义椭圆的线指定图案,默认为实心;
  • ecolor(color):指定定义椭圆的线的颜色;
  • ewidth(width):指定定义椭圆的线的粗细。

Scaling both axes 选项:

  • sqrt:使用适当的轴标签在平方根刻度上缩放两个轴;
  • log10pluszero:使用适当的轴标签在对数刻度上缩放两个轴;
  • log10plusone:将 1.0 添加到 x 和 y 值,然后将它们的对数以 10 为底并相应地缩放轴。此选项允许在对数刻度上显示零值,但可能会扭曲其余数据。

3. Stata 实例操作

获取 Stata 自带数据集:

. sysuse lifeexp, clear
. qui gen loggnp = log10(gnppc)
. label var loggnp "Log base 10 of GNP per capita"
. qui gen us_gnp0 = country if country=="United States" | country=="Haiti" | ///
>     country=="Brazil" | country=="Jamaica" | country=="Armenia" | gnppc>=.
. label var us_gnp0 "Labels of selected countries"
. describe

例子 1:重新创建 Stata 手册中 graph_combine 的示例。

. * Border the scatter plot with histograms.
. superscatter lexp loggnp, name(_example1, replace) title(Example 1)

例子 2:替换例子 1 中的样式,包括各种可选修饰的样式、散点样式等。

. * Same plot with various optional cosmetic touches.
. superscatter lexp loggnp, percent color(dkorange) mlabel(us_gnp0) m(s) msize(small) ///
>     xtitle("GNP per capita (log)") name(_example2, replace) title(Example 2)

例子 3:演示中位数和制表 (计数) 选项的使用。中位数选项将数据分为四个象限,原则上每个象限包含四分之一的观测值。tabulate(count) 选项给出了观察次数。

. * Replace the histograms with kernel density plots and add median lines and cell counts.
. superscatter lexp loggnp, kdensity medians tabulate(count) matname(tabout) detail ///
>     name(_example3, replace) title(Example 3) 

. * List the statistics used to construct the tabulations.
. return list
. matrix list r(tabout)

例子 4superscatter 提供了多种用于在散点图上叠加信息的选项,其中一些会生成图例。在没有用户干预的情况下,这样生成的图例会立即出现在散点图下方,缩短其垂直尺寸,使其不再与垂直轴左侧描绘的边缘分布对齐。例 4 显示了用户如何将图例移动到散点图的内部,并恢复其与边缘分布的对齐。

. * To the bordered plot of example 1, add the fitted regression line and position the legend
. superscatter lexp loggnp, means fittype(lfitci) fitoptions(lwidth(vthick)) legend(ring(0) ///
>     cols(1) pos(5)) ytitle(Life Expectancy) name(_example4, replace) title(Example 4) 

例子 5:用二元正态置信椭圆覆盖散点图,并列出用于构造椭圆的描述性统计量。

. * Overlay the scatter plot with a bivariate normal confidence ellipse
. superscatter lexp loggnp, ellipse quartiles ytitle(Life Expectancy) ///
>     name(_example5, replace) title(Example 5) 

. * List the descriptive statistics used to construct the ellipse
. return list

例子 6:用椭圆和拟合线覆盖散点图。

. * Overlay the scatter plot with both an ellipse and a fitted line
. superscatter lexp loggnp, means fittype(lfit) fitoptions(lwidth(vthick)) ellipse ///
>     ytitle(Life Expectancy) name(_example6, replace) title(Example 6) 

例子 7:散点图是比较同一变量两个版本的有用方法。使用自带的示范数据,例子 7 将一个国家基于人均国民生产总值的预期寿命与其实际预期寿命进行比较。

首先,估计 1998 年预期寿命对 1998 年人均 GNP 对数的回归,并使用 Stata 的 predict 命令估计每个国家的 1998 年预期寿命。然后,我们使用带有 line45 选项的 superscatter 来比较每个国家 1998 年的预期寿命与其 1998 年的实际预期寿命。

45 度线以上的国家在 1998 年的卫生部门表现令人失望,因为它们的预期寿命低于根据其国民生产总值预测的预期寿命。海地是一个特别引人注目的异常值,虽然它是世界上最贫穷的国家之一,但其低国民生产总值预计其预期寿命约为 66 岁。相比之下,其实际预期寿命在 1988 年仅为 55 岁,比仅根据贫困预测的低 11 年。低于预测线的其他国家,包括巴西,其人均 GNP 的表现比预期的差。另一方面,亚美尼亚和牙买加等国的表现好于预期。

. * Compare observed to predicted life expectancy with respect to a 45 degree line.
. regress lexp loggnp
. predict lexp_hat, xb
. lab var lexp_hat "Fitted value of life expectancy"
. local textadds `"text(78 68 "Observed greater" "than predicted") text(58 68 "Observed less" "than predicted")"'
. superscatter lexp lexp_hat, line45 opt45(lwidth(vthick)) legend(off) mlabel(us_gnp0)   ///
>     legend(ring(0) pos(5) col(1) order(2 "Countries" 1 "Predicted life" "Expectancy")) ///
>     xtitle(Predicted Life Expectancy) ytitle(Observed Life Expectancy) xlabel(65(5)80) ///
>     `textadds' name(_example7, replace) title(Example 7)

例子 8:在绘制偏态分布时,转换轴刻度通常很有用,以便在大部分数据集中的刻度末端分散数据点。在例子 1 到例子 5 中,通过在横轴上绘制 GNP 的对数而不是其实际值来实现的。不是像上面所做的那样转换倾斜的人均国民生产总值变量,而是可以指定选项 xscale(Log),但是 x 轴上边缘分布的结果直方图会因拉伸而失真。y 轴的类似选项 yscale(Log) 对超散射没有影响。

superscatter 提供了三个凸变换选项,所有这些选项都对正在绘制的两个变量应用相同的变换。这三个选项在两个标绘变量都为非负且右偏时最有用,经济数据通常就是这种情况。三个附加选项是 sqrtlog1epluszerologleplusone。其中,sqrt 选项和 log10plusone 都在基础数据中容纳零。例子 8 是 sqrt 选项的应用示例。

. * Scale both axes by the square-root
. superscatter lexp gnppc, sqrt ytitle(Life Expectancy on square-root scale)  ///
>     xtitle(GNP per capita on square-root scale) name(_example8, replace)    ///
>     title(Example 8) 

4. 相关推文

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