Как включить термин взаимодействия в глобальный макрос для использования в команде reghdfe?

Я хочу создать термин взаимодействия в сообществе regdhdfe команда.

Одна из двух переменных взаимодействия является непрерывной переменной и используется с глобальным. Другая переменная - это пустышка.

Мой код выглядит примерно так:

clear all
set obs 25000

local vlist v0 v1 v2 v3 v4 v5 v6 v7 v8 z4 z5 z6 

foreach v of local vlist { 
    generate `v' = runiform()
}


rename v8 i_female 
replace i_female=0 if i_female<0.5
replace i_female=1 if i_female>=0.5

foreach num of numlist 4 5 6 {
    global varlist_`num' "v`num' z`num'"
}

foreach num of numlist 4 5 6 {
    reghdfe v0 ${varlist_`num'} ${varlist_`num'}#i.i_female if v1<0.8, absorb(v7)
}

Это возвращает следующую ошибку:

ошибка: есть повторяющиеся переменные:
г (198);

1 ответ

Решение

То, что вы хотите и что вы указываете Stata делать в приведенном выше коде, это две разные вещи.

Stata жалуется, что есть повторяющиеся переменные, потому что при расширении макроса вы не получите v4 z4 v4*i_female z4*i_female,

Вместо переменных v4, v5 а также v6 дублируются:

foreach num of numlist 4 5 6 {
    global varlist_`num' "v`num' z`num'"
}

foreach num of numlist 4 5 6 {
    display "v0 ${varlist_`num'} ${varlist_`num'}#i.i_female if v1<0.8, absorb(v7)"
}

v0 v4 z4 v4 z4#i.i_female if v1<0.8, absorb(v7)
v0 v5 z5 v5 z5#i.i_female if v1<0.8, absorb(v7)
v0 v6 z6 v6 z6#i.i_female if v1<0.8, absorb(v7)

Чтобы получить желаемый результат, вам нужно изменить ваш код следующим образом:

foreach num of numlist 4 5 6 {
    global varlist1_`num' "v`num' z`num'"
    global varlist2_`num' "v`num'#i.i_female z`num'#i.i_female"
}

foreach num of numlist 4 5 6 {
    display "v0 ${varlist1_`num'} ${varlist2_`num'} if v1<0.8, absorb(v7)"
}

v0 v4 z4 v4#i.i_female z4#i.i_female if v1<0.8, absorb(v7)
v0 v5 z5 v5#i.i_female z5#i.i_female if v1<0.8, absorb(v7)
v0 v6 z6 v6#i.i_female z6#i.i_female if v1<0.8, absorb(v7)
Другие вопросы по тегам