查看原文
其他

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

连享会 连享会 2023-10-24

👇 连享会 · 推文导航 | www.lianxh.cn

连享会 · 效率分析专题

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

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

温馨提示: 文中链接在微信中无法生效。请点击底部「阅读原文」。或直接长按/扫描如下二维码,直达原文:


目录

  • 1. 简介

  • 2. 命令介绍

  • 3. Stata 实例操作

  • 4. 相关推文



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):使用 统计量 (默认) 或 统计量,通过指定 {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

  • 专题:Stata绘图
    • Stata绘图:绘制桑基图-sankey_plot
    • Stata绘图-可视化:组间差异比较散点图
    • Stata绘图:addplot-fabplot-多图层美化图片
    • Stata绘图:箱形图与小提琴图-vioplot
    • Stata绘图:太美了!羊皮卷风格图形
    • Stata绘图:自定义绘图利器-palettes
    • 史上最牛Stata绘图模版-schemepack:酷似R中的ggplot2-袁子晴
    • Stata绘图:addplot-层层叠加轻松绘图
    • Stata 绘图:用 Stata 绘制一打精美图片-schemes
    • 常用科研统计绘图工具介绍
    • Stata空间计量:莫兰指数绘图moranplot命令介绍
    • Stata绘图-组间差异可视化:不良事件火山图、点阵图
    • Stata绘图极简新模板:plotplain和plottig-T251
    • 给你的图形化个妆:Stata绘图常用选项汇总-上篇
    • 给你的图形化个妆:Stata绘图常用选项汇总-下篇

课程推荐:因果推断实用计量方法
主讲老师:丘嘉平教授
🍓 课程主页https://gitee.com/lianxh/YGqjp

New! Stata 搜索神器:lianxhsongbl  GIF 动图介绍
搜: 推文、数据分享、期刊论文、重现代码 ……
👉 安装:
. ssc install lianxh
. ssc install songbl
👉  使用:
. lianxh DID 倍分法
. songbl all

🍏 关于我们

  • 连享会 ( www.lianxh.cn,推文列表) 由中山大学连玉君老师团队创办,定期分享实证分析经验。
  • 直通车: 👉【**百度一下:**连享会】即可直达连享会主页。亦可进一步添加 「知乎」,「b 站」,「面板数据」,「公开课」 等关键词细化搜索。

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存