Stata绘图(一)

您所在的位置:网站首页 stata画数据分布图 Stata绘图(一)

Stata绘图(一)

2023-12-14 11:47| 来源: 网络整理| 查看: 265

Stata绘图(一) | 按个体绘制变量的时间变化图

作者:Mark D. Chatfield 来源:《The Stata Journal》Vol. 18 No.3 改编者:石器时代的大菠萝

摘要:在研究时间序列与面板数据时,把随时间变化的每个个体数据绘制成图表(在单独的一张图中)可能是一种有价值的方法。这尤其适用于多个变量是随时间变化的数据,以及可能存在多个时间点的数据,例如,临床试验中的管理数据和患者安全概况。仔细研究几个人的图可以了解数据的性质和质量、生成假设并为数据分析提供依据。 选择一些典型的或少见的图可以提高presentation的效果。本文举例说明了每个个体随时间变化的一个变量和多个变量,并详细介绍了相关的Stata编码技巧和窍门。

介绍

在进行任何分析之前,一个好的统计原则是熟悉并研究一个新的数据集。绘制原始数据的图形可能是研究数据的一种有用方法。它可以帮助你和你的研究团队更好地理解数据。例如,它可以揭示数据的性质和质量(丢失的数据模式、异常值等),并且它可以帮助您为分析选择适当的方向,避免浪费时间和受挫。 Cox(2010)讨论了图表数据,强调了个体之间或群体之间的比较。在研究数据集时,将每个个体的数据随时间作图(用单独的图表示)可能是一种被忽视的方法。从本质上讲,这种方法强调的是个体之内的差异(within) ,而不是个体之间的差异(between)①。研究少数人的图表可以加深您对数据的理解,并产生对数据提出哪些问题以及如何分析数据的想法。随着时间的推移,在包含多个个体的大量信息的数据集中,绘制原始数据的图形可能会很有挑战性。符号和线条可以相互叠加,这使得图形难以阅读。一种解决方案是为每个个体生成单独的图表。在少数人的信息很少(即只有一两个变量)的情况下,使用twoway的by( )选项可以令人满意地实现这一点②。代码中对如何在更一般的设置中生成和整理这些图给出注释。

改编者注: ① within强调的是单个个体在不同时间点上的差异,而between强调的是多个个体之间的差异。 ② Mark(2018)提供了三种绘图方案,如感兴趣,可在stata界面输入“net sj 18-3”,找到相关命令进行下载。综合借鉴Mark(2018)的三种绘图方案,本帖提供一种简易的绘图方案。

do命令

获取附件:http://note.youdao.com/noteshare?id=eba20f2808b9a8e352c3286c515c7446 请copy网址进浏览器,再打开;直接点击可能看不到分享。 Markdown模式下,帖子无法插入附件以供下载,故以网盘链接的形式提供附件。这是一个有道云笔记的链接,内容允许帖主实时修改。 推荐软件版本:Stata 15(未测试更低版本)

***将绘图数据与本文件放置在同个文件夹内,打开do文件Editor,点击execute(do),即菜单下最右边那个图标,不可逐行执行。 forvalues i=1/3 { //对idcode为1-3的个体进行绘图,其中idcode表示个体编码。 use 绘图数据,clear keep if idcode==`i' set scheme sj //有多种样式设定,具体请help scheme,例如彩图s2color。 set autotabgraphs on xtset year ***第一条线:指标A;第二条线:指标B;第三条线:指标C ***由于本例中的指标A与指标B的数量级相近,故它们同时使用左纵轴,而指标C使用右纵轴。 twoway(scatter 指标A year , connect(l) sort ytitle("● 指标A(单位:)" "▲ 指标B(单位:)")xtitle("年份") ///为左侧纵轴与横轴命名 yscale(range(0 140)) ylabel(20 60 100 140 "≥140", angle(horizontal)) ///考虑到例子中指标A的取值范围,因此这里ylabel设定为20-140,其中"≥140"是一个标签,其代替了前面的140。这个标签是好用的,因为有时轴上数字会被stata省略汇报,”0.1”会被写作成“.1”,你可以将其做替换:0.1 "0.1" 0.3 "0.3" xlabel(2014 2015 2016 2017 2018 2019) ///x轴的范围是2014-2019。 xmtick(2014 2015 2016 2017 2018 2019, grid notick) xscale(range(2013.5 2019.5)) ///xscale里面的range要比2014-2019稍宽一些,但不要宽太多。 title("idcode `i'") graphregion(color(white)) name(g`id', replace) msymbol(circle) clpattern(solid)) ///每张图上方都有“idcode+数字”,以此为线索来看这是哪个个体。 ///以上是第一条线的绘图。 (scatter 指标B year , connect(l) sort graphregion(color(white))msymbol(triangle) clpattern(solid) ) /// ///以上是第二条线的绘图,因为指标B也使用左纵轴,故与第一条线共用许多设定。 (scatter 指标C year ,ytitle("□ 指标C(单位:)",axis(2)) yaxis(2) /// yaxis(2)表示启用右纵轴,默认为yaxis(1)启用左纵轴。 connect(l) sort ylabel(0 0.2 "0.2" 0.4 "0.4" 0.6 "≥0.6" , angle(horizontal) axis(2) ) /// yscale(range(0 0.8)) graphregion(color(white)) msymbol(Sh) clpattern(solid) ) ****以上是第三条线的绘图,使用右侧纵轴。 graph save "figure idcode`i'.gph", replace //推荐保存为gph文件,允许进一步手工调整图片,然后再save成png格式。 } 效果展示

graph1.png

说明:上面这张图的title是idcode 1,后面的数字是个体编码idcode的具体取值,请以此为线索寻找图片对应的个体,并在gph文件中手工为图片修改title。 2.png 在graph editor中,你可以尝试更多操作,例如调整字号、移动文字、打标签等操作,此处不详述。

参考文献, [1]: Chatfield, Mark D. “Graphing each individual’s data over time.” The Stata Journal 18.3 (2018): 503-516.(附件中已提供)


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3