STATA作钉子图和哑铃图

缘起

钉子图和哑铃图本质是一样的,都是每个对象包含两个端点,将两个端点连线。区别只是端点数据形式的差异,使得钉子图所有对象一般有一端是对齐的,而哑铃图则不用;钉子图要么垂直要么水平,而哑铃图不用。这两种图适用于制作:

  • 围绕某个轴的变化图(如增长率变化图),
  • 有最大值和最小值的图(如每天股票价格图和置信区间图),
  • 离散数据的分组比较图,(如不同职业的分性别的平均收入差异图和人口金字塔图),
  • 制作生命线(如生存时长线)。

R的ggplot2包中函数geom_point()+geom_line(),或者ggplot2+ggalt包中函数geom_dumbbell(),可以制作这类图。

STATA常规的作图命令,twoway line/scatter等,无法制作钉子图和哑铃图。需要专门的命令。这里介绍的是专门作这类图的命令。

  • spike系列命令配合scatter命令可以作出钉子图或哑铃图。
    • 包含 spikerspikepcspike三个命令。
  • cap系列命令是带帽子的spike图,即两端点添加符号标记。
    • 包含rcaprcapsympccapsym三个命令。
  • spikeplot命令用于专门统计计数频率和百分比的钉子图。

一、spike系列命令

spike

twoway spike yvar xvar [if] [in] [, options]

  • 实际上是一个端点是(x,0),一个端点是(x,y)
  • 隐藏的端点y=0,可以通过base(#)设置成其它值。
  • twoway的选项,这里都适用。下同。
选项 说明
vertical 垂直线,默认值
horizontal 水平线
base(#) 起始值,默认为0
  • 注意:水平线是由垂直线转置而成的,并不是(0, y)与(x, y)的连线,而是(0, x)与(y, x)的连线。下同。

sysuse sp500, clear
list date close change in 1/5
twoway spike change date
twoway spike change date, horizon
twoway line close date || spike change date

rspike -- Range plot with spikes

twoway rspike y1var y2var xvar [if] [in] [, options]

  • 每个x对应两个y值,即一个端点为(x, y1),另一个为(x, y2)。
  • rspikespike的区别在于,spiker的起始值是固定值,而rspike的起始值是变量y1var
选项 说明
vertical 垂直钉子图,默认值
horizontal 水平钉子图

sysuse sp500, clear
twoway rspike high low date

pcspike -- Paired-coordinate plot with spikes

twoway pcspike y1var x1var y2var x2var [if] [in] [, options]

  • pcspikerspike的区别在于,rspike所有对象的连线的一端是对齐的,而pcspike则不用。
  • pcspike的线的起点是(x1, y1),终点是(x2, y2)

sysuse nlswide1, clear
list occ wage68 ttl_exp68 wage88 ttl_exp88
twoway pcspike wage68 ttl_exp68 wage88 ttl_exp88

twoway pcspike wage68 ttl_exp68 wage88 ttl_exp88      ||
       scatter wage68 ttl_exp68, msym(O)              ||
       scatter wage88 ttl_exp88, msym(O) pstyle(p4)
       mlabel(occ) xscale(range(17))
       title("Change in US Women's Experience and Earnings")
       subtitle("By Occupation -- 1968 to 1988")
       ytitle(Earnings) xtitle(Total experience)
       note("Source: National Longitudinal Survey of Young Women")
       legend(order(2 "1968" 3 "1988"))


二、带帽的钉子图:cap系列命令

rcap -- Range plot with capped spikes

twoway rcap y1var y2var xvar [if] [in] [, options]

  • 每个x对应两个y值。
  • rcaprspike唯一的区别只是带一个I型帽子。

sysuse sp500, clear
twoway rcap high low date

rcapsym -- Range plot with spikes capped with marker symbols

  • rcapsym和rcap的区别在于,方便添加标记和标签。

twoway rcapsym y1var y2var xvar [if] [in] [, options]

选项 说明
vertical 垂直钉子图,默认值
horizontal 水平钉子图
marker_options 标记选项:形状、颜色、大小等
marker_label_options 标签的选项:指定标签变量、位置等

sysuse sp500, clear
twoway rcapsym high low date

pccapsym -- Paired-coordinate plot with spikes and marker symbols

twoway pccapsym y1var x1var y2var x2var [if] [in] [, options]

  • pccapsym相当于pcspike,区别在于加帽。
  • headlabel:标签放在第二端点,而不是第一端点。
sysuse nlswide1, clear
list occ wage68 ttl_exp68 wage88 ttl_exp88
twoway pccapsym wage68 ttl_exp68 wage88 ttl_exp88
twoway pccapsym wage68 ttl_exp68 wage88 ttl_exp88, headlabel mlabel(occ)

三、计数钉子图:spikeplot

spikeplot varname [if] [in] [weight] [, options]

  • Spikeplot为一个变量产生一个频率图,其中频率呈现为从零开始的垂直线。
  • 频率可以是计数,百分比或计数的平方根。
  • 垂直线可以根据用户的选择由非零的基线产生。
  • spike系列命令的选项,这里都适用。
选项 说明
round(#) 带宽
fraction 占总体的百分比
root 计数的平方根
spike_options 钉子图的呈现样式选项
addplot(plot) 添加其它plot
webuse ghanaage
spikeplot age [fw=pop], ytitle("Population in 1000s") xlab(0(10)90) xmtick(5(10)85)

spikeplot age [fw=pop], fraction
spikeplot age [fw=pop], round(10)  #10岁一组

四、图中添加水平线或垂直线

  • 只需添加选项xline()yline()

你可能感兴趣的:(STATA作钉子图和哑铃图)