Graph 事件研究图中x轴标签的问题

Graph 事件研究图中x轴标签的问题,graph,stata,Graph,Stata,我有以下数据: gen yr coef ci_l ci_h F -8 0.0059488 -0.004565 0.0164627 F -7 0.0040078 -0.0057631 0.0137786 F -6 0.0049703 -0.0085357 0.0184763 F -5 -0.0019084 -0.0211634 0.0173466 F -4 0.0013469 -0.0215072 0.024

我有以下数据:

gen yr  coef        ci_l        ci_h
F   -8  0.0059488   -0.004565   0.0164627
F   -7  0.0040078   -0.0057631  0.0137786
F   -6  0.0049703   -0.0085357  0.0184763
F   -5  -0.0019084  -0.0211634  0.0173466
F   -4  0.0013469   -0.0215072  0.0242009
F   -3  0.036477    0.017118    0.0558361
F   -2  0.1271414   0.089147    0.1651358
F   -1  0.1431927   0.1021379   0.1842475
F   0   0.1398031   0.1025783   0.177028
F   1   0.1349187   0.0997429   0.1700946
F   2   0.1355518   0.0997538   0.1713498
F   3   0.1194403   0.0808667   0.1580139
F   4   0.1060962   0.0668593   0.1453331
F   5   0.1166223   0.0726827   0.1605619
M   -8  0.0161407   0.0028669   0.0294144
M   -7  0.0043735   -0.0065912  0.0153381
M   -6  0.0114297   -0.0035314  0.0263908
M   -5  0.0059428   -0.0149018  0.0267874
M   -4  0.0081406   -0.0175235  0.0338046
M   -3  0.0436267   0.0240535   0.0632
M   -2  0.1387672   0.0848806   0.1926538
M   -1  0.1582463   0.1001987   0.2162939
M   0   0.1512713   0.0993361   0.2032066
M   1   0.1477444   0.1023816   0.1931072
M   2   0.1513944   0.107969    0.1948197
M   3   0.1290913   0.0853945   0.1727881
M   4   0.1182751   0.0722187   0.1643315
M   5   0.1234578   0.0724435   0.1744721
我想要的是创建一个如下图:

其中x轴上的0对应于年份变量,每个性别对应一行,而不是和平/分歧事件

当前,当我运行以下Stata代码时:

twoway (sc coef year if gender == "M", mcolor(navy) lcolor(navy) connect(direct)) ///
(rcap ci_low ci_high year if gender == "M", lcolor(navy)) (sc coef year if gender == "F", ///
mcolor(maroon) lcolor(maroon) connect(direct)) (rcap ci_low ci_high year if gender == "F", ///
lcolor(maroon)), legend(lab(1 "Male") lab(2 "Male CI") lab(3 "Female") lab(4 "Female CI")) ///
xlab(,val)
我得到的东西看起来像这样:


我相信这些线可能是对的,但为什么x轴标签看起来像这样奇怪?

使用您的示例数据:

clear

input str1 gender year coef ci_l ci_h
F   -8  0.0059488   -0.004565   0.0164627
F   -7  0.0040078   -0.0057631  0.0137786
F   -6  0.0049703   -0.0085357  0.0184763
F   -5  -0.0019084  -0.0211634  0.0173466
F   -4  0.0013469   -0.0215072  0.0242009
F   -3  0.036477    0.017118    0.0558361
F   -2  0.1271414   0.089147    0.1651358
F   -1  0.1431927   0.1021379   0.1842475
F   0   0.1398031   0.1025783   0.177028
F   1   0.1349187   0.0997429   0.1700946
F   2   0.1355518   0.0997538   0.1713498
F   3   0.1194403   0.0808667   0.1580139
F   4   0.1060962   0.0668593   0.1453331
F   5   0.1166223   0.0726827   0.1605619
M   -8  0.0161407   0.0028669   0.0294144
M   -7  0.0043735   -0.0065912  0.0153381
M   -6  0.0114297   -0.0035314  0.0263908
M   -5  0.0059428   -0.0149018  0.0267874
M   -4  0.0081406   -0.0175235  0.0338046
M   -3  0.0436267   0.0240535   0.0632
M   -2  0.1387672   0.0848806   0.1926538
M   -1  0.1582463   0.1001987   0.2162939
M   0   0.1512713   0.0993361   0.2032066
M   1   0.1477444   0.1023816   0.1931072
M   2   0.1513944   0.107969    0.1948197
M   3   0.1290913   0.0853945   0.1727881
M   4   0.1182751   0.0722187   0.1643315
M   5   0.1234578   0.0724435   0.1744721
end
您可以使用
图形双向线
而不是
散点

twoway (line coef year if gender == "M", lcolor(red)) ///
       (line coef year if gender == "F", lcolor(gray) lpattern(dash)), ///
       title("Event study graph") ytitle("Coefficient") xtitle("Years") ///
       legend(label(1 "Males") label(2 "Females"))


编辑:

关于@NickCox回答的评论:

变量
year
有一个错误指定的值标签的理论确实有其优点。我可以复制OP第二张图中观察到的奇怪的
x轴
标签,其中值标签为值定义了错误的标签
-10

label define yearlabel -10 "0" 
label values year yearlabel

label list yearlabel
yearlabel:
         -10 0

在这种情况下,最简单的解决方案是去掉
xlab(,val)
选项,让Stata自动确定标签。同样,也可以使用与我上面提供的语法相同的语法来实现所需的结果。

轴标签由选项
xla(,val)
给出:其余语法是无关的

这里有一个简单的猜测:您的值标签被定义为
5“-5”10“0”15“5”
。此外,Stata还希望显示一个文本零。您可以通过将
0
的值标签定义为
-10
来解决此问题,也可以通过快速拼写出所需的所有文本标签来解决此问题

另一种可能是您在定义值标签时犯了一个小错误

因此,如果不知道您为
年定义的值标签
,您的问题就无法完全重现


总而言之:如果在确定轴标签时使用值标签,请仔细查看定义的内容

带有
connect()
选项的
scatter
相当于
line
,事实上,在Stata 8之前,类似于
graph yt,c(l)
的东西是获得线形图的传统方法。在任何情况下,语法的差异都不会影响OP的问题。相反,您的时间变量允许根本不使用值标签,这自然是一种很好的方法。