问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

Stata绘图与可视化教程:从基础到进阶

创作时间:
作者:
@小白创作中心

Stata绘图与可视化教程:从基础到进阶

引用
新浪微博
1.
https://weibo.com/ttarticle/p/show?id=2309405085031587512795

Stata是一款广泛应用于经济学、社会学等领域的统计分析软件,其强大的绘图功能是数据可视化的重要工具。本文将详细介绍Stata中的图形绘制方法,包括散点图、拟合线和标记点的绘制,帮助读者掌握Stata的可视化能力。

1. Stata 图形

Stata具有出色的图形功能,主要功能概览参见:

  • help graph
  • Stata 图形大全概览

在统计学中,最常见的图形是显示点或线的 X-Y 图。在 Stata 中,可以使用 towway 子命令来创建这些图形,并且 towway 子命令还具有许多子命令或绘图类型,其中最重要的是 scatter 和 line。此外,我还可以简要介绍一下使用 bar 子命令可以获得的条形图和其他类型的图形。

Stata 10 引入了一个图形编辑器,可用于交互式修改图形。

本节中的所有图形 (除非另有说明) 都使用 Stata 18 中的新默认绘图模板 (schemes),名称为stcolor。如果你使用早期版本,你的图形看起来会有所不同,但此处显示的命令仍然有效。

2. 散点图

在本节中,我们将使用生育率下降数据来说明一些图形。

. infile str14 country setting effort change ///
> using "https://grodri.github.io/datasets/effort.raw", clear

2.1 简单散点图

要按社会环境去生成生育率变化的简单散点图,请使用以下命令:

. graph twoway scatter change setting

请注意,你首先指定 y,然后指定 x。Stata 使用变量标签或变量名称来标记轴。该命令可以缩写为 twoway scatter,或者如果这是图形上唯一的绘图,则可以只输入 scatter。

2.2 拟合线

假设我们也想显示拟合回归线。在某些软件包中,您需要运行回归,计算拟合线,然后绘制它。Stata 可以使用 lfit绘图类型一步完成所有这些操作。

. twoway (scatter setting effort) (lfit setting effort)

现在假设我们想在回归线周围放置置信区间。Stata 可以使用 lfitci 绘图类型来做到这一点,该绘图类型将置信区绘制为灰色带。 由于置信区间可能会遮挡某些点,因此我们先绘制区域,然后再绘制点。

. twoway (lfitci setting effort) (scatter setting effort)

请注意,此命令不标记 y 轴,而是使用图例。你可以使用 ytitle() 选项为 y 轴指定标签,并使用 legend(off) 省略图例。在这里,我们将两者指定为 twoway 命令的选项。为了使读者更清楚这些选项,我将逗号放在新行的开头:

. twoway (lfitci setting effort)  (scatter setting effort), ///
>        ytitle("Fertility Decline") legend(off)

2.3 标记点

有许多命令选项可以让你控制用于点的标记,包括它们的形状和颜色,请参阅 help marker_options。也可以使用 mlabel(varname) 选项,用变量的值标记点。在下一步中,我们将国家/地区名称添加到图中:

. twoway (lfitci change setting) (scatter change setting, mlabel(country))

标签的一个小问题是哥斯达黎加和特立尼达多巴哥 (以及巴拿马和尼加拉瓜) 的重叠。我们可以通过使用 12 小时制 (12 在上方,3 在右侧,6 在下方,9 在左侧) 和 mlabv() 选项来指定标签相对于标记的位置来解决这个问题。

我们创建一个变量,将默认设置的位置保持在 3 点钟位置,然后将哥斯达黎加移动到 9 点钟位置,将特立尼达多巴哥移动到 11 点钟位置 (我们也可以将尼加拉瓜和巴拿马向上移动一点,比如说到 2 点钟位置):

. gen pos=3
. replace pos = 11 if country == "TrinidadTobago"
. replace pos = 9  if country == "CostaRica"
. replace pos = 2  if inlist(country, "Panama", "Nicaragua")

生成此版本图形的命令如下:

. twoway (lfitci change setting) (scatter change setting, mlabel(country) mlabv(pos))
© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号