2015-02-12 5 views
0

У меня есть данные по group_id (1,2,3 и так далее). Мне нужно выполнить t-тест на group_id. Ниже я предоставляю код, который, я думаю, буду использовать для каждого group_id. Как я могу изменить его, чтобы я мог зацикливаться на group_ids и получить результат со всеми t-тестами в сочетании? Поблагодарите любую помощь. Благодарю.Stata - результаты поиска ttest

ttest return, by(test_indicator) unequal

ответ

2

Префикс by может повторить Т-тест для каждого group_id, но это трудно сочетать с другими кодами. Ниже приведен краткий пример использования levelsof и foreach для циклического прохождения каждого идентификатора, запуска ttests и результатов поиска во временный набор данных. Затем новый набор данных загружается и экспортируется в файл .xls.

sysuse auto,clear 
recode rep78 (1/3=1)(4/5=2),gen(id) // artificial group id 
drop if missing(id) // ensure all casea have ids 

tempname ttestparm 
tempfile outfile 

postfile `ttestparm' obs n1 n2 mu1 mu2 sd1 sd2 diff_b diff_se diff_p using `outfile',replace 
levelsof id,local(idvals) 
foreach i of local idvals { 
    ttest mpg if id==`i', by(foreign) 
    post `ttestparm' (`i') (`r(N_1)') (`r(N_2)') (`r(mu_1)') (`r(mu_2)') (`r(sd_1)') (`r(sd_2)') (`r(mu_1)'-`r(mu_2)') (`r(se)') (`r(p)') 
} 

postclose `ttestparm' 
preserve 
use `outfile',clear 

export excel using "ttestout.xls", firstrow(variables) replace 
restore 

Обратите внимание, что комбинированный preserve/restore только полезно, если есть больше работы, чтобы сделать с исходными данными.

+0

Определение локального макроса, а затем оценка его походит на то, чтобы положить что-то в сумку, чтобы сразу же ее вытащить. Так что просто 'post', используя макрокоманды результатов r-класса. –

+0

Спасибо Аспен Чен. Ваше решение отлично поработало для меня. Я только что добавил тест t к выходу. Очень ценю вашу помощь. С наилучшими пожеланиями. – user1542743

+0

Спасибо @NickCox. Я думаю, что я думал о других оценках до 'post'. Я сделаю ревизию. –

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