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的问题。相反,您的时间变量允许根本不使用值标签,这自然是一种很好的方法。