У меня есть набор данных примерно с 40 переменными. Примерно половина из них - измерения, а другая половина - демографическая информация об этом наблюдении. Каждый идентификатор имеет два входа и выхода наблюдений. Я сравниваю средние значения измерений на входе и выходе.
Я написал код для запуска ttest для каждого измерения и сохранения его в текстовом файле, и это хорошо работает.
Теперь мне нужно сгруппировать по демографическим переменным.
Я использую следующие
by var1, sort: ttest var2 by stage
stage - это переменная, которая определяет, является ли наблюдение входом или выходом. var1 - одна из демографических переменных (например, пол, курение, употребление алкоголя) и может иметь 2–4 кодированных значения.
Я пытаюсь запустить этот код в цикле и записать его в текстовый файл. Однако команды r () возвращают результаты только для последней группы, для которой был запущен ttest.
Сам код работает, так как все результаты ttest выводятся на экран результатов, однако не все результаты записываются в файл.
Например, если var1 имеет возможные значения 1, 2, 3 и 4, я получаю результаты только для группы 4.
foreach var of var ttlchol-exvol{
foreach v of var sex dm chf diastolic copd ckd Depression {
capture by `v',sort: ttest `var' , by(stage)
if !_rc {
by `v',sort: ttest `var', by(stage)
file write myfile2 ///
%9s "`var'" _tab %7.3f (r(N_1)) ///
_tab %7.3f (r(N_2)) _tab %7.5f (r(p_l)) ///
_tab %7.5f (r(p_u)) _tab %7.5f (r(p)) ///
_tab %7.5f (r(se)) _tab %7.3f (r(t)) ///
_tab %7.3f (r(sd_1)) _tab %7.3f (r(sd_2)) ///
_tab %7.3f (r(mu_1)) _tab %7.3f (r(mu_2)) ///
_tab %7.3 (r(df_t)) ///
_n
}
}
}
Я искал более подробную информацию о том, как STATA обрабатывает by, sort: но мне не удалось найти способ фиксировать результаты для каждой итерации.
Возможно ли получить результаты для каждой итерации функции, sort: function? Если да, то как мне это сделать?
post
механику вместо того, чтобы скрупулезно возиться сfile
операциями, записывая и затем читая. Кстати, НЕ КРИЧИТЕ STATA, просто скажите Stata. - person StasK   schedule 28.01.2013