Проблемы с метками оси X в графике исследования событий - PullRequest
0 голосов
/ 08 октября 2018

У меня есть следующие данные:

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

Я хочу создать такой график:

Event Study Graph

Где 0 на оси x соответствует переменной year, и для каждого пола есть одна строка, а не для событий мирных / расхождений.

В настоящее время, когда я запускаю следующий код 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)

Я получаю что-то похожее на это:

Current Stata Output

Я полагаю, возможно, линии правильные, но почему это выглядит странно, какчто с метками оси х?

Ответы [ 2 ]

0 голосов
/ 08 октября 2018

Метки вашей оси задаются параметром xla(, val): остальная часть синтаксиса не имеет значения.

Вот легкое предположение: ваши метки значений определены как 5 "-5" 10 "0" 15 "5".Стата вдобавок хочет показать буквальный ноль.Вы можете исправить это, определив метку значения для 0 как -10 или на лету, указав все нужные текстовые метки.

Другая возможность заключается в том, что вы допустили небольшую ошибку при определении меток значений.

Следовательно, ваша проблема не может быть полностью воспроизведена без знания меток значений, которые вы определили для year.

В итоге: если вы используете метки значений при определении меток осей, внимательно посмотрите на то, что вы определили.

0 голосов
/ 08 октября 2018

Используя данные вашего примера:

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

Вы можете использовать graph twoway line вместо scatter:

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"))

enter image description here


РЕДАКТИРОВАНИЕ:

Комментарий @ NickCox к ответу:

Теория о том, что переменная year имеет метку значения, что неверно.указанный имеет свои достоинства.Я могу повторить странную метку x-axis, наблюдаемую на втором графике OP, с меткой значения, определяющей неправильную метку для значения -10:

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

label list yearlabel
yearlabel:
         -10 0

Самое простое решение в этом случае - избавиться отxlab(, val) и пусть Stata автоматически определяет метки.И желаемый результат также может быть достигнут с помощью эквивалентного синтаксиса, подобного тому, который я предоставил выше.

...