问题描述
我正在尝试使用foreign==0
和{为两个组(foreign==1
和twoway scatter
)创建一个随时间推移具有平均值以及相关置信区间(CI)的图。 {1}}。但是,即使CI使用重叠,也很难区分它们,即使我使用不同的颜色或线条样式也是如此。
我尝试使用rcap
选项随机偏移绘图上的点。虽然此方法适用于jitter
,但似乎不适用于scatter
,我正在用它来绘制CI。它接受该选项,没有错误,但不会抖动CI。我希望通过将rcap
选项与相同种子一起使用,我能够将jitterseed
的标记和scatter
的CI偏移到绘图上的相同位置。
This在2005年Statalist上的帖子表明rcap
不支持rcap
。我在当前jitter
文档中找不到对jitter
选项的引用,因此我认为情况仍然如此。我愿意接受使用rcap
以外的绘图命令来绘制均值的CI的解决方案。 TIA。
可复制的示例:
rcap
解决方法
感谢可复制的示例。您从2007年引用的帖子并没有暗示jitter()
不允许使用twoway rcap
:这是事实。但是据记载,jitter()
适用于使用scatter
或graph matrix
的点,如果在其他地方适用,则将被明确记录。
但这不是后悔的原因。置信区间的抖动峰值或加盖的条形看起来很混乱,也不能保证它们与抖动标记对齐以进行点估计。该图看起来太像一个小孩的画。原则上,使用相同的种子也无济于事。
Stata不直接在twoway
图形中支持您所需的内容,因此需要一些工作来设置偏移量。对于成对的估计值和置信区间,我将显示位置向左和向右移动。在此示例中,偏移量足够小,并且数据范围如此之大,以至于我自动获得了 x 轴标签,尽管在其他问题中,您可能需要直接拼出所需内容。
我不喜欢同一命令行中不同图形命令的括号符号,因为已经有足够的括号了。我也不遵循为什么您要在两组中坚持使用相同的颜色和标记符号,但是这可能反映出您遇到的一些逻辑或实际问题。
说出三组进行比较,我将向左移动一个估计值,向右移动一个估计值,然后将第三个估计值放在中间。在四个或更多小组的情况下,您通常需要加倍思考。
毫无疑问,偏移观念已经像许多文学作品一样在许多人中出现了,但是它写在this Stata Journal tip by James Cui中。
sysuse auto,clear
* Generate required statistics by repair record and foreign
collapse (mean) mean_price = price ///
(sd) sd_price = price ///
(count) n_price = price,by(foreign rep78)
* Compute confidence intervals
gen lb_price = mean_price - invttail(n_price-1,0.025)*(sd_price / sqrt(n_price))
gen ub_price = mean_price + invttail(n_price-1,0.025)*(sd_price / sqrt(n_price))
local offset 0.1
gen rep78_L = rep78 - `offset'
gen rep78_R = rep78 + `offset'
* No jitter
twoway scatter mean_price rep78_L if foreign == 0,c(L) lcol(blue) msym(Oh) mcol(blue) ///
|| scatter mean_price rep78_R if foreign == 1,c(L) lcol(orange) msym(Th) mcol(orange) ///
|| rcap lb_price ub_price rep78_L if foreign == 0,lcol(blue) ///
|| rcap lb_price ub_price rep78_R if foreign == 1,lcol(orange) ///
xtitle("Repair record 1978") ytitle(Price (USD)) legend(order(1 "Domestic" 2 "Foreign"))
诸如coefplot
之类的由社区贡献的命令可能支持这种事情,这是我从未使用过的出色命令。