2017-01-12 3 views
0

Я пытаюсь написать код для исследования событий в Stata, но я не могу получить то, что хочу. Jacobson, LaLonde и Sullivan (1993), стр. 698 Рисунок 3 (http://www.princeton.edu/~davidlee/wp/0.pdf) имеют график, который очень похож на то, что я хочу, за исключением того, что я также хочу добавить доверительные интервалы.Stata Event Study Graph Code

Исходя из этого урока, http://www.stata.com/meeting/germany14/abstracts/materials/de14_jann.pdf, я написал следующий код:

sysuse auto, clear 
egen t = fill(1,2,3,4,1,2,3,4) 
quietly regress price ib2.t trunk weight if foreign==0 
estimates store domestic 
quietly regress price ib2.t trunk weight if foreign==1 
estimates store foreign 
coefplot (domestic, label(Domestic Cars)) (foreign, label(Foreign Cars)), drop(_cons) xline(0) vertical omitted baselevels 

Это производит что-то на стадионах, что я хочу, но есть следующие проблемы:

  1. точечные оценки и доверительные интервалы бок о бок, а не друг на друга (что может быть хорошо, если это единственная проблема).
  2. Моя переменная времени, t, появляется в каждой из x-меток (t = 1, t = 2 и т. Д.), Но я просто хочу сказать (1, 2 и т. Д.) Без t =.
  3. Я должен был начать свою нумерацию t на 1 в этом примере игрушек, потому что фактор-переменные, объединенные с оператором i, должны быть неотрицательными. Я хотел бы, чтобы моя переменная времени могла принимать отрицательные числа.
  4. Я не хочу, чтобы trunk и weight появлялись на участке. Можно ли просто разместить их в drop(...)?
  5. Я также хотел бы иметь возможность сделать все это в остатках регрессии, а не в том, что у меня выше.
  6. Я хотел бы связать оценки точек с линиями.

Я совсем не женат на команде coefplot. Другие методы, особенно с использованием встроенных команд Stata, также вполне приемлемы.

ответ

2

Надеюсь, я ответил на ваш вопрос правильно, может быть, я неправильно что-то, но вот мой ответ:

(я не решало 5, потому что я не был уверен, что именно то, что вы искали с этим вопросом, но, возможно, после того, видя мое решение будет ясно)

Код:

// load data same as before 
sysuse auto, clear 
egen t = fill(1,2,3,4,1,2,3,4) 

// get coefficients and standard errors of regressions over foreign 
statsby _b _se , clear by(foreign): regress price ib2.t trunk weight 

// there are some extra variables we don't need/want 
drop *_trunk *_weight *_cons 

// generate confidence intervals and rename coefficient variables 
forvalues i = 1/4 { 
    local j = `i'+7 
    gen ci_low`i' = _stat_`i' - 1.96*_stat_`j' 
    gen ci_high`i' = _stat_`i' + 1.96*_stat_`j' 
    rename _stat_`i' coef`i' 

} 
// no longer in need of standard error variables 
drop _stat_8 _stat_9 _stat_10 _stat_11 

// now, we want our data in long format so we can do a twoway graph 
reshape long coef ci_low ci_high, i(foreign) j(t) 

// we can label the t values so that they start below 1 
lab def timeseries 1 "-1" 2 "0" 3 "1" 4 "2" 
lab values t timeseries 

// now graph, note each factor has two pieces, a scatter (with connecting lines) 
// and an rcap for the confidence intervals 
twoway (sc coef t if foreign == 1, mcolor(navy) lcolor(navy) connect(direct)) /// 
     (rcap ci_low ci_high t if foreign == 1, lcolor(navy)) /// 
    (sc coef t if foreign == 0, mcolor(maroon) lcolor(maroon) connect(direct)) /// 
     (rcap ci_low ci_high t if foreign == 0, lcolor(maroon)), /// 
    legend(lab(1 "Foreign") lab(2 "Foreign CI") lab(3 "Domestic") lab(4 "Domestic CI")) /// 
    xlab(,val) 

output:

Некоторые способы, которыми можно было бы пожелать, чтобы улучшить это являются:

  • этикеточной определения, можно было бы использовать для цикла для временных рядов больше, чем это так не все сделано вручную

  • Я не эксперт по statsby, поэтому, возможно, есть более простой способ получить доверительные интервалы и выйти из хобота, вес и постоянной

что касается остатков, основная интуиция этого ответа заключается в том, что вы хотите набор данных, который включает коэффициенты и доверительные интервалы , Поэтому, если вы можете рассчитать значения остатков и их CI и поместить их в набор данных, вы можете использовать один и тот же тип twoway-графика.

Смежные вопросы