2015-12-07 5 views
0

Я пытаюсь запустить регрессию над каждым id. Мне также нужно сузить его до регрессии каждый год в пределах определенного идентификатора.Looping in Stata

tsset id date 

forvalues i=1/3 { 

eststo:quietly arch rtr mon tue wed thu fri lag1r lag2r if id == `i' & Year==`i', noconstant arch(1/1) tarch(1/1) garch(1/1) distribution(t) 
} 


esttab using d:\Return_reg.csv, append cells("b(fmt(8))") 

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

no observations.

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

Как мне улучшить код, чтобы достичь своей цели?

+0

также спросил, с несколько иной формулировке, в http://www.statalist.org/forums/forum/general-stata-discussion/general/1319144-regress-by-a-period –

+0

В сущности, вы проверяете, является ли «Год» 1, 2, 3 точно так же, как вы проверяете, является ли 'id'. Ошибка Typo. –

ответ

0

Как указано в комментариях, это опечатка (если только переменная года в действительности не принимает значения 1, 2 и 3). Кроме того, tsset принимает только один аргумент; если вы хотите объявить данные панели, вам нужно использовать xtset. Попробуйте следующее:

xtset id date 
levelsof Year, local(years) //create list containing all values of year 
levelsof id, local(ids)  //create list containing all values of id 
foreach id in `ids'{ 
    foreach yr in `years'{ 
     eststo: quietly arch rtr mon tue wed thu fri lag1r lag2r if id == `id' & Year==`yr', noconstant arch(1/1) tarch(1/1) garch(1/1) distribution(t) 
    } 
}