#stata
#stata
Вопрос:
Я создаю таблицу средних и p-значений из ttest. Как я могу получить все это в одной esttab
таблице? Вот MWE:
Получите образец, сохраните его как временный файл, создайте локальный с переменными, которые мы рассмотрим, создайте локальный, длина которого равна длине первого локального:
sysuse auto2, clear
*create two groups: 0 and 1
gen group = _n<37
tempfile a
save `a'
local vars "price headroom trunk weight"
local vars_n: word count `vars'
ssc install estout
eststo clear
Вычислите средние значения группы 0 (столбец 1) и группы 2 (столбец 2):
*group 0 means
use `a', clear
keep if group==0
eststo: estpost sum `vars'
*group 1 means
use `a', clear
keep if group==1
eststo: estpost sum `vars'
Проведите t-тесты для каждой переменной (есть ли более простой способ сделать это?):
*t-test
*create blank matrix
matrix pval = J(`vars_n',1,.)
use `a', clear
forvalues i=1/`vars_n' {
local var `: word `i' of `vars''
ttest `var', by(group)
*add the two-sided p-value to matrix
matrix pval[`i',1]=r(p)
}
Этот предыдущий блок кода сохраняет p-значения (столбец 3) в матрицу.
Используется esttab
для вывода результатов:
esttab, cells(mean(fmt(2))) collabels(none) nodepvars nonumber replace label
esttab matrix(pval, fmt(2 0))
Моя проблема в том, что мне нужно, чтобы значения p совпадали esttab
со средними значениями, но в настоящее время они у меня есть в матрице. Как я могу использовать что-то вроде eststo: estpost
, чтобы получить их, чтобы я мог использовать esttab
(в отличие от esttab matrix
)? Или есть лучший способ сделать все это? Моя цель — запустить esttab, cells(mean(fmt(2))) collabels(none) nodepvars nonumber replace label
и создать таблицу, в которой первые два столбца будут средними, а третий столбец — p-значениями.
Комментарии:
1. Пожалуйста, дайте мне знать, если мой ответ достаточно хорош для ваших целей. Есть способы сделать то, что вы намеревались, но они требуют гораздо больше работы, поэтому я хочу сначала посмотреть, достаточно ли простое решение.
2. Спасибо. У меня есть другие столбцы в моем реальном приложении, но тот факт, что estpost может создавать оценки непосредственно с помощью ttest (в отличие от необходимости индивидуально помещать их в матрицу), может заставить ваш подход работать даже с другими столбцами. Я рассмотрю это подробнее на следующей неделе.
Ответ №1:
Вся необходимая информация есть estpost ttest
, поэтому простым решением будет следующее:
sysuse auto2, clear
gen group = _n<37
local vars price headroom trunk weight
estpost ttest `vars', by(group)
esttab ., cells("mu_1 mu_2 p") nonumber label
-----------------------------------------------------------
mu_1 mu_2 p
-----------------------------------------------------------
Price 5847.526 6500.639 .3445597
Headroom (in.) 2.828947 3.166667 .0861206
Trunk space (.. ft.) 12.39474 15.19444 .0041618
Weight (lbs.) 2654.474 3404.722 .0000115
-----------------------------------------------------------
Observations 74
-----------------------------------------------------------