多组的Stata xtline叠加图

多组的Stata xtline叠加图,stata,Stata,我试图制作一个重叠的xtline图,通过为每个组显示不同的图样式来区分男性和女性(或任何数量的多个组)。我选择将xtline图重铸为“连接”,并显示使用圆圈标记的雄性和使用三角形标记的雌性。从中获取线索,我生成了与下面类似的代码。当我尝试此解决方案时,Stata会产生“选项太多”错误,考虑到大量独特的人,这可能是可以预测的。我知道哪些使用组合图,但考虑到我的数据中有大量独特的个体,这也不实际 这个问题是否有更简单的解决方案?Stata是否有能力像双向打印一样覆盖多个xtline打印 下面的代码使

我试图制作一个重叠的xtline图,通过为每个组显示不同的图样式来区分男性和女性(或任何数量的多个组)。我选择将xtline图重铸为“连接”,并显示使用圆圈标记的雄性和使用三角形标记的雌性。从中获取线索,我生成了与下面类似的代码。当我尝试此解决方案时,Stata会产生“选项太多”错误,考虑到大量独特的人,这可能是可以预测的。我知道哪些使用组合图,但考虑到我的数据中有大量独特的个体,这也不实际

这个问题是否有更简单的解决方案?Stata是否有能力像双向打印一样覆盖多个xtline打印

下面的代码使用UCLA的优秀Stata指南中公开的数据显示了我的基本代码并再现了错误:

use http://www.ats.ucla.edu/stat/stata/examples/alda/data/alcohol1_pp, clear 
xtset id age

gsort -male id
qui levelsof id if !male, loc(fidlevs)
qui levelsof id if male, loc(midlevs)
qui levelsof id, loc(alllevs)

tokenize `alllevs'

loc len_f : word count `fidlevs'
loc len_m : word count `midlevs'
loc len_all : word count `alllevs'

loc start_f = `len_all' - `len_f'

forval i = 1/`len_all' {
    if `i' < `start_f' {
        loc m_plot_opt "`m_plot_opt' plot`i'opts(recast(connected) mcolor(black) msize(medsmall) msymbol(circle) lcolor(black) lwidth(medthin) lpattern(solid))"
    }
    else if `i' >= `start_f' {
        loc f_plot_opt "`f_plot_opt' plot`i'opts(recast(connected) mcolor(black) msize(medsmall) msymbol(triangle) lcolor(black) lwidth(medthin) lpattern(solid))"
    }
}

di "xtline alcuse, legend(off) scheme(s1mono) overlay `m_plot_opt' `f_plot_opt'"
xtline alcuse, legend(off) scheme(s1mono) overlay `m_plot_opt' `f_plot_opt'
使用http://www.ats.ucla.edu/stat/stata/examples/alda/data/alcohol1_pp清楚的
xtset id年龄
gsort-男性id
如果我是你的话!男,loc(fidlevs)
若为男性,则为id的qui等级,位置(中间层)
id、loc的qui级别(所有级别)
标记化'alllevs'
loc len_f:单词计数'fidlevs'
loc len_m:单词计数'midlevs'
loc len_all:单词计数'alllevs'
loc start_f=`len_all'-`len_f'
forval i=1/‘len_all’{
如果'i'<'start\u f'{
loc m_plot_opt“`m_plot_opt'plot`i'opts(重铸(连接)彩色(黑色)msize(小型)msymbol(圆形)lcolor(黑色)lwidth(小型)lpattern(实心))”
}
否则如果'i'>='start\u f'{
loc f_plot_opt“`f_plot_opt'plot`i'opts(重铸(连接)彩色(黑色)msize(小型)msymbol(三角形)彩色(黑色)lwidth(小型)lpattern(实心))”
}
}
di“xtline alcuse,图例(关闭)方案(s1mono)覆盖'm_plot_opt''f_plot_opt'”
xtline alcuse,图例(关闭)方案(s1mono)覆盖'm_plot_opt''f_plot_opt'
对于我来说,很难将编程问题从统计或图形视图中分离出来,看哪种图形工作得好,或者根本不工作。即使使用这个适度的数据集,也有82个不同的标识符,因此任何清晰地显示它们的尝试都是无用的,即使只是因为由此产生的图例占据了大部分不动产

在处理所有标识符时,问题代码具有相当大的独创性,但一种简单的方法似乎也能奏效。试试这个:

use http://www.ats.ucla.edu/stat/stata/examples/alda/data/alcohol1_pp, clear 
xtset id age
separate alcuse, by(male) veryshortlabel 
label var alcuse1 "male"
label var alcuse0 "female"  
line alcuse? age, legend(off) sort connect(L)  
要点:

  • xtline
    没有什么特别之处。这只是一个方便的包装。当人们对有线电视的选择感到沮丧时,他们往往只是伸手去看
    line

  • 为了获得不同的颜色,不同的变量就足够了,这就是
    separate
    的作用所在。另见

  • 尽管示例数据集表现良好,但在某些情况下,额外的选项
    sort connect(L)
    将有助于删除个人或面板之间的虚假连接。(在极端情况下,可触及
    链接图
    (SSC)。)

  • 这也可以:

    line alcuse age if male || line alcuse age if !male, legend(order(1 "male" 2 "female")) sort connect(L)
    

    非常感谢你的回答,尼克。不幸的是,据我所知,使用-separate-and-line不尊重xt设置和Stata绘制连接个人的线条。但是我接受了你的建议,简单地使用-line-而不是-xtline-并且能够通过使用局部变量来累积生成绘图线语句而不是绘图选项来调整我以前的策略。我也感谢您对这种图形表示法的关注。虽然所讨论的示例数据没有显示,但在我自己的数据中,雄性和雌性显示出完全不同的模式。只需使用
    sort
    connect(L)
    来避免大多数虚假连接。
    ssc desc linkplot
    上也有旧代码。非常感谢Nick,添加了选项“sort connect(L)”解决了这个问题。我建议使用edit将它们添加到您的代码中,以便其他人不会错过它,我接受您的答案。再次感谢,好主意。我又加了一些。