#loops #regression #stata
#циклы #регрессия #stata
Вопрос:
Привет, запускаю несколько регрессий с фиксированными эффектами для нескольких результатов, которые я сохраняю в local
и просматриваю в foreach
цикле. Далее я хочу добавить анализ подгрупп по стабильным, не зависящим от времени признакам (таким как пол или раса). Таким образом, я не могу использовать bysort group: regress
Ниже приведен MWE, как я могу повторить этот анализ для всех 3 уровней race
? На данный момент я копирую-вставляю, сохраняю данные и сохраняю уровни по одному за раз. Я надеюсь, что есть более эффективный способ.
* load data
use http://www.stata-press.com/data/r13/nlswork
* set panel structure
xtset idcode year
* fixed effects regression
local outcomes "ln_wage ttl_exp tenure"
local rhsvars "c.wks_ue##c.wks_ue##i.occ_code union age i.year 1.race"
foreach o of local outcomes {
quietly xtreg `o' `rhsvars', i(idcode) fe
margins, dydx(wks_ue) at(occ_code=(1 2 3)) post
outreg2 using report_`r'.doc, word append ctitle(`o')
}
* subgroup analysis race (or gender) ??
Комментарии:
1. Что не так с
if race == 1
etc?
Ответ №1:
Как упоминал Перли Спенсер выше, if
кажется идеальным решением. (Я предположил, что ваш локальный макрос r
предназначен для перебора значений race.)
use http://www.stata-press.com/data/r13/nlswork
xtset idcode year
local outcomes "ln_wage ttl_exp tenure"
local rhsvars "c.wks_ue##c.wks_ue##i.occ_code union age i.year"
levelsof race
local racelevels `r(levels)'
foreach r in `racelevels'{
foreach o of local outcomes {
quietly xtreg `o' `rhsvars' if race == `r', i(idcode) fe
margins, dydx(wks_ue) at(occ_code=(1 2 3)) post
outreg2 using report_`r'.doc, word append ctitle(`o')
}
}
Кстати, рассмотрите написанную пользователем команду reghdfe
Серджио Коррея как более быструю и интуитивно понятную замену xtreg: http://scorreia.com/software/reghdfe
(Отредактированный код)